CHANGES
=======

1.0.5
-----

* Complete the handshake on the receive thread, not in a handler
* Update os-ken requirement from >=4.2.1 to >=4.2.2 (#7)
* Bump python from 3.13-slim to 3.14-slim (#2)
* Update pytest requirement from >=8.0.0 to >=9.1.1

1.0.4
-----

* Survive a malformed message instead of dropping the channel

1.0.3
-----

* addrconv: raise ValueError, not OSError, for a malformed prefix
* Keep the host bits when an address is written with a prefix length
* Log application loading and the listening address
* Carry a timestamp on message events
* Negotiate a hello down from a later protocol version

1.0.2
-----

* Support python 3.11, which is what faucet requires

1.0.1
-----

* Drain the send queue on close; pbr is a build dependency, not a runtime one
* app: load an application given as a file path
* Update pytest-xdist requirement from >=3.6.0 to >=3.8.0
* Bump pylint from 4.0.6 to 4.0.8

1.0.0
-----

* controller: name the datapath before publishing its features reply
* multipart: say so when a single-body stats reply arrives empty
* addrconv: accept an ipaddress object, as netaddr did
* OpenFlow channel and datapath registry
* Nicira conntrack actions and the NXM match fields
* ci: publish to PyPI via Trusted Publishing on a version tag
* Guard that the runtime import graph is stdlib only
* Add hub.StreamServer; record the migration gaps
* Declare parser.\_\_all\_\_ so the re-exports are explicit
* Multipart family; make parser one module again
* OF1.3 messages; fix three bugs the coverage gate exposed
* OF event classes, generated from the message registry
* Packet layer: IPv6, ICMPv6, LLDP, LACP, BPDU constants
* Config value conversion helpers
* Land cls\_from\_jsondict\_key; test that a shared class name resolves
* Application framework and threading helpers
* Add OFPPort; resolve nested class names by enclosing module
* OF1.3 match, actions and instructions; ethernet and VLAN
* Scaffold c65of: declarative codec, address lib, OF1.3 constants, OXM
* Initial commit
