Features :
- Backwards-incompatible:
missing
attribute is no longer used in umongo fields, onlydefault
is used.marshmallow_missing
andmarshmallow_default
attribute can be used to overwrite the value to use in the pure marshmallow field returned byas_marshmallow_field
method (see #36 and #107). - Backwards-incompatible:
as_marshmallow_field
does not passload_from
,dump_to
andattribute
to the pure marshmallow field anymore. It only passesvalidate
,required
,allow_none
,dump_only
,load_only
anderror_messages
, as well asdefault
andmissing
values inferred from umongo'sdefault
. Parameters prefixed withmarshmallow_
in the umongo field are passed to the pure marshmallow field and override their non-prefixed counterpart. (see #170) - Backwards-incompatible:
DictField
andListField
don't default to emptyDict
/List
. To keep old behaviour, passdict
/list
as default. (see #105) - Backwards-incompatible: Serialize empty
Dict
/List
as empty rather than missing (see #105). - Round datetimes to millisecond precision in
DateTimeField
,LocalDateTimeField
andStrictDateTimeField
to keep consistency between object and database representation (see #172 and #175). - Add
DateField
(see #178).
Bug fixes :
- Fix passing a default value to a
DictField
/ListField
as a raw Pythondict
/list
(see #78). - The
default
parameter of a Field is deserialized and validated (see #174).
Other changes :
- Support Python 3.7 (see #181).
- Backwards-incompatible: Drop Python 3.4 support (see #176) and only use async/await coroutine style in asyncio framework (see #179).
- Add
Schema
cache toas_marshmallow_schema
(see #165). - Add
DecimalField
. This field only works on MongoDB 3.4+. (see #162)
- Fix bug when filtering by id in a Document subclass find query (see #145).
- Fix __getattr__ to allow copying and deepcopying Document and EmbeddedDocument (see #157).
- Add Document.clone() method (see #158).
- Raise
UnknownFieldInDBError
when an unknown field is found in database and not usingBaseNonStrictDataProxy
(see #121) - Fix (non fatal) crash in garbage collector when using
WrappedCursor
with mongomock - Depend on pymongo 3.7+ (see #149)
- Pass
as_marshmallow_schema params
to nested schemas. Since this change, every field'sas_marshmallow_schema
method should expect unknown**kwargs
(see #101). - Pass params to container field in
ListField.as_marshmallow_schema
(see #150) - Add
meta
kwarg toas_marshmallow_schema
to pass adict
of attributes for the schema'sMeta
class (see #151)
- Add strict option to (Embedded)DocumentOpts to allow loading of document with unknown fields from mongo (see #115)
- Fix fields serialization/deserialization when allow_none is True (see #69)
- Fix ReferenceFild assignment from another ReferenceField (see #110)
- Fix deletion of field proxied by a property (see #109)
- Fix StrictDateTime bonus field: _deserialize does not accept datetime.datetime instances (see #106)
- Add force_reload param to Reference.fetch (see #96)
- Fix bug in mashmallow tag handling (see #90)
- Fix allow none in DataProxy.set (see #89)
- Support motor 1.1 (see #87)
- Fix deserialization error with nested EmbeddedDocuments (see #84, #67)
- Add
abstract
andallow_inheritance
options to EmbeddedDocument - Remove buggy
as_marshmallow_schema
's parametermissing_accessor
(see #73, #74)
- Replace
Document.opts.children
byoffspring
and fix grand child inheritance issue (see #66) - Fix dependency since release of motor 1.0 with breaking API
- data_objects
Dict
andList
inherit builtinsdict
andlist
- Document&EmbeddedDocument store fields passed during initialization as modified (see #50)
- Required field inside embedded document are handled correctly (see #61)
- Document support marshmallow's pre/post processors
- Add pre/post update/insert/delete hooks (see #22)
- Provide Umongo to Marshmallow schema/field conversion with schema.as_marshmallow_schema() and field.as_marshmallow_field() (see #34)
- List and Dict inherit from collections's UserList and UserDict instead of builtins types (needed due to metaprogramming conflict otherwise)
- DeleteError and UpdateError returns the driver result object instead of the raw error dict (except for motor which only has raw error dict)
- Queries can now be expressed with the document's fields name instead of the name in database
EmbeddedDocument
also need to be registered by and instance before use
- Replace
Document.created
byis_created
(see #14)
- Heavy rewrite of the project, lost of API breakage
- Documents are now first defined as templates then implemented inside an Instance
- DALs has been replaced by frameworks implementations of Builder
- Fix
__getitem__
for Pymongo.Cursor wrapper - Add
conditions
argument to Document.commit - Add
count
method to txmongo
- Fix setup.py style preventing release of version 0.7.7
- Fix await error with Reference.fetch
- Pymongo is now only installed with extra flavours of umongo
- Use extras_require to install driver along with umongo
- Fixing await (Python >= 3.5) support for motor-asyncio
- Fix missing package in setup.py
- Fix setup.py style preventing from release
- Fix crash when generating indexes on EmbeddedDocument
- Fix setup.py not to install tests package
- Pass status to Beta
- Add i18n support
- Add MongoMock support
- Documentation has been a lot extended
- Add
<dal>_lazy_loader
to configure Document's lazy_collection
- Heavy improvements everywhere !
- First release on PyPI.