Skip to content

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 Link can create an exclusive or shared lock with a Service
  • add service_max_clients property to a Link and LinkedClient
  • the loop_thread_id property for a Service and a Client
  • the emit_notification_threadsafe method for a Service
  • ability to specify the host to use when starting a Manager
  • support for Python 3.9, 3.10 and 3.11
  • set_logging_level to be able to set the logging level at runtime
  • ability to add tasks to the event loop via the Device.add_tasks method
  • the Device.shutdown_handler method is called after the connection to the Manager is lost but before the event loop stops
  • ability to use all Database classes as a context manager (i.e., using the with statement)
  • the --log-level flag to the start command
  • the delete command-line argument to delete files that are created by msl-network
  • orjson as a JSON backend to Package
  • JSON, UJSON, RAPIDJSON and SIMPLEJSON are aliases for the JSON backends in Package
  • the read_limit keyword arguments to connect and start
  • the auto_save keyword argument to connect and get_ssl_context
  • the digest_size keyword argument to generate_certificate and get_fingerprint
  • the name and extensions keyword arguments to generate_certificate
  • **kwargs to get_ssl_context

Changed:

  • the result object that is returned by a Service response can implement a callable to_json() method
  • the value of the algorithm keyword argument in get_fingerprint can now be of type str
  • renamed uuid to be uid in the JSON format
  • making an asynchronous request now returns a concurrent.futures.Future instance instead of an asyncio.Future instance
  • Client and Service are subclasses of Device
  • move the utils.localhost_aliases function to be defined as LOCALHOST_ALIASES
  • renamed the Client.manager method to Client.identities
  • renamed certfile to cert_file in connect, start and get_ssl_context
  • can now change which JSON backend to use during runtime by calling the msl.network.json.use function
  • moved the msl.network.constants.JSONPackage class to Package
  • renamed the command line arguments --certfile to --cert-file, --keyfile to --key-file, --keyfile-password to --key-file-password, and --logfile to --log-file for the start command
  • use T as the separator between the date and time in a ConnectionsTable
  • rename the keyword arguments timestamp1 to start and timestamp2 to end in ConnectionsTable.connections
  • the default filename for the certificate and key files now use 'localhost' instead of the value of HOSTNAME

Fixed:

  • an AttributeError could be raised when generating the identity of a Service
  • can now handle multiple requests/replies contained within the same network packet

Removed:

  • support for Python 3.5
  • the MSLNetworkError exception class (a RuntimeError is raised instead)
  • the Service.set_debug method
  • the termination and encoding class attributes of Network
  • the send_pending_requests, raise_latest_error and wait methods of a Client
  • the --debug flag from the start command
  • the utils.new_selector_event_loop function
  • the constants.JSON attribute
  • YAJL as a JSON backend option

0.5.0 (2020-03-18)¤

Added:

  • support for Python 3.8
  • the utils.new_selector_event_loop function to create a new asyncio.SelectorEventLoop
  • the --logfile command line argument for the start command
  • a Service can emit notifications to all Clients that are linked with it
  • a Service now accepts an ignore_attributes keyword argument when it is instantiated and also has an ignore_attributes method
  • a Link can unlink from a Service
  • the LinkedClient.client property
  • 1.0.0.127.in-addr.arpa as a localhost alias

Changed:

  • use __package__ as the logger name
  • the FileHandler and StreamHandler that are added to the root logger now use a decimal point instead of a comma between the seconds and milliseconds values
  • renamed the disconnect_service method for a Link and a Service (which was added in version 0.4.0) to be shutdown_service

Removed:

  • the Service._shutdown method since it is no longer necessary to call this method from the Service subclass 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.arpa as a localhost alias

Changed:

  • calling the Client.manager(as_string=True) method now prints the attributes analogous to how a Client would call the method of a Service

Fixed:

  • the timeout value for creating a LinkedClient is now the total time that it takes to connect to the Network Manager plus the time required to link with the Service (this fixes a race condition when starting a Service on a remote computer and then trying to link to the same Service)

0.4.0 (2019-04-16)¤

Added:

  • the ssh module
  • a LinkedClient class
  • the run_forever (to start the Manager) and the run_services (to start the Manager and then start the Services) functions
  • the filter_service_start_kwargs, filter_run_forever_kwargs and filter_client_connect_kwargs functions
  • a disconnect_service method to Link
  • shorter argument name options for some CLI parameters
  • a Service now accepts name and max_clients as keyword arguments when it is instantiated

Changed:

  • the following CLI changes to argument names for the certgen command

  • --key-path became --keyfile

  • --key-password became --keyfile-password

  • the following CLI changes to argument names for the keygen command

  • --path became --out

  • the following CLI changes to argument names for the start command

  • --cert became --certfile

  • --key became --keyfile
  • --key-password became --keyfile-password

  • the certificate keyword argument for the connect and get_ssl_context functions and for the Service.start method was changed to certfile

  • the as_yaml keyword argument for the Client.manager method was changed to as_string
  • a Client can no longer request a private attribute -- i.e., an attribute that starts with a _ (an underscore) -- from a Service
  • the default timeout value for connecting to the Manager is now 10 seconds

Fixed:

  • perform error handling if the Manager attempts to start on a port that is already in use
  • issue #7 - a Service can now specify the maximum number of Client\s that can be linked with it
  • issue #6 - the password_manager keyword argument is now used properly when starting a Service

Removed:

  • the name class attribute for a Service
  • the send_request method for a Client (must link with a Service)

0.3.0 (2019-01-06)¤

Added:

  • every request from a Client can now specify a timeout value
  • the docs now include an example for how to send requests to the Echo Service

Changed:

  • the default timeout value for connecting to the Manager is now 10 seconds
  • the __repr__ method for a Client no longer includes the id as a hex number

Fixed:

Removed:

  • the __repr__ method for a Service

0.2.0 (2018-08-24)¤

Added:

  • a wakeup() Task in debug mode on Windows (see: https://bugs.python.org/issue23057)
  • the version_info named tuple now includes a releaselevel
  • example for creating a Client and a Service in LabVIEW
  • the ability to establish a connection to the Network Manager without using TLS
  • a timeout kwarg to Service.start()
  • an Echo Service to the examples

Changed:

  • rename 'async' kwarg to be 'asynchronous' (for Python 3.7 support)
  • the termination bytes were changed from \n to \r\n

0.1.0 (2017-12-14)¤

Initial release