Ver. 0.9.0 - Development
- Removed the dispatch module from
- Asynchronous redis connection moved to pulsar.
- Added the :meth:`odm.Manager.save` as shortcut for immediately committing changes to a model.
- Bug fix in model registration.
- Bug fixes when primary key is not named
- 554 regression tests with 93% coverage.
Ver. 0.8.2 - 2013 July 4
- Critical bug fix in the :ref:`asynchronous redis publish/subscribe <redis_pubsub>` handler. Added some documentation.
- 591 regression tests with 93% coverage.
Ver. 0.8.1 - 2013 July 2
- C++ :ref:`redis parser <redis-parser>`. Requires cython during installation.
- Primary key can have any name (previously only
- Better implementation for :meth:`stdnet.odm.Session.update_or_create`.
setup.pyso that it does not log a python 2 module syntax error when installing for python 3.
- :ref:`Custom manager <custom-manager>` documentation.
- 590 regression tests with 93% coverage.
Ver. 0.8.0 - 2013 May 24
- This version brings several new functionalities, bug fixes, asynchronous connections and a departure from the global registration of models.
- The API for querying, committing and deleting instances has changed, and it it is now based on the :class:`stdnet.odm.Router` class.
- A :class:`stdnet.odm.Router` is a placeholder of registered models for one's application. Check the :ref:`registration tutorial <tutorial-registration>` for more details.
- Added preliminary support for :ref:`mongoDB backend <mongo-server>`. Pre-alpha at this stage.
- Added preliminary support for :ref:`Sql backend <sql-server>`. Pre-alpha at this stage.
- Can handle master/slave server configuration by registering models to a back-end server and read-only server for read operations (queries).
- AutoField has been renamed :class:`stdnet.odm.AutoIdField` and it does not inherit from :class:`stdnet.odm.IntegerField` so that it can work for different backends.
testmodule into the :mod:`stdnet.utils.test` module and refactored the main test class for handling tests on multiple back-ends at once.
- :class:`stdnet.odm.ManyToManyField` field can perform queries on the whole data-set of the model which maintains the :ref:`many-to-many relationship <many-to-many>`. To do so, the manager must be accessed via the class rather than an instance. Also the through attribute has been removed as it was equivalent to the model attribute.
- The :ref:`load_only <performance-loadonly>` query method can be applied to field of related models.
- The :ref:`load_related <performance-loadrelated>` query method can now load only
primary keyof the related element.
- Changed the default value of :attr:`stdnet.odm.ForeignKey.related_name` attribute to accommodate for multiple foreign keys with same related model in the same model.
- Fixed critical bug in :attr:`stdnet.odm.ForeignKey` with attribute
False. Previously the deletion of instances of the related model caused the deletion of the instances pointing to those deleted objects.
- Minor bug fix in lua
odmscript when sorting with respect related model fields which are missing.
- Added the new :meth:`stdnet.odm.StdModel.get_attr_value` method for retrieving nested attribute values using the (optional) :ref:`double underscore notation <tutorial-underscore>`.
- :attr:`stdnet.odm.Field.default` attribute made read-only.
- :meth:`stdnet.odm.Session.add` accept
force_updateparameter which can be used to force an
updaterather than an
overridewhen an instance is persistent and fully loaded.
- A new asynchronous redis connection for fully asynchronous usage of the api. Check the :ref:`asynchronous tutorial <tutorial-asynchronous>` for information.
- Refactored test suite to handle asynchronous and synchronous connections.
odmscript is able to fix unique-keys/ids conflicts.
- 578 regression tests with 93% coverage.
Ver. 0.7.0 - 2012 Oct 25
- It requires redis 2.6 or higher.
- Supported python versions: 2.6, 2.7, 3.2, 3.3.
- Some backward incompatible changes in the API and database schema.
- Tons of new features including a richer query API, improved performance via custom query options, more flexible transactions and lua scripting for redis.
- The orm module has been renamed odm for object data mapper. This was a painful change with the vast majority of files affected. But it is better to get terminology right at this stage rather than later.
- Redesign of :class:`stdnet.odm.ManyToManyField` which now uses a
throughmodel for building many to many relationships. This is the only backward incompatible change both in terms of API and database scema.
- Implemented :ref:`field lookups <range-lookups>`
- Added a prefixed redis client in :class:`stdnet.lib.redis.PrefixedRedis`.
- Added :class:`stdnet.odm.CompositeIdField` to handle situations where each combination of given set of :class:`stdnet.odm.Field` must be unique.
- Added ability to filter and search on :class:`stdnet.odm.ForeignKey` fields.
- Added :class:`stdnet.odm.Session` for managing transactions in the object data mapper.
- Moved structures from :mod:`stdnet.backends` to the :mod:`stdnet.odm` module.
- Added :meth:`stdnet.odm.Query.load_only` and :meth:`stdnet.odm.Query.dont_load` methods for loading a subset of a model fields. This can improve performance by reducing the amount of data transferred from the server to the client. Check the :ref:`performance tips <performance-loadonly>` regarding the new feature.
- Added :meth:`stdnet.odm.Query.load_related` for loading related fields of a queryset with a single database query. This can have huge :ref:`performance benefits <performance-loadrelated>` when you know you are going to access the related field in your model.
- Fixed bug in related managers. The
excludemethod was not implemented.
- :class:`stdnet.odm.PickleObjectField` uses the pickle protocol 2 for compatibility between python 2 and python 3.
- Refactored the
deletemethod of model instances.
- Added :meth:`stdnet.odm.StdModel.tojson` method for obtaining JSON representation of model instances.
- Indexes for :class:`stdnet.odm.ForeignKey` fields are stored at sets with
keys obtained from the field
- Added :meth:`stdnet.odm.StdModel.clone` method for cloning model instances.
- Refactored :ref:`transactions <model-transactions>` to be used with :ref:`remote data structures <model-structures>` and :ref:`structured fields <model-field-structure>`.
- pulsar or nose are required to run the test suite and unittest2 is required if using python 2.6.
- Moved the contrib module to :mod:`stdnet.apps`.
- Added :mod:`stdnet.utils.dates`.
- Added :mod:`stdnet.utils.path`.
- Added a Lua test suite for testing stand alone scripts. Requires lunatest.
- Serialisation works for :attr:`stdnet.odm.ManyToMany.through` models via the :func:`stdnet.odm.all_models_sessions` function (issue #48).
- Lua script for univariate timeseries. This means the standard redis distribution works with the :class:`stdnet.odm.TS` structure.
- PEP 386-compliant version number.
- 624 regression tests with 92% coverage.
Ver. 0.6.2 - 2011 Nov 14
- Critical bug fix in
deletemethod when a model has no indices.
- Critical bug fix in :class:`stdnet.odm.ManyToManyField` which was causing the
deletemethod to crash.
- 297 regression tests with 78% coverage.
Ver. 0.6.1 - 2011 Sep 10
- This is a minor release which brings an improved documentation, better support for the :class:`stdnet.odm.JSONField` and some minor bug fixes.
- Test suite parsing is done using the new python
argparsemodule since the
optparseis now deprecated. Check :ref:`running tests <runningtests>` for more information.
- Started work on
lua extensionsand added a development test tag
google analyticsto the documentation web site.
- The instance validation algorithm catches :class:`stdnet.FieldValueError` exceptions and stores them into the errors dictionary.
- Fixed bug in :class:`stdnet.odm.Field` when using default values. Default values are regenerated if missing during the saving algorithm.
- Refactored redisinfo for a better redis monitor.
- 297 regression tests with 78% coverage.
Ver. 0.6.0 - 2011 Aug 9
- New database schema incompatible with previous versions.
- This is a major release which brings into production a vast array of important new features including an improved database schema.
- :class:`stdnet.odm.StdModel` instances are mapped into separate redis hash tables with fields given by the model field names and values given by the instance field values.
- Implemented two types of sorting:
Implicit by the :class:`stdnet.odm.Metaclass` attribute
ordering. When using this route, items are stored in the database in a sorted fashion, therefore no overhead is required for the sorting step. Explicit by using the
sort_bymethod in a :class:`stdnet.odm.query.QuerySet` object. Check the :ref:`sorting <sorting>` documentation for more information.
- Unique fields (fields with :attr:`stdnet.odm.Field.unique` set to
True) are now indexed via redis hash tables which maps the field value to the object id. Previously they were stored in keys. This solution reduces the memory footprint and the number of keys used.
- Added :ref:`transaction support <model-transactions>`. This way model instances are always consistent even when redis shuts down during an update. Transactions are also useful when updating several instances at once.
- Added :ref:`serialization utilities <serialize-models>` for saving model data in JSON or CSV format. Custom serialization algorithms can be added to the library.
- Data encoders have been moved to the :mod:`stdnet.utils.encoders` module. There are four available, a dummy one (no encoding), Default to and from unicode and bytes, Bytes to and from bytes, PythonPickle to and from object and their pickle (bytes) representation and Json to and from structures and bytes.
as_stringparameter to :class:`stdnet.odm.JSONField` for specifying the storage method.
- Moved testing functions into the :mod:`stdnet.test` module.
hiddenattribute to :class:`stdnet.odm.Field`. Used in the search algorithm.
- Reorganized and expanded documentation.
- Bug fix in :class:`stdnet.odm.PickleObjectField` field.
- 289 regression tests with 78% coverage.
Ver. 0.5.5 - 2011 June 6
- Several new features, some important bug fixes and more tests.
- Added :func:`stdnet.odm.from_uuid` function which can be used to retrieve a model instance from its universally unique identifier.
- Added pickle support to models. The __getstate__ method return a tuple containg
idand a dictionary representation of scalar fields (obtained from the
- Bug Fix in :class:`stdnet.odm.JSONField`.
- Added tests for timeseries with date as keys (rather than datetimes).
- Bug fix in Backend and test suite, Redis port was not read.
- Bug fix in :class:`stdnet.contrib.timeseries`. The models were overridding the :meth:`__str__` rather than :meth:`__unicode__`.
- Added :func:`stdnet.odm.flush_models`, a utility functions for flushing model data.
- Added a new :class:`stdnet.odm.ByteField` which saves bytes rather than strings.
endin TimeSeres to
- 245 regression tests with 76% coverage.
Ver. 0.5.4 - 2011 May 18
- Another bug fixing release with a couple of new functionalities and a new
- Fixed a filtering problem when performing exclude on unique fields.
- Refactored registration utilities.
- Added :func:`stdnet.odm.test_unique` for testing uniqueness.
- Removed tagging from :mod:`contrib` and included in the :mod:`contrib.searchengine`. The search engine application has been refactored so that it can perform a fast, fuzzy, full text index using Redis.
- Bug fix on
disptachmodule which was failing when using python 3.
- Several more tests.
- 218 regression tests with 73% coverage.
Ver. 0.5.3 - 2011 Apr 30
- Fixed problem in setup.py.
removemethod to :class:`stdnet.odm.ManyToManyField` and fixed a bug on the same field.
- 203 regression tests with 71% coverage.
Ver. 0.5.2 - 2011 Mar 31
- This version brings some important bug fixes with tests.
- Bug fix in :meth:`stdnet.odm.IntegerField.to_python`.
- Added registration utilities in :mod:`stdnet.odm`.
- Bug fix in :class:`stdnet.odm.StdModel` class caused by the lack of a
__hash__operator, unique across different models, not just instances.
- Added experimental :mod:`stdnet.contrib.searchengine` application. Very much alpha.
scorefuncallable in structures to be used in OrderedSet.
- Added a
- 198 regression tests (including timeseries) with 71% coverage.
Ver. 0.5.1 - 2011 Feb 27
- Mainly bug fixes, documentations and more tests (improved coverage).
- Modified the
parse_infomethod in :mod:`stdnet.lib.redis`. Its now compatible with redis 2.2.
- Added documentation for :ref:`Redis timeseries <redis-timeseries>`.
- Added a command to :mod:`stdnet.contrib.monitor`, a stdnet application for djpcms.
- Critical Bug fix in redis backend
save_objectattribute. This bug was causing the deletion of related objects when updating the value of existing objects.
- Added licences to the :mod:`stdnet.dispatch` and :mod:`stdnet.lib.redis` module.
- 177 regression tests, 189 with timeseries with 67% coverage.
Ver. 0.5.0 - 2011 Feb 24
Ported to python 3 and dropped support for python 2.5.
Removed dependency from
redis-pyfor python 3 compatibility.
Refactored the object data mapper, including several bug fixes.
Added benchmark and profile to tests. To run benchmarks or profile:
python runtests.py -t bench python runtests.py -t bench tag1 tag2 python runtests.py -t profile
Included support for redis
timeserieswhich requires redis fork at https://github.com/lsbardel/redis.
Added :mod:`stdnet.contrib.sessions` module for handling web sessions. Experimental and pre-alpha.
Added :class:`stdnet.odm.JSONField` with tests.
167 regression tests with 61% coverage.
Ver. 0.4.2 - 2010 Nov 17
tagsin tests. You can now run specific tags:
python runtests.py hash
will run tests specific to hashtables.
tstests since the timeseries structure is not in redis yet. You can run them by setting tag
Ver. 0.4.1 - 2010 Nov 14
- Corrected spelling error in Exception
- Added initial support for
Mapstructures. Ordered Associative Containers.
- 63 tests
Ver. 0.4.0 - 2010 Nov 11
Development status set to
This version is incompatible with previous versions.
Documentation hosted at github.
CACHE_BACKEND = 'stdnet://127.0.0.1:6379/?type=redis&db=11&timeout=300'
Lazy loading of models via the :mod:`stdnet.dispatch` module.
Added :class:`stdnet.odm.AtomField` subclasses.
Before adding elements to a :class:`stdnet.odm.MultiField` the object needs to be saved, i.e. it needs to have a valid id.
backendsdirectory. Internal reorganisation of several modules.
app_labelattribute to :class:`stdnet.odm.DataMetaClass`.
Ver. 0.3.3 - 2010 Sep 13
- If a model is not registered and the manager method is accessed, it raises
- Changed the way tests are run. See documentation
redisset as requirements
- 29 tests
Ver. 0.3.2 - 2010 Aug 24
- Bug fixes
- Fixed a bug on
requiredis set to
Changelogincluded in documentation
- 27 tests
Ver. 0.3.1 - 2010 Jul 19
- Bug fixes
- 27 tests
Ver. 0.3.0 - 2010 Jul 15
- Overall code refactoring.
- Added ListField and OrderedSetField with Redis implementation
AttributErrorwhen method/attribute not available. Previously it returned
ModelNotRegisteredwhen trying to save an instance of a non-registered model
- 24 tests
Ver. 0.2.2 - 2010 Jul 7
RelatedManageris derived by
Managerand therefore implements both all and filter methods
- 10 tests
Ver. 0.2.0 - 2010 Jun 21
- First official release in pre-alpha
- 8 tests