Changelog¶
3.2.1 (2022-09-07)¶
Add wheel to distribution format (#43)
3.2.0 (2022-06-27)¶
3.1.0 (2022-01-10)¶
Add implicit UTC timezone behavior to the AMQP Basic.Properties timestamp value. (#37 - RemiCardona)
Add support for short-short-int and short-short-uint. (#33 - michal800106)
3.0.1 (2020-08-07)¶
Fix an issue with Basic.Reject requeue=False always being set to True (#29 - eandersson)
3.0.0 (2020-08-04)¶
Fix unsigned short-int encoding and decoding to use the correct amqp field designation of
B
instad ofb
(#27)Fix timestamp encoding/decoding tests to work when the timezone is set on the host machine (#26)
3.0.0a6 (2020-03-19)¶
pamqp.commands.Basic.QoS.globally renamed back to
pamqp.commands.Basic.QoS.global_
Refactored codegen to put params in the class level docstring not
__init__
Added new
pamqp.frame.Frame.validate()
methodChanged validation to ignore attributes with a value of None
Changed default value behaviors to only use default values if one is specified, instead of by data type.
Overwrote AMQP spec for queue name max-length to match documented RabbitMQ value (#24)
Updated documentation in codegen output
Added strict validation of pamqp.commands.Basic.Properties.delivery_mode to ensure it’s
0
or1
Fixed codegen with respect to applying extension data over base spec data
3.0.0a5 (2020-03-11)¶
Rename pamqp.frame._frame_parts to
pamqp.frame.frame_parts()
(#15 again)pamqp.commands.Basic.QoS.global_ renamed to
pamqp.commands.Basic.QoS.globally
Removed mypy checking due to errors in mypy and recursive type aliases
Added pamqp/py.typed for PEP-561 compatibility (#21 - michael-k)
3.0.0a4 (2020-01-01)¶
Refactor codegen.py
Revert the behaviors added in 3.0.0a2 with regard to documented defaults and None
Use amqp0-9-1.extended.xml instead of amqp-0-9-1.xml to get the documentation for RabbitMQ added classes/methods
Add strict value checking for deprecated values
Remove empty
__init__
functions from method classes
3.0.0a3 (2019-12-31)¶
Make comparison of Basic.Properties against other object types raise NotImplementedError
Return test coverage to 100%
3.0.0a2 (2019-12-31)¶
Added mypy as part of the test pipeline and made updates based upon its findings.
Added length checking and regex checking for values specified in AMQP spec
Fixed some of the type annotations added in 3.0.0a0
Fixed some of the documentation and label usage in pamqp.commands
Removed redundant inline documentation in pamqp.commands
Updated default values to only reflect defaults specified in the XML and JSON specs. If no default is specified, the value will now be None.
3.0.0a1 (2019-12-19)¶
Revert the removal of pamqp.body.ContentBody.name
3.0.0a0 (2019-12-16)¶
Update to support Python 3.6+ only
Add typing annotations to all modules, callables, and classes
Moved exceptions from pamqp.specification to pamqp.exceptions
Moved constants from pamqp.specification to pamqp.constants
Moved base classes out of pamqp.specification to pamqp.base
Changed the structure of nested classes for AMQP Commands (Classes & Methods) in pamqp.specification to functions in pamqp.commands
Renamed pamqp.specification.ERRORS to pamqp.exceptions.CLASS_MAPPING
Remove convenience exports of pamqp.headers.ContentHeader and pamqp.header.ProtocolHeader
pamqp.body.ContentBody.value now only supports bytes
Changed pamqp.decode.timestamp to return a datetime.datetime instance instead of time.struct_time.
Updated pamqp.encode.support_deprecated_rabbitmq() to allow for toggling support.
Changed pamqp.encode.timestamp to only support datetime.datetime and time.struct_time values, dropping epoch (int) support.
Removed pamqp.frame.BasicProperties.to_dict() in favor of behavior allowing for dict(pamqp.frame.BasicProperties)
Optimized pamqp.heartbeat.Heartbeat to marshal the static frame value as a predefined class attribute.
Add support for Connection.UpdateSecret and Connection.UpdateSecretOk.
Removed the ability to unset a Basic.Property by invoking del properties[key]
Removed the deprecated pamqp.codec sub-package
2.3.0 (2019-04-18)¶
Add
pamqp.encode.support_deprecated_rabbitmq()
function to limit data types available when encoding field-tables for older RabbitMQ versions.
2.2.0 (2019-04-18)¶
Change
pamqp.encode.timestamp()
to allow for numeric/epoch timestamps (#14 - mosquito)Change
pamqp.frame.frame_parts()
to a public method (#15 - mosquito)Cleanup of code to pass configured flake8 tests
Add support for 8-bit unsigned integer values in
pamqp.encode.table_integer()
2.1.0 (2018-12-28)¶
Change raising a DeprecationWarning exception to using warnings.warn for deprecated AMQP methods (#13 - dzen)
2.0.0 (2018-09-11)¶
Change Python versions supported to 2.7 and 3.4+
- Always decode field table keys as strings (#6)
This may be a breaking change means in Python3 keys will always be type str for short strings. This includes frame values and field table values.
In Python 2.7 if a short-string (key, frame field value, etc) has UTF-8 characters in it, it will be a unicode object.
Combine test coverage across all Python versions
Fix range for signed short integer (#7)
Fix guards for usage of unsigned short usage in pamqp.encode (#7)
Fix encoding and decoding of unsigned short (#7)
Add support for unsigned short integer and long integer in field tables (#10)
Address edge case of small value in long type (#8)
Address long string encoding inconsistency (#9)
Cleanup unicode object & conditionals in py3 (#9)
Add pamqp.exceptions.PAMQPException as a base class for pamqp specific exceptions (#4)
Fix decoding of void values in a field table or array
1.6.1 (2015-02-05)¶
Fix the encoding guard for unsigned short integers to be 65535 [rabbitpy #62]
1.6.0 (2014-12-12)¶
Remove UTF-8 encoding from byte_array (#2)
- Fix AMQP Field Tables / Basic.Properties headers behavior:
Field names per spec should not exceed 128 bytes
long-strings should not be utf-8 encoded (only short-strings boggle)
- Ensure that field table long strings are not coerced to UTF-8 as specified in AMQP 0-9-1
If a string is passed in as a long string in a field table and it contains UTF-8 characters it will be UTF-8 encoded
Move AMQP Methods in specification.py to slotted classes
Change Basic.Properties to a slotted class
Instead of class level attributes with the same name as obj attributes, prefix class attributes for data types with an underscore
Add new class method type() for Basic.Properties for accessing data type
Add new class method type() for AMQP methods for accessing data type
Change Basic.Properties.attributes to Basic.Properties.attributes(), returning the list of slotted attributes
Fix a typo for booleans in the method mapping for table decoding
Frame.__getitem__ will now raise a KeyError instead of None for an invalid attribute
PropertiesBase no longer checks to see if an attribute is set for contains
Adds new specification tests
More efficiently handle the frame end character in Python 3
1.5.0 (2014-11-05)¶
Cleanup how UTF-8 is handled in decoding strings
Ensure that field tables (headers property, etc) can use keys with utf-8 data
Address missing and mis-aligned AMQP-0-9-1 field table decoding with the field type indicators from the RabbitMQ protocol errata page
Fix a encoding by type bug introduced with 1.4 having to do with bytearrays
Be explicit about needing a class id in the ContentHeader
Update the tests to reflect the unicode changes
Clean up the tests
1.4.0 (2014-11-04)¶
Fix a long standing bug for non-specified responses for RabbitMQ AMQP extensions
Refactor adding bytearrays and recoding complexity
Add bytearray support (#1 and gmr/rabbitpy#48)
Change encode/decode type errors from ValueError to TypeError exceptions
Remove separate codecs for Python 2 & 3
Move codecs from pamqp.codec.encode and pamqp.codec.decode to pamqp.encode and pamqp.decode
Deprecate pamqp.codec
Remove weird imports from top level __init__.py, not sure what I was thinking there
Clean up codegen a bit to make it more PYTHON3 compatible
Update codegen/include for new codec and PYTHON2/PYTHON3 behavior
Update documentation
- Distribution updates:
Let travis upload to pypi
Add wheel distribution
Update supported python versions
Update classifiers
1.3.1 (2014-02-14)¶
Fix encoding of long-long-integers
1.3.0 (2014-01-17)¶
Remove support for short strings in field tables
1.2.4 (2013-12-22)¶
Add short-short-int support
1.2.3 (2013-12-22)¶
Fix distribution requirements
1.2.2 (2013-12-22)¶
Add decimal data type support
1.2.1 (2013-07-29)¶
Fix Confirm.Select definition
1.2.0 (2013-07-08)¶
Add support for Connection.Blocked, Connection.Unblocked
Add documentation to specification.py in the codegen process
1.1.3 (2013-03-27)¶
Fix exception creation
1.1.2 (2013-03-27)¶
Add Confirm.Select, Confirm.SelectOk
1.1.1 (2013-03-22)¶
Remove debugging print statements (eek)
1.1.0 (2013-03-21)¶
Add Python 3.3 support
1.0.1 (2012-10-02)¶
Address Unicode issues
Add void support in table arrays
1.0.0 (2012-09-24)¶
Initial version