Translucent persistent objects
persistent: automatic persistence for Python objects
This package contains a generic persistence implementation for Python. It forms the core protocol for making objects interact “transparently” with a database such as the ZODB.
Please see the Sphinx documentation (docs/index.rst) for further information.
- Added support for Python 3.4.
- In pure-Python Persistent, avoid loading state in _p_activate for non-ghost objects (which could corrupt their state). (PR #9)
- In pure-Python, and don’t throw POSKeyError if _p_activate is called on an object that has never been committed. (PR #9)
- In pure-Python Persistent, avoid calling a subclass’s __setattr__ at instance creation time. (PR #8)
- Make it possible to delete _p_jar / _p_oid of a pure-Python Persistent object which has been removed from the jar’s cache (fixes aborting a ZODB Connection that has added objects). (PR #7)
- Avoid a KeyError from _p_accessed() on newly-created objects under pure-Python: these objects may be assigned to a jar, but not yet added to its cache. (PR #6)
- Avoid a failure in Persistent.__setstate__ when the state dict contains exactly two keys. (PR #5)
- Fix a hang in picklecache invalidation if OIDs are manually passed out-of-order. (PR #4)
- Add PURE_PYTHON environment variable support: if set, the C extensions will not be built, imported, or tested.
- Updated Trove classifiers.
- Fixed the C-extensions under Py3k (previously they compiled but were not importable).
- Added support for Python 3.3.
- C extenstions now build under Python 3.2, passing the same tests as the pure-Python reference implementation.
- Fixed: In the C implimentation, an integer was compared with a pointer, with undefined results and a compiler warning.
- Fixed: the Python implementation of the _p_estimated_size propety didn’t support deletion.
- Simplified implementation of the _p_estimated_size property to only accept integers. A TypeError is raised if an incorrect type is provided.
- Correct initialization functions in renamed _timestamp extension.
Worked around test failure due to overflow to long on 32-bit systems.
Renamed TimeStamp extension module to avoid clash with pure-Python timestamp module on case-insensitive filesystems.
N.B: the canonical way to import the TimeStamp class is now:
from persistent.timestamp import TimeStamp
which will yield the class from the extension module (if available), falling back to the pure-Python reference implementation.
- Added explicit support for Python 3.2 and PyPy.
- Note that the C implementations of Persistent, PickleCache, and Timestamp are not built (yet) on these platforms.
- Dropped support for Python < 2.6.
- 100% unit test coverage.
- Removed all ZODB-dependent tests:
- Rewrote some to avoid the dependency
- Cloned the remainder into new ZODB.tests modules.
- Refactored some doctests refactored as unittests.
- Completed pure-Python reference implementations of ‘Persistent’, ‘PickleCache’, and ‘TimeStamp’.
- All covered platforms tested under tox.
- Added support for continuous integration using tox and jenkins.
- Added setup.py dev alias (installs nose and coverage).
- Dropped dependency on zope.testing / zope.testrunner: tests now run with setup.py test.
- Refactored many Doctests as Sphinx documentation (snippets are exercised via ‘tox’).
- Added setup.py docs alias (installs Sphinx and repoze.sphinx.autointerface).
Release history Release notifications
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.