Releases: marrow/mongo
Enhancement Release 1.1.2
General corrections and changes:
- Array field could not be filtered as not-equal. #43
- The new
Lockabletrait implements mutex lock behaviour at the document level. #47 - Package build and automated testing adjustments including expanded build matrixes, Bandit exclusions, and multiple MongoDB versions.
- Dead code removal.
- Adaption to future reserved word use;
awaitwill be reserved in Python 3.7+. - Corrections for certain edge cases involving casting of
Nonevalues.
Backwards incompatible changes:
- Due to the reservedness of
awaitmentioned above, its use will raise an error. Usewaitinstead.
Field types now available:
-
Linkfor the storage of URI values such as HTTP URLs,mailto:,tel:, etc. #45 / #39 -
Mappingfield to automatically perform read-only translation of a keyed list of embedded documents into a dictionary. #46 -
Setfield will utilize a truesetinstance Python-side.
Field enhancements:
-
Fields may now be excluded from positional instantiation. #28
-
Fields may now be adapted / mutated to specialize when inheriting without complete replacement. #38
-
Aliasfields may now trigger deprecation warnings if requested. #48 -
Datefields are now timezone aware ifpytzis installed, and able to intelligently utilize the server-local timezone iftzlocalis installed. (Or just utilize Marrow Mongo'stzinstallation flag.) #51 -
PluginReferencecan now perform simple search and replace in Python import references, allowing for mapping of old import paths to new ones during code refactoring. #49
Refinement Release 1.1.1
Please note that due to Pypi stupidity, version 1.1.1.1 there is actually 1.1.1.
New or updated in this release:
- Removal of diagnostic information and updated testing/commit configurations, improving commit performance and bumping Pypy3 versions.
- Correction of ABC participation (and missing shallow copy method) for Pypy use of query fragments. #32
- Corrected
$regexgeneration. - Collation support.
- Passing an existing document (with
_idkey) to anObjectIdfield will utilize the ID provided therein. #20 - Enhanced
Stringfield capabilities to include stripping and case conversion. #33 - Shared
utcnowhelper function. - Improved documentation coverage.
- Improved generalized programers' representations.
- Improved query fragment merging.
- Corrected Reference field behaviours.
- Dead code removal.
- Updated
ArrayandEmbedfield default value handling to reduce boilerplate.
Potentially backwards-incompatible changes:
- Simplification to only support a single referenced kind in complex fields such as
ArrayandEmbed. As multi-kind support was not fully implemented, this should not disrupt much.
New fields, including:
Decimal— #23Period— Storage of dates rounded (floor) to their nearest period.Markdown— Rich storage of Markdown textual content. #34Path— Store a PurePosixPath as a string. #35
Traits are new, see #26, including:
Collection— Isolating collection management semantics from the coreDocumentclass.Derived— Isolating subclass management and loading from the coreDocumentclass.Expires— Automated inclusion ofTTL(time-to-live) field and index definitions, including expiry check on load.Identified— Isolation of primary key management from coreDocumentclass.Localized— Management of contained localizable top-level document content.Published— Management of publication/retraction and dedicated creation/modification times.Queryable— Encapsulation of collection-level record management. (Not an Active Record pattern.)
Feature Release 1.1.0
New in this release:
- Add Landscape.io integration.
- Improve overall code health. (#14)
- Added missing project metadata.
- Updated installation documentation. 81e7702
- Remove dependency on
pytz. 815a74a - Removed our own
compatmodule; schema already has a sufficient one. - Allow for
Referencefields to cache data they reference. (#8) Array&Embeddereferencing +Aliaspseudo-field support. (#12)- Ability to dereference
ArrayandEmbedsubfield values when querying through class attribute access. - Added
Aliaspseudo-field to allow the creation of shortcuts for value retrieval and assignment (via instance attribute access) and querying (through class attribute access). ArrayandEmbednow persist their typecasting within__data__, to preserve changes to nested values. (This is generally safe, however do not utilizePluginReferenceas an embeddable kind.)
- Ability to dereference
- Allow for fields to be combined, not just query documents. (#11)
- Field references (
Qinstances generated through class-based attribute access of fields) may now be combined to save time in queries involving multiple fields being compared against the same value.
- Field references (
- Parameterized filter, sort, projection and updates. (#4)
- Addition of
~inversion /$notsupport onOps. - Split
Opstypes. - Ensure Document uses
odict.
- Addition of
- GeoJSON and geographic querying support. (#6)
- Added Document types:
GeoJSONGeoJSONCoordPointLineStringPolygonMultiPointMultiLineStringMultiPolygonGeometryCollection
- Added field query operators:
nearintersectswithin
- Added parametric filter operators:
nearwithinwithin_boxwithin_polygonwithin_centerwithin_sphereintersects
- Added Document types:
- Ability to perform certain collection-level operations. (#17)
- Added Document class methods:
create_collectionget_collectioncreate_indexes
- Added the following Document class attributes to control collection settings:
__collection__- the name of the collection to use__read_preference__- default ReadPreference__read_concern__- default ReadConcern__write_concern__- default WriteConcern__capped__- the size, in bytes, to allocate as a capped collection__capped_count__- additionally limit the number of records__engine__- override storage engine options__validate__- one of 'off' (the default), 'strict', or 'moderate'.
- Added Document class methods:
Initial Release 1.0.0
- Initial release of basic field mapping functionality.