nti.testing 4.2.0.post0__tar.gz → 4.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/.readthedocs.yml +1 -1
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/CHANGES.rst +15 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/PKG-INFO +41 -6
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/setup.py +11 -6
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/layers/postgres.py +6 -4
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/tests/test_base.py +8 -2
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/tests/test_main.py +13 -7
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/tests/test_zodb.py +23 -5
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti.testing.egg-info/PKG-INFO +41 -6
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti.testing.egg-info/requires.txt +14 -4
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/tox.ini +6 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/.coveragerc +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/.isort.cfg +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/.nti_cover_package +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/.pylintrc +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/.travis.yml +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/COPYRIGHT.txt +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/INSTALL +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/LICENSE +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/MANIFEST.in +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/README.rst +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/TODO +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/doc-requirements.txt +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/docs/_static/custom.css +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/docs/api.rst +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/docs/base.rst +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/docs/changelog.rst +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/docs/conf.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/docs/index.rst +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/docs/layers.rst +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/docs/matchers.rst +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/docs/time.rst +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/docs/zodb.rst +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/pyproject.toml +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/setup.cfg +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/__init__.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/__init__.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/base.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/layers/__init__.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/layers/cleanup.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/layers/tests/__init__.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/layers/tests/test_postgres.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/layers/zope.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/matchers.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/mock.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/tests/__init__.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/tests/test_component_cleanup_broken.txt +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/tests/test_layers.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/tests/test_matchers.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/tests/test_time.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/time.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti/testing/zodb.py +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti.testing.egg-info/SOURCES.txt +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti.testing.egg-info/dependency_links.txt +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti.testing.egg-info/top_level.txt +0 -0
- {nti_testing-4.2.0.post0 → nti_testing-4.4.0}/src/nti.testing.egg-info/zip-safe +0 -0
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
Changes
|
|
3
3
|
=========
|
|
4
4
|
|
|
5
|
+
4.4.0 (2025-11-14)
|
|
6
|
+
==================
|
|
7
|
+
|
|
8
|
+
- Move ZODB and related dependencies to the optional 'zodb' extra.
|
|
9
|
+
- Add support for Python 3.14.
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
4.3.0 (2025-04-22)
|
|
13
|
+
==================
|
|
14
|
+
|
|
15
|
+
- Support and require testgres version 1.11. This version refactored
|
|
16
|
+
some internals, breaking the monkey-patches that ``DatabaseLayer``
|
|
17
|
+
applies.
|
|
18
|
+
|
|
19
|
+
|
|
5
20
|
4.2.0.post0 (2024-11-08)
|
|
6
21
|
========================
|
|
7
22
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: nti.testing
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.4.0
|
|
4
4
|
Summary: Support for testing code
|
|
5
5
|
Home-page: https://github.com/OpenNTI/nti.testing
|
|
6
6
|
Author: Jason Madden
|
|
@@ -18,13 +18,13 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
21
22
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
22
23
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
23
24
|
Classifier: Topic :: Software Development :: Testing
|
|
24
25
|
Classifier: Framework :: Zope3
|
|
25
26
|
Requires-Python: >=3.10
|
|
26
27
|
License-File: LICENSE
|
|
27
|
-
Requires-Dist: ZODB>=5.6.0
|
|
28
28
|
Requires-Dist: zope.interface>=5.4.0
|
|
29
29
|
Requires-Dist: pyhamcrest
|
|
30
30
|
Requires-Dist: six
|
|
@@ -35,18 +35,38 @@ Requires-Dist: zope.dottedname
|
|
|
35
35
|
Requires-Dist: zope.exceptions
|
|
36
36
|
Requires-Dist: zope.schema
|
|
37
37
|
Requires-Dist: zope.testing
|
|
38
|
+
Provides-Extra: zodb
|
|
39
|
+
Requires-Dist: ZODB>=5.6.0; extra == "zodb"
|
|
38
40
|
Provides-Extra: test
|
|
39
41
|
Requires-Dist: Acquisition; extra == "test"
|
|
40
|
-
Requires-Dist: zope.site; extra == "test"
|
|
41
42
|
Requires-Dist: zope.testrunner; extra == "test"
|
|
42
|
-
Requires-Dist: testgres>=1.
|
|
43
|
+
Requires-Dist: testgres>=1.11; extra == "test"
|
|
43
44
|
Requires-Dist: psycopg2-binary; platform_python_implementation != "PyPy" and extra == "test"
|
|
45
|
+
Provides-Extra: test-zodb
|
|
46
|
+
Requires-Dist: zope.site; extra == "test-zodb"
|
|
44
47
|
Provides-Extra: docs
|
|
45
48
|
Requires-Dist: Sphinx; extra == "docs"
|
|
46
49
|
Requires-Dist: furo; extra == "docs"
|
|
50
|
+
Requires-Dist: Acquisition; extra == "docs"
|
|
51
|
+
Requires-Dist: zope.testrunner; extra == "docs"
|
|
52
|
+
Requires-Dist: testgres>=1.11; extra == "docs"
|
|
53
|
+
Requires-Dist: psycopg2-binary; platform_python_implementation != "PyPy" and extra == "docs"
|
|
47
54
|
Provides-Extra: testgres
|
|
48
|
-
Requires-Dist: testgres>=1.
|
|
55
|
+
Requires-Dist: testgres>=1.11; extra == "testgres"
|
|
49
56
|
Requires-Dist: psycopg2-binary; platform_python_implementation != "PyPy" and extra == "testgres"
|
|
57
|
+
Dynamic: author
|
|
58
|
+
Dynamic: author-email
|
|
59
|
+
Dynamic: classifier
|
|
60
|
+
Dynamic: description
|
|
61
|
+
Dynamic: home-page
|
|
62
|
+
Dynamic: keywords
|
|
63
|
+
Dynamic: license
|
|
64
|
+
Dynamic: license-file
|
|
65
|
+
Dynamic: project-url
|
|
66
|
+
Dynamic: provides-extra
|
|
67
|
+
Dynamic: requires-dist
|
|
68
|
+
Dynamic: requires-python
|
|
69
|
+
Dynamic: summary
|
|
50
70
|
|
|
51
71
|
=============
|
|
52
72
|
nti.testing
|
|
@@ -302,6 +322,21 @@ ZODB in `nti.testing.zodb`. See the API documentation for details.
|
|
|
302
322
|
Changes
|
|
303
323
|
=========
|
|
304
324
|
|
|
325
|
+
4.4.0 (2025-11-14)
|
|
326
|
+
==================
|
|
327
|
+
|
|
328
|
+
- Move ZODB and related dependencies to the optional 'zodb' extra.
|
|
329
|
+
- Add support for Python 3.14.
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
4.3.0 (2025-04-22)
|
|
333
|
+
==================
|
|
334
|
+
|
|
335
|
+
- Support and require testgres version 1.11. This version refactored
|
|
336
|
+
some internals, breaking the monkey-patches that ``DatabaseLayer``
|
|
337
|
+
applies.
|
|
338
|
+
|
|
339
|
+
|
|
305
340
|
4.2.0.post0 (2024-11-08)
|
|
306
341
|
========================
|
|
307
342
|
|
|
@@ -6,16 +6,15 @@ from setuptools import setup
|
|
|
6
6
|
from setuptools import find_namespace_packages
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
version = '4.
|
|
9
|
+
version = '4.4.0'
|
|
10
10
|
|
|
11
11
|
entry_points = {
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
TESTS_REQUIRE = [
|
|
15
15
|
'Acquisition',
|
|
16
|
-
'zope.site',
|
|
17
16
|
'zope.testrunner',
|
|
18
|
-
'testgres >= 1.
|
|
17
|
+
'testgres >= 1.11',
|
|
19
18
|
'psycopg2-binary; python_implementation != "PyPy"',
|
|
20
19
|
]
|
|
21
20
|
|
|
@@ -47,6 +46,7 @@ setup(
|
|
|
47
46
|
'Programming Language :: Python :: 3.11',
|
|
48
47
|
'Programming Language :: Python :: 3.12',
|
|
49
48
|
'Programming Language :: Python :: 3.13',
|
|
49
|
+
'Programming Language :: Python :: 3.14',
|
|
50
50
|
'Programming Language :: Python :: Implementation :: CPython',
|
|
51
51
|
'Programming Language :: Python :: Implementation :: PyPy',
|
|
52
52
|
'Topic :: Software Development :: Testing',
|
|
@@ -56,7 +56,6 @@ setup(
|
|
|
56
56
|
packages=find_namespace_packages(where='src'),
|
|
57
57
|
package_dir={'': 'src'},
|
|
58
58
|
install_requires=[
|
|
59
|
-
'ZODB >= 5.6.0',
|
|
60
59
|
# Error messages changed in 5.1, reprs changed <= 5.4
|
|
61
60
|
'zope.interface >= 5.4.0',
|
|
62
61
|
'pyhamcrest',
|
|
@@ -72,13 +71,19 @@ setup(
|
|
|
72
71
|
entry_points=entry_points,
|
|
73
72
|
include_package_data=True,
|
|
74
73
|
extras_require={
|
|
74
|
+
'zodb': [
|
|
75
|
+
'ZODB >= 5.6.0',
|
|
76
|
+
],
|
|
75
77
|
'test': TESTS_REQUIRE,
|
|
78
|
+
'test-zodb': [
|
|
79
|
+
'zope.site',
|
|
80
|
+
],
|
|
76
81
|
'docs': [
|
|
77
82
|
'Sphinx',
|
|
78
83
|
'furo',
|
|
79
|
-
],
|
|
84
|
+
] + TESTS_REQUIRE,
|
|
80
85
|
'testgres': [
|
|
81
|
-
'testgres >= 1.
|
|
86
|
+
'testgres >= 1.11',
|
|
82
87
|
'psycopg2-binary; python_implementation != "PyPy"',
|
|
83
88
|
],
|
|
84
89
|
},
|
|
@@ -82,8 +82,10 @@ def patched_get_pg_version(*args, **kwargs):
|
|
|
82
82
|
# We patch this in testgres.node, so its ok to import
|
|
83
83
|
# the original. In version 1.10, they changed the signature
|
|
84
84
|
# of this function, so be sure to accept whatever it does and
|
|
85
|
-
# pass it on.
|
|
86
|
-
|
|
85
|
+
# pass it on. In version 1.11, this was replaced with
|
|
86
|
+
# get_pg_version2, which does the same thing just takes
|
|
87
|
+
# more arguments.
|
|
88
|
+
from testgres.utils import get_pg_version2
|
|
87
89
|
from testgres.node import PgVer
|
|
88
90
|
from packaging.version import InvalidVersion
|
|
89
91
|
|
|
@@ -94,7 +96,7 @@ def patched_get_pg_version(*args, **kwargs):
|
|
|
94
96
|
# "15.3-0+". If it can't be parsed, then return a fake.
|
|
95
97
|
|
|
96
98
|
try:
|
|
97
|
-
version =
|
|
99
|
+
version = get_pg_version2(*args, **kwargs)
|
|
98
100
|
PgVer(version)
|
|
99
101
|
except InvalidVersion:
|
|
100
102
|
print('testgres: Got invalid postgres version', version)
|
|
@@ -145,7 +147,7 @@ class DatabaseLayer(object):
|
|
|
145
147
|
def setUp(cls):
|
|
146
148
|
testgres.configure_testgres()
|
|
147
149
|
|
|
148
|
-
with patch('testgres.node.
|
|
150
|
+
with patch('testgres.node.get_pg_version2', new=patched_get_pg_version):
|
|
149
151
|
node = cls.postgres_node = testgres.get_new_node()
|
|
150
152
|
|
|
151
153
|
# init takes about about 2 -- 3 seconds
|
|
@@ -89,7 +89,10 @@ class TestBase(unittest.TestCase):
|
|
|
89
89
|
|
|
90
90
|
|
|
91
91
|
def test_configuring_base(self):
|
|
92
|
-
|
|
92
|
+
try:
|
|
93
|
+
import zope.traversing.tests.test_traverser
|
|
94
|
+
except ModuleNotFoundError:
|
|
95
|
+
self.skipTest('zope.traversing not installed')
|
|
93
96
|
class MyTest(base.ConfiguringTestBase):
|
|
94
97
|
set_up_packages = ('zope.component',
|
|
95
98
|
('configure.zcml', 'zope.component'),
|
|
@@ -104,7 +107,10 @@ class TestBase(unittest.TestCase):
|
|
|
104
107
|
mt.tearDown() # pylint:disable=no-value-for-parameter
|
|
105
108
|
|
|
106
109
|
def test_shared_configuring_base(self):
|
|
107
|
-
|
|
110
|
+
try:
|
|
111
|
+
import zope.traversing.tests.test_traverser
|
|
112
|
+
except ModuleNotFoundError:
|
|
113
|
+
self.skipTest('zope.traversing not installed')
|
|
108
114
|
class MyTest(base.SharedConfiguringTestBase):
|
|
109
115
|
layer = None # replaced by metaclass
|
|
110
116
|
set_up_packages = ('zope.component',
|
|
@@ -32,16 +32,22 @@ def test_suite():
|
|
|
32
32
|
here = os.path.dirname(__file__)
|
|
33
33
|
|
|
34
34
|
suite = unittest.defaultTestLoader.loadTestsFromName(__name__)
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
try:
|
|
36
|
+
import zope.site as has_zope_site
|
|
37
|
+
except ModuleNotFoundError:
|
|
38
|
+
has_zope_site = None
|
|
39
|
+
else:
|
|
40
|
+
suite.addTest(doctest.DocFileSuite(
|
|
41
|
+
'test_component_cleanup_broken.txt'))
|
|
37
42
|
|
|
38
43
|
readmedir = here
|
|
39
44
|
while not os.path.exists(os.path.join(readmedir, 'setup.py')):
|
|
40
45
|
readmedir = os.path.dirname(readmedir)
|
|
41
46
|
readme = os.path.join(readmedir, 'README.rst')
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
if has_zope_site:
|
|
48
|
+
suite.addTest(doctest.DocFileSuite(
|
|
49
|
+
readme,
|
|
50
|
+
module_relative=False,
|
|
51
|
+
optionflags=doctest.ELLIPSIS,
|
|
52
|
+
))
|
|
47
53
|
return suite
|
|
@@ -14,7 +14,13 @@ import unittest
|
|
|
14
14
|
import transaction
|
|
15
15
|
from transaction.interfaces import NoTransaction
|
|
16
16
|
from zope import interface
|
|
17
|
-
|
|
17
|
+
try:
|
|
18
|
+
from nti.testing import zodb
|
|
19
|
+
base_mock_db_trans = zodb.mock_db_trans
|
|
20
|
+
except ModuleNotFoundError as ex:
|
|
21
|
+
assert ex.name == 'ZODB'
|
|
22
|
+
zodb = None
|
|
23
|
+
base_mock_db_trans = object
|
|
18
24
|
|
|
19
25
|
# pylint:disable=protected-access,pointless-string-statement
|
|
20
26
|
|
|
@@ -41,7 +47,7 @@ class MockConn(object):
|
|
|
41
47
|
self.minimized = True
|
|
42
48
|
|
|
43
49
|
|
|
44
|
-
class MockDBTrans(
|
|
50
|
+
class MockDBTrans(base_mock_db_trans):
|
|
45
51
|
|
|
46
52
|
def __init__(self, db=None):
|
|
47
53
|
if db is None:
|
|
@@ -52,6 +58,8 @@ class MockDBTrans(zodb.mock_db_trans):
|
|
|
52
58
|
class TestMockDBTrans(unittest.TestCase):
|
|
53
59
|
|
|
54
60
|
def setUp(self):
|
|
61
|
+
if zodb is None:
|
|
62
|
+
self.skipTest("ZODB not installed")
|
|
55
63
|
self._was_explicit = transaction.manager.explicit
|
|
56
64
|
transaction.manager.explicit = False
|
|
57
65
|
|
|
@@ -226,7 +234,7 @@ class TestMockDBTrans(unittest.TestCase):
|
|
|
226
234
|
class MyMock(MockDBTrans):
|
|
227
235
|
seen_tx = None
|
|
228
236
|
aborted = False
|
|
229
|
-
def on_connection_opened(self,
|
|
237
|
+
def on_connection_opened(self, _conn):
|
|
230
238
|
# pylint:disable=no-member
|
|
231
239
|
self.seen_tx = self._mock_db_trans__current_transaction
|
|
232
240
|
abort = self.seen_tx.abort
|
|
@@ -255,7 +263,13 @@ class TestMockDBTrans(unittest.TestCase):
|
|
|
255
263
|
|
|
256
264
|
class TestZODBLayer(unittest.TestCase):
|
|
257
265
|
|
|
258
|
-
|
|
266
|
+
if zodb is not None:
|
|
267
|
+
layer = zodb.ZODBLayer
|
|
268
|
+
|
|
269
|
+
def setUp(self):
|
|
270
|
+
super().setUp()
|
|
271
|
+
if zodb is None:
|
|
272
|
+
self.skipTest("ZODB not installed")
|
|
259
273
|
|
|
260
274
|
def test_registration(self):
|
|
261
275
|
from ZODB.interfaces import IDatabase
|
|
@@ -288,10 +302,14 @@ class Object(object):
|
|
|
288
302
|
pass
|
|
289
303
|
|
|
290
304
|
class TestResetDbCaches(unittest.TestCase):
|
|
291
|
-
|
|
305
|
+
|
|
306
|
+
if zodb is not None:
|
|
307
|
+
layer = zodb.ZODBLayer
|
|
292
308
|
|
|
293
309
|
def setUp(self):
|
|
294
310
|
super().setUp()
|
|
311
|
+
if zodb is None:
|
|
312
|
+
self.skipTest("ZODB not installed")
|
|
295
313
|
gc.disable()
|
|
296
314
|
|
|
297
315
|
def tearDown(self):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: nti.testing
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.4.0
|
|
4
4
|
Summary: Support for testing code
|
|
5
5
|
Home-page: https://github.com/OpenNTI/nti.testing
|
|
6
6
|
Author: Jason Madden
|
|
@@ -18,13 +18,13 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
19
|
Classifier: Programming Language :: Python :: 3.12
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
21
22
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
22
23
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
23
24
|
Classifier: Topic :: Software Development :: Testing
|
|
24
25
|
Classifier: Framework :: Zope3
|
|
25
26
|
Requires-Python: >=3.10
|
|
26
27
|
License-File: LICENSE
|
|
27
|
-
Requires-Dist: ZODB>=5.6.0
|
|
28
28
|
Requires-Dist: zope.interface>=5.4.0
|
|
29
29
|
Requires-Dist: pyhamcrest
|
|
30
30
|
Requires-Dist: six
|
|
@@ -35,18 +35,38 @@ Requires-Dist: zope.dottedname
|
|
|
35
35
|
Requires-Dist: zope.exceptions
|
|
36
36
|
Requires-Dist: zope.schema
|
|
37
37
|
Requires-Dist: zope.testing
|
|
38
|
+
Provides-Extra: zodb
|
|
39
|
+
Requires-Dist: ZODB>=5.6.0; extra == "zodb"
|
|
38
40
|
Provides-Extra: test
|
|
39
41
|
Requires-Dist: Acquisition; extra == "test"
|
|
40
|
-
Requires-Dist: zope.site; extra == "test"
|
|
41
42
|
Requires-Dist: zope.testrunner; extra == "test"
|
|
42
|
-
Requires-Dist: testgres>=1.
|
|
43
|
+
Requires-Dist: testgres>=1.11; extra == "test"
|
|
43
44
|
Requires-Dist: psycopg2-binary; platform_python_implementation != "PyPy" and extra == "test"
|
|
45
|
+
Provides-Extra: test-zodb
|
|
46
|
+
Requires-Dist: zope.site; extra == "test-zodb"
|
|
44
47
|
Provides-Extra: docs
|
|
45
48
|
Requires-Dist: Sphinx; extra == "docs"
|
|
46
49
|
Requires-Dist: furo; extra == "docs"
|
|
50
|
+
Requires-Dist: Acquisition; extra == "docs"
|
|
51
|
+
Requires-Dist: zope.testrunner; extra == "docs"
|
|
52
|
+
Requires-Dist: testgres>=1.11; extra == "docs"
|
|
53
|
+
Requires-Dist: psycopg2-binary; platform_python_implementation != "PyPy" and extra == "docs"
|
|
47
54
|
Provides-Extra: testgres
|
|
48
|
-
Requires-Dist: testgres>=1.
|
|
55
|
+
Requires-Dist: testgres>=1.11; extra == "testgres"
|
|
49
56
|
Requires-Dist: psycopg2-binary; platform_python_implementation != "PyPy" and extra == "testgres"
|
|
57
|
+
Dynamic: author
|
|
58
|
+
Dynamic: author-email
|
|
59
|
+
Dynamic: classifier
|
|
60
|
+
Dynamic: description
|
|
61
|
+
Dynamic: home-page
|
|
62
|
+
Dynamic: keywords
|
|
63
|
+
Dynamic: license
|
|
64
|
+
Dynamic: license-file
|
|
65
|
+
Dynamic: project-url
|
|
66
|
+
Dynamic: provides-extra
|
|
67
|
+
Dynamic: requires-dist
|
|
68
|
+
Dynamic: requires-python
|
|
69
|
+
Dynamic: summary
|
|
50
70
|
|
|
51
71
|
=============
|
|
52
72
|
nti.testing
|
|
@@ -302,6 +322,21 @@ ZODB in `nti.testing.zodb`. See the API documentation for details.
|
|
|
302
322
|
Changes
|
|
303
323
|
=========
|
|
304
324
|
|
|
325
|
+
4.4.0 (2025-11-14)
|
|
326
|
+
==================
|
|
327
|
+
|
|
328
|
+
- Move ZODB and related dependencies to the optional 'zodb' extra.
|
|
329
|
+
- Add support for Python 3.14.
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
4.3.0 (2025-04-22)
|
|
333
|
+
==================
|
|
334
|
+
|
|
335
|
+
- Support and require testgres version 1.11. This version refactored
|
|
336
|
+
some internals, breaking the monkey-patches that ``DatabaseLayer``
|
|
337
|
+
applies.
|
|
338
|
+
|
|
339
|
+
|
|
305
340
|
4.2.0.post0 (2024-11-08)
|
|
306
341
|
========================
|
|
307
342
|
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
ZODB>=5.6.0
|
|
2
1
|
zope.interface>=5.4.0
|
|
3
2
|
pyhamcrest
|
|
4
3
|
six
|
|
@@ -13,18 +12,29 @@ zope.testing
|
|
|
13
12
|
[docs]
|
|
14
13
|
Sphinx
|
|
15
14
|
furo
|
|
15
|
+
Acquisition
|
|
16
|
+
zope.testrunner
|
|
17
|
+
testgres>=1.11
|
|
18
|
+
|
|
19
|
+
[docs:platform_python_implementation != "PyPy"]
|
|
20
|
+
psycopg2-binary
|
|
16
21
|
|
|
17
22
|
[test]
|
|
18
23
|
Acquisition
|
|
19
|
-
zope.site
|
|
20
24
|
zope.testrunner
|
|
21
|
-
testgres>=1.
|
|
25
|
+
testgres>=1.11
|
|
26
|
+
|
|
27
|
+
[test-zodb]
|
|
28
|
+
zope.site
|
|
22
29
|
|
|
23
30
|
[test:platform_python_implementation != "PyPy"]
|
|
24
31
|
psycopg2-binary
|
|
25
32
|
|
|
26
33
|
[testgres]
|
|
27
|
-
testgres>=1.
|
|
34
|
+
testgres>=1.11
|
|
28
35
|
|
|
29
36
|
[testgres:platform_python_implementation != "PyPy"]
|
|
30
37
|
psycopg2-binary
|
|
38
|
+
|
|
39
|
+
[zodb]
|
|
40
|
+
ZODB>=5.6.0
|
|
@@ -4,6 +4,8 @@ envlist = py38,py39,py310,py311,py312,pypy3,coverage,docs
|
|
|
4
4
|
[testenv]
|
|
5
5
|
extras =
|
|
6
6
|
test
|
|
7
|
+
zodb
|
|
8
|
+
test-zodb
|
|
7
9
|
commands =
|
|
8
10
|
zope-testrunner --test-path=src --auto-color --auto-progress [] # substitute with tox positional args
|
|
9
11
|
setenv =
|
|
@@ -20,6 +22,10 @@ commands =
|
|
|
20
22
|
deps =
|
|
21
23
|
coverage
|
|
22
24
|
|
|
25
|
+
[testenv:py314]
|
|
26
|
+
extras =
|
|
27
|
+
test
|
|
28
|
+
|
|
23
29
|
[testenv:docs]
|
|
24
30
|
commands =
|
|
25
31
|
sphinx-build -b html -d docs/_build/doctrees docs docs/_build/html
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|