Release Notes¤
2.0.0 (2026-11-03)¤
Added:
- support for Python 3.12, 3.13, 3.14 and 3.15
Changed:
- use ZeroMQ sockets to transfer messages
Removed:
- support for Python 3.6 and 3.7
1.0.0 (2023-06-16)¤
Added:
- a
Linkcan create an exclusive or shared lock with aService - add
service_max_clientsproperty to aLinkandLinkedClient - the
loop_thread_idproperty for aServiceand aClient - the
emit_notification_threadsafemethod for aService - ability to specify the
hostto use when starting aManager - support for Python 3.9, 3.10 and 3.11
set_logging_levelto be able to set the logging level at runtime- ability to add tasks to the event loop via the
Device.add_tasksmethod - the
Device.shutdown_handlermethod is called after the connection to theManageris lost but before the event loop stops - ability to use all
Databaseclasses as a context manager (i.e., using thewithstatement) - the
--log-levelflag to thestartcommand - the
deletecommand-line argument to delete files that are created by msl-network - orjson as a JSON backend to
Package JSON,UJSON,RAPIDJSONandSIMPLEJSONare aliases for the JSON backends inPackage- the
read_limitkeyword arguments toconnectandstart - the
auto_savekeyword argument toconnectandget_ssl_context - the
digest_sizekeyword argument togenerate_certificateandget_fingerprint - the
nameandextensionskeyword arguments togenerate_certificate **kwargstoget_ssl_context
Changed:
- the
resultobject that is returned by aServiceresponse can implement a callableto_json()method - the value of the
algorithmkeyword argument inget_fingerprintcan now be of type str - renamed
uuidto beuidin the JSON format - making an asynchronous request now returns a concurrent.futures.Future instance instead of an asyncio.Future instance
ClientandServiceare subclasses ofDevice- move the
utils.localhost_aliasesfunction to be defined asLOCALHOST_ALIASES - renamed the
Client.managermethod toClient.identities - renamed
certfiletocert_fileinconnect,startandget_ssl_context - can now change which JSON backend to use during runtime by calling the
msl.network.json.usefunction - moved the
msl.network.constants.JSONPackageclass toPackage - renamed the command line arguments
--certfileto--cert-file,--keyfileto--key-file,--keyfile-passwordto--key-file-password, and--logfileto--log-filefor thestartcommand - use
Tas the separator between the date and time in aConnectionsTable - rename the keyword arguments
timestamp1tostartandtimestamp2toendinConnectionsTable.connections - the default filename for the certificate and key files now use
'localhost'instead of the value ofHOSTNAME
Fixed:
- an
AttributeErrorcould be raised when generating the identity of aService - can now handle multiple requests/replies contained within the same network packet
Removed:
- support for Python 3.5
- the
MSLNetworkErrorexception class (a RuntimeError is raised instead) - the
Service.set_debugmethod - the
terminationandencodingclass attributes ofNetwork - the
send_pending_requests,raise_latest_errorandwaitmethods of aClient - the
--debugflag from thestartcommand - the
utils.new_selector_event_loopfunction - the
constants.JSONattribute - YAJL as a JSON backend option
0.5.0 (2020-03-18)¤
Added:
- support for Python 3.8
- the
utils.new_selector_event_loopfunction to create a newasyncio.SelectorEventLoop - the
--logfilecommand line argument for thestartcommand - a
Servicecan emit notifications to allClientsthat are linked with it - a
Servicenow accepts anignore_attributeskeyword argument when it is instantiated and also has anignore_attributesmethod - a
Linkcan unlink from aService - the
LinkedClient.clientproperty 1.0.0.127.in-addr.arpaas a localhost alias
Changed:
- use
__package__as the logger name - the
FileHandlerandStreamHandlerthat are added to the root logger now use a decimal point instead of a comma between the seconds and milliseconds values - renamed the
disconnect_servicemethod for aLinkand aService(which was added in version 0.4.0) to beshutdown_service
Removed:
- the
Service._shutdownmethod since it is no longer necessary to call this method from theServicesubclass because shutting down happens automatically behind the scenes
0.4.1 (2019-07-23)¤
Added:
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpaas a localhost alias
Changed:
- calling the
Client.manager(as_string=True)method now prints the attributes analogous to how aClientwould call the method of aService
Fixed:
- the
timeoutvalue for creating aLinkedClientis now the total time that it takes to connect to the NetworkManagerplus the time required to link with theService(this fixes a race condition when starting aServiceon a remote computer and then trying to link to the sameService)
0.4.0 (2019-04-16)¤
Added:
- the
sshmodule - a
LinkedClientclass - the
run_forever(to start theManager) and therun_services(to start theManagerand then start theServices) functions - the
filter_service_start_kwargs,filter_run_forever_kwargsandfilter_client_connect_kwargsfunctions - a
disconnect_servicemethod toLink - shorter argument name options for some CLI parameters
- a
Servicenow acceptsnameandmax_clientsas keyword arguments when it is instantiated
Changed:
-
the following CLI changes to argument names for the
certgencommand -
--key-pathbecame--keyfile -
--key-passwordbecame--keyfile-password -
the following CLI changes to argument names for the
keygencommand -
--pathbecame--out -
the following CLI changes to argument names for the
startcommand -
--certbecame--certfile --keybecame--keyfile-
--key-passwordbecame--keyfile-password -
the
certificatekeyword argument for theconnectandget_ssl_contextfunctions and for theService.startmethod was changed tocertfile - the
as_yamlkeyword argument for theClient.managermethod was changed toas_string - a
Clientcan no longer request a private attribute -- i.e., an attribute that starts with a_(an underscore) -- from aService - the default
timeoutvalue for connecting to theManageris now 10 seconds
Fixed:
- perform error handling if the
Managerattempts to start on a port that is already in use - issue #7 - a
Servicecan now specify the maximum number ofClient\s that can be linked with it - issue #6 - the
password_managerkeyword argument is now used properly when starting aService
Removed:
- the
nameclass attribute for aService - the
send_requestmethod for aClient(must link with aService)
0.3.0 (2019-01-06)¤
Added:
- every request from a
Clientcan now specify a timeout value - the docs now include an example for how to send requests to the
EchoService
Changed:
- the default
timeoutvalue for connecting to theManageris now 10 seconds - the
__repr__method for aClientno longer includes the id as a hex number
Fixed:
Removed:
- the
__repr__method for aService
0.2.0 (2018-08-24)¤
Added:
- a
wakeup()Task in debug mode on Windows (see: https://bugs.python.org/issue23057) - the
version_infonamed tuple now includes a releaselevel - example for creating a
Clientand aServicein LabVIEW - the ability to establish a connection to the Network
Managerwithout using TLS - a
timeoutkwarg toService.start() - an
EchoServiceto the examples
Changed:
- rename 'async' kwarg to be 'asynchronous' (for Python 3.7 support)
- the termination bytes were changed from
\nto\r\n
0.1.0 (2017-12-14)¤
Initial release