diff --git a/.gitignore b/.gitignore
index 28c5025..22ebfb9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,3 +15,4 @@ coverage.xml
 .installed.cfg
 .dir-locals.el
 dist
+htmlcov
diff --git a/CHANGES.rst b/CHANGES.rst
index 56aafca..f974c9f 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -7,6 +7,18 @@
 - Fix the hashcode of Python ``TimeStamp`` objects on 64-bit Python on
   Windows. See https://github.com/zopefoundation/persistent/pull/55
 
+- Stop calling ``gc.collect`` every time ``PickleCache.incrgc`` is called (every
+  transaction boundary) in pure-Python mode (PyPy). This means that
+  the reported size of the cache may be wrong (until the next GC), but
+  it is much faster. This should not have any observable effects for
+  user code.
+
+- Stop clearing the dict and slots of objects added to
+  ``PickleCache.new_ghost`` (typically these values are passed to
+  ``__new__`` from the pickle data) in pure-Python mode (PyPy). This
+  matches the behaviour of the C code.
+
+
 4.2.2 (2016-11-29)
 ------------------
 
diff --git a/persistent/persistence.py b/persistent/persistence.py
index 1388da4..e20c544 100644
--- a/persistent/persistence.py
+++ b/persistent/persistence.py
@@ -413,27 +413,32 @@ class Persistent(object):
         _OSA(self, '_Persistent__flags', 0)
         self._p_deactivate()
 
-    def _p_invalidate_deactivate_helper(self):
+    def _p_invalidate_deactivate_helper(self, clear=True):
         jar = _OGA(self, '_Persistent__jar')
         if jar is None:
             return
 
         if _OGA(self, '_Persistent__flags') is not None:
             _OSA(self, '_Persistent__flags', None)
-        idict = getattr(self, '__dict__', None)
-        if idict is not None:
-            idict.clear()
-        type_ = type(self)
-        # ( for backward-compatibility reason we release __slots__ only if
-        #   class does not override __new__ )
-        if type_.__new__ is Persistent.__new__:
-            for slotname in Persistent._slotnames(self, _v_exclude=False):
-                try:
-                    getattr(type_, slotname).__delete__(self)
-                except AttributeError:
-                    # AttributeError means slot variable was not initialized at all -
-                    # - we can simply skip its deletion.
-                    pass
+
+        if clear:
+            try:
+                idict = _OGA(self, '__dict__')
+            except AttributeError:
+                pass
+            else:
+                idict.clear()
+            type_ = type(self)
+            # for backward-compatibility reason we release __slots__ only if
+            # class does not override __new__
+            if type_.__new__ is Persistent.__new__:
+                for slotname in Persistent._slotnames(self, _v_exclude=False):
+                    try:
+                        getattr(type_, slotname).__delete__(self)
+                    except AttributeError:
+                        # AttributeError means slot variable was not initialized at all -
+                        # - we can simply skip its deletion.
+                        pass
 
         # Implementation detail: deactivating/invalidating
         # updates the size of the cache (if we have one)
diff --git a/persistent/picklecache.py b/persistent/picklecache.py
index f402ea8..9bcb573 100644
--- a/persistent/picklecache.py
+++ b/persistent/picklecache.py
@@ -13,7 +13,7 @@
 ##############################################################################
 import gc
 import weakref
-import sys
+
 
 from zope.interface import implementer
 
@@ -21,31 +21,13 @@ from persistent.interfaces import GHOST
 from persistent.interfaces import IPickleCache
 from persistent.interfaces import OID_TYPE
 from persistent.interfaces import UPTODATE
-from persistent import Persistent
+from persistent.persistence import Persistent
 from persistent.persistence import _estimated_size_in_24_bits
 
 # Tests may modify this to add additional types
 _CACHEABLE_TYPES = (type, Persistent)
 _SWEEPABLE_TYPES = (Persistent,)
 
-# The Python PickleCache implementation keeps track of the objects it
-# is caching in a WeakValueDictionary. The number of objects in the
-# cache (in this dictionary) is exposed as the len of the cache. Under
-# non-refcounted implementations like PyPy, the weak references in
-# this dictionary are only cleared when the garbage collector runs.
-# Thus, after an incrgc, the len of the cache is incorrect for some
-# period of time unless we ask the GC to run.
-# Furthermore, evicted objects can stay in the dictionary and be returned
-# from __getitem__ or possibly conflict with a new item in __setitem__.
-# We determine whether or not we need to do the GC based on the ability
-# to get a reference count: PyPy and Jython don't use refcounts and don't
-# expose this; this is safer than blacklisting specific platforms (e.g.,
-# what about IronPython?). On refcounted platforms, we don't want to
-# run a GC to avoid possible performance regressions (e.g., it may
-# block all threads).
-# Tests may modify this
-_SWEEP_NEEDS_GC = not hasattr(sys, 'getrefcount')
-
 # On Jython, we need to explicitly ask it to monitor
 # objects if we want a more deterministic GC
 if hasattr(gc, 'monitorObject'): # pragma: no cover
@@ -264,7 +246,7 @@ class PickleCache(object):
                 # careful to avoid broken _p_invalidate and _p_deactivate
                 # that don't call the super class. See ZODB's
                 # testConnection.doctest_proper_ghost_initialization_with_empty__p_deactivate
-                obj._p_invalidate_deactivate_helper()
+                obj._p_invalidate_deactivate_helper(False)
         self[oid] = obj
 
     def reify(self, to_reify):
@@ -381,11 +363,7 @@ class PickleCache(object):
         ejected = len(to_eject)
         if ejected:
             self.ring.delete_all(to_eject)
-        del to_eject # Got to clear our local if we want the GC to get the weak refs
 
