2.6
Package refresh.
2.5
Fix race condition in ``occupied`` and ``free``.
2.4
``find_available_local_port`` now relies on
``socket.getaddrinfo`` to find a suitable address
family.
Fix README rendering.
2.1.1
Restored use of ``portend.client_host`` during
``assert_free`` check on Windows, fixing check
when the bind address is *ADDR_ANY.
2.1
Use tempora.timing.Timer from tempora 1.8, replacing
boilerplate code in occupied and free functions.
2.0
Removed ``portend._getaddrinfo`` and its usage in
``Checker.assert_free``.
Dropped support for Python 2.6.
Use portend to monitor TCP ports for bound or unbound states.
For example, to wait for a port to be occupied, timing out after 3 seconds::
portend.occupied('www.pkgsrc.org', 80, timeout=3)
Or to wait for a port to be free, timing out after 5 seconds::
portend.free('::1', 80, timeout=5)
The portend may also be executed directly. If the function succeeds, it
returns nothing and exits with a status of 0. If it fails, it prints a
message and exits with a status of 1. For example::
python -m portend localhost:31923 free
(exits immediately)
python -m portend -t 1 localhost:31923 occupied
(one second passes)
Port 31923 not bound on localhost.