Closed dataflake closed 3 weeks ago
I see no interferences with the other open PR: that one only changes C code, this one only changes Python code and config, so there should not be any conflicts.
There are conflicts at the line level and then conflicts in the testing regime: in particular, merging this change breaks coverage under tox
:
$ git status
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
$ git fetch origin && git pull
Already up to date.
$ tox -re coverage
Set up zope.testrunner.layer.UnitTests in 0.000 seconds.
Running:
/home/tseaver/projects/Zope/ZODB/persistent/.tox/coverage/lib/python3.12/site-packages/persistent/tests/test_mapping.py:319: DeprecationWarning: PersistentDict is deprecated. `persistent.dict.PersistentDict` is deprecated. Use `persistent.mapping.PersistentMapping` instead. This backward compatibility shim will be removed in persistent version 6.
from persistent.dict import PersistentDict
...................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Ran 771 tests with 0 failures, 0 errors, 245 skipped in 0.668 seconds.
Tearing down left over layers:
/home/tseaver/projects/Zope/ZODB/persistent/.tox/coverage/lib/python3.12/site-packages/coverage/control.py:894: CoverageWarning: No data was collected. (no-data-collected)
self._warn("No data was collected.", slug="no-data-collected")
Tear down zope.testrunner.layer.UnitTests in 0.000 seconds.
coverage: commands[2]> python -c 'import os, subprocess; subprocess.check_call("coverage run -a -m zope.testrunner --test-path=src", env=dict(os.environ, PURE_PYTHON="0"), shell=True)'
Running zope.testrunner.layer.UnitTests tests:
Set up zope.testrunner.layer.UnitTests in 0.000 seconds.
/home/tseaver/projects/Zope/ZODB/persistent/.tox/coverage/lib/python3.12/site-packages/persistent/tests/test_mapping.py:319: DeprecationWarning: PersistentDict is deprecated. `persistent.dict.PersistentDict` is deprecated. Use `persistent.mapping.PersistentMapping` instead. This backward compatibility shim will be removed in persistent version 6.
from persistent.dict import PersistentDict
/opt/Python-3.12.4/lib/python3.12/unittest/case.py:690: DeprecationWarning: It is deprecated to return a value that is not None from a test case (<bound method PickleCacheTestMixin.test___delitem___w_persistent_class of <persistent.tests.test_picklecache.CPickleCacheTests testMethod=test___delitem___w_persistent_class>>)
return self.run(*args, **kwds)
/opt/Python-3.12.4/lib/python3.12/unittest/case.py:690: DeprecationWarning: It is deprecated to return a value that is not None from a test case (<bound method PickleCacheTestMixin.test___setitem___ghost of <persistent.tests.test_picklecache.CPickleCacheTests testMethod=test___setitem___ghost>>)
return self.run(*args, **kwds)
/opt/Python-3.12.4/lib/python3.12/unittest/case.py:690: DeprecationWarning: It is deprecated to return a value that is not None from a test case (<bound method PickleCacheTestMixin.test_debug_info_w_ghost of <persistent.tests.test_picklecache.CPickleCacheTests testMethod=test_debug_info_w_ghost>>)
return self.run(*args, **kwds)
/opt/Python-3.12.4/lib/python3.12/unittest/case.py:690: DeprecationWarning: It is deprecated to return a value that is not None from a test case (<bound method PickleCacheTestMixin.test_debug_info_w_normal_object of <persistent.tests.test_picklecache.CPickleCacheTests testMethod=test_debug_info_w_normal_object>>)
return self.run(*args, **kwds)
/opt/Python-3.12.4/lib/python3.12/unittest/case.py:690: DeprecationWarning: It is deprecated to return a value that is not None from a test case (<bound method PickleCacheTestMixin.test_debug_info_w_persistent_class of <persistent.tests.test_picklecache.CPickleCacheTests testMethod=test_debug_info_w_persistent_class>>)
return self.run(*args, **kwds)
/opt/Python-3.12.4/lib/python3.12/unittest/case.py:690: DeprecationWarning: It is deprecated to return a value that is not None from a test case (<bound method PickleCacheTestMixin.test_new_ghost_obj_already_in_cache of <persistent.tests.test_picklecache.CPickleCacheTests testMethod=test_new_ghost_obj_already_in_cache>>)
return self.run(*args, **kwds)
/opt/Python-3.12.4/lib/python3.12/unittest/case.py:690: DeprecationWarning: It is deprecated to return a value that is not None from a test case (<bound method PickleCacheTestMixin.test_new_ghost_w_pclass_ghost of <persistent.tests.test_picklecache.CPickleCacheTests testMethod=test_new_ghost_w_pclass_ghost>>)
return self.run(*args, **kwds)
/opt/Python-3.12.4/lib/python3.12/unittest/case.py:690: DeprecationWarning: It is deprecated to return a value that is not None from a test case (<bound method PickleCacheTestMixin.test_new_ghost_w_pclass_non_ghost of <persistent.tests.test_picklecache.CPickleCacheTests testMethod=test_new_ghost_w_pclass_non_ghost>>)
return self.run(*args, **kwds)
Ran 771 tests with 0 failures, 0 errors and 6 skipped in 1.143 seconds.
Tearing down left over layers:
Tear down zope.testrunner.layer.UnitTests in 0.000 seconds.
coverage: commands[3]> coverage html -i
Wrote HTML report to parts/htmlcov/index.html
coverage: commands[4]> coverage report -i -m --fail-under=99.8
Name Stmts Miss Cover Missing
---------------------------------------------------------------------------
src/persistent/__init__.py 15 15 0.00% 19-51
src/persistent/_compat.py 58 58 0.00% 15-204
src/persistent/dict.py 2 2 0.00% 14-17
src/persistent/interfaces.py 58 58 0.00% 17-572
src/persistent/list.py 61 61 0.00% 16-141
src/persistent/mapping.py 55 55 0.00% 16-152
src/persistent/persistence.py 368 368 0.00% 14-629
src/persistent/picklecache.py 244 244 0.00% 14-506
src/persistent/ring.py 73 73 0.00% 15-188
src/persistent/tests/__init__.py 0 0 100.00%
src/persistent/tests/attrhooks.py 36 36 0.00% 19-126
src/persistent/tests/cucumbers.py 63 63 0.00% 16-112
src/persistent/tests/test__compat.py 50 50 0.00% 19-107
src/persistent/tests/test_compile_flags.py 9 9 0.00% 14-29
src/persistent/tests/test_docs.py 23 23 0.00% 19-64
src/persistent/tests/test_list.py 261 261 0.00% 17-391
src/persistent/tests/test_mapping.py 205 205 0.00% 14-324
src/persistent/tests/test_persistence.py 1624 1624 0.00% 15-2225
src/persistent/tests/test_picklecache.py 916 916 0.00% 14-1341
src/persistent/tests/test_ring.py 79 79 0.00% 14-126
src/persistent/tests/test_timestamp.py 278 278 0.00% 14-430
src/persistent/tests/test_wref.py 277 277 0.00% 14-346
src/persistent/tests/utils.py 57 57 0.00% 1-110
src/persistent/timestamp.py 110 110 0.00% 14-208
src/persistent/wref.py 67 67 0.00% 17-129
---------------------------------------------------------------------------
TOTAL 4989 4989 0.00%
Coverage failure: total of 0.00 is less than fail-under=99.80
Note that the tests all run and pass, but the files in src/persistent
show as uncovered because 3be40d808b263317cb7a7f5670761674d069b0d4 dropped usedevelop = true
for all test environments (a good thing for most) breaks the coverage
environment. This patch makes them happy:
$ git stash show -v
diff --git a/tox.ini b/tox.ini
index 4f36d846..ee84623a 100644
--- a/tox.ini
+++ b/tox.ini
@@ -33,6 +33,7 @@ extras =
docs
[testenv:coverage]
+usedevelop = true
basepython = python3
allowlist_externals =
mkdir
Coverage fail fixed in https://github.com/zopefoundation/persistent/commit/149c88e89d8f229cb8e075bc3cf2d90446cc9f0b
I understand what you mean, but I can't help with #204 myself and can't compel others like @davisagli to do the review. I don't know how to solve that. At the same time PRs that take long to get attention shouldn't stand in the way of other work.