[Checkins] [zopefoundation/persistent] 7a5916: In the case of a ZODB broken object, the Python pe...

GitHub noreply at github.com
Tue May 19 23:55:20 CEST 2015


  Branch: refs/heads/master
  Home:   https://github.com/zopefoundation/persistent
  Commit: 7a5916090b92494e23c9804c59b8b765bbe933c0
      https://github.com/zopefoundation/persistent/commit/7a5916090b92494e23c9804c59b8b765bbe933c0
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-07 (Tue, 07 Apr 2015)

  Changed paths:
    M persistent/persistence.py

  Log Message:
  -----------
  In the case of a ZODB broken object, the Python persistent implementation needs to bypass the _setattr_ implementation when working with its own internal state variables. This much gets the ZODB broken tests to pass. Need to figure out how to test this locally.


  Commit: fec328a5606a47df2d0b1d870d9a02181bb3fd38
      https://github.com/zopefoundation/persistent/commit/fec328a5606a47df2d0b1d870d9a02181bb3fd38
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-07 (Tue, 07 Apr 2015)

  Changed paths:
    M CHANGES.rst
    M persistent/tests/test_timestamp.py
    M persistent/timestamp.py

  Log Message:
  -----------
  Fixes zopefoundation/persistent#18 : Make the .raw() and repr() of the Python TimeStamp match the C version in more cases. Also, make the behaviour of comparisons and hashing match as well; test all this.


  Commit: 54a18eb3148e24f233e5142e43377ae6c34b893e
      https://github.com/zopefoundation/persistent/commit/54a18eb3148e24f233e5142e43377ae6c34b893e
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-07 (Tue, 07 Apr 2015)

  Changed paths:
    M persistent/tests/test_timestamp.py
    M persistent/timestamp.py

  Log Message:
  -----------
  Also make the str() value match betwenn C and Python TimeStamp objects; test this.


  Commit: 374604aabe8b8e668f1cc08073adb357bcc79055
      https://github.com/zopefoundation/persistent/commit/374604aabe8b8e668f1cc08073adb357bcc79055
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/persistence.py
    M persistent/picklecache.py
    M persistent/tests/test_persistence.py
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  The Python PickleCache is close enough to the C PickleCache that ZODB's testCache passes. Required some small updates and additions to our own test cases; the update_object_size_estimation is not tested here yet.


  Commit: 5efcab76b76cb3b184ebf7ae051f87a368f30d10
      https://github.com/zopefoundation/persistent/commit/5efcab76b76cb3b184ebf7ae051f87a368f30d10
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/tests/test_timestamp.py
    M persistent/timestamp.py

  Log Message:
  -----------
  Add tests covering the AttributeError cases of the comparison functions.


  Commit: 69d60dc28e0ccf6ee4e1a00692bcdacd4d3c7e71
      https://github.com/zopefoundation/persistent/commit/69d60dc28e0ccf6ee4e1a00692bcdacd4d3c7e71
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M .gitignore
    M persistent/persistence.py
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  Add a test for changing the _p_ attributes of broken objects; fix it for _p_changed in pure-python.


  Commit: f389d8771bb266b982e5cfba7da77b3aee5b7fd6
      https://github.com/zopefoundation/persistent/commit/f389d8771bb266b982e5cfba7da77b3aee5b7fd6
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/picklecache.py
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  The Python version of PickleCache.minimize does what the C version does and ghosts the evicted objects.


  Commit: 33fde3ce41a61446e90d9c779be55646f24c18ee
      https://github.com/zopefoundation/persistent/commit/33fde3ce41a61446e90d9c779be55646f24c18ee
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/picklecache.py

  Log Message:
  -----------
  Support shrinking the Python PickleCache based on a target byte count, and clear out references to ejected objects when done. This makes the ZODB testConnection and testConnectionSavepoint tests pass but is not tested here.


  Commit: 95ffa811cddad268cf481643e01a08a43bfd93c5
      https://github.com/zopefoundation/persistent/commit/95ffa811cddad268cf481643e01a08a43bfd93c5
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/persistence.py

  Log Message:
  -----------
  Match the C implementation for the way in which _p_jar and _p_oid can be changed. ZODB depends on this.


  Commit: b6fc8748a349984b7c317e3fda70c91e4801c4d2
      https://github.com/zopefoundation/persistent/commit/b6fc8748a349984b7c317e3fda70c91e4801c4d2
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M .gitignore
    M persistent/persistence.py
    M persistent/picklecache.py

  Log Message:
  -----------
  More on C and ZODB compatibility for Python PickleCache and Persistent. There are some interconnected lifetime issues that this solves for ZODB's cache tests, and what appear to be some genuine bugs in invalidation.


  Commit: 13aaa3dcfbed09eb9bf2a73dadaad838e1295a16
      https://github.com/zopefoundation/persistent/commit/13aaa3dcfbed09eb9bf2a73dadaad838e1295a16
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/picklecache.py
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  Fix picklecache for persistent classes and https://bugs.launchpad.net/zodb/+bug/185066


  Commit: 380b6f7b8a1d516595f75ee6445df8163e518150
      https://github.com/zopefoundation/persistent/commit/380b6f7b8a1d516595f75ee6445df8163e518150
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/picklecache.py

  Log Message:
  -----------
  The 'cache_size' property must be mutable; ZODB's historical_connection tests depend on it.


  Commit: 61324e9f6e43d85bec64bc7e56f3dd180f993d60
      https://github.com/zopefoundation/persistent/commit/61324e9f6e43d85bec64bc7e56f3dd180f993d60
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/picklecache.py

  Log Message:
  -----------
  More fixes for ZODB's persistentclass tests. Not tested here.


  Commit: 7ebf1284b39348b9906267502662383fd7d2f973
      https://github.com/zopefoundation/persistent/commit/7ebf1284b39348b9906267502662383fd7d2f973
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/persistence.py

  Log Message:
  -----------
  In the case of a ZODB broken object, the Python persistent implementation needs to bypass the _setattr_ implementation when working with its own internal state variables. This much gets the ZODB broken tests to pass. Need to figure out how to test this locally.


  Commit: 169c07a04a82110d0ef559a69a36ca035c52f1d5
      https://github.com/zopefoundation/persistent/commit/169c07a04a82110d0ef559a69a36ca035c52f1d5
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/persistence.py
    M persistent/picklecache.py
    M persistent/tests/test_persistence.py
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  The Python PickleCache is close enough to the C PickleCache that ZODB's testCache passes. Required some small updates and additions to our own test cases; the update_object_size_estimation is not tested here yet.


  Commit: 270394f3c7f318f555d74e463ef781e4d10c6a16
      https://github.com/zopefoundation/persistent/commit/270394f3c7f318f555d74e463ef781e4d10c6a16
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M .gitignore
    M persistent/persistence.py
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  Add a test for changing the _p_ attributes of broken objects; fix it for _p_changed in pure-python.


  Commit: 8bfef6787fbf24838325f431fa301fac4a4a0054
      https://github.com/zopefoundation/persistent/commit/8bfef6787fbf24838325f431fa301fac4a4a0054
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/picklecache.py
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  The Python version of PickleCache.minimize does what the C version does and ghosts the evicted objects.


  Commit: 43a64ad4592660784cb21328afc66ef9691e9899
      https://github.com/zopefoundation/persistent/commit/43a64ad4592660784cb21328afc66ef9691e9899
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/picklecache.py

  Log Message:
  -----------
  Support shrinking the Python PickleCache based on a target byte count, and clear out references to ejected objects when done. This makes the ZODB testConnection and testConnectionSavepoint tests pass but is not tested here.


  Commit: f16959ff3d0aab71092e9df76f81755deb5f5d3d
      https://github.com/zopefoundation/persistent/commit/f16959ff3d0aab71092e9df76f81755deb5f5d3d
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/persistence.py

  Log Message:
  -----------
  Match the C implementation for the way in which _p_jar and _p_oid can be changed. ZODB depends on this.


  Commit: 9196be750be215dc3f5223083a392ff01557710b
      https://github.com/zopefoundation/persistent/commit/9196be750be215dc3f5223083a392ff01557710b
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M .gitignore
    M persistent/persistence.py
    M persistent/picklecache.py

  Log Message:
  -----------
  More on C and ZODB compatibility for Python PickleCache and Persistent. There are some interconnected lifetime issues that this solves for ZODB's cache tests, and what appear to be some genuine bugs in invalidation.


  Commit: 67265cbb1df07e63067dbd66e7b3336b7ca53370
      https://github.com/zopefoundation/persistent/commit/67265cbb1df07e63067dbd66e7b3336b7ca53370
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/picklecache.py
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  Fix picklecache for persistent classes and https://bugs.launchpad.net/zodb/+bug/185066


  Commit: 81da2c01434a0bcdd72267799977a0d434798c3b
      https://github.com/zopefoundation/persistent/commit/81da2c01434a0bcdd72267799977a0d434798c3b
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/picklecache.py

  Log Message:
  -----------
  The 'cache_size' property must be mutable; ZODB's historical_connection tests depend on it.


  Commit: cf1f66ff0b4faf6df01f10e79b71022db7b33d01
      https://github.com/zopefoundation/persistent/commit/cf1f66ff0b4faf6df01f10e79b71022db7b33d01
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/picklecache.py

  Log Message:
  -----------
  More fixes for ZODB's persistentclass tests. Not tested here.


  Commit: d7af59d5563189835fabe885c5f1608104d28536
      https://github.com/zopefoundation/persistent/commit/d7af59d5563189835fabe885c5f1608104d28536
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M CHANGES.rst

  Log Message:
  -----------
  Merge master.


  Commit: 659a6e790686d71c1cd2aa0363864a581fdcb371
      https://github.com/zopefoundation/persistent/commit/659a6e790686d71c1cd2aa0363864a581fdcb371
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M CHANGES.rst

  Log Message:
  -----------
  Remove duplicate change entry.


  Commit: 9ac215fe12e6d84329b256c4977fe2a8ecd0321b
      https://github.com/zopefoundation/persistent/commit/9ac215fe12e6d84329b256c4977fe2a8ecd0321b
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M CHANGES.rst

  Log Message:
  -----------
  change note


  Commit: e3a9b13a07bdc8f8481b6d810b47374cfc4bf22a
      https://github.com/zopefoundation/persistent/commit/e3a9b13a07bdc8f8481b6d810b47374cfc4bf22a
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/persistence.py
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  100% coverage for persistence.py


  Commit: ba3c0022e5c4ed1f5ee60011a63e0d2b81855e8a
      https://github.com/zopefoundation/persistent/commit/ba3c0022e5c4ed1f5ee60011a63e0d2b81855e8a
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-08 (Wed, 08 Apr 2015)

  Changed paths:
    M persistent/picklecache.py
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  100% coverage for picklecache.


  Commit: 4dab3873012ed78134c61835d9470de29f08821e
      https://github.com/zopefoundation/persistent/commit/4dab3873012ed78134c61835d9470de29f08821e
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-09 (Thu, 09 Apr 2015)

  Changed paths:
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  Add test for p_invalidate calling _p_deactivate.


  Commit: f94f7ec8999bf1c530fed2bf5ba6b2e2fe7918ec
      https://github.com/zopefoundation/persistent/commit/f94f7ec8999bf1c530fed2bf5ba6b2e2fe7918ec
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-09 (Thu, 09 Apr 2015)

  Changed paths:
    M CHANGES.rst
    M persistent/tests/test_timestamp.py
    M persistent/timestamp.py

  Log Message:
  -----------
  Merge issue21


  Commit: a4f4d9f69aa1004eb4f01d92e765e6813875fe54
      https://github.com/zopefoundation/persistent/commit/a4f4d9f69aa1004eb4f01d92e765e6813875fe54
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-09 (Thu, 09 Apr 2015)

  Changed paths:
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  Add test for cache gc based on byte size target.


  Commit: 567a985bf4adc5d8d47814eebd4d4f43f1b5a901
      https://github.com/zopefoundation/persistent/commit/567a985bf4adc5d8d47814eebd4d4f43f1b5a901
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-09 (Thu, 09 Apr 2015)

  Changed paths:
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  A better name for that test.


  Commit: bfd0b7de2010e394f75d37a23b1f6f25257efd84
      https://github.com/zopefoundation/persistent/commit/bfd0b7de2010e394f75d37a23b1f6f25257efd84
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-09 (Thu, 09 Apr 2015)

  Changed paths:
    M persistent/tests/test_persistence.py
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  More functional tests from ZODB: test persistent class invalidation, and changing the _p_oid and _p_jar when not in a jar's cache.


  Commit: 90104c33c5fe77d044f13ef4e9d6c21e6ac6e130
      https://github.com/zopefoundation/persistent/commit/90104c33c5fe77d044f13ef4e9d6c21e6ac6e130
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-09 (Thu, 09 Apr 2015)

  Changed paths:
    M persistent/persistence.py
    M persistent/picklecache.py

  Log Message:
  -----------
  Tweaks suggested by @tseaver


  Commit: 5e5c5540438c769f0c10ab2455bb66a0308eb988
      https://github.com/zopefoundation/persistent/commit/5e5c5540438c769f0c10ab2455bb66a0308eb988
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-09 (Thu, 09 Apr 2015)

  Changed paths:
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  Test the error message for setting a jar for consistencey between c and python.


  Commit: b3f5da74cc3b538a78e9d535c6a22b35b4b7eaef
      https://github.com/zopefoundation/persistent/commit/b3f5da74cc3b538a78e9d535c6a22b35b4b7eaef
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-09 (Thu, 09 Apr 2015)

  Changed paths:
    M persistent/persistence.py
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  Test the error message for setting a oid for consistencey between c and python.


  Commit: ff326cc68a45d738127383e54fdf867cfb6fec95
      https://github.com/zopefoundation/persistent/commit/ff326cc68a45d738127383e54fdf867cfb6fec95
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-09 (Thu, 09 Apr 2015)

  Changed paths:
    M persistent/picklecache.py

  Log Message:
  -----------
  Tweaks from @mgedmin.


  Commit: fad042f3f34b9ec615314e783f2acabebb021616
      https://github.com/zopefoundation/persistent/commit/fad042f3f34b9ec615314e783f2acabebb021616
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-09 (Thu, 09 Apr 2015)

  Changed paths:
    M persistent/picklecache.py
    M persistent/tests/test_persistence.py
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  Whitespace


  Commit: 27c8784ca974bf143f3798e33b15adf60e971e73
      https://github.com/zopefoundation/persistent/commit/27c8784ca974bf143f3798e33b15adf60e971e73
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-09 (Thu, 09 Apr 2015)

  Changed paths:
    M persistent/picklecache.py
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  Detect whether we need to do a gc after sweeping the cache. Document why we would need to or not. Add tests to make sure it works (previously only in the ZODB tests.)


  Commit: 162bcdf9a23b16cd9fbd759349c44f51dcb05a43
      https://github.com/zopefoundation/persistent/commit/162bcdf9a23b16cd9fbd759349c44f51dcb05a43
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-09 (Thu, 09 Apr 2015)

  Changed paths:
    M persistent/persistence.py
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  Optimizations.  Primarily, this changes _p_accessed to avoid recursively calling back to __getattribute__. When running the ZODB test suite, this changes the number of times that __getattribute__ is called from over 44 MILLION to just 1.3 million (and changes the cumulative time from 38 seconds to 11 seconds).

