Version history¶
This library adheres to Semantic Versioning.
5.1.2 (2020-07-21)
- Bugfix: Refcount bug in C lib causing intermittent segfaults on shutdown (tdryer)
5.1.1 (2020-07-03)
- Build system: Making C lib optional if it fails to compile (chiefnoah)
- Build system: Better Glibc version detection (Sekenre and JayH5)
- Tests: Positive and negative bignums (kalcutter)
- Bugfix: Fractional seconds parsing in datetimes (kalcutter)
5.1.0 (2020-03-18)
- Minor API change
CBORSimpleValue
is now a subclass of namedtuple and allows all numeric comparisons. This brings functional parity between C and Python modules. - Fixes for C-module on big-endian systems including floating point decoding, smallint encoding, and boolean argument handling. Tested on s390x and MIPS32.
- Increase version requred of setuptools during install due to unicode errors.
5.0.1 (2020-01-21)
- Fix deprecation warning on python 3.7, 3.8 (mariano54)
- Minor documentation tweaks
5.0.0 (2020-01-20)
- BACKWARD INCOMPATIBLE CBOR does not have a bare DATE type, encoding dates as datetimes is disabled by default (PR by Changaco)
- BACKWARD INCOMPATIBLE
set_shareable()
only takes the instance to share, not the shareable’s index - BACKWARD INCOMPATIBLE
CBORError
now descends fromException
rather thanValueError
; however, subordinate exceptions now descend fromValueError
(where appropriate) so most users should notice no difference - BACKWARD INCOMPATIBLE
CBORDecoder
can now raiseCBORDecodeEOF
which descends fromEOFError
supporting streaming applications - Optional Pure C implementation by waveform80 that functions identically to the pure Python implementation with further contributions from: toravir, jonashoechst, Changaco
- Drop Python 3.3 and 3.4 support from the build process; they should still work if built from source but are no longer officially supported
- Added support for encoding and decoding
ipaddress.IPv4Address
,ipaddress.IPv6Address
,ipaddress.IPv4Network
, andipaddress.IPv6Network
(semantic tags 260 and 261)
4.2.0 (2020-01-10)
- BROKEN BUILD Removed
4.1.2 (2018-12-10)
- Fixed bigint encoding taking quadratic time
- Fixed overflow errors when encoding floating point numbers in canonical mode
- Improved decoder performance for dictionaries
- Minor documentation tweaks
4.1.1 (2018-10-14)
- Fixed encoding of negative
decimal.Decimal
instances (PR by Sekenre)
4.1.0 (2018-05-27)
- Added canonical encoding (via
canonical=True
) (PR by Sekenre) - Added support for encoding/decoding sets (semantic tag 258) (PR by Sekenre)
- Added support for encoding FrozenDict (hashable dict) as map keys or set elements (PR by Sekenre)
4.0.1 (2017-08-21)
- Fixed silent truncation of decoded data if there are not enough bytes in the stream for an exact
read (
CBORDecodeError
is now raised instead)
4.0.0 (2017-04-24)
- BACKWARD INCOMPATIBLE Value sharing has been disabled by default, for better compatibility with other implementations and better performance (since it is rarely needed)
- BACKWARD INCOMPATIBLE Replaced the
semantic_decoders
decoder option with theCBORDecoder.tag_hook
option - BACKWARD INCOMPATIBLE Replaced the
encoders
encoder option with theCBOREncoder.default
option - BACKWARD INCOMPATIBLE Factored out the file object argument (
fp
) from all callbacks - BACKWARD INCOMPATIBLE The encoder no longer supports every imaginable type implementing the
Sequence
orMap
interface, as they turned out to be too broad - Added the
CBORDecoder.object_hook
option for decoding dicts into complex objects (intended for situations where JSON compatibility is required and semantic tags cannot be used) - Added encoding and decoding of simple values (
CBORSimpleValue
) (contributed by Jerry Lundström) - Replaced the decoder for bignums with a simpler and faster version (contributed by orent)
- Made all relevant classes and functions available directly in the
cbor2
namespace - Added proper documentation
3.0.4 (2016-09-24)
- Fixed TypeError when trying to encode extension types (regression introduced in 3.0.3)
3.0.3 (2016-09-23)
- No changes, just re-releasing due to git tagging screw-up
3.0.2 (2016-09-23)
- Fixed decoding failure for datetimes with microseconds (tag 0)
3.0.1 (2016-08-08)
- Fixed error in the cyclic structure detection code that could mistake one container for another, sometimes causing a bogus error about cyclic data structures where there was none
3.0.0 (2016-07-03)
- BACKWARD INCOMPATIBLE Encoder callbacks now receive three arguments: the encoder instance, the value to encode and a file-like object. The callback must must now either write directly to the file-like object or call another encoder callback instead of returning an iterable.
- BACKWARD INCOMPATIBLE Semantic decoder callbacks now receive four arguments: the decoder
instance, the primitive value, a file-like object and the shareable index for the decoded value.
Decoders that support value sharing must now set the raw value at the given index in
decoder.shareables
. - BACKWARD INCOMPATIBLE Removed support for iterative encoding (
CBOREncoder.encode()
is no longer a generator function and always returnsNone
) - Significantly improved performance (encoder ~30 % faster, decoder ~60 % faster)
- Fixed serialization round-trip for
undefined
(simple type 23) - Added proper support for value sharing in callbacks
2.0.0 (2016-06-11)
- BACKWARD INCOMPATIBLE Deserialize unknown tags as
CBORTag
objects so as not to lose information - Fixed error messages coming from nested structures
1.1.0 (2016-06-10)
- Fixed deserialization of cyclic structures
1.0.0 (2016-06-08)
- Initial release