-        if ejected and _SWEEP_NEEDS_GC:
-            # See comments on _SWEEP_NEEDS_GC
-            gc.collect()
         return ejected
 
     @_sweeping_ring

PyPy/Pure-Python: `PickleCache.new_ghost` destroys any information passed to `__new__`
Spurred from the work in #44, with a lengthy description in https://github.com/zopefoundation/persistent/pull/44#issuecomment-256962199

Both dicts and slots are affected and need a test case.

diff --git a/persistent/tests/test_persistence.py b/persistent/tests/test_persistence.py
index 09c294f..a27ee1e 100644
--- a/persistent/tests/test_persistence.py
+++ b/persistent/tests/test_persistence.py
@@ -32,6 +32,9 @@ class _Persistent_Base(object):
         # concrete testcase classes must override
         raise NotImplementedError()
 
+    def _makeRealCache(self, jar):
+        return self._makeCache(jar)
+
     def _makeOne(self, *args, **kw):
         return self._getTargetClass()(*args, **kw)
 
@@ -1599,6 +1602,51 @@ class _Persistent_Base(object):
         p._p_invalidate()
         self.assertTrue(p.deactivated)
 
+
+    def test_new_ghost_success_not_already_ghost_dict(self):
+        # https://github.com/zopefoundation/persistent/issues/49
+        # calling new_ghost on an object that already has state just changes
+        # its flags, it doesn't destroy the state.
+        from persistent.interfaces import GHOST
+        from persistent.interfaces import UPTODATE
+        class TestPersistent(self._getTargetClass()):
+            pass
+        KEY = b'123'
+        jar = self._makeJar()
+        cache = self._makeRealCache(jar)
+        candidate = TestPersistent()
+
+        candidate.set_by_new = 1
+        self.assertEqual(candidate._p_state, UPTODATE)
+        cache.new_ghost(KEY, candidate)
+
+        self.assertTrue(cache.get(KEY) is candidate)
+        self.assertEqual(candidate._p_oid, KEY)
+        self.assertEqual(candidate._p_state, GHOST)
+        self.assertEqual(candidate.set_by_new, 1)
+
+    def test_new_ghost_success_not_already_ghost_slot(self):
+        # https://github.com/zopefoundation/persistent/issues/49
+        # calling new_ghost on an object that already has state just changes
+        # its flags, it doesn't destroy the state.
+        from persistent.interfaces import GHOST
+        from persistent.interfaces import UPTODATE
+        class TestPersistent(self._getTargetClass()):
+            __slots__ = ('set_by_new', '__weakref__')
+        KEY = b'123'
+        jar = self._makeJar()
+        cache = self._makeRealCache(jar)
+        candidate = TestPersistent()
+        candidate.set_by_new = 1
+        self.assertEqual(candidate._p_state, UPTODATE)
+        cache.new_ghost(KEY, candidate)
+
+        self.assertTrue(cache.get(KEY) is candidate)
+        self.assertEqual(candidate._p_oid, KEY)
+        self.assertEqual(candidate._p_state, GHOST)
+        self.assertEqual(candidate.set_by_new, 1)
+
+
 class PyPersistentTests(unittest.TestCase, _Persistent_Base):
 
     def _getTargetClass(self):
@@ -1627,6 +1675,10 @@ class PyPersistentTests(unittest.TestCase, _Persistent_Base):
 
         return _Cache(jar)
 
+    def _makeRealCache(self, jar):
+        from persistent.picklecache import PickleCache
+        return PickleCache(jar, 10)
+
     def _checkMRU(self, jar, value):
         self.assertEqual(list(jar._cache._mru), value)
 
diff --git a/persistent/tests/test_picklecache.py b/persistent/tests/test_picklecache.py
index c4c9c2f..f0aee09 100644
--- a/persistent/tests/test_picklecache.py
+++ b/persistent/tests/test_picklecache.py
@@ -30,13 +30,9 @@ class PickleCacheTests(unittest.TestCase):
         self.orig_types = persistent.picklecache._CACHEABLE_TYPES
         persistent.picklecache._CACHEABLE_TYPES += (DummyPersistent,)
 
-        self.orig_sweep_gc = persistent.picklecache._SWEEP_NEEDS_GC
-        persistent.picklecache._SWEEP_NEEDS_GC = True # coverage
-
     def tearDown(self):
         import persistent.picklecache
         persistent.picklecache._CACHEABLE_TYPES = self.orig_types
-        persistent.picklecache._SWEEP_NEEDS_GC = self.orig_sweep_gc
 
     def _getTargetClass(self):
         from persistent.picklecache import PickleCache
@@ -992,7 +988,7 @@ class PickleCacheTests(unittest.TestCase):
             return f
 
     @with_deterministic_gc
-    def test_cache_garbage_collection_bytes_also_deactivates_object(self, force_collect=False):
+    def test_cache_garbage_collection_bytes_also_deactivates_object(self, force_collect=_is_pypy or _is_jython):
         from persistent.interfaces import UPTODATE
         from persistent._compat import _b
         cache = self._makeOne()
@@ -1070,7 +1066,9 @@ class DummyPersistent(object):
         self._p_state = GHOST
 
     _p_deactivate = _p_invalidate
-    _p_invalidate_deactivate_helper = _p_invalidate
+
+    def _p_invalidate_deactivate_helper(self, clear=True):
+        self._p_invalidate()
 
     def _p_activate(self):
         from persistent.interfaces import UPTODATE