Secondarily, this potentially also makes a few things safer for Broken objects.


  Commit: ef04ed74b88d0b6af3323531eb5c67fa494be5d9
      https://github.com/zopefoundation/persistent/commit/ef04ed74b88d0b6af3323531eb5c67fa494be5d9
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-09 (Thu, 09 Apr 2015)

  Changed paths:
    M persistent/persistence.py

  Log Message:
  -----------
  In _p_accessed combine two exception blocks as suggested by @tseaver, plus actually use the oid value we just cached. This knocks another 2 million calls to __getattribute__ out.


  Commit: 2311f9cfd84e1b274b1db38982167d454013ef01
      https://github.com/zopefoundation/persistent/commit/2311f9cfd84e1b274b1db38982167d454013ef01
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-09 (Thu, 09 Apr 2015)

  Changed paths:
    M persistent/persistence.py

  Log Message:
  -----------
  While we're optimizing, use a set to combine two 'specialness' checks in getattribute into one. This reduces the ZODB test runtime by about another 4-5%


  Commit: 39c237c6297412fc1fcabe32ddd3d120038c9016
      https://github.com/zopefoundation/persistent/commit/39c237c6297412fc1fcabe32ddd3d120038c9016
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-10 (Fri, 10 Apr 2015)

  Changed paths:
    M persistent/tests/test_timestamp.py

  Log Message:
  -----------
  Fixes zopefoundation/persistent#21 again. This time tested on a 32-bit Python 2.6


  Commit: 245f197cd177e306d6e31e3e0189dac0029a78fd
      https://github.com/zopefoundation/persistent/commit/245f197cd177e306d6e31e3e0189dac0029a78fd
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-10 (Fri, 10 Apr 2015)

  Changed paths:
    M persistent/persistence.py
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  Deleting the jar of a ghosted Python persistent object shouldn't try to activate it. This was an error encountered testing ZEO:

