Releases: oxan/djangorestframework-dataclasses
Releases · oxan/djangorestframework-dataclasses
v1.3.1
v1.3.0
Breaking changes:
- The type annotations now require mypy 1.0 or higher to validate correctly.
Features & fixes:
- Create values for fields of non-
list
ordict
composite types (such asfrozenset
orOrderedDict
) as that type, instead oflist
ordict
. - Allow overriding the field for specific composite types through the
serializer_field_mapping
dictionary. - Don't set optional fields to
rest_framework.fields.empty
sentinel value when used in non-partial mode. This fixes occasional leaks of the sentinel into dataclasses returned to the user, for example when aDataclassSerializer
was nested inside a regular serializer. Not setting, and later stripping, the sentinels also increases performance. - Support dataclasses with fields that have
init=False
. - Support
save()
on serializers withmany=True
. - Support for fields with union types.
- Support nested serializers with
source='*'
. - Fix
child_kwargs
defined in dataclass field metadata (as opposed toextra_kwargs
field onMeta
subclass).
v1.2.0
- Allow all types, including special forms such as unions, to have their field type overridden through the
serializer_field_mapping
dictionary. - Also treat unions containing
None
as optional if they consist of three or more members. Previously this was only the case for unions with two members (i.e. only unions of a type withNone
were optional). - Many added and fixed type hints.
v1.1.1
v1.1.0
v1.0.0
djangorestframework-dataclasses v0.10
Features & fixes:
- Fix
EnumField
compatibility with drf-yasg.
djangorestframework-dataclasses v0.9
Breaking changes:
- The serializer field for dataclass fields that have a default value or default value factory, are now marked as optional (
required=False
). - Marking dataclass fields with
typing.Optional
no longer causes the serializer fields to be optional (they will still be marked as nullable). In previous versions these fields would be optional, which broke if a field had no default value. Due to the preceding change, the common case of fields marked withtyping.Optional
andNone
as a default value, have no change in behaviour. - Drop support for generic
typing.Final
type hints (without the type specified), astyping.Final
was never supposed to be used in this way, and Python 3.10 will drop support for it.
Features & fixes:
- Support overriding serializer for a nested dataclass using
serializer_field_mapping
. - Support overriding serializer for all nested dataclasses using
serializer_dataclass_field
property. - Support partial updates of nested dataclasses.
- Support bound type variables.
- Support field generation for enumerations.
- Support specifying serializer field configuration in dataclass field metadata.
- Fix value for non-specified optional fields in validated_data on serializers with
many=True
.
djangorestframework-dataclasses v0.8
Breaking changes:
- The validated_data representation no longer contains the rest_framework.fields.empty sentinel value for unsupplied fields. This reverts the breaking change from v0.7.
Features & fixes:
- Don't install tests into distributed packages.
djangorestframework-dataclasses v0.7
Breaking changes:
- The
validated_data
representation now contains therest_framework.fields.empty
sentinel value for fields where no value was provided, instead of the default of the dataclass field. The value returned bysave()
is unchanged. This was necessary to support partial updates.
Features & fixes:
- Improved Python 3.9 compatibility.
- Support partial updates.
- Support standard collection generics (PEP 585).
- Support non-generic
list
anddict
typehints. - Support final fields (PEP 591).
- Support auto-generation for list or dictionaries of Any or variable type.
- Set default
max_digits
anddecimal_places
forDecimalField
. - Improved error message when automatic field type deduction fails.