pip install -e .[dev]
parse_log_pytest
requirements.txt
zope.interface nose coverage nosexcover cffi pytest
apt-get update apt-get install -y gcc
3.5
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
cffi==1.15.1
coverage==6.2
importlib-metadata==4.8.3
iniconfig==1.1.1
nose==1.3.7
nosexcover==1.0.11
packaging==21.3
-e git+https://github.com/zopefoundation/persistent.git@c6be5f8f03ff6d3f71c0dbefe546ba6ab5cc4c5f#egg=persistent
pluggy==1.0.0
py==1.11.0
pycparser==2.21
pyparsing==3.1.4
pytest==7.0.1
tomli==1.2.3
typing_extensions==4.1.1
zipp==3.6.0
zope.interface==5.5.2

name: persistent
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - cffi==1.15.1
      - coverage==6.2
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - nose==1.3.7
      - nosexcover==1.0.11
      - packaging==21.3
      - pluggy==1.0.0
      - py==1.11.0
      - pycparser==2.21
      - pyparsing==3.1.4
      - pytest==7.0.1
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - zipp==3.6.0
      - zope-interface==5.5.2
prefix: /opt/conda/envs/persistent

persistent/tests/test_persistence.py::PyPersistentTests::test_new_ghost_success_not_already_ghost_dict persistent/tests/test_persistence.py::PyPersistentTests::test_new_ghost_success_not_already_ghost_slot
persistent/tests/test_picklecache.py::PickleCacheTests::test_ring_impl
persistent/tests/test_persistence.py::PyPersistentTests::test___delattr___p__names persistent/tests/test_persistence.py::PyPersistentTests::test___delattr__normal_name_from_changed persistent/tests/test_persistence.py::PyPersistentTests::test___delattr__normal_name_from_ghost persistent/tests/test_persistence.py::PyPersistentTests::test___delattr__normal_name_from_saved persistent/tests/test_persistence.py::PyPersistentTests::test___delattr__normal_name_from_unsaved persistent/tests/test_persistence.py::PyPersistentTests::test___getattribute___non_cooperative persistent/tests/test_persistence.py::PyPersistentTests::test___getattribute___p__names persistent/tests/test_persistence.py::PyPersistentTests::test___getattribute__normal_name_from_changed persistent/tests/test_persistence.py::PyPersistentTests::test___getattribute__normal_name_from_ghost persistent/tests/test_persistence.py::PyPersistentTests::test___getattribute__normal_name_from_saved persistent/tests/test_persistence.py::PyPersistentTests::test___getattribute__normal_name_from_unsaved persistent/tests/test_persistence.py::PyPersistentTests::test___getattribute__special_name persistent/tests/test_persistence.py::PyPersistentTests::test___getstate__ persistent/tests/test_persistence.py::PyPersistentTests::test___getstate___derived_w_dict persistent/tests/test_persistence.py::PyPersistentTests::test___getstate___derived_w_slots persistent/tests/test_persistence.py::PyPersistentTests::test___getstate___derived_w_slots_in_base_and_derived persistent/tests/test_persistence.py::PyPersistentTests::test___getstate___derived_w_slots_in_base_but_not_derived persistent/tests/test_persistence.py::PyPersistentTests::test___reduce__ persistent/tests/test_persistence.py::PyPersistentTests::test___reduce__w_subclass_having_getnewargs persistent/tests/test_persistence.py::PyPersistentTests::test___reduce__w_subclass_having_getnewargs_and_getstate persistent/tests/test_persistence.py::PyPersistentTests::test___reduce__w_subclass_having_getstate persistent/tests/test_persistence.py::PyPersistentTests::test___setattr___p__names persistent/tests/test_persistence.py::PyPersistentTests::test___setattr___v__name persistent/tests/test_persistence.py::PyPersistentTests::test___setattr__normal_name_from_changed persistent/tests/test_persistence.py::PyPersistentTests::test___setattr__normal_name_from_ghost persistent/tests/test_persistence.py::PyPersistentTests::test___setattr__normal_name_from_saved persistent/tests/test_persistence.py::PyPersistentTests::test___setattr__normal_name_from_unsaved persistent/tests/test_persistence.py::PyPersistentTests::test___setstate___derived_w_slots persistent/tests/test_persistence.py::PyPersistentTests::test___setstate___derived_w_slots_in_base_but_not_derived persistent/tests/test_persistence.py::PyPersistentTests::test___setstate___derived_w_slots_in_base_classes persistent/tests/test_persistence.py::PyPersistentTests::test___setstate___doesnt_fail_on_non_string_keys persistent/tests/test_persistence.py::PyPersistentTests::test___setstate___empty persistent/tests/test_persistence.py::PyPersistentTests::test___setstate___interns_dict_keys persistent/tests/test_persistence.py::PyPersistentTests::test___setstate___nonempty persistent/tests/test_persistence.py::PyPersistentTests::test___setstate___nonempty_derived_w_dict persistent/tests/test_persistence.py::PyPersistentTests::test___setstate___nonempty_derived_w_dict_w_two_keys persistent/tests/test_persistence.py::PyPersistentTests::test__ancient_dict_layout_bug persistent/tests/test_persistence.py::PyPersistentTests::test__p_activate_from_ghost persistent/tests/test_persistence.py::PyPersistentTests::test__p_activate_from_saved persistent/tests/test_persistence.py::PyPersistentTests::test__p_activate_from_unsaved persistent/tests/test_persistence.py::PyPersistentTests::test__p_activate_leaves_object_in_saved_even_if_object_mutated_self persistent/tests/test_persistence.py::PyPersistentTests::test__p_activate_only_sets_state_once persistent/tests/test_persistence.py::PyPersistentTests::test__p_activate_w_broken_jar persistent/tests/test_persistence.py::PyPersistentTests::test__p_deactivate_from_changed persistent/tests/test_persistence.py::PyPersistentTests::test__p_deactivate_from_changed_w_dict persistent/tests/test_persistence.py::PyPersistentTests::test__p_deactivate_from_ghost persistent/tests/test_persistence.py::PyPersistentTests::test__p_deactivate_from_saved persistent/tests/test_persistence.py::PyPersistentTests::test__p_deactivate_from_saved_w_dict persistent/tests/test_persistence.py::PyPersistentTests::test__p_deactivate_from_unsaved persistent/tests/test_persistence.py::PyPersistentTests::test__p_deactivate_from_unsaved_w_dict persistent/tests/test_persistence.py::PyPersistentTests::test__p_deactivate_when_sticky persistent/tests/test_persistence.py::PyPersistentTests::test__p_delattr_w__p__names persistent/tests/test_persistence.py::PyPersistentTests::test__p_delattr_w_normal_name persistent/tests/test_persistence.py::PyPersistentTests::test__p_getattr_w__p__names persistent/tests/test_persistence.py::PyPersistentTests::test__p_getattr_w_normal_name persistent/tests/test_persistence.py::PyPersistentTests::test__p_getattr_w_special_names persistent/tests/test_persistence.py::PyPersistentTests::test__p_invalidate_from_changed persistent/tests/test_persistence.py::PyPersistentTests::test__p_invalidate_from_changed_w_dict persistent/tests/test_persistence.py::PyPersistentTests::test__p_invalidate_from_changed_w_slots persistent/tests/test_persistence.py::PyPersistentTests::test__p_invalidate_from_changed_w_slots_compat persistent/tests/test_persistence.py::PyPersistentTests::test__p_invalidate_from_ghost persistent/tests/test_persistence.py::PyPersistentTests::test__p_invalidate_from_saved persistent/tests/test_persistence.py::PyPersistentTests::test__p_invalidate_from_saved_w_dict persistent/tests/test_persistence.py::PyPersistentTests::test__p_invalidate_from_sticky persistent/tests/test_persistence.py::PyPersistentTests::test__p_invalidate_from_sticky_w_dict persistent/tests/test_persistence.py::PyPersistentTests::test__p_invalidate_from_unsaved persistent/tests/test_persistence.py::PyPersistentTests::test__p_invalidate_from_unsaved_w_dict persistent/tests/test_persistence.py::PyPersistentTests::test__p_mtime_activates_object persistent/tests/test_persistence.py::PyPersistentTests::test__p_mtime_no_serial persistent/tests/test_persistence.py::PyPersistentTests::test__p_mtime_w_serial persistent/tests/test_persistence.py::PyPersistentTests::test__p_setattr_w__p__name persistent/tests/test_persistence.py::PyPersistentTests::test__p_setattr_w_normal_name persistent/tests/test_persistence.py::PyPersistentTests::test__p_state_changed persistent/tests/test_persistence.py::PyPersistentTests::test__p_state_changed_sticky persistent/tests/test_persistence.py::PyPersistentTests::test__p_state_ghost persistent/tests/test_persistence.py::PyPersistentTests::test__p_state_saved persistent/tests/test_persistence.py::PyPersistentTests::test__p_state_saved_sticky persistent/tests/test_persistence.py::PyPersistentTests::test__p_state_unsaved persistent/tests/test_persistence.py::PyPersistentTests::test__p_status_changed persistent/tests/test_persistence.py::PyPersistentTests::test__p_status_changed_sticky persistent/tests/test_persistence.py::PyPersistentTests::test__p_status_ghost persistent/tests/test_persistence.py::PyPersistentTests::test__p_status_saved persistent/tests/test_persistence.py::PyPersistentTests::test__p_status_saved_sticky persistent/tests/test_persistence.py::PyPersistentTests::test__p_status_unsaved persistent/tests/test_persistence.py::PyPersistentTests::test_accessed_invalidated_with_jar_and_oid_but_no_cache persistent/tests/test_persistence.py::PyPersistentTests::test_accessed_with_jar_and_oid_but_not_in_cache persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_changed_false_from_changed persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_changed_false_from_ghost persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_changed_false_from_saved persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_changed_false_from_unsaved persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_changed_none_from_changed persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_changed_none_from_ghost persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_changed_none_from_saved persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_changed_none_from_unsaved persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_changed_none_when_sticky persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_changed_true_from_changed persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_changed_true_from_ghost persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_changed_true_from_saved persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_changed_true_from_unsaved persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_estimated_size_bigger persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_estimated_size_just_over_threshold persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_estimated_size_negative persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_estimated_size_small persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_estimated_size_wrong_type persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_jar_not_in_cache_allowed persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_jar_w_new_jar persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_jar_w_valid_jar persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_oid_not_in_cache_allowed persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_oid_w_None_wo_jar persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_oid_w_invalid_oid persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_oid_w_new_oid_w_jar persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_oid_w_new_oid_wo_jar persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_oid_w_valid_oid persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_serial_too_long persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_serial_too_short persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_serial_w_None persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_serial_w_invalid_type persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_serial_w_valid_serial persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_sticky_false_non_ghost persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_sticky_false_when_ghost persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_sticky_true_non_ghost persistent/tests/test_persistence.py::PyPersistentTests::test_assign_p_sticky_true_when_ghost persistent/tests/test_persistence.py::PyPersistentTests::test_can_set__p_attrs_if_subclass_denies_setattr persistent/tests/test_persistence.py::PyPersistentTests::test_class_conforms_to_IPersistent persistent/tests/test_persistence.py::PyPersistentTests::test_ctor persistent/tests/test_persistence.py::PyPersistentTests::test_del_jar_like_ZODB_abort persistent/tests/test_persistence.py::PyPersistentTests::test_del_jar_no_jar persistent/tests/test_persistence.py::PyPersistentTests::test_del_jar_of_inactive_object_that_has_no_state persistent/tests/test_persistence.py::PyPersistentTests::test_del_jar_while_in_cache persistent/tests/test_persistence.py::PyPersistentTests::test_del_oid_like_ZODB_abort persistent/tests/test_persistence.py::PyPersistentTests::test_delete_p_changed_from_changed persistent/tests/test_persistence.py::PyPersistentTests::test_delete_p_changed_from_ghost persistent/tests/test_persistence.py::PyPersistentTests::test_delete_p_changed_from_saved persistent/tests/test_persistence.py::PyPersistentTests::test_delete_p_changed_from_unsaved persistent/tests/test_persistence.py::PyPersistentTests::test_delete_p_changed_from_unsaved_w_dict persistent/tests/test_persistence.py::PyPersistentTests::test_delete_p_changed_when_sticky persistent/tests/test_persistence.py::PyPersistentTests::test_delete_p_oid_w_jar persistent/tests/test_persistence.py::PyPersistentTests::test_delete_p_oid_wo_jar persistent/tests/test_persistence.py::PyPersistentTests::test_delete_p_serial persistent/tests/test_persistence.py::PyPersistentTests::test_instance_conforms_to_IPersistent persistent/tests/test_persistence.py::PyPersistentTests::test_p_accessed_with_jar_with_oid_as_ghost persistent/tests/test_persistence.py::PyPersistentTests::test_p_accessed_with_jar_without_oid persistent/tests/test_persistence.py::PyPersistentTests::test_p_activate_with_jar_without_oid persistent/tests/test_persistence.py::PyPersistentTests::test_p_invalidate_calls_p_deactivate persistent/tests/test_persistence.py::PyPersistentTests::test_pickle_roundtrip_simple persistent/tests/test_persistence.py::PyPersistentTests::test_pickle_roundtrip_w_getnewargs_and_getstate persistent/tests/test_persistence.py::PyPersistentTests::test_pickle_roundtrip_w_slots_and_empty_dict persistent/tests/test_persistence.py::PyPersistentTests::test_pickle_roundtrip_w_slots_and_filled_dict persistent/tests/test_persistence.py::PyPersistentTests::test_pickle_roundtrip_w_slots_filled_slot persistent/tests/test_persistence.py::PyPersistentTests::test_pickle_roundtrip_w_slots_missing_slot persistent/tests/test_persistence.py::PyPersistentTests::test_query_p_changed_changed persistent/tests/test_persistence.py::PyPersistentTests::test_query_p_changed_ghost persistent/tests/test_persistence.py::PyPersistentTests::test_query_p_changed_saved persistent/tests/test_persistence.py::PyPersistentTests::test_query_p_changed_unsaved persistent/tests/test_persistence.py::PyPersistentTests::test_query_p_estimated_size_del persistent/tests/test_persistence.py::PyPersistentTests::test_query_p_estimated_size_new persistent/tests/test_persistence.py::PyPersistentTests::test_set__p_changed_w_broken_jar persistent/tests/test_persistence.py::PyPersistentTests::test_setattr_in_subclass_is_not_called_creating_an_instance persistent/tests/test_persistence.py::PyPersistentTests::test_w_alternate_metaclass persistent/tests/test_persistence.py::PyPersistentTests::test_w_diamond_inheritance persistent/tests/test_persistence.py::CPersistentTests::test___delattr___p__names persistent/tests/test_persistence.py::CPersistentTests::test___delattr__normal_name_from_changed persistent/tests/test_persistence.py::CPersistentTests::test___delattr__normal_name_from_ghost persistent/tests/test_persistence.py::CPersistentTests::test___delattr__normal_name_from_saved persistent/tests/test_persistence.py::CPersistentTests::test___delattr__normal_name_from_unsaved persistent/tests/test_persistence.py::CPersistentTests::test___getattribute___non_cooperative persistent/tests/test_persistence.py::CPersistentTests::test___getattribute___p__names persistent/tests/test_persistence.py::CPersistentTests::test___getattribute__normal_name_from_changed persistent/tests/test_persistence.py::CPersistentTests::test___getattribute__normal_name_from_ghost persistent/tests/test_persistence.py::CPersistentTests::test___getattribute__normal_name_from_saved persistent/tests/test_persistence.py::CPersistentTests::test___getattribute__normal_name_from_unsaved persistent/tests/test_persistence.py::CPersistentTests::test___getattribute__special_name persistent/tests/test_persistence.py::CPersistentTests::test___getstate__ persistent/tests/test_persistence.py::CPersistentTests::test___getstate___derived_w_dict persistent/tests/test_persistence.py::CPersistentTests::test___getstate___derived_w_slots persistent/tests/test_persistence.py::CPersistentTests::test___getstate___derived_w_slots_in_base_and_derived persistent/tests/test_persistence.py::CPersistentTests::test___getstate___derived_w_slots_in_base_but_not_derived persistent/tests/test_persistence.py::CPersistentTests::test___reduce__ persistent/tests/test_persistence.py::CPersistentTests::test___reduce__w_subclass_having_getnewargs persistent/tests/test_persistence.py::CPersistentTests::test___reduce__w_subclass_having_getnewargs_and_getstate persistent/tests/test_persistence.py::CPersistentTests::test___reduce__w_subclass_having_getstate persistent/tests/test_persistence.py::CPersistentTests::test___setattr___p__names persistent/tests/test_persistence.py::CPersistentTests::test___setattr___v__name persistent/tests/test_persistence.py::CPersistentTests::test___setattr__normal_name_from_changed persistent/tests/test_persistence.py::CPersistentTests::test___setattr__normal_name_from_ghost persistent/tests/test_persistence.py::CPersistentTests::test___setattr__normal_name_from_saved persistent/tests/test_persistence.py::CPersistentTests::test___setattr__normal_name_from_unsaved persistent/tests/test_persistence.py::CPersistentTests::test___setstate___derived_w_slots persistent/tests/test_persistence.py::CPersistentTests::test___setstate___derived_w_slots_in_base_but_not_derived persistent/tests/test_persistence.py::CPersistentTests::test___setstate___derived_w_slots_in_base_classes persistent/tests/test_persistence.py::CPersistentTests::test___setstate___doesnt_fail_on_non_string_keys persistent/tests/test_persistence.py::CPersistentTests::test___setstate___empty persistent/tests/test_persistence.py::CPersistentTests::test___setstate___interns_dict_keys persistent/tests/test_persistence.py::CPersistentTests::test___setstate___nonempty persistent/tests/test_persistence.py::CPersistentTests::test___setstate___nonempty_derived_w_dict persistent/tests/test_persistence.py::CPersistentTests::test___setstate___nonempty_derived_w_dict_w_two_keys persistent/tests/test_persistence.py::CPersistentTests::test__ancient_dict_layout_bug persistent/tests/test_persistence.py::CPersistentTests::test__p_activate_from_ghost persistent/tests/test_persistence.py::CPersistentTests::test__p_activate_from_saved persistent/tests/test_persistence.py::CPersistentTests::test__p_activate_from_unsaved persistent/tests/test_persistence.py::CPersistentTests::test__p_activate_leaves_object_in_saved_even_if_object_mutated_self persistent/tests/test_persistence.py::CPersistentTests::test__p_activate_only_sets_state_once persistent/tests/test_persistence.py::CPersistentTests::test__p_activate_w_broken_jar persistent/tests/test_persistence.py::CPersistentTests::test__p_deactivate_from_changed persistent/tests/test_persistence.py::CPersistentTests::test__p_deactivate_from_changed_w_dict persistent/tests/test_persistence.py::CPersistentTests::test__p_deactivate_from_ghost persistent/tests/test_persistence.py::CPersistentTests::test__p_deactivate_from_saved persistent/tests/test_persistence.py::CPersistentTests::test__p_deactivate_from_saved_w_dict persistent/tests/test_persistence.py::CPersistentTests::test__p_deactivate_from_unsaved persistent/tests/test_persistence.py::CPersistentTests::test__p_deactivate_from_unsaved_w_dict persistent/tests/test_persistence.py::CPersistentTests::test__p_deactivate_when_sticky persistent/tests/test_persistence.py::CPersistentTests::test__p_delattr_w__p__names persistent/tests/test_persistence.py::CPersistentTests::test__p_delattr_w_normal_name persistent/tests/test_persistence.py::CPersistentTests::test__p_getattr_w__p__names persistent/tests/test_persistence.py::CPersistentTests::test__p_getattr_w_normal_name persistent/tests/test_persistence.py::CPersistentTests::test__p_getattr_w_special_names persistent/tests/test_persistence.py::CPersistentTests::test__p_invalidate_from_changed persistent/tests/test_persistence.py::CPersistentTests::test__p_invalidate_from_changed_w_dict persistent/tests/test_persistence.py::CPersistentTests::test__p_invalidate_from_changed_w_slots persistent/tests/test_persistence.py::CPersistentTests::test__p_invalidate_from_changed_w_slots_compat persistent/tests/test_persistence.py::CPersistentTests::test__p_invalidate_from_ghost persistent/tests/test_persistence.py::CPersistentTests::test__p_invalidate_from_saved persistent/tests/test_persistence.py::CPersistentTests::test__p_invalidate_from_saved_w_dict persistent/tests/test_persistence.py::CPersistentTests::test__p_invalidate_from_sticky persistent/tests/test_persistence.py::CPersistentTests::test__p_invalidate_from_sticky_w_dict persistent/tests/test_persistence.py::CPersistentTests::test__p_invalidate_from_unsaved persistent/tests/test_persistence.py::CPersistentTests::test__p_invalidate_from_unsaved_w_dict persistent/tests/test_persistence.py::CPersistentTests::test__p_mtime_activates_object persistent/tests/test_persistence.py::CPersistentTests::test__p_mtime_no_serial persistent/tests/test_persistence.py::CPersistentTests::test__p_mtime_w_serial persistent/tests/test_persistence.py::CPersistentTests::test__p_setattr_w__p__name persistent/tests/test_persistence.py::CPersistentTests::test__p_setattr_w_normal_name persistent/tests/test_persistence.py::CPersistentTests::test__p_state_changed persistent/tests/test_persistence.py::CPersistentTests::test__p_state_changed_sticky persistent/tests/test_persistence.py::CPersistentTests::test__p_state_ghost persistent/tests/test_persistence.py::CPersistentTests::test__p_state_saved persistent/tests/test_persistence.py::CPersistentTests::test__p_state_saved_sticky persistent/tests/test_persistence.py::CPersistentTests::test__p_state_unsaved persistent/tests/test_persistence.py::CPersistentTests::test__p_status_changed persistent/tests/test_persistence.py::CPersistentTests::test__p_status_changed_sticky persistent/tests/test_persistence.py::CPersistentTests::test__p_status_ghost persistent/tests/test_persistence.py::CPersistentTests::test__p_status_saved persistent/tests/test_persistence.py::CPersistentTests::test__p_status_saved_sticky persistent/tests/test_persistence.py::CPersistentTests::test__p_status_unsaved persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_changed_false_from_changed persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_changed_false_from_ghost persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_changed_false_from_saved persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_changed_false_from_unsaved persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_changed_none_from_changed persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_changed_none_from_ghost persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_changed_none_from_saved persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_changed_none_from_unsaved persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_changed_none_when_sticky persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_changed_true_from_changed persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_changed_true_from_ghost persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_changed_true_from_saved persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_changed_true_from_unsaved persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_estimated_size_bigger persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_estimated_size_just_over_threshold persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_estimated_size_negative persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_estimated_size_small persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_estimated_size_wrong_type persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_jar_not_in_cache_allowed persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_jar_w_new_jar persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_jar_w_valid_jar persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_oid_not_in_cache_allowed persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_oid_w_None_wo_jar persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_oid_w_invalid_oid persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_oid_w_new_oid_w_jar persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_oid_w_new_oid_wo_jar persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_oid_w_valid_oid persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_serial_too_long persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_serial_too_short persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_serial_w_None persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_serial_w_invalid_type persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_serial_w_valid_serial persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_sticky_false_non_ghost persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_sticky_false_when_ghost persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_sticky_true_non_ghost persistent/tests/test_persistence.py::CPersistentTests::test_assign_p_sticky_true_when_ghost persistent/tests/test_persistence.py::CPersistentTests::test_can_set__p_attrs_if_subclass_denies_setattr persistent/tests/test_persistence.py::CPersistentTests::test_class_conforms_to_IPersistent persistent/tests/test_persistence.py::CPersistentTests::test_ctor persistent/tests/test_persistence.py::CPersistentTests::test_del_jar_like_ZODB_abort persistent/tests/test_persistence.py::CPersistentTests::test_del_jar_no_jar persistent/tests/test_persistence.py::CPersistentTests::test_del_jar_of_inactive_object_that_has_no_state persistent/tests/test_persistence.py::CPersistentTests::test_del_jar_while_in_cache persistent/tests/test_persistence.py::CPersistentTests::test_del_oid_like_ZODB_abort persistent/tests/test_persistence.py::CPersistentTests::test_delete_p_changed_from_changed persistent/tests/test_persistence.py::CPersistentTests::test_delete_p_changed_from_ghost persistent/tests/test_persistence.py::CPersistentTests::test_delete_p_changed_from_saved persistent/tests/test_persistence.py::CPersistentTests::test_delete_p_changed_from_unsaved persistent/tests/test_persistence.py::CPersistentTests::test_delete_p_changed_from_unsaved_w_dict persistent/tests/test_persistence.py::CPersistentTests::test_delete_p_changed_when_sticky persistent/tests/test_persistence.py::CPersistentTests::test_delete_p_oid_w_jar persistent/tests/test_persistence.py::CPersistentTests::test_delete_p_oid_wo_jar persistent/tests/test_persistence.py::CPersistentTests::test_delete_p_serial persistent/tests/test_persistence.py::CPersistentTests::test_instance_conforms_to_IPersistent persistent/tests/test_persistence.py::CPersistentTests::test_new_ghost_success_not_already_ghost_dict persistent/tests/test_persistence.py::CPersistentTests::test_new_ghost_success_not_already_ghost_slot persistent/tests/test_persistence.py::CPersistentTests::test_p_invalidate_calls_p_deactivate persistent/tests/test_persistence.py::CPersistentTests::test_pickle_roundtrip_simple persistent/tests/test_persistence.py::CPersistentTests::test_pickle_roundtrip_w_getnewargs_and_getstate persistent/tests/test_persistence.py::CPersistentTests::test_pickle_roundtrip_w_slots_and_empty_dict persistent/tests/test_persistence.py::CPersistentTests::test_pickle_roundtrip_w_slots_and_filled_dict persistent/tests/test_persistence.py::CPersistentTests::test_pickle_roundtrip_w_slots_filled_slot persistent/tests/test_persistence.py::CPersistentTests::test_pickle_roundtrip_w_slots_missing_slot persistent/tests/test_persistence.py::CPersistentTests::test_query_p_changed_changed persistent/tests/test_persistence.py::CPersistentTests::test_query_p_changed_ghost persistent/tests/test_persistence.py::CPersistentTests::test_query_p_changed_saved persistent/tests/test_persistence.py::CPersistentTests::test_query_p_changed_unsaved persistent/tests/test_persistence.py::CPersistentTests::test_query_p_estimated_size_del persistent/tests/test_persistence.py::CPersistentTests::test_query_p_estimated_size_new persistent/tests/test_persistence.py::CPersistentTests::test_set__p_changed_w_broken_jar persistent/tests/test_persistence.py::CPersistentTests::test_setattr_in_subclass_is_not_called_creating_an_instance persistent/tests/test_persistence.py::CPersistentTests::test_w_alternate_metaclass persistent/tests/test_persistence.py::CPersistentTests::test_w_diamond_inheritance persistent/tests/test_persistence.py::Test_simple_new::test_w_non_type persistent/tests/test_persistence.py::Test_simple_new::test_w_type persistent/tests/test_persistence.py::test_suite persistent/tests/test_picklecache.py::PickleCacheTests::test___delitem___non_string_oid_raises_TypeError persistent/tests/test_picklecache.py::PickleCacheTests::test___delitem___nonesuch_raises_KeyError persistent/tests/test_picklecache.py::PickleCacheTests::test___delitem___w_ghost persistent/tests/test_picklecache.py::PickleCacheTests::test___delitem___w_normal_object persistent/tests/test_picklecache.py::PickleCacheTests::test___delitem___w_persistent_class persistent/tests/test_picklecache.py::PickleCacheTests::test___delitem___w_remaining_object persistent/tests/test_picklecache.py::PickleCacheTests::test___getitem___nonesuch_raises_KeyError persistent/tests/test_picklecache.py::PickleCacheTests::test___setitem___duplicate_oid_raises_ValueError persistent/tests/test_picklecache.py::PickleCacheTests::test___setitem___duplicate_oid_same_obj persistent/tests/test_picklecache.py::PickleCacheTests::test___setitem___ghost persistent/tests/test_picklecache.py::PickleCacheTests::test___setitem___mismatch_key_oid persistent/tests/test_picklecache.py::PickleCacheTests::test___setitem___non_ghost persistent/tests/test_picklecache.py::PickleCacheTests::test___setitem___non_string_oid_raises_TypeError persistent/tests/test_picklecache.py::PickleCacheTests::test___setitem___persistent_class persistent/tests/test_picklecache.py::PickleCacheTests::test_cache_garbage_collection_bytes_also_deactivates_object persistent/tests/test_picklecache.py::PickleCacheTests::test_cache_size persistent/tests/test_picklecache.py::PickleCacheTests::test_cannot_update_mru_while_already_locked persistent/tests/test_picklecache.py::PickleCacheTests::test_class_conforms_to_IPickleCache persistent/tests/test_picklecache.py::PickleCacheTests::test_debug_info_w_ghost persistent/tests/test_picklecache.py::PickleCacheTests::test_debug_info_w_normal_object persistent/tests/test_picklecache.py::PickleCacheTests::test_debug_info_w_persistent_class persistent/tests/test_picklecache.py::PickleCacheTests::test_empty persistent/tests/test_picklecache.py::PickleCacheTests::test_full_sweep persistent/tests/test_picklecache.py::PickleCacheTests::test_full_sweep_w_changed persistent/tests/test_picklecache.py::PickleCacheTests::test_full_sweep_w_sticky persistent/tests/test_picklecache.py::PickleCacheTests::test_get_nonesuch_no_default persistent/tests/test_picklecache.py::PickleCacheTests::test_get_nonesuch_w_default persistent/tests/test_picklecache.py::PickleCacheTests::test_incrgc_simple persistent/tests/test_picklecache.py::PickleCacheTests::test_incrgc_w_larger_drain_resistance persistent/tests/test_picklecache.py::PickleCacheTests::test_incrgc_w_smaller_drain_resistance persistent/tests/test_picklecache.py::PickleCacheTests::test_init_with_cacheless_jar persistent/tests/test_picklecache.py::PickleCacheTests::test_instance_conforms_to_IPickleCache persistent/tests/test_picklecache.py::PickleCacheTests::test_invalidate_hit_multiple_mixed persistent/tests/test_picklecache.py::PickleCacheTests::test_invalidate_hit_multiple_non_ghost persistent/tests/test_picklecache.py::PickleCacheTests::test_invalidate_hit_pclass persistent/tests/test_picklecache.py::PickleCacheTests::test_invalidate_hit_single_ghost persistent/tests/test_picklecache.py::PickleCacheTests::test_invalidate_hit_single_non_ghost persistent/tests/test_picklecache.py::PickleCacheTests::test_invalidate_miss_multiple persistent/tests/test_picklecache.py::PickleCacheTests::test_invalidate_miss_single persistent/tests/test_picklecache.py::PickleCacheTests::test_invalidate_persistent_class_calls_p_invalidate persistent/tests/test_picklecache.py::PickleCacheTests::test_lruitems persistent/tests/test_picklecache.py::PickleCacheTests::test_minimize persistent/tests/test_picklecache.py::PickleCacheTests::test_minimize_turns_into_ghosts persistent/tests/test_picklecache.py::PickleCacheTests::test_mru_first persistent/tests/test_picklecache.py::PickleCacheTests::test_mru_ghost persistent/tests/test_picklecache.py::PickleCacheTests::test_mru_last persistent/tests/test_picklecache.py::PickleCacheTests::test_mru_nonesuch_raises_KeyError persistent/tests/test_picklecache.py::PickleCacheTests::test_mru_normal persistent/tests/test_picklecache.py::PickleCacheTests::test_mru_was_ghost_now_active persistent/tests/test_picklecache.py::PickleCacheTests::test_new_ghost_non_persistent_object persistent/tests/test_picklecache.py::PickleCacheTests::test_new_ghost_obj_already_has_jar persistent/tests/test_picklecache.py::PickleCacheTests::test_new_ghost_obj_already_has_oid persistent/tests/test_picklecache.py::PickleCacheTests::test_new_ghost_obj_already_in_cache persistent/tests/test_picklecache.py::PickleCacheTests::test_new_ghost_success_already_ghost persistent/tests/test_picklecache.py::PickleCacheTests::test_new_ghost_success_not_already_ghost persistent/tests/test_picklecache.py::PickleCacheTests::test_new_ghost_w_pclass_ghost persistent/tests/test_picklecache.py::PickleCacheTests::test_new_ghost_w_pclass_non_ghost persistent/tests/test_picklecache.py::PickleCacheTests::test_reify_hit_multiple_mixed persistent/tests/test_picklecache.py::PickleCacheTests::test_reify_hit_single_ghost persistent/tests/test_picklecache.py::PickleCacheTests::test_reify_hit_single_non_ghost persistent/tests/test_picklecache.py::PickleCacheTests::test_reify_miss_multiple persistent/tests/test_picklecache.py::PickleCacheTests::test_reify_miss_single persistent/tests/test_picklecache.py::PickleCacheTests::test_setting_already_cached persistent/tests/test_picklecache.py::PickleCacheTests::test_setting_non_persistent_item persistent/tests/test_picklecache.py::PickleCacheTests::test_setting_without_jar persistent/tests/test_picklecache.py::PickleCacheTests::test_sweep_empty persistent/tests/test_picklecache.py::PickleCacheTests::test_sweep_of_non_deactivating_object persistent/tests/test_picklecache.py::PickleCacheTests::test_update_object_size_estimation_simple persistent/tests/test_picklecache.py::test_suite
persistent/persistence.py .gitignore persistent/picklecache.py CHANGES.rst
persistent/persistence.py .gitignore persistent/picklecache.py CHANGES.rst