zopefoundation / persistent

automatic persistence for Python objects
https://pypi.org/project/persistent/
Other
46 stars 28 forks source link

Run the latest meta/config template #205

Closed dataflake closed 3 weeks ago

dataflake commented 3 weeks ago

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.

icemac commented 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.

tseaver commented 3 weeks ago

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
dataflake commented 3 weeks ago

Coverage fail fixed in https://github.com/zopefoundation/persistent/commit/149c88e89d8f229cb8e075bc3cf2d90446cc9f0b