2017-09-13 Noaphiel

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. Use wait 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 true set 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 if pytz is installed, and able to intelligently utilize the server-local timezone if tzlocal is installed. (Or just utilize Marrow Mongo's tz 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

2017-05-17 Mirthra

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 an ObjectId 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 and Embed 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 and Embed. As multi-kind support was not fully implemented, this should not disrupt much.

New fields, including:

  • Decimal#23

  • Period — Storage of dates rounded (floor) to their nearest period.

  • Markdown — Rich storage of Markdown textual content. #34

  • Path — Store a PurePosixPath as a string. #35

Traits are new, see #26, including:

  • Collection — Isolating collection management semantics from the core Document class.

  • Derived — Isolating subclass management and loading from the core Document class.

  • Expires — Automated inclusion of TTL (time-to-live) field and index definitions, including expiry check on load.

  • Identified — Isolation of primary key management from core Document 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.)

2016-11-27 Oranir

  • 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 and Embed 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 and Embed now persist their typecasting within __data__, to preserve changes to nested values. (This is generally safe, however do not utilize PluginReference as an embeddable kind.)

  • 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.

  • Parameterized filter, sort, projection and updates. #4

    • Addition of ~ inversion / $not support on Ops.

    • Split Ops types.

    • Ensure Document uses odict.

  • 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

  • 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'.

2016-11-21 Turmiel

  • Initial release of basic field mapping functionality.