* 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>
* Pydantic V2 support
* Support Python 3.8
* Mark as classmethod
* Remove max int validation
* Run poe format
* Merge develop
* Revert dataclasses import
* Fix revert
This change ensures that deprecation warnings are only raised when
either a deprecated field is explicitly set or a deprecated message is
initialised.
Resolves: #347
Closes#303
* Format field comments also as docstrings
To make it clear that they refer to the item above.
* Fix placement of enum item docstrings
* Add line breaks after class attribute or enum item docstrings
Changes message initialization (`__post_init__`) so that default values
are no longer eagerly created to prevent infinite recursion when
initializing recursive messages.
As a result, `PLACEHOLDER` will be present in the message for any
uninitialized fields. So, an implementation of `__get_attribute__` is
added that checks for `PLACEHOLDER` and lazily creates and stores
default field values.
And, because `PLACEHOLDER` values don't compare equal with zero values,
a custom implementation of `__eq__` is provided, and the code generation
template is updated so that messages generate with `@dataclass(eq=False)`.
Also add new Message __repr__ implementation that skips PLACEHOLDER
values and orders keys by number from the proto.
Co-authored-by: Christopher Chambers <chris@peanutcode.com>
Co-authored-by: nat <n@natn.me>
Co-authored-by: James <50501825+Gobot1234@users.noreply.github.com>