```python
File "//Projects/GithubSources/ZEO/src/ZEO/tests/testZEO.py", line 1566, in ZEO.tests.testZEO.gracefully_handle_abort_while_storing_many_blobs
Failed example:
    c.tpc_abort(t)
Exception raised:
    Traceback (most recent call last):
      File "//bin/pypy/lib-python/2.7/doctest.py", line 1315, in __run
  compileflags, 1) in test.globs
      File "<doctest ZEO.tests.testZEO.gracefully_handle_abort_while_storing_many_blobs[12]>", line 1, in <module>
  c.tpc_abort(t)
      File "//Projects/VirtualEnvs/ZODBpypy/site-packages/ZODB-4.2.0.dev0-py2.7.egg/ZODB/Connection.py", line 754, in tpc_abort
  self._invalidate_creating()
      File "//Projects/VirtualEnvs/ZODBpypy/site-packages/ZODB-4.2.0.dev0-py2.7.egg/ZODB/Connection.py", line 775, in _invalidate_creating
  del o._p_jar
      File "//Projects/VirtualEnvs/ZODBpypy/site-packages/persistent-4.0.10.dev0-py2.7.egg/persistent/persistence.py", line 287, in __delattr__
  object.__delattr__(self, name)
      File "//Projects/VirtualEnvs/ZODBpypy/site-packages/persistent-4.0.10.dev0-py2.7.egg/persistent/persistence.py", line 92, in _del_jar
  self.__setattr__('_Persistent__jar', None)
      File "//Projects/VirtualEnvs/ZODBpypy/site-packages/persistent-4.0.10.dev0-py2.7.egg/persistent/persistence.py", line 249, in __getattribute__
  oga(self, '_p_activate')()
      File "//Projects/VirtualEnvs/ZODBpypy/site-packages/persistent-4.0.10.dev0-py2.7.egg/persistent/persistence.py", line 358, in _p_activate
  jar.setstate(self)
      File "//Projects/VirtualEnvs/ZODBpypy/site-packages/ZODB-4.2.0.dev0-py2.7.egg/ZODB/Connection.py", line 869, in setstate
  self._setstate(obj)
      File "//Projects/VirtualEnvs/ZODBpypy/site-packages/ZODB-4.2.0.dev0-py2.7.egg/ZODB/Connection.py", line 910, in _setstate
  p, serial = self._storage.load(obj._p_oid, '')
      File "//Projects/GithubSources/ZEO/src/ZEO/ClientStorage.py", line 842, in load
  data, tid = self._server.loadEx(oid)
      File "//Projects/GithubSources/ZEO/src/ZEO/ServerStub.py", line 176, in loadEx
  return self.rpc.call("loadEx", oid)
      File "//Projects/GithubSources/ZEO/src/ZEO/zrpc/connection.py", line 781, in call
  raise inst # error raised by server
    POSKeyError: 0x02'')
```


  Commit: 80e0c6ee58ceeacac01a638ba175670c830f6875
      https://github.com/zopefoundation/persistent/commit/80e0c6ee58ceeacac01a638ba175670c830f6875
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-11 (Sat, 11 Apr 2015)

  Changed paths:
    M persistent/persistence.py
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  The python _p_activate does state management like the C version does: set to changed during jar.setstate to prevent objects that set attributes in their __setstate__ from being registered with the jar, and unconditionally mark the object as saved when finished. This fixes problems with BTrees and DB churn, among other things. Test this.


  Commit: 829d155f0fb3f4806a7a20a69a2b8e1bcc9037f3
      https://github.com/zopefoundation/persistent/commit/829d155f0fb3f4806a7a20a69a2b8e1bcc9037f3
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-13 (Mon, 13 Apr 2015)

  Changed paths:
    M CHANGES.rst
    M persistent/picklecache.py
    M persistent/tests/test_persistence.py
    M persistent/tests/test_picklecache.py
    M persistent/tests/test_timestamp.py
    M setup.py
    M tox.ini

  Log Message:
  -----------
  Fix a race condition adding items to the pickle cache; explicitly support Jython too.


  Commit: 94c3fb00c35c4c1159aa7b87f2575aeaec6816a9
      https://github.com/zopefoundation/persistent/commit/94c3fb00c35c4c1159aa7b87f2575aeaec6816a9
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-13 (Mon, 13 Apr 2015)

  Log Message:
  -----------
  Merge master.


  Commit: 87f185c6416a1d0dda10e263fb97c568b9d4075d
      https://github.com/zopefoundation/persistent/commit/87f185c6416a1d0dda10e263fb97c568b9d4075d
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-13 (Mon, 13 Apr 2015)

  Changed paths:
    M persistent/tests/test_timestamp.py

  Log Message:
  -----------
  Python3 incompatible syntax crept in.


  Commit: 6fa457df0c27eafea509fe9f5ef23bc510988cfe
      https://github.com/zopefoundation/persistent/commit/6fa457df0c27eafea509fe9f5ef23bc510988cfe
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-22 (Wed, 22 Apr 2015)

  Changed paths:
    M persistent/persistence.py
    M persistent/picklecache.py

  Log Message:
  -----------
  Optimize the _p_accessed code path in pure-python for substantial performance improvements.

