Skip to content

Releases: marrow/mongo

Enhancement Release 1.1.2

13 Sep 19:41
40939a4
Compare
Choose a tag to compare

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

Refinement Release 1.1.1

17 May 19:10
1.1.1
4667e10
Compare
Choose a tag to compare

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

Feature Release 1.1.0

28 Nov 01:12
1.1.0
7d63680
Compare
Choose a tag to compare

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

Initial Release 1.0.0

21 Nov 09:54
e41dc98
Compare
Choose a tag to compare
  • Initial release of basic field mapping functionality.