Releases: marrow/mongo
Enhancement Release 1.1.2
General corrections and changes:
- Array field could not be filtered as not-equal. #43
- The new
Lockable
trait 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;
await
will be reserved in Python 3.7+. - Corrections for certain edge cases involving casting of
None
values.
Backwards incompatible changes:
- Due to the reservedness of
await
mentioned above, its use will raise an error. Usewait
instead.
Field types now available:
-
Link
for the storage of URI values such as HTTP URLs,mailto:
,tel:
, etc. #45 / #39 -
Mapping
field to automatically perform read-only translation of a keyed list of embedded documents into a dictionary. #46 -
Set
field will utilize a trueset
instance 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
-
Alias
fields may now trigger deprecation warnings if requested. #48 -
Date
fields are now timezone aware ifpytz
is installed, and able to intelligently utilize the server-local timezone iftzlocal
is installed. (Or just utilize Marrow Mongo'stz
installation flag.) #51 -
PluginReference
can 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
$regex
generation. - Collation support.
- Passing an existing document (with
_id
key) to anObjectId
field will utilize the ID provided therein. #20 - Enhanced
String
field capabilities to include stripping and case conversion. #33 - Shared
utcnow
helper function. - Improved documentation coverage.
- Improved generalized programers' representations.
- Improved query fragment merging.
- Corrected Reference field behaviours.
- Dead code removal.
- Updated
Array
andEmbed
field default value handling to reduce boilerplate.
Potentially backwards-incompatible changes:
- Simplification to only support a single referenced kind in complex fields such as
Array
andEmbed
. 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 coreDocument
class.Derived
— Isolating subclass management and loading from the coreDocument
class.Expires
— Automated inclusion ofTTL
(time-to-live) field and index definitions, including expiry check on load.Identified
— Isolation of primary key management from coreDocument
class.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
compat
module; schema already has a sufficient one. - Allow for
Reference
fields to cache data they reference. (#8) Array
&Embed
dereferencing +Alias
pseudo-field support. (#12)- Ability to dereference
Array
andEmbed
subfield values when querying through class attribute access. - Added
Alias
pseudo-field to allow the creation of shortcuts for value retrieval and assignment (via instance attribute access) and querying (through class attribute access). Array
andEmbed
now persist their typecasting within__data__
, to preserve changes to nested values. (This is generally safe, however do not utilizePluginReference
as an embeddable kind.)
- Ability to dereference
- Allow for fields to be combined, not just query documents. (#11)
- Field references (
Q
instances 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 /$not
support onOps
. - Split
Ops
types. - Ensure Document uses
odict
.
- Addition of
- GeoJSON and geographic querying support. (#6)
- Added Document types:
GeoJSON
GeoJSONCoord
Point
LineString
Polygon
MultiPoint
MultiLineString
MultiPolygon
GeometryCollection
- Added field query operators:
near
intersects
within
- Added parametric filter operators:
near
within
within_box
within_polygon
within_center
within_sphere
intersects
- Added Document types:
- Ability to perform certain collection-level operations. (#17)
- Added Document class methods:
create_collection
get_collection
create_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.