1.5.2 (unreleased)

  • Nothing changed yet.

1.5.1 (2017-11-14)

  • Fixed a bug where errors while parsing certain parts of the Thrift payload would be ignored.
  • Fixed a bug that caused a segfault if a return value was received for a void function.

1.5.0 (2016-12-05)

  • Further optimizations to the serialization path to reduce unnecessary python interaction, improving benchmark performance another 4x.
  • Optimize deserialization path by doing validation inline at construction time. This improves deserialization benchmark performance by 2x.

1.4.0 (2016-11-29)

  • Optimized serialization and deserialization performance by removing an unnecessary intermediate layer.
  • Optimized validation at object construction time by skipping the parsing of nested structs and unions since they would have been validated already anyway.
  • Due to build incompatibility issues, pypy3 support is temporarily being dropped. The library is unlikely to break, but no guarantees exist.

1.3.0 (2016-09-13)

  • Changed PrimitiveTypeSpec.validate() to check that the values of integer fields fit in the required number of bits.
  • Include the field ID and struct name in the exception messages from StructTypeSpec.validate().

1.2.5 (2016-09-07)

  • Fixed a bug that caused mutations to default values of structs to be persisted across calls.
  • Fixed a bug where the strict flag was not respected for exceptions.

1.2.4 (2016-03-04)

  • Fixed a bug that caused optional arguments to show up out of order in struct docstrings.

1.2.3 (2016-02-16)

  • Fixed bug where Decimal and Fraction values were disallowed for float fields.

1.2.2 (2016-02-15)

  • Re-add the changes from 1.2.0 with a fix. Serialization and deserialization should be fast again.

1.2.1 (2016-02-11)

  • Revert changes made in 1.2.0 because they unintentionally break some str/unicode concerns in TypeSpecs.

1.2.0 (2016-02-11)

  • Serialization and deserialization to and from binary is now almost twice as fast.

1.1.0 (2016-01-11)

  • Expose result_type on the args type for service functions.
  • Expose service on function spec.
  • Expose the contents of the Thrift file on compiled modules under the __thrift_source__ attribute.
  • Expose a reference back to the module on generated types as __thrift_module__.
  • Don’t fail compilation if fields in unions specify themselves as optional.
  • Added i8 as an alias for byte in Thrift files.
  • Allow multiple enum items to have the same value.
  • Fixed a bug where the line number of constant lists and maps was incorrect in the AST.

1.0.1 (2015-12-11)

  • Fixed bug where type annotations without values weren’t supported by the grammar.

1.0.0 (2015-11-06)

  • include statements are now supported. For more information, see Including other Thrift files.
  • Added support for message envelopes. This makes it possible to talk with standard Apache Thrift services and clients. For more information, see Calling Apache Thrift.
  • Constant and default values may now be structs or unions, represented in the Thrift file as maps with string keys.
  • Significant performance improvements to the BinaryProtocol implementation.
  • Removed thriftrw.wire.TType in favor of the thriftrw.wire.ttype module.
  • MapValue now contains MapItem objects instead of key-value tuple pairs.
  • Request and response TypeSpecs now have a reference back to the FunctionSpec.
  • ServiceSpec now provides a lookup method to look up FunctionSpecs by name.
  • Removed the force option on Loader.load.
  • In generated modules, renamed the types, constants and services attributes to __types__, __constants__, and __services__.

0.5.2 (2015-10-19)

  • Fixed a bug which prevented default values for enums from being plain integers.

0.5.1 (2015-10-16)

  • Fix a bug in the parser that prevented starting identifier names with true or false.
  • Allow passing 0 and 1 as default values for bool. These will automatically be cast to boolean.

0.5.0 (2015-10-14)

  • Core modules have been cythonized for additional performance improvements.
  • Breaking All custom exceptions are exported by the thriftrw.errors module only. This includes ThriftProtocolError and EndOfInputError.
  • UnknownExceptionError is now raised if an unrecognized exception is encountered while parsing service method responses.

0.4.2 (2015-10-13)

  • Lists and sets now allow arbitrary iterables as input.
  • Lists may be used to provide default values for sets.

0.4.1 (2015-10-12)

  • Now uses io.BytesIO for speed improvements in Python 2.
  • Fixed a bug which allowed empty responses for non-void methods.
  • Fixed a bug which caused the eq methods for structs, unions, and exceptions to raise AttributeError if the value being compared was of the wrong type.

0.4.0 (2015-10-09)

  • Added an option to disable “required/optional” strictness on structs.
  • Added to_primitive and from_primitive methods to generated types to allow converting struct, union, and exception values to and from primitive representations.
  • Added a validate method to all TypeSpecs.
  • Changed to perform validation during struct, union, or exception construction instead of performing it during serialization.
  • Allow unicode to be passed for binary types.

0.3.3 (2015-10-05)

  • Default values for binary fields are no longer unicode.

0.3.2 (2015-09-15)

  • Backwards compatibility for Python 2.7.6 and earlier due to Python #19099.

0.3.1 (2015-09-09)

  • Allow binary values to be passed for string types.

0.3.0 (2015-09-09)

  • Support oneway functions.

0.2.0 (2015-09-08)

  • Export a mapping of constants in the generated module under the constants attribute.
  • Added thriftrw.install to install a Thrift file as a submodule of a module.
  • Expose thriftrw.spec.FunctionResultSpec with information on the return and exception types of the function.

0.1.0 (2015-08-28)

  • Initial release.