Changelog

6.1.0 - 11/06/2022

  • Added connection_username and connection_domain arguments to connect().

6.0.1 - 23/12/2021

  • Added explicit support for async_timeout 4.0.

6.0.0 - 23/12/2021

  • Added support for NCP encrypted (TLS) connections via the ssl argument for connect() and start_server().
  • Added support for NCP authentication via the username and password arguments for connect(), and the authenticate argument for start_server().
  • Breaking: start_server() now returns a asyncio.base_events.Server, and the ncplib.Server class has been removed.

5.0.0 - 18/02/2021

  • Added support for NCP connection timeout negotation, improving reliability and cleanup of NCP connections when supported by the remote.
  • Added support for NCP data types i64, u64, f32, f64, data u64, data i64, data f32 and data f64.
  • Response.recv() no longer requires the ID of the of NCP packet in replies.
  • Breaking: auto_link and auto_auth arguments for connect() and start_server() removed.
  • Breaking: timeout argument for connect() and start_server() must be an integer, and can no longer be None.
  • Breaking: Removed timeout attribute from Connection.

4.1.1 - 14/09/2020

  • Optimized auto_link background task.

4.1.0 - 07/07/2020

4.0.0 - 20/05/2020

3.0.0 - 24/10/2019

This release requires a minimum Python version of 3.7.

  • Breaking: Python 3.7 is now the minimum supported Python version.
  • Breaking: Removed app framework.
  • Breaking: Removed run_client and run_app.
  • Added Connection.wait_closed() to ensure that the connection is fully closed (needed since Python 3.7).
  • Added full PEP 484 type hints, allowing tools like mypy to be used to statically-verify ncplib programs.

2.3.3 - 27/03/2017

  • Only applying wait_for compatibility shim to Python 3.4.2 and below.

2.3.2 - 15/03/2017

  • Forcing cancellation of timed out connection in run_client in Python 3.4.2.
  • Added examples.

2.3.1 - 02/03/2017

  • Using remote_hostname in connect errors messages generated by run_client.
  • Fixed issues with mixing coroutines and async defs.
  • Fixed issues with logging connection errors in run_client.

2.3.0 - 02/03/2017

2.2.1 - 27/02/2017

  • Fixed bug with Node authentication due to premature sending of LINK packets.
  • Fixed edge-case bug in connection closing.

2.2.0 - 27/02/2017

2.1.0 - 04/11/2016

  • Client hostname used in connect() defaults to system hostname, instead of "python3-ncplib".
  • Added hostname parameter to connect(), to override default client hostname.
  • Removed multiplexing support for multiple Response over a single connection. This must now be implemented in application code.
  • Connection logger no longer formats the host and port in log messages. This must now be done using the standard Python logging.Formatter.

2.0.14 - 04/11/2016

  • Added support for parsing known embedded footer bug from Axis nodes.
  • Fixed pending deprecation warning for legacy __aiter__ protocol.

2.0.13 - 21/10/2016

  • Using transport.is_closing() to detect lost connection, making ncplib compatible with uvloop.

2.0.12 - 21/10/2016

2.0.11 - 14/10/2016

2.0.10 - 14/10/2016

  • Fixed IPv6 handling in NCP server.

2.0.9 - 13/10/2016

  • Handling more classes of shutdown errors.

2.0.8 - 13/10/2016

  • Suppressing connection errors in NCP server.

2.0.7 - 13/10/2016

  • Handling more classes of shutdown errors.

2.0.6 - 13/10/2016

  • Handling more classes of client connection error gracefully.
  • Handling shutdown of broken connections gracefully.

2.0.5 - 11/10/2016

  • Gracefully closing client connections on authentication error.

2.0.4 - 05/09/2016

  • Not validating packet format in incoming packets.

2.0.3 - 02/09/2016

  • Not logging client errors and warnings, since raised exceptions/warnings will do this automatically.

2.0.2 - 01/09/2016

  • Stripping trailing spaces from field names on decode, in addition to null bytes.

2.0.1 - 19/07/2016

2.0.0 - 17/03/2016

This release requires a minimum Python version of 3.5. This allows ncplib to take advantage of new native support for coroutines in Python 3.5. It also provides a new start_server() function for creating a NCP server.

A number of interfaces have been updated or removed in order to take better advantage of Python 3.5 async features, and to unify the interface between NCP client and NCP server connections. Please read the detailed release notes below for more information.

1.0.1 - 21/12/2015

  • Automated build and release of package to private Anaconda Cloud channel.

1.0.0 - 07/12/2015

  • First production release.