Releases: mLupine/DeepFriedMarshmallow
Releases · mLupine/DeepFriedMarshmallow
1.1.2
1.1.1
1.1.1 (2025-09-03)
Fixed
- Inliners: Prefer
UUIDInlineroverStringInlinerinList,Tuple, andDictplugins. This preserves UUID objects during deserialization instead of coercing them to strings. - Deserialization: Guard non-mapping inputs when
many=Falseand fall back to Marshmallow for properValidationErrormessages.
Full Changelog: 1.1.0...1.1.1
1.1.0
1.1.0 (2025-09-03)
Added
- Plugin system: Support external inliners and factories via entry points and
DFM_PLUGINSenv. - Built-in inliners for
Dict,Tuple,List,Raw,Decimal,Constant,EnumField(when available), and datetime types (Date,DateTime,Time).Decimalinliner only runs on a safe subset:- Deserialization:
decimal.Decimal(str(x))when noplaces/rounding/allow_nanconstraints are set. - Serialization:
as_string=Truesupported; otherwise falls back to non-JIT behavior.
- Deserialization:
Constantinliner inlines only on serialization; deserialization goes through Marshmallow for correctness.datetimeinliners return plain expressions when no imports are needed.
- Per-schema control:
class Meta: dfm = { 'use_inliners': True|False }to enable/disable inliners. - Optional profiling:
DFM_PROFILE/DFM_FIELD_PROFILEto gather hot spots.
Changed
- Dropped support for Python 3.8–3.10; minimum supported version is now 3.11.
Fixed
- Logging in patcher uses a correct
__name__field.
Tests
- Added coverage for built-in inliners.
- Added tests for plugin discovery, manual registration, and precedence rules.
- Added tests to verify that
Meta.dfm.use_inliners=Falsedisables built-ins while preserving behavior.
Full Changelog: 1.0.0beta2...1.1.0
1.0.0beta2
Full Changelog: 1.0.0dev9...1.0.0beta2
1.0.0dev9
Full Changelog: 1.0.0beta1...1.0.0dev9
1.0.0beta1
Full Changelog: 1.0.0dev8...1.0.0beta1
1.0.0dev8
Full Changelog: 1.0.0dev6...1.0.0dev8
1.0.0dev7
Full Changelog: 1.0.0dev6...1.0.0dev7
1.0.0dev6
Full Changelog: 1.0.0dev5...1.0.0dev6
1.0.0dev5
Full Changelog: 1.0.0dev4...1.0.0dev5