Releases: danielgtaylor/python-betterproto
v2.0.0-beta7
Enhancements
- Breaking: Support
Pydantic
v2 and dropping support for v1 #588 - Breaking: The attempting to access an unset
oneof
now raises anAttributeError
field. To see how to accessoneof
fields now, refer to #558 and README.md. - Breaking: A custom
Enum
has been implemented to match the behaviour of being an open set. Any checks forisinstance(enum_member, enum.Enum)
andissubclass(EnumSubclass, enum.Enum)
will now returnFalse
. This change also has the side effect of preventing any passthrough ofEnum
members (i.e.Foo.RED.GREEN
doesn't work any more). See #293 for more info, this fixed many bugs related toEnum
handling. - Add support for
pickle
methods #535 - Add support for
Struct
andValue
types #551 - Add support for
Rich
package for pretty printing #508 - Improve support for streaming messages #518 #529
- Improve performance of serializing / de-serializing messages #545
- Improve the handling of message name collisions with typing by allowing the method / type of imports to be configured.
Refer to #582 and README.md. - Add a warning when calling a deprecated message #596
Bug Fixes
- Fix roundtrip parsing of
datetime
s #534 - Fix accessing unset optional fields #523
- Fix
Message
equality comparison #513 - Fix behaviour with long comment messages #532
New Contributors
- @atomicflag made their first contribution in #513
- @JoshuaLeivers made their first contribution in #518
- @MicaelJarniac made their first contribution in #508
- @124C41p made their first contribution in #528
- @girtsf made their first contribution in #306
- @spietras made their first contribution in #422
- @lukasbindreiter made their first contribution in #534
- @cartesian-theatrics made their first contribution in #532
- @cclauss made their first contribution in #550
- @woodruffw made their first contribution in #551
- @atomicmac made their first contribution in #560
- @arunsathiya made their first contribution in #553
- @ii64 made their first contribution in #568
- @imcdo made their first contribution in #587
- @gatesn made their first contribution in #588
- @AdrienVannson made their first contribution in #596
- @JitPackJoyride made their first contribution in #593
Full Changelog: v.2.0.0b6...v.2.0.0b7
v2.0.0-beta6
Enhancements
-
Breaking: the minimum Python version has been bumped to
3.7
#444 -
Support generating Pydantic dataclasses. Pydantic dataclasses are are drop-in replacement for dataclasses in the standard library that additionally supports validation.
Pass--python_betterproto_opt=pydantic_dataclasses
to enable this feature. Refer to #406 and README.md for more information. -
Added support for
@generated
marker #382 -
Pull down the
include_default_values
argument toto_json()
#405 -
Pythonize input_type name in py_input_message #436
-
Widen
from_dict()
to accept anyMapping
#451 -
Replace
pkg_resources
withimportlib
#462
Bug Fixes
- Fix typechecker compatibility checks in server streaming methods #413
- Fix "empty-valued" repeated fields not being serialised #417
- Fix
dict
encoding for timezone-awaredatetimes
#468 - Fix
to_pydict()
serialization for optional fields #495 - Handle empty value objects properly #481
Thank you to all the contributors to this release and everyone for being so patient with its release.
New Contributors
- @anriha made their first contribution in #382
- @SamuelYvon made their first contribution in #405
- @sterliakov made their first contribution in #417
- @wouterh made their first contribution in #436
- @MarekPikula made their first contribution in #474
- @semicolonTransistor made their first contribution in #468
- @pi-slh made their first contribution in #462
- @nickderobertis made their first contribution in #495
- @Sriansh-raj made their first contribution in #502
- @a-khabarov made their first contribution in #498
- @hf-kklein made their first contribution in #445
- @olijeffers0n made their first contribution in #481
- @ashwin153 made their first contribution in #500
Full Changelog: v2.0.0b5...v.2.0.0b6
v2.0.0-beta5
Enhancements
-
Breaking: Client and Service Stubs no longer pack and unpack the input message fields as parameters #331:
Update your client calls and server handlers as follows:
Clients before:
response = await service.echo(value="hello", extra_times=1)
Clients after:
response = await service.echo(EchoRequest(value="hello", extra_times=1))
Servers before:
async def echo(self, value: str, extra_times: int) -> EchoResponse: ...
Servers after:
async def echo(self, echo_request: EchoRequest) -> EchoResponse: # Use echo_request.value # Use echo_request.extra_times ...
-
Format field comments also as docstrings #304
-
Implement
__deepcopy__
forMessage
#339 -
Implement
to/from_pydict()
forMessage
#203 -
Run isort on compiled code #355
-
Expose timeout, deadline and metadata parameters from grpclib #352
-
Make
Message.__getattribute__
invisible to type checkers #359
Bug Fixes
- Fix map field edge-case #254
- Fix message text in
NotImplementedError
#325 - Fix
Message.from_dict()
in the presence of optional datetime fields #329 - Support Jinja2 3.0 #330 & #402
- Fix overwriting top level
__init__.py
#337 - Remove deprecation warnings when fields are initialised with non-default values #348
- Ensure nested class names are converted to PascalCase #353
- Fix
Message.to_dict()
mutating the underlyingMessage
#378 - Fix some parameters being missing from services #381
v2.0.0-beta4
v2.0.0-beta3
Enhancements
- Generate grpclib service stubs #170
- Add __version__ attribute to package #134
- Use betterproto generated messages in the plugin #161
- Sort the list of sources in generated file headers #164
- Micro-optimization: use tuples instead of lists for conditions #228
- Improve datestring parsing #213
Bugfixes
- Fix serialization of repeated fields with empty messages #180
- Fix compilation of fields named 'bytes' or 'str' #226
- Fix json serialization of infinite and nan floats/doubles #215
- Fix template bug resulting in empty __post_init__ methods #162
- Fix serialization of zero-value messages in a oneof group #176
- Fix missing typing and datetime imports #183
- Fix code generation for empty services #222
- Fix Message.to_dict and from_dict handling of repeated timestamps and durations #211
- Fix incorrect routes in generated client when service is not in a package #177
v2.0.0-beta2
- Add support for deprecated message and fields #126
- Add support for recursive messages #130
- Add support for bool(Message) #142
- Improve support for Python 3.9 #140 #173
- Improve keyword sanitisation for generated code #137
- Fix missing serialized_on_wire when message contains only lists #81
- Fix circular dependencies #100
- Fix to_dict enum fields when numbering is not consecutive #102
- Fix argument generation for stub methods when using import with proto definition #103
- Fix missing async/await keywords when casing #104
- Fix mutable default arguments in generated code #105
- Fix serialisation of default values in oneofs when calling to_dict() or to_json() #110
- Fix static type checking for grpclib client #124
- Fix python3.6 compatibility issue with dataclasses #124
- Fix handling of trailer-only responses #127
- Refactor plugin.py to use modular dataclasses in tree-like structure to represent parsed data #121
- Refactor template compilation logic #136
- Replace use of platform provided protoc with development dependency on grpcio-tools #107
- Switch to using poe from make to manage project development tasks #118
- Improve CI platform coverage #128
v2.0.0-beta1
Several bugfixes and improvements required or will require small breaking changes, necessitating a new version.
2.0.0
will be released once the interface is stable.
-
Add support for gRPC and stream-stream #83
-
Switch from
pipenv
topoetry
for development #75 -
Fix two packages with the same name suffix should not cause naming conflict #25
-
Fix Import child package from root #57
-
Fix Import child package from package #58
-
Fix Import parent package from child package #59
-
Fix Import root package from child package #60
-
Fix Import root package from root #61
-
Fix ALL_CAPS message fields are parsed incorrectly. #11
v1.2.5
v1.2.4
- Enforce utf-8 for reading the readme in setup.py #67
- Only import types from grpclib when type checking #52
- Improve performance of serialize/deserialize by caching type information of fields in class #46
- Support using Google's wrapper types as RPC output values #40
- Fixes issue where protoc did not recognize plugin.py as win32 application #38
- Fix services using non-pythonified field names #34
- Add ability to provide metadata, timeout & deadline args to requests #32