API Changes
- Python 3.6 is the minimal support Python version.
- Support for Python 3.7 has been added.
- Support for Python 3.8 has been added.
- Support for Python 3.9 has been added.
- Support for Python 2.7 has been removed.
- Support for Python 3.3 has been removed.
- Support for Python 3.4 has been removed.
- Support for Python 3.5 has been removed.
- Support for PyPy (Python 2.7 compatible) has been removed.
- Add type hints throughout and support PEP 561 via a py.typed file. This should allow projects to type check their usage of this dependency.
- Throw
TypeErrorwhen creating a priority tree with amaximum_streamsvalue that is not an integer. - Throw
ValueErrorwhen creating a priority tree with amaximum_streamsvalue that is not a positive integer.
API Changes
- Throw
PriorityLoopwhen inserting or reprioritising a stream that depends on itself. - Throw
BadWeightErrorwhen creating or reprioritising a stream with a weight that is not an integer between 1 and 256, inclusive. - Throw
PseudoStreamErrorwhen trying to reprioritise, remove, block or unblock stream 0. - Add a new
PriorityErrorparent class for the exceptions that can be thrown by priority.
Bugfixes
- Allow
insert_streamto be called withexclusive=Truebut no explicitdepends_onvalue.
Bugfixes
- Allow insertion of streams that have parents in the idle or closed states. This would previously raise a KeyError.
Security Fixes
CVE-2016-6580: All versions of this library prior to 1.2.0 are vulnerable to a denial of service attack whereby a remote peer can cause a user to insert an unbounded number of streams into the priority tree, eventually consuming all available memory.
This version adds a
TooManyStreamsErrorexception that is raised when too many streams are inserted into the priority tree. It also adds a keyword argument to the priority tree,maximum_streams, which limits how many streams may be inserted. By default, this number is set to 1000. Implementations should strongly consider whether they can set this value lower.
Bugfixes
- 2.5x performance improvement by swapping from
queue.PriorityQueuetoheapq.
API Changes
- Throw
DuplicateStreamErrorwhen inserting a stream that is already in the tree. - Throw
MissingStreamErrorwhen reprioritising a stream that is not in the tree.
- Initial release.