Commit Graph

122 Commits

Author SHA1 Message Date
Georg K
5a518ed044 Merge branch 'master_gh' 2025-04-14 03:54:30 +03:00
benedikt-bartscher
08e8a68893 add getnewargs_ex to Enum, fix pickling (#663) 2025-03-30 22:48:58 +01:00
James Hilliard
6a65ca94bc Update ruff and run ruff format 2025-01-16 03:15:32 +01:00
Adrien
f41934a0e2 Use ruff instead of black+isort (#644)
* Use ruff

* Update .gitignore

* Format code

* Use Ruff on generated code

* Update pre-commit hook

* Wrong commit

* Remove wrong imports

* Update hook

* Format code

* Target Python 3.8

* Reformat

* Pin ruff version
2025-01-03 01:59:43 +00:00
Adrien
ed7eefac6f Remove tests of unsupported Python versions (#642) 2024-11-13 08:40:46 +00:00
Adrien
1741a126b3 Add all kinds of comments (#632)
* Add all kinds of comments

* Format

* Fix get_comment

* Improve test

* Lint
2024-11-07 03:11:53 +00:00
Adrien
1a23f09c16 Define __all__ (#625)
* Define __all__

* Use tuple instead of list

* Add test
2024-11-07 03:11:45 +00:00
Adrien
335eee7537 Remove MessageCompiler.annotation (#634) 2024-10-24 13:09:43 +01:00
Adrien
a99be78fe4 Remove FieldCompiler.mutable (#628) 2024-10-24 13:09:10 +01:00
Adrien
849c12fe88 Use strict undefined (#633) 2024-10-24 13:06:58 +01:00
Adrien
c621ef8a8d Fix documentation (#630)
* Fix missing documentation

* Add test

* Add test

* Format

* Reformat
2024-10-22 19:52:11 +01:00
Adrien
6a3bbe3f25 Fix import loop with Pydantic (#624) 2024-10-15 15:33:37 +01:00
Georg K
f8ecc42478 Merge branch 'refs/heads/master_gh' 2024-10-13 03:14:00 +03:00
Adrien
c2bcd31fe3 Remove error when no fields are set in oneof (#612) 2024-10-05 13:13:44 +01:00
Adrien
c9dfe9ab1f Remove unused compiler functions (#619) 2024-10-05 13:10:22 +01:00
Adrien
1161803069 Fix placeholder deep copy (#611)
* Fix placeholder deep copy

* Add annotations, __repr__ and __slots__

Co-authored-by: James Hilton-Balfe <gobot1234yt@gmail.com>

* Fix annotation

* Fix typing

---------

Co-authored-by: James Hilton-Balfe <gobot1234yt@gmail.com>
2024-09-18 12:56:51 +01:00
Adrien
8d25c96cea Simplify code: delete py_input_message (#614) 2024-09-17 16:05:35 +01:00
Adrien
8fdcb381b7 Prevent users from creating messages with wrong parameters when pydantic is used (#615) 2024-09-12 18:34:47 +01:00
Georg K
63458e2da0 Merge branch 'master_gh' 2024-09-10 19:41:24 +03:00
Adrien
4e9a17c227 Add warnings when calling deprecated method (#596)
* Add test

* To run the workflow

* Fix import

* Format

* Add warning

* Fix indentation

* Test deprecated method

* More test

* Format

* Add import if needed

---------

Co-authored-by: Adrien Vannson <adrien.vannson@gardacp.com>
2024-08-14 21:33:43 +01:00
James Hilton-Balfe
f96f51650c fix: 3.10 style imports not resolving correctly (#594) 2024-08-14 08:01:31 +01:00
Georg K
32eaa51e8d Merge branch 'refs/heads/master_gh' 2024-07-30 22:10:55 +03:00
Nicholas Gates
5fdd0bb24f Update to Pydantic V2 (#588)
* Pydantic V2 support

* Support Python 3.8

* Mark as classmethod

* Remove max int validation

* Run poe format

* Merge develop

* Revert dataclasses import

* Fix revert
2024-07-23 14:43:31 +01:00
Ian McDonald
8b59234856 Handle typing collisions and add validation to a files module for overlaping declarations (#582)
* Fix 'typing' import collisions.

* Fix formatting.

* Fix self-test issues.

* Validation for modules, different typing configurations

* add readme

* make warning

* fix format

---------

Co-authored-by: Scott Hendricks <scott.hendricks@confluent.io>
2024-07-20 00:02:09 +01:00
Georg K
85d2990ca1 Merge branch 'refs/heads/master_gh'
# Conflicts:
#	pyproject.toml
2024-04-09 02:37:34 +03:00
Maple
c3c20556e0 fix: support pydantic-version google pb (#568)
* feat: pydantic version of google pb

* fix: patch pb Struct to support json, dict rountrip

* fix: pydantic-version google pb, json, dict rntrip

* chore: remove `@generated`, remove gen, code fmt

* chore: test case for pydantic-version google pb
2024-04-08 23:54:36 +01:00
atomicmac
df1ba911b7 Add betterproto.Enum __copy__ and __deepcopy__ implementations (#566)
* Add betterproto.Enum __copy__ and __deepcopy__ implementations

betterproto.Enum is missing __copy__ and __deepcopy__ implementations, which were recently added to enum.Enum, see https://github.com/python/cpython/issues/106602
This fixes the bug where betterproto messages with Enums nested within cannot be copied via copy.deepcopy.

* Type hint on Enum.__copy__

Co-authored-by: James Hilton-Balfe <gobot1234yt@gmail.com>

* Type hint on Enum.__deepcopy__

Co-authored-by: James Hilton-Balfe <gobot1234yt@gmail.com>

---------

Co-authored-by: James Hilton-Balfe <gobot1234yt@gmail.com>
2024-03-29 14:08:02 +00:00
atomicmac
e98c47861d refactor: use is instead of == (#560)
PLACEHOLDER is a specific instance of an object, the test here should be "is not" instead of "!="
I am experimenting with adding ndarray support, and the equality test here causes problems.
2024-03-23 21:43:56 +00:00
Georg K
7dee36e073 Merge branch 'master_gh' 2024-01-09 22:16:02 +03:00
William Woodruff
5666393f9d betterproto: support Struct and Value (#551)
* betterproto: support `Struct` and `Value`

Signed-off-by: William Woodruff <william@trailofbits.com>

* betterproto: handle struct in to_dict as well

Signed-off-by: William Woodruff <william@trailofbits.com>

* tests: add Struct roundtrip tests

Signed-off-by: William Woodruff <william@trailofbits.com>

* specialize from_dict and to_dict on Struct

...rather than special-casing in the Message ABC.

Signed-off-by: William Woodruff <william@trailofbits.com>

* betterproto: `poe format`

Signed-off-by: William Woodruff <william@trailofbits.com>

* Update src/betterproto/__init__.py

Co-authored-by: James Hilton-Balfe <gobot1234yt@gmail.com>

* remove future annotations

Signed-off-by: William Woodruff <william@trailofbits.com>

* replace type[...] with typing.T

Signed-off-by: William Woodruff <william@trailofbits.com>

* quote instead

Signed-off-by: William Woodruff <william@trailofbits.com>

---------

Signed-off-by: William Woodruff <william@trailofbits.com>
Co-authored-by: James Hilton-Balfe <gobot1234yt@gmail.com>
2024-01-02 20:16:15 +00:00
Georg K
c47e83fe5b Merge branch 'master_gh' 2023-12-19 03:17:27 +03:00
John Collins
b8a091ae70 Turn off doc-string line wrapping (#532) 2023-12-16 13:36:53 +00:00
Georg K
61fc2f4160 Merge branch 'master_gh' 2023-12-13 14:05:14 +03:00
Erik Friese
d34b16993d Use external package betterproto-rust-codec for better (de-)serialization performance (#545)
* optionally use betterproto-rust-codec
* monkey patch `parse` and `__bytes__`
2023-12-07 11:21:29 +11:00
Georg K
9ed579fa35 fix: datetime offsets 2023-11-20 22:46:34 +03:00
James Hilton-Balfe
bd7de203e1 Remove Enum prefixes (#187)
Co-authored-by: nat <n@natn.me>
Co-authored-by: Tim Schmidt <w4rum@users.noreply.github.com>
Co-authored-by: Arun Babu Neelicattu <arun.neelicattu@gmail.com>
2023-10-25 22:35:16 +01:00
Marek Pikuła
d9b7608980 Support Message.from_dict() as a class and an instance method (#476)
* Make Message.from_dict() a class method

Signed-off-by: Marek Pikuła <marek.pikula@embevity.com>

* Sync 1/2 of review comments

* Sync other half

* Update .pre-commit-config.yaml

* Update __init__.py

* Update utils.py

* Update src/betterproto/__init__.py

* Update .pre-commit-config.yaml

* Update __init__.py

* Update utils.py

* Fix CI again

* Fix failing formatting

---------

Signed-off-by: Marek Pikuła <marek.pikula@embevity.com>
Co-authored-by: James Hilton-Balfe <gobot1234yt@gmail.com>
2023-10-25 22:20:23 +01:00
Lukas Bindreiter
02aa4e88b7 Fix _Timestamp edge cases (#534)
* Add failing test cases for timestamp conversion

* Fix timestamp to datetime conversion

* Fix formatting

* Move timestamp tests outside of inputs folder

---------

Co-authored-by: Lukas Bindreiter <lukas.bindreiter@tilebox.io>
Co-authored-by: James Hilton-Balfe <gobot1234yt@gmail.com>
2023-10-18 00:41:09 +01:00
Sebastian Pietras
e309513131 Fix _stream_unary not working with empty iterables (#422)
* Fixed `do_many_things` method in `ThingService`
* Added test for empty iterables
* Fixed `_stream_unary` not sending request first
2023-10-18 09:54:23 +11:00
Vasilios
ca6b9fe1a2 Implementing pickle methods (#535)
Continuing work from #484 by @kevinaud to fix #419

* Implementing pickle methods
* Implement __copy__, __reduce__, and fix __setstate__
* Moved pickling tests into their own file
* Add test for caching
2023-10-16 22:17:15 +11:00
Joshua Leivers
4f18ed1325 Add support for streaming delimited messages (#529)
* Add support for streaming delimited messages

This allows developers to easily dump and load multiple messages
from a stream in a way that is compatible with official
protobuf implementations (such as Java's
`MessageLite#writeDelimitedTo(...)`).

* Add Java compatibility tests for streaming

These tests stream data such as messages to output files, have a
Java binary read them and then write them back using the
`protobuf-java` functions, and then read them back in on the Python
side to check that the returned data is as expected. This checks
that the official Java implementation (and so any other matching
implementations) can properly parse outputs from Betterproto, and
vice-versa, ensuring compatibility in these functions between the
two.

* Replace `xxxxableBuffer` with `SupportsXxxx`
2023-10-16 21:59:33 +11:00
Erik Friese
8b5dd6c1f8 Dont set group for optional fields (#528)
Fixes #523
2023-10-16 13:43:42 +11:00
Micael Jarniac
3514991133 Rich support (#508)
Closes #507

https://rich.readthedocs.io/en/latest/pretty.html#rich-repr-protocol
2023-10-16 13:36:26 +11:00
James Hilton-Balfe
e3b44f491f Fix timestamp parsing (#415)
Fixes #407
2023-10-16 13:35:32 +11:00
James Hilton-Balfe
c82816b8be Map enum int's into Enums redux (#293)
Re-implement Enum to be faster along with being an open set

---------
Co-authored-by: ydylla <ydylla@gmail.com>
2023-10-16 13:32:30 +11:00
Joshua Leivers
8659c51123 Add message streaming support (#518) 2023-08-29 14:26:25 +01:00
Andrew
4cdf1bb9e0 Fix Message equality comparison (#513) 2023-07-29 12:06:56 +01:00
Alexander Khabarov
6faac1d1ca Raise AttributeError on attempts to access unset oneof fields (#510) 2023-07-21 13:26:30 +01:00
Ollie
182aedaec4 Handle empty value objects properly (#481)
Co-authored-by: James Hilton-Balfe <gobot1234yt@gmail.com>
2023-06-24 20:19:13 +01:00
Nick DeRobertis
fcbd8a3759 Fix pydict serialization for optional fields (#495) 2023-05-28 17:47:52 +01:00