Ming News / Release Notes ===================================== The latest releases support PyMongo 3. The older 0.5.x releases support PyMongo 2 and Python 2. 0.13.0 (Mar 16, 2023) --------------------- * remove Python 3.6 support * set all DeprecationWarning's stacklevel=2 to show caller * MIM: verify kwargs in find/find_one 0.12.2 (Nov 15, 2022) --------------------- * MIM: add support for UUID types * improve type hints 0.12.1 (Sep 13, 2022) --------------------- * allow Field(bytes) to work like Field(S.Binary) * handle rare race condition exception * MIM: support cursor/find as context manager * MIM: handle bytes & Binary in queries * MIM: handle queries given as RawBSONDocument * improve type hints * run tests on 3.10 and 3.11 * test fix for python 3.11 * test suite can be run in parallel (tox -p auto) 0.12.0 (Jun 2, 2022) --------------------- * Remove support for python < 3.6 0.11.2 (Oct 15, 2021) --------------------- * MIM: support distinct() usage on fields that are lists * improve a few type hints 0.11.1 (Sep 9, 2021) --------------------- * Include py.typed and .pyi files in distribution 0.11.0 (Sep 9, 2021) --------------------- * Drop support for Python 2.7, 3.3, and 3.4 * Support for Python 3.9 * MIM: support sparse unique indexes * propagate return values from various update/delete/insert operations * Support __init_subclass__ arguments * validate() may not have been validating sub-documents * Add some type annotations 0.10.2 (Jun 19, 2020) --------------------- * Fix error using save() and no _id * MIM: Avoid errors from _ensure_orig_key when positional $ is used 0.10.1 (Jun 17, 2020) --------------------- * fix situation with gridfs indexes and MIM * fix validate=False and update some MIM params to match pymongo closer 0.10.0 (Jun 8, 2020) -------------------- * Support for PyMongo 3.10 * Support for Python 3.8 * Removed start_request/end_request from MIM * Added ``Cursor.close`` to MIM * Moved testing from ``nose`` to ``unittest`` 0.9.2 (Mar 12, 2020) -------------------- * Support ODM before_save hook on Python 3 0.9.1 (May 15, 2019) -------------------- * Allow usage of PyMongo 3.7 0.9.0 (Feb 22, 2019) -------------------- * Support for Decimal128 type in MongoDB through ``schema.NumberDecimal`` * Deprecation of ``make_safe`` for Ming Documents 0.8.1 (Feb 22, 2019) -------------------- * Fix for connection string when seedlist is used 0.8.0 (Jan 15, 2019) -------------------- * ``FormEncode`` is now an optional dependency only required for projects relying on ``ming.configure``. * Python 3.7 is now officially supported 0.7.1 (Nov 30, 2018) -------------------- * MIM: Minimal support for ``Collection.aggregate`` 0.7.0 (May 10, 2018) ------------------------------------------------ * MIM: Support for PyMongo 3.6 * MIM: Partial support for ``$text`` queries * MIM: Make created index match more the style pymongo itself stores indexes. * MIM: Support matching ``$regex`` against arrays. * MIM: Support fake ``$score`` in projections. * MIM: Support ``$slice`` in projections. * MIM: Partial support for bulk writes, currently only ``UpdateOne``. 0.5.7 (Mar 12, 2020) ------------------------------------------------ * Support ODM before_save hook on Python 3 0.5.6 (Apr 2, 2018) ------------------------------------------------ * MIM: match correctly when search values are lists or dicts more than 1 level deep. 0.6.1 (Sep 27, 2017) -------------------- * MIM: Support searching for $regex that contain text instead of only "startswith" 0.6.0 (Sep 24, 2017) -------------------- * Support new PyMongo 3.X API * MIM: Fix duplicated keys are detected on upsertions * MIM: Support for filters on distinct * MIM: Provide drop_indexes * MIM: Simulate collstats * MIM: Support insert_one and insert_many results * MIM: Support update_one and update_many results * MIM: Support indexing whole subdocuments * MIM: Support for setOnInsert 0.5.5 (Nov 30, 2016) ------------------------------------------------ * MIM: do not raise errors when regex matching against None or non-existant values 0.5.4 (Apr 29, 2016) ------------------------------------------------ * On Python3, bson.Binary actually decodes to bytes * Support distinct() on cursors (already supported on collections) 0.5.3 (Oct 18, 2015) ------------------------------------------------ * Documentation Rewrite * Speed improvements on ODM queries that retrieve objects not already tracked by UOW/IMAP. * Mapper now provides .ensure_all_indexes() method to ensure indexes for all registered mappers. * MappedClass (ODM Declarative) now supports ``version_of`` and ``migrate`` for migrations. * MappedClass.query.get now supports _id as its first positional argument * ODMSession constructor now exposes the ``autoflush`` argument to automatically flush session before ODM queries, previously it was always forced to ``False``. Pay attention that as MongoDB has no transactions autoflush will actually write the changes to the database. * ODMSession now exposes ``.db`` and ``.bind`` properties which lead to the underlying pymongo database and DataStore * Fixed ODMSession.by_name which previously passed the datastore as session argument. * ODMSession now provides ``.refresh`` method that updates a specific object from the database * ThreadLocalODMSession now provides ``by_name`` method to configure Thread Safe sessions using ``ming.configure`` * ming.schema.Invalid now has default ``None`` argument for state, it was never used by the way. 0.5.2 (Apr 16, 2015) ------------------------------------------------ * Support for text indexes * Specify our requirement on pymongo < 3.0 (until supported) 0.5.1 (Apr 6, 2015) ------------------------------------------------ * Cursor compatibility for Python 3 0.5.0 (Jun 5, 2014) ------------------------------------------------ * Compatible with pymongo 2.7 * Compatible with Python 3.3 and 3.4 * Compatible with PyPy * Fix update_if_not_modified * MIM: support float comparisons * ming.configure now allows any extra params to pass through to MongoClient 0.4.7 (Apr 16, 2014) ------------------------------------------------ * Add allow_none option to ForeignIdProperty 0.4.6 (Apr 4, 2014) ------------------------------------------------ * Fixed issue with if_missing for ForeignIdProperty 0.4.5 (Apr 4, 2014) ------------------------------------------------ * avoid extremely long error text * Fixed random generated ObjectId on empty ForeignIdProperty 0.4.4 (Mar 10, 2014) ------------------------------------------------ * Revert ForeignIdProperty None optimization * Fix delete event hook signatures * Fix typo when flushing an individual object flagged for deletion 0.4.3 (Jan 7, 2014) ------------------------------------------------ * Return result of update_partial() * ManyToMany support relying on a list of ObjectIds * Make RelationProperty writable * Support for all pymongo options in custom_indexes declaration * Permit relationships that point to same model * Fix wrong behavior for MIM find_and_modify new option and add test case * ForeignIdProperty None optimization 0.4.2 (Sep 26, 2013) ------------------------------------------------ * bool(cursor) now raises an Exception. Pre-0.4 it evaluated based on the value of `__len__` but since 0.4 removed `__len__` it always returned True (python's default behavior) which could be misleading and unexpected. This forces application code to be changed to perform correctly. * schema migration now raises the new schema error if both old & new are invalid * aggregation methods added to session. `distinct`, `aggregate`, etc are now available for convenience and pass through directly to pymongo * MIM: support for indexing multi-valued properties * MIM: forcing numerical keys as strings * MIM: add `manipulate` arg to `insert` for closer pymongo compatibility 0.4.1 and 0.3.9 (Aug 30, 2013) ------------------------------------------------ * MIM: Support slicing cursors * MIM: Fixed exact dot-notation queries * MIM: Fixed dot-notation queries against null fields * MIM: Translate time-zone aware timestamps to UTC timestamps. `pytz` added as dependency * MIM: Allow the remove argument to `find_and_modify` 0.4 (June 28, 2013) ------------------------------------------------ * removed 'flyway' package from ming. It is now available from https://github.com/amol-/ming-flyway This removes the dependency on PasteScript and will make Python 3 migration easier. * WebOb dependency is optional. * removed `cursor.__len__` You must change `len(query)` to `query.count()` now. This prevents inadvertent extra count queries from running. https://sourceforge.net/p/merciless/bugs/18/ 0.3.2 through 0.3.8 ------------------------------------------------ * many improvements to make MIM more like actual mongo * various fixes and improvements 0.3.2 (rc1) (January 8, 2013) ------------------------------------------------ Some of the larger changes: * Update to use MongoClient everywhere instead of variants of `pymongo.Connection` * Remove MasterSlaveConnection and ReplicaSetConnection support 0.3.2 (dev) (July 26, 2012) ------------------------------------------------ Whoops, skipped a version there. Anyway, the bigger changes: * Speed improvements in validation, particularly `validate_ranges` which allows selective validation of arrays * Allow requiring scalar values to be non-None * Add support for geospatial indexing * Updates to engine/datastore creation syntax (use the new `create_engine` or `create_datastore`, which are significantly simplified and improved). 0.3 (March 6, 2012) ------------------------------------------------ Lots of snapshot releases, and finally a backwards-breaking change. The biggest change is the renaming of the ORM to be the ODM. * Renamed ming.orm to ming.odm * Lots of bug fixes * Add gridfs support to Ming * Add contextual ODM session 0.2.1 ---------- It's been a lonnnnng time since our last real release, so here are the high points (roughly organized from low-level to high-level): * Support for replica sets * Support for using gevent with Ming (asynchronous Python library using libevent) * Add find_and_modify support * Create Mongo-in-Memory support for testing (mim:// url) * Some don't shoot-yourself-in-the-foot support (calling .remove() on an instance, for example) * Move away from using formencode.Invalid exception * Allow skipping Ming validation, unsafe inserts * Elaborate both the imperative and declarative support in the document- and ORM-layers * Polymorphic inheritance support in the ORM