This PR updates mongoengine from 0.19.1 to 0.24.1.
Changelog
### 0.24.1
```
=================
- Allow pymongo<5.0 to be pulled
- Don't use deprecated property for emptiness check in queryset base 2633
```
### 0.24.0
```
=================
- EnumField improvements: now ``choices`` limits the values of an enum to allow
- Fix bug that prevented instance queryset from using custom queryset_class 2589
- Fix deepcopy of EmbeddedDocument 2202
- Introduce a base exception class for MongoEngine exceptions (MongoEngineException).
Note that this doesn't concern the pymongo errors 2515
- Fix error when using precision=0 with DecimalField 2535
- Add support for regex and whole word text search query 2568
- Add support for update aggregation pipeline 2578
- BREAKING CHANGE: Updates to support pymongo 4.0. Where possible deprecated
functionality has been migrated, but additional care should be taken when
migrating to pymongo 4.0 as existing code may have been using deprecated
features which have now been removed 2614.
For the pymongo migration guide see:
https://pymongo.readthedocs.io/en/stable/migrate-to-pymongo4.html.
In addition to the changes in the migration guide, the following is a high
level overview of the changes made to MongoEngine when using pymongo 4.0:
- limited support of geohaystack indexes has been removed
- ``QuerySet.map_reduce`` has been migrated from ``Collection.map_reduce``
and ``Collection.inline_map_reduce`` to use
``db.command({mapReduce: ..., ...})`` and support between the two may need
additional verification.
- UUIDs are encoded with the ``pythonLegacy`` encoding by default instead of
the newer and cross platform ``standard`` encoding. Existing UUIDs will
need to be migrated before changing the encoding, and this should be done
explicitly by the user rather than switching to a new default by
MongoEngine. This default will change at a later date, but to allow
specifying and then migrating to the new format a default ``json_options``
has been provided.
- ``Queryset.count`` has been using ``Collection.count_documents`` and
transparently falling back to ``Collection.count`` when using features that
are not supported by ``Collection.count_documents``. ``Collection.count``
has been removed and no automatic fallback is possible. The migration guide
documents the extended functionality which is no longer supported. Rewrite
the unsupported queries or fetch the whole result set and perform the count
locally.
- Pymongo 4 removed db.authenticate(), on which we were relying for authenticating
with username/password. The migration involved switching to providing credentials to
MongoClient BUT in case the authSource isn't provided, db.authenticate used to default to
authSource=current-database and MongoClient defaults to authSource="admin". Long story short,
if you observe authentication issue after migrating, make sure you provide the authSource
explicitly. (see 2626)
```
### 0.23.1
```
=================
- Bug fix: ignore LazyReferenceFields when clearing _changed_fields 2484
- Improve connection doc 2481
```
### 0.23.0
```
=================
- Bugfix: manually setting SequenceField in DynamicDocument doesn't increment the counter 2471
- Add MongoDB 4.2 and 4.4 to CI
- Add support for allowDiskUse on querysets 2468
```
### 0.22.1
```
=================
- Declare that Py3.5 is not supported in package metadata 2449
- Moved CI from Travis to Github-Actions
```
### 0.22.0
```
=================
- Fix LazyReferenceField dereferencing in embedded documents 2426
- Fix regarding the recent use of Cursor.__spec in .count() that was interfering with mongomock 2425
- Drop support for Python 3.5 by introducing f-strings in the codebase
```
### 0.21.0
```
=================
- Bug fix in DynamicDocument which is not parsing known fields in constructor like Document do 2412
- When using pymongo >= 3.7, make use of Collection.count_documents instead of Collection.count
and Cursor.count that got deprecated in pymongo >= 3.7.
This should have a negative impact on performance of count see Issue 2219
- Fix a bug that made the queryset drop the read_preference after clone().
- Remove Py3.5 from CI as it reached EOL and add Python 3.9
- Fix some issues related with db_field/field conflict in constructor 2414
- BREAKING CHANGE: Fix the behavior of Doc.objects.limit(0) which should return all documents (similar to mongodb) 2311
- Bug fix in ListField when updating the first item, it was saving the whole list, instead of
just replacing the first item (as usually done when updating 1 item of the list) 2392
- Add EnumField: ``mongoengine.fields.EnumField``
- Refactoring - Remove useless code related to Document.__only_fields and Queryset.only_fields
- Fix query transformation regarding special operators 2365
- Bug Fix: Document.save() fails when shard_key is not _id 2154
```
### 0.20.0
```
=================
- ATTENTION: Drop support for Python2
- Add Mongo 4.0 to Travis
- Fix error when setting a string as a ComplexDateTimeField 2253
- Bump development Status classifier to Production/Stable 2232
- Improve Queryset.get to avoid confusing MultipleObjectsReturned message in case multiple match are found 630
- Fixed a bug causing inaccurate query results, while combining ``__raw__`` and regular filters for the same field 2264
- Add support for the `elemMatch` projection operator in .fields() (e.g BlogPost.objects.fields(elemMatch__comments="test")) 2267
- DictField validate failed without default connection (bug introduced in 0.19.0) 2239
- Remove methods that were deprecated years ago:
- name parameter in Field constructor e.g `StringField(name="...")`, was replaced by db_field
- Queryset.slave_okay() was deprecated since pymongo3
- dropDups was dropped with MongoDB3
- ``Queryset._ensure_indexes`` and ``Queryset.ensure_indexes``, the right method to use is ``Document.ensure_indexes``
- Added pre-commit for development/CI 2212
- Renamed requirements-lint.txt to requirements-dev.txt 2212
- Support for setting ReadConcern 2255
```
Links
- PyPI: https://pypi.org/project/mongoengine
- Changelog: https://pyup.io/changelogs/mongoengine/
- Repo: https://github.com/MongoEngine/mongoengine/tarball/master
- Homepage: http://mongoengine.org/
This PR updates mongoengine from 0.19.1 to 0.24.1.
Changelog
### 0.24.1 ``` ================= - Allow pymongo<5.0 to be pulled - Don't use deprecated property for emptiness check in queryset base 2633 ``` ### 0.24.0 ``` ================= - EnumField improvements: now ``choices`` limits the values of an enum to allow - Fix bug that prevented instance queryset from using custom queryset_class 2589 - Fix deepcopy of EmbeddedDocument 2202 - Introduce a base exception class for MongoEngine exceptions (MongoEngineException). Note that this doesn't concern the pymongo errors 2515 - Fix error when using precision=0 with DecimalField 2535 - Add support for regex and whole word text search query 2568 - Add support for update aggregation pipeline 2578 - BREAKING CHANGE: Updates to support pymongo 4.0. Where possible deprecated functionality has been migrated, but additional care should be taken when migrating to pymongo 4.0 as existing code may have been using deprecated features which have now been removed 2614. For the pymongo migration guide see: https://pymongo.readthedocs.io/en/stable/migrate-to-pymongo4.html. In addition to the changes in the migration guide, the following is a high level overview of the changes made to MongoEngine when using pymongo 4.0: - limited support of geohaystack indexes has been removed - ``QuerySet.map_reduce`` has been migrated from ``Collection.map_reduce`` and ``Collection.inline_map_reduce`` to use ``db.command({mapReduce: ..., ...})`` and support between the two may need additional verification. - UUIDs are encoded with the ``pythonLegacy`` encoding by default instead of the newer and cross platform ``standard`` encoding. Existing UUIDs will need to be migrated before changing the encoding, and this should be done explicitly by the user rather than switching to a new default by MongoEngine. This default will change at a later date, but to allow specifying and then migrating to the new format a default ``json_options`` has been provided. - ``Queryset.count`` has been using ``Collection.count_documents`` and transparently falling back to ``Collection.count`` when using features that are not supported by ``Collection.count_documents``. ``Collection.count`` has been removed and no automatic fallback is possible. The migration guide documents the extended functionality which is no longer supported. Rewrite the unsupported queries or fetch the whole result set and perform the count locally. - Pymongo 4 removed db.authenticate(), on which we were relying for authenticating with username/password. The migration involved switching to providing credentials to MongoClient BUT in case the authSource isn't provided, db.authenticate used to default to authSource=current-database and MongoClient defaults to authSource="admin". Long story short, if you observe authentication issue after migrating, make sure you provide the authSource explicitly. (see 2626) ``` ### 0.23.1 ``` ================= - Bug fix: ignore LazyReferenceFields when clearing _changed_fields 2484 - Improve connection doc 2481 ``` ### 0.23.0 ``` ================= - Bugfix: manually setting SequenceField in DynamicDocument doesn't increment the counter 2471 - Add MongoDB 4.2 and 4.4 to CI - Add support for allowDiskUse on querysets 2468 ``` ### 0.22.1 ``` ================= - Declare that Py3.5 is not supported in package metadata 2449 - Moved CI from Travis to Github-Actions ``` ### 0.22.0 ``` ================= - Fix LazyReferenceField dereferencing in embedded documents 2426 - Fix regarding the recent use of Cursor.__spec in .count() that was interfering with mongomock 2425 - Drop support for Python 3.5 by introducing f-strings in the codebase ``` ### 0.21.0 ``` ================= - Bug fix in DynamicDocument which is not parsing known fields in constructor like Document do 2412 - When using pymongo >= 3.7, make use of Collection.count_documents instead of Collection.count and Cursor.count that got deprecated in pymongo >= 3.7. This should have a negative impact on performance of count see Issue 2219 - Fix a bug that made the queryset drop the read_preference after clone(). - Remove Py3.5 from CI as it reached EOL and add Python 3.9 - Fix some issues related with db_field/field conflict in constructor 2414 - BREAKING CHANGE: Fix the behavior of Doc.objects.limit(0) which should return all documents (similar to mongodb) 2311 - Bug fix in ListField when updating the first item, it was saving the whole list, instead of just replacing the first item (as usually done when updating 1 item of the list) 2392 - Add EnumField: ``mongoengine.fields.EnumField`` - Refactoring - Remove useless code related to Document.__only_fields and Queryset.only_fields - Fix query transformation regarding special operators 2365 - Bug Fix: Document.save() fails when shard_key is not _id 2154 ``` ### 0.20.0 ``` ================= - ATTENTION: Drop support for Python2 - Add Mongo 4.0 to Travis - Fix error when setting a string as a ComplexDateTimeField 2253 - Bump development Status classifier to Production/Stable 2232 - Improve Queryset.get to avoid confusing MultipleObjectsReturned message in case multiple match are found 630 - Fixed a bug causing inaccurate query results, while combining ``__raw__`` and regular filters for the same field 2264 - Add support for the `elemMatch` projection operator in .fields() (e.g BlogPost.objects.fields(elemMatch__comments="test")) 2267 - DictField validate failed without default connection (bug introduced in 0.19.0) 2239 - Remove methods that were deprecated years ago: - name parameter in Field constructor e.g `StringField(name="...")`, was replaced by db_field - Queryset.slave_okay() was deprecated since pymongo3 - dropDups was dropped with MongoDB3 - ``Queryset._ensure_indexes`` and ``Queryset.ensure_indexes``, the right method to use is ``Document.ensure_indexes`` - Added pre-commit for development/CI 2212 - Renamed requirements-lint.txt to requirements-dev.txt 2212 - Support for setting ReadConcern 2255 ```Links
- PyPI: https://pypi.org/project/mongoengine - Changelog: https://pyup.io/changelogs/mongoengine/ - Repo: https://github.com/MongoEngine/mongoengine/tarball/master - Homepage: http://mongoengine.org/