- support Python 3.13 in is_annotated (#817)
- make sure that metadata is not deleted when schemas are calculated more than once. Closes #799 (#815)
- serialization whit schema inheritance. Closes #800 (#810)
- Model and Parser protocols added (#801)
- TimedeltaField: fix timedelta fastavro serialization so it doesn't break in union types (#797)
- generate proper default values when reusing Enums types (#796)
- model generatation fixed when field name and field type hint clashes on arrays and maps (#795)
- support timedelta serialization to
double
seconds (#793)
- ModelGenerator: ModelRepresentation and EnumRepresentation added to make model generation simpler. More name clashing cases fixed (#783)
- dc-avro dependency (#782)
- generate date defaults consistently in python model generation (#780)
- python38 support dropped (#781)
- generate proper Model when there is name clashe between field name and type hints. Closes #769 (#778)
- dc-avro dependency updated (#779)
- AttributeError exception raised when trying to generate schema from AvroModel itself and not a subclass of it. Closes #739 (#777)
- model generation simplified. Closes #746 (#776)
- make context optional during dezerialization. Serialization utils included in docs. SerializationType included (#774)
- Module schema_generator renamed to main. Some type hints improvements (#773)
- serialization improvements for nested unions. Related to #763 (#770)
- serialiaze properly unions when types are similar. Closes #749 (#751)
- Explicit all to make mypy happy (#757)
- add serialization support for AvroRecord (faust.Record). Closes #743 (#744)
- Implemented nested logicalType check (#734)
- scaped apostrophe when original_schema is render in model. Closes #725 (#728)
- fallback to native types if custom logicalTypes are defined when rendering Model. Closes #707 and closes #209 (#724)
- case schemas with unions. Closes #700 (#723)
- python-dateutil dependency updated in pyproject (#720)
- inflector dependency replaced by inflection. First steps to publish library to Conda. Related to #706 (#719)
- extra option with cli added in pyproject. Requirements fixed. Closes #711 (#718)
- Always reuse the rendered type when type is same (#710). Closes #709
- incorrect casing when rendering fields and enums (#694). Closes #693 and #692
- render avro enums in isolation. Closes #664 (#690)
- serdes speed-ups (#677)
- enum type level default intruduced. Closes #665 (#682)
- render enum as (str, enum.Enum) (#637) (#652)
- add aliases to field when field name is not a valid identifier. Related to #628 (#654)
- missing dependency python-dateutil added. Closes #644 (#645)
- missing dacite hooks added in order to parse_obj in a proper way. Related to #638 (#643)
- generate proper python identifiers when generating model from schemas. Related to #628 (#639)
- convert_literal_to_enum option added. Closes #596 (#608)
- custom types with extra annotation. Closes #598 (#601)
- add Enum symbol validation (#599)
- Support for Pydantic field alias and serialization_alias (#583). Closes #293
- improve pydantic model translation (#582)
- do not force pascalcase for enum names. Closes #544 (#571)
- add inner names suppor for complex types. Closes #534 and related to #544 (#570)
- model generator refactored (#569)
- pass to fastavro all schemas in a single call (#553)
- Possibility for original schema string in objects Meta class. (#545)
- Install typing-extensions when using Python > 3.8 (#541)
- Optional[Literal] type fixed. Closes #518 (#528)
- support for pydantic date and datetime added (#517)
- bump inflector version for python3.12 support (#519)
- exclude_default option added in metadata. Closes #400 (#513)
- kwarg typing in AvroModel (#488)
- syntax warning in FakeStub docstring (#486)
- property extra_allowed_default_types added to Field. Closes #457 (#481)
- simplify faker stub code (#471)
- add pydantic v2 support. Closes #415 (#455)
- add fake() support to Literal field type (#451)
- add support for typing.Literal (#435).
- pydantic-v2: First steps to support pydantic v2. Namespace dataclasses_avroschame.pydantic added. All AvroModel fields now are private (#427)
- Add typing-extensions to python 3.8 (#432)
- Resolve issues with raw
None
annotation (#433). Closes #424
- add support for pydantic custom classes as fields (#420)
- option to exclude fields on the output schema added. (#423)
- respect enum symbols order when generating models from schemas. Related to #413 (#422)
- drop python 3.7 support (#414)
- Model/code generator when enum has namespaces. Closes #406 (#410)
- field ordering when field has metadata but not a default value. Closes #401 (#403)
- do not uppercase enums keys when the key already exist. Closes #399 (#402)
- Make Faker an optional dependency. (#391)
- dependencies updated (#393)
- record fields avro schema creation (#382) (#383)
- schema generation with optional Enum fields (#386)
- support pydantic constrained int fields (#379)
- default factory in order to get proper default values. Closes #365
- field_order property added to class Meta. Closes #345 (#369)
- pydantic fields added. Closes #328
- model generator when fields have metadata. Closes #348 (#355)
- pydantic nested schema serialization (#346)
- stringcase replaced by casefy. Closes #341 (#347)
- Fix typo in kwargs typehint for AvroBaseModel.fake (#340)
- ci process (#336)
- update dependencies and bump version (#334)
- proper schema generation when primitive types are defined types. Closes #330 (#332)
- dict conversion of AvroBaseModel. Closes #324 (#331)
- deserialization with more than tow layers. Closes #326 (#329)
- excluded pydantic.Fields should be used on avro serialization. Closes #314 (#322)
- AvroRecord added in order to make simpler faust usage. Closes #281 (#303)
- pydantic and faust-streaming optional dependencies. Remove pytz as dependency. Closes #292 (#297)
- typing: incorrect type annotations in avrodantic.py (#302)
- TupleField added in order to deserialize typing.Tuple as tuples rather than list. Closes #291 (#296)
- dev dependencies updated (#294)
- dependencies updated. Model generator documentation updated (#285)
- types.Decimal has been replaced by condecimal (Annotated[decimal.Decimal]). Closes #260 (#282)
- correctly generate enum default values (#275)
- correctly generate type annotations
fix: do not generate default dataclass docstrings
fix: datetime model generation
the previous implementation did not roundtrip
feat: render docstrings in generated classes
fix: correct union and optional conversion
test: add avsc -> python -> avsc roundtrip test
fix: properly handle aliases in the model generator
tests: add coverage for single-type unions model generation
Co-authored-by: Maximilian Hils [email protected]
- include matadata when using pydantic.Field with AvroBaseMode. Closes #263 (#274)
- use
extras
in a correct way. Closes #272 (#273)
- dependencies updated. Closes #270 (#271)
- support for typing.Annotated added (#264)
- dc-avro dependency (#262)
- avro schema generation should always return the same result. Close #254 (#255)
- release v0.37.3 -> v0.37.4
- exception NameSpaceRequiredException removed. Close #246 (#253)
- dependencies and documentation (#252)
- use UUID type instead of function uuid4 (#251)
- use pydantic UUID4 when generating pydantic models. (#247)
- dacite custom config added to class Meta. Closes #242 (#245)
- ListField fake generation when it contains Optional. Closes #232 (#244)
- do not persist the schema when the parent class is not an AvroModel. Closes #241 (#243)
- ruff added in order to replace isort and flake8 (#238)
- use pydantic condecimal when generating pydantic models. Closes #234 (#237)
- model generator with only decimal fields. Closes #233 (#236)
- Generate a Python module from multiple schemas (#235)
- model generator added (#227)
- self relationship schema generation
feat: logicalTypes model generation
feat: logical types model generator
fix: field order, pascal case for class names
fix: add class Meta support
Co-authored-by: Marcos Schroh [email protected]
- use namespaces when an enum is used multiple times in a class. Cases should not apply to enum names. Closes #221 (#231)
- schema generation with optional enum when using pydantic. Closes #229 (#230)
- fake generation with optional user defined types (#228)
- serialize decimal fields. Closes #222 (#224)
- pydantic fake and nested json serialization (#219)
- include field metadata when using faust records. Closes #217 (#218)
- types.UnionType support added (#213)
- update to latest fastavro. logical types fixed (#214)
- nested enums serialization. Closes #208 (#211)
- use python slots (#206)
- provide data to the fake functionality (#205)
- utils refactor. @dataclass decorator included in all code examples. Inheritance example added. Closes #202 (#204)
- UnknownType on serialization with intermediates schemas. Closes #199 (#201)
- name collision on splittes schema usage. Close #196 (#198)
- micro precision added to time and datetime types (#197)
- mypy issues (#186)
- Do not use name and type from metadata in avro schema (#188) (#189)
- fastavro dependency updated. Close #184 (#187)
- nested metadata not respected. closes #171 (#172)
- create nested schema resolution directly from dictionaries (#170)
- alias for nested items (#169)
- pydantic support added (#163)
- rebuild cache (#164)
- add enum support (#153)
- manual job trigger (#146)
- use root reference to generate valid schemas in multiple inheritance levels (#148)
- cache and release expresion (#147)
- validate method added (#144)
- some type checks (#143)
- mkdocs styles (#141)
- generate valid avro schemas when inheritance has multiple levels (#140)
- api get_fields now returns all rendered fields (#134)
- case schemas. Closes #79 (#95)
- new style type annotations don't work for containers and maps (#122)
- possible crash if no docs (#123)
- add
int
andfloat
Avro type support (#119)
- use namespaces on repeated user types with complex types (#117)
- using namespaces for repeated nested types in arrays and maps (#116)
- use namespaces for repeated types (#115)
- alias nested schemas added (#110)
- github CI added (#106)
- dependencies updated (#97)
- Improve error message in unknown type (#94)
- generators fixtures replaced with container. Close #70 (#91)
- avro-json serialization with defaults (#89)
- doc updated
- correct name generation for nested records (#81)
- fake class instances generation added (#77)
- isort (#71)
- pytz added as requirement (#69)
- include UUID as field type (#68)
- use generic to_avro method for logical types (#66)
- replace 'null' str with avro null (json) (#65)
- check for dataclass.MISSING removed. coverage increased up to 99% (#61)
- field SelfReference fixed (#59)
- null should not be included when a default value is defined (#58)
- union with complex type fixed. union with optional types fixed. close #51. (#56)
- refactor logical types (#54)
- support for aware datetime added (#53)
- serialization for complex types (#49)
- pytest dependency updated (#46)
- bytes type fixed (#42)
- enum field refactored in order to include other enum attributes (#37)
- generate json payload from class instance accroding to the avro schema generated (#36)
- schema-generator import improved (#35)
- serialization added (#34)
- fastavro included as dependencie
- development scripts updated. (#33)
- fixed type support added (#32)
- isort added. more mypy types added. WIP mypy checks (#30)
- Correct license to MIT in setup.py (#29)
- Avro-Array: Handle union inside array field. Closes #21
- typing.Dict: Include LogicalTypes as values
- typing.List: Include LogicalTypes as items
- Code refactor and first steps to support logicaltypes in sequences and maps
- Union type allow logical and primitive types
- Support for Sequences and Mapping added
- Generate Avro Schemas from Faust Records
- Validate default values when the avro schema is generated
- Union support added
- mkdocs fixed
- LogicalTypes: Support for Date, Time, Datetime and UUID added
- Fields refactor
- Self relationship OneToOne added
- Self relationship OneToMany added
- Self relationship OneToMany finished. Factory Pattern used in SchemaGenarator and AvroSchemaDefinition
- Singular names are generated for array, map chilndren's namea nd enum
- OneToMany schema relationship added.
- One To Many relationship added
- One to One schema relationship added
- Travis added
- Default values for Map and Array
- Map, Array and Enum types fixed. Schema Parse tests added with fastavro
- License added
- mkdocs links updated
- clean & publish scrips added. Docs added
- avro_schema method added to SchemaGenerator class. Doc added.
- Aliases and Namespaces avro check added
- clean & publish scripts should be executables
- Exclude default type only when is a tuple
- The avro schema returned should be string, not a python dict.
- Package renamed to dataclasses_avroschema