Releases
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.