Some very minor tweaks to avoid going through the __getattribute__ path so much have large consequences for `zodbshootout`:

  Results show objects written or read per second. Best of 3. (before/after on pypy2.5.1)
  "Transaction",                before        after      cpython2.7
  "Add 3000 Objects",             534         2340        11711
  "Update 3000 Objects",          330         3035        11333
  "Read 3000 Warm Objects",      1168         1941         9086
  "Read 3000 Cold Objects",      1647         4161         9484
  "Read 3000 Hot Objects",       2647        11086        45220
  "Read 3000 Steamin' Objects", 30523       108138      5321032


  Commit: 2b4dce7ff3256abfe4be20a4a3b1c0492b3ed136
      https://github.com/zopefoundation/persistent/commit/2b4dce7ff3256abfe4be20a4a3b1c0492b3ed136
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-24 (Fri, 24 Apr 2015)

  Changed paths:
    M persistent/picklecache.py
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  In pickelcache.py, use collections.dequeue instead of hand-rolling a doubly linked list.

Under PyPy, CPython, and Jython, collections.dequeue is a built-in
type. Using it doubles PyPy's performance under `zodbshootout`
(previously, picklecache.mru() was the biggest bottleneck).


  Commit: add499abd9330a19a441d8b9ac131670b2376de4
      https://github.com/zopefoundation/persistent/commit/add499abd9330a19a441d8b9ac131670b2376de4
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-27 (Mon, 27 Apr 2015)

  Changed paths:
    M persistent/picklecache.py
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  Substantial performance gains for PyPy.

First, eliminate the use of the RingWrapper object and always delete
by index. It was only necessary to allow use of ring.remove(). This
had some performance impact, but mostly saves memory.

Second, eliminate the use of `enumerate` in the hot mru() path. This was the big performance win.

Current results:

** concurrency=2 **
"Transaction",                mysql     before
"Add 3000 Objects",             7424     5486
"Update 3000 Objects",          5699     4141
"Read 3000 Warm Objects",       4571     4003
"Read 3000 Cold Objects",       4932     4204
"Read 3000 Hot Objects",       17295     10416
"Read 3000 Steamin' Objects", 346331     168983


  Commit: c0ef03355112423e6091b4224a00983f86f3f169
      https://github.com/zopefoundation/persistent/commit/c0ef03355112423e6091b4224a00983f86f3f169
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-27 (Mon, 27 Apr 2015)

  Changed paths:
    M persistent/persistence.py
    M persistent/picklecache.py
    A persistent/ring.py

  Log Message:
  -----------
  Checkpoint on a CFFI version of the cache MRU ring. Currently fails due to lifetime issues.


  Commit: 38d86ef73d0fa4749524d3c916c97cb2383d1d6b
      https://github.com/zopefoundation/persistent/commit/38d86ef73d0fa4749524d3c916c97cb2383d1d6b
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-27 (Mon, 27 Apr 2015)

  Changed paths:
    M persistent/persistence.py
    M persistent/picklecache.py
    M persistent/ring.py
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  All tests pass. Lifetime issues worked out, though probably not optimally.

Performance is way up again, beating CPython on half of the tests:

"Transaction",                mysql
"Add 3000 Objects",              8259
"Update 3000 Objects",           9454
"Read 3000 Warm Objects",        5460
"Read 3000 Cold Objects",        5454
"Read 3000 Hot Objects",        24943
"Read 3000 Steamin' Objects", 1099616

Still needs some GC work to get all the ZODB tests to pass like they do under zopefoundation/persistent#20


  Commit: 012ea9484c66e562e1724cc3a2e4d5eee296cce7
      https://github.com/zopefoundation/persistent/commit/012ea9484c66e562e1724cc3a2e4d5eee296cce7
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-28 (Tue, 28 Apr 2015)

  Changed paths:
    M persistent/picklecache.py
    M persistent/ring.py
    M persistent/tests/test_picklecache.py
    M tox.ini

  Log Message:
  -----------
  Add a non-CFFI implementation of the Ring abstraction based on the deque work, and add a tox environment to test it. Only one ZODB test fails.


  Commit: 1c1e2c79719aeafadb5b42f23d33bf44d6b2467c
      https://github.com/zopefoundation/persistent/commit/1c1e2c79719aeafadb5b42f23d33bf44d6b2467c
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-28 (Tue, 28 Apr 2015)

  Changed paths:
    M persistent/picklecache.py
    M persistent/ring.py

  Log Message:
  -----------
  All ZODB tests pass. Add some documentation.


  Commit: a37df864cecb9123b5b2b9fc3800e6029e6f2e99
      https://github.com/zopefoundation/persistent/commit/a37df864cecb9123b5b2b9fc3800e6029e6f2e99
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-28 (Tue, 28 Apr 2015)

  Changed paths:
    M persistent/persistence.py
    M persistent/ring.py

  Log Message:
  -----------
  Remove the unused __ring_handle, and tweak move_to_head to avoid recursive call to __getattribute__ based on benchmarks.


  Commit: 4dbad715c40a20a3fda993c9abb082466054ca5f
      https://github.com/zopefoundation/persistent/commit/4dbad715c40a20a3fda993c9abb082466054ca5f
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-04-28 (Tue, 28 Apr 2015)

  Changed paths:
    M persistent/ring.py
    A persistent/tests/test_ring.py
    M tox.ini

  Log Message:
  -----------
  Refactor ring.py so that both implementations can be available, and add coverage tests.


  Commit: 2467abc9b955a1298c2bed78b748bafc1d6c37e9
      https://github.com/zopefoundation/persistent/commit/2467abc9b955a1298c2bed78b748bafc1d6c37e9
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-01 (Fri, 01 May 2015)

  Changed paths:
    M persistent/ring.py
    M persistent/tests/test_ring.py

  Log Message:
  -----------
  fix date


  Commit: f349051aea4df167fb3e01b12eaad5821e750cf5
      https://github.com/zopefoundation/persistent/commit/f349051aea4df167fb3e01b12eaad5821e750cf5
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-04 (Mon, 04 May 2015)

  Changed paths:
    M persistent/persistence.py
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  Another CPython/pure-python difference is the handling of interning instance keys. C has always let non-str values through, but the python implementation raised a TypeError. Correct that and add a test case.


  Commit: f0ac08a6abc8b6d3530a08ebd14feca69801be01
      https://github.com/zopefoundation/persistent/commit/f0ac08a6abc8b6d3530a08ebd14feca69801be01
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-05 (Tue, 05 May 2015)

  Changed paths:
    M persistent/interfaces.py
    M persistent/picklecache.py
    M persistent/ring.py
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  Add a test checking the non-cooperative behaviour of Persistent.__getattribute__ in both C and Python.


  Commit: 7e3541d9bb52f8208fa731e946126d8672ff1ce0
      https://github.com/zopefoundation/persistent/commit/7e3541d9bb52f8208fa731e946126d8672ff1ce0
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-05 (Tue, 05 May 2015)

  Changed paths:
    M persistent/persistence.py
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  Merge branch 'zodb-on-pypy-support' of https://github.com/NextThought/persistent into zodb-on-pypy-support


  Commit: d4d19019af1da75a276afe632decbaae5eacc8e5
      https://github.com/zopefoundation/persistent/commit/d4d19019af1da75a276afe632decbaae5eacc8e5
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-06 (Wed, 06 May 2015)

  Changed paths:
    M persistent/persistence.py
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  Make the Python impl match the C impl by automatically unghostifying the object when _p_mtime is accessed.


  Commit: b760c4b8bb7a8dc687264c83013a54449798c9ff
      https://github.com/zopefoundation/persistent/commit/b760c4b8bb7a8dc687264c83013a54449798c9ff
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/ring.py

  Log Message:
  -----------
  docstring spacing adjustment.


  Commit: f711686eb756c9ddde72afce9cd2d212204cd6f0
      https://github.com/zopefoundation/persistent/commit/f711686eb756c9ddde72afce9cd2d212204cd6f0
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/ring.py

  Log Message:
  -----------
  Remove PyPy enumerate workaround in _DequeRing; PyPy should be using _CFFIRing.


  Commit: 8146702129f43104a25c90f1377a3a2530270ebf
      https://github.com/zopefoundation/persistent/commit/8146702129f43104a25c90f1377a3a2530270ebf
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/ring.py

  Log Message:
  -----------
  Use a better name for the output of the FFI verify call to signal its constant/global nature.


  Commit: 109ec8c1fe2e5c4a7765215d1b8ad983f514fece
      https://github.com/zopefoundation/persistent/commit/109ec8c1fe2e5c4a7765215d1b8ad983f514fece
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  Prefer comment to docstring.


  Commit: b6272dcc49cb02623e9b68e98a9b4bc9ef81890a
      https://github.com/zopefoundation/persistent/commit/b6272dcc49cb02623e9b68e98a9b4bc9ef81890a
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  Prefer comment to docstring.


  Commit: dd3f2af2f9a08d4c01657e5aa0bac0955410c514
      https://github.com/zopefoundation/persistent/commit/dd3f2af2f9a08d4c01657e5aa0bac0955410c514
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  Add an explicit assertion that the status of an object is no longer a ghost after accessing _p_mtime...that the value of _p_mtime is set is implicitly confiramtion of this because it gets set during loading, but explicit is better than implicit.


  Commit: 4a2aef70978b01269476a91371256cd4dc7a5e61
      https://github.com/zopefoundation/persistent/commit/4a2aef70978b01269476a91371256cd4dc7a5e61
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  Use GHOST constant rather than numeric value.


  Commit: 6f7d9f9a7f0bbca73356abcb00c0d5fee7ac207d
      https://github.com/zopefoundation/persistent/commit/6f7d9f9a7f0bbca73356abcb00c0d5fee7ac207d
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  Clarify comment.


  Commit: 39b9725f1ee5078ec6cb0dac36f6bc60d9b05b51
      https://github.com/zopefoundation/persistent/commit/39b9725f1ee5078ec6cb0dac36f6bc60d9b05b51
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  Clean up monkey-patching of picklecache._SWEEPABLE_TYPES by the test case.


  Commit: 782026daacb2780c291e7ccc882b3bb4f582ed44
      https://github.com/zopefoundation/persistent/commit/782026daacb2780c291e7ccc882b3bb4f582ed44
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  The exact size can actually be known when testing shrinking to a byte size of 0.


  Commit: 2d048a129b5242df6434a79c0aedc9e3603af050
      https://github.com/zopefoundation/persistent/commit/2d048a129b5242df6434a79c0aedc9e3603af050
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M CHANGES.rst
    M setup.py

  Log Message:
  -----------
  Remove mention of Jython, although not the supporting bits. Hopefully tox/virtualenv/pip come together soon to allow official testing and mention.


  Commit: 8ff7a82ad7791f839c9aabc3964aeb938c684f3e
      https://github.com/zopefoundation/persistent/commit/8ff7a82ad7791f839c9aabc3964aeb938c684f3e
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  Probably an identity assertion is clearer than an equality assertion.


  Commit: 6fee8f5f44a61a6441586d6eda9642eefacc19dd
      https://github.com/zopefoundation/persistent/commit/6fee8f5f44a61a6441586d6eda9642eefacc19dd
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/tests/test_ring.py

  Log Message:
  -----------
  Drop the script boilerplate.


  Commit: 521c8f798721c7822048a11094fb69c9b9f4d702
      https://github.com/zopefoundation/persistent/commit/521c8f798721c7822048a11094fb69c9b9f4d702
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/tests/test_timestamp.py

  Log Message:
  -----------
  Clarify comment.


  Commit: 7d4fc30e9523197d81c1512636696d8f2997bf74
      https://github.com/zopefoundation/persistent/commit/7d4fc30e9523197d81c1512636696d8f2997bf74
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M tox.ini

  Log Message:
  -----------
  Whitespace.


  Commit: 89a919707a8a80f860004516f549f9174abd58de
      https://github.com/zopefoundation/persistent/commit/89a919707a8a80f860004516f549f9174abd58de
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/tests/test_persistence.py

  Log Message:
  -----------
  Use _p_deactivate unconditionally in test_del_jar_of_inactive_object. I'm not sure why I was reaching into the internals of the Python implementation.


  Commit: 7a7092419a4cf1ad084a0b0be4b9bcf6a8c3dfde
      https://github.com/zopefoundation/persistent/commit/7a7092419a4cf1ad084a0b0be4b9bcf6a8c3dfde
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/persistence.py

  Log Message:
  -----------
  Remove superflous comment about interning of unicode dict keys on Python2. The existing behaviour matches the C implementation.


  Commit: 30d3eced476792afc0e8a2c09308fc03bc6b3f7c
      https://github.com/zopefoundation/persistent/commit/30d3eced476792afc0e8a2c09308fc03bc6b3f7c
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/picklecache.py

  Log Message:
  -----------
  Remove assert statement from picklecache.


  Commit: 248244954dde1d7bbb14c63ce4119be64e675a93
      https://github.com/zopefoundation/persistent/commit/248244954dde1d7bbb14c63ce4119be64e675a93
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/interfaces.py

  Log Message:
  -----------
  Restore/remove whitespace.


  Commit: 58f1a10e97ca7aa59400068bdf4af2571ddd69b5
      https://github.com/zopefoundation/persistent/commit/58f1a10e97ca7aa59400068bdf4af2571ddd69b5
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/persistence.py

  Log Message:
  -----------
  Replace all remaining uses of 'self.__X' in persistence.py with _OGA/OSA for consistency; also avoid some duplicate calls through __getattribute__ which were more obvious in the OGA form.


  Commit: e4fcd41f8b12b0f7414a637c32328364e584688a
      https://github.com/zopefoundation/persistent/commit/e4fcd41f8b12b0f7414a637c32328364e584688a
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/picklecache.py
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  Remove aliasing of PickleCache's target_size/cache_size; just use cache_size as specified in the interface.


  Commit: 627c3455bdc9328f2bb8f0d967086559cfc71967
      https://github.com/zopefoundation/persistent/commit/627c3455bdc9328f2bb8f0d967086559cfc71967
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/picklecache.py

  Log Message:
  -----------
  Simplify removing persistent classes from the picklecache.


  Commit: 7d9ac9fe6e2d2b4a8ffdf46c50818b00d8c840b5
      https://github.com/zopefoundation/persistent/commit/7d9ac9fe6e2d2b4a8ffdf46c50818b00d8c840b5
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/tests/test_picklecache.py

  Log Message:
  -----------
  assertTrue instead of a bare assert.


  Commit: 1310dce6f6014baf8cf302d8a702ca0f6dcab622
      https://github.com/zopefoundation/persistent/commit/1310dce6f6014baf8cf302d8a702ca0f6dcab622
  Author: Jason Madden <jamadden at gmail.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M persistent/persistence.py

  Log Message:
  -----------
  Simplify getting all the slot names into persistent.persistence._SPECIAL_NAMES.


  Commit: 39c1f03364d43780a18605e5e9b0feb80402bd22
      https://github.com/zopefoundation/persistent/commit/39c1f03364d43780a18605e5e9b0feb80402bd22
  Author: Tres Seaver <tseaver at palladion.com>
  Date:   2015-05-19 (Tue, 19 May 2015)

  Changed paths:
    M .gitignore
    M CHANGES.rst
    M persistent/persistence.py
    M persistent/picklecache.py
    A persistent/ring.py
    M persistent/tests/test_persistence.py
    M persistent/tests/test_picklecache.py
    A persistent/tests/test_ring.py
    M persistent/tests/test_timestamp.py
    M tox.ini

  Log Message:
  -----------
  Merge pull request #20 from NextThought/zodb-on-pypy-support

Support for ZODB on PyPy


Compare: https://github.com/zopefoundation/persistent/compare/7f673b5397fb...39c1f03364d4


More information about the checkins mailing list