zope.pytestlayer 8.2__tar.gz → 8.3__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.
Files changed (102) hide show
  1. zope_pytestlayer-8.3/.pre-commit-config.yaml +28 -0
  2. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/CHANGES.rst +9 -0
  3. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/MANIFEST.in +1 -1
  4. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/PKG-INFO +29 -9
  5. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/README.rst +3 -2
  6. zope_pytestlayer-8.3/pyproject.toml +33 -0
  7. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/setup.py +5 -6
  8. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/fixture.py +3 -3
  9. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/layered.py +8 -7
  10. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/bad_layer/test_core.py +1 -1
  11. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/custom_fixture_name/test_core.py +1 -1
  12. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/keep_layer_across_test_classes/test_core.py +2 -2
  13. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/layers_with_same_name/test_core.py +1 -1
  14. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/no_setup_or_teardown/test_core.py +1 -1
  15. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/order_by_layer/test_core.py +2 -2
  16. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/order_with_layered_suite/test_core.py +2 -2
  17. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/session_fixture/test_core.py +1 -1
  18. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/shared_with_layered_suite/test_core.py +1 -1
  19. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/single_layer/test_core.py +1 -1
  20. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/single_layer_in_two_modules/test_core.py +1 -1
  21. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/single_layer_with_unattached_base_layer/test_core.py +1 -1
  22. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/single_layered_suite/test_core.py +1 -1
  23. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/two_dependent_layered_suites/test_core.py +1 -1
  24. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/two_dependent_layers/test_core.py +1 -1
  25. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/two_independent_layers/test_core.py +2 -2
  26. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/with_and_without_layer/test_core.py +1 -1
  27. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/test_fixture.py +1 -1
  28. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/test_layer.py +1 -1
  29. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope.pytestlayer.egg-info/PKG-INFO +29 -9
  30. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope.pytestlayer.egg-info/SOURCES.txt +1 -1
  31. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope.pytestlayer.egg-info/requires.txt +1 -1
  32. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/tox.ini +19 -38
  33. zope.pytestlayer-8.2/.pre-commit-config.yaml +0 -46
  34. zope.pytestlayer-8.2/buildout.cfg +0 -48
  35. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/.readthedocs.yaml +0 -0
  36. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/CONTRIBUTING.md +0 -0
  37. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/COPYRIGHT.txt +0 -0
  38. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/HACKING.rst +0 -0
  39. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/LICENSE.txt +0 -0
  40. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/docs/about.rst +0 -0
  41. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/docs/api.rst +0 -0
  42. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/docs/changes.rst +0 -0
  43. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/docs/conf.py +0 -0
  44. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/docs/index.rst +0 -0
  45. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/pytest.ini +0 -0
  46. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/setup.cfg +0 -0
  47. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/__init__.py +0 -0
  48. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/__init__.py +0 -0
  49. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/_compat.py +0 -0
  50. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/doctest.py +0 -0
  51. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/plugin.py +0 -0
  52. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/testing.py +0 -0
  53. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/__init__.py +0 -0
  54. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/conftest.py +0 -0
  55. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/bad_layer/__init__.py +0 -0
  56. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/bad_layer/conftest.py +0 -0
  57. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/custom_fixture_name/__init__.py +0 -0
  58. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/custom_fixture_name/conftest.py +0 -0
  59. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/keep_layer_across_test_classes/__init__.py +0 -0
  60. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/keep_layer_across_test_classes/conftest.py +0 -0
  61. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/layers_with_same_name/__init__.py +0 -0
  62. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/layers_with_same_name/conftest.py +0 -0
  63. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/no_setup_or_teardown/__init__.py +0 -0
  64. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/no_setup_or_teardown/conftest.py +0 -0
  65. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/order_by_layer/__init__.py +0 -0
  66. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/order_by_layer/conftest.py +0 -0
  67. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/order_with_layered_suite/__init__.py +0 -0
  68. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/order_with_layered_suite/conftest.py +0 -0
  69. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/order_with_layered_suite/foo.txt +0 -0
  70. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/order_with_layered_suite/foobar.txt +0 -0
  71. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/session_fixture/__init__.py +0 -0
  72. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/session_fixture/conftest.py +0 -0
  73. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/shared_with_layered_suite/__init__.py +0 -0
  74. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/shared_with_layered_suite/conftest.py +0 -0
  75. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/shared_with_layered_suite/mydoctest.txt +0 -0
  76. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/single_layer/__init__.py +0 -0
  77. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/single_layer/conftest.py +0 -0
  78. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/single_layer_in_two_modules/__init__.py +0 -0
  79. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/single_layer_in_two_modules/conftest.py +0 -0
  80. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/single_layer_in_two_modules/test_second_module.py +0 -0
  81. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/single_layer_with_unattached_base_layer/__init__.py +0 -0
  82. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/single_layer_with_unattached_base_layer/conftest.py +0 -0
  83. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/single_layered_suite/__init__.py +0 -0
  84. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/single_layered_suite/conftest.py +0 -0
  85. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/single_layered_suite/doctest.txt +0 -0
  86. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/two_dependent_layered_suites/__init__.py +0 -0
  87. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/two_dependent_layered_suites/bar.txt +0 -0
  88. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/two_dependent_layered_suites/conftest.py +0 -0
  89. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/two_dependent_layered_suites/foo.txt +0 -0
  90. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/two_dependent_layers/__init__.py +0 -0
  91. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/two_dependent_layers/conftest.py +0 -0
  92. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/two_independent_layers/__init__.py +0 -0
  93. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/two_independent_layers/conftest.py +0 -0
  94. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/with_and_without_layer/__init__.py +0 -0
  95. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/fixture/with_and_without_layer/conftest.py +0 -0
  96. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/test_doctest.py +0 -0
  97. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope/pytestlayer/tests/test_integration.py +0 -0
  98. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope.pytestlayer.egg-info/dependency_links.txt +0 -0
  99. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope.pytestlayer.egg-info/entry_points.txt +0 -0
  100. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope.pytestlayer.egg-info/namespace_packages.txt +0 -0
  101. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope.pytestlayer.egg-info/not-zip-safe +0 -0
  102. {zope.pytestlayer-8.2 → zope_pytestlayer-8.3}/src/zope.pytestlayer.egg-info/top_level.txt +0 -0
@@ -0,0 +1,28 @@
1
+ # Generated from:
2
+ # https://github.com/zopefoundation/meta/tree/master/config/pure-python
3
+ minimum_pre_commit_version: '3.6'
4
+ repos:
5
+ - repo: https://github.com/pycqa/isort
6
+ rev: "6.0.1"
7
+ hooks:
8
+ - id: isort
9
+ - repo: https://github.com/hhatto/autopep8
10
+ rev: "v2.3.2"
11
+ hooks:
12
+ - id: autopep8
13
+ args: [--in-place, --aggressive, --aggressive]
14
+ - repo: https://github.com/asottile/pyupgrade
15
+ rev: v3.19.1
16
+ hooks:
17
+ - id: pyupgrade
18
+ args: [--py39-plus]
19
+ - repo: https://github.com/isidentical/teyit
20
+ rev: 0.4.3
21
+ hooks:
22
+ - id: teyit
23
+ - repo: https://github.com/PyCQA/flake8
24
+ rev: "7.2.0"
25
+ hooks:
26
+ - id: flake8
27
+ additional_dependencies:
28
+ - flake8-debugger == 4.1.2
@@ -2,6 +2,15 @@
2
2
  Change log for zope.pytestlayer
3
3
  =================================
4
4
 
5
+ 8.3 (2025-05-15)
6
+ ================
7
+
8
+ - Add support for Python 3.13.
9
+
10
+ - Add support for pytest >= 8, requiring at least that version.
11
+
12
+ - Drop support for Python 3.7, 3.8.
13
+
5
14
  8.2 (2024-05-15)
6
15
  ================
7
16
 
@@ -5,10 +5,10 @@ include *.rst
5
5
  include *.txt
6
6
  include buildout.cfg
7
7
  include tox.ini
8
+ include .pre-commit-config.yaml
8
9
 
9
10
  recursive-include docs *.py
10
11
  recursive-include docs *.rst
11
- recursive-include docs *.txt
12
12
  recursive-include docs Makefile
13
13
 
14
14
  recursive-include src *.py
@@ -1,11 +1,11 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: zope.pytestlayer
3
- Version: 8.2
3
+ Version: 8.3
4
4
  Summary: Integration of zope.testrunner-style test layers into pytest framework
5
5
  Home-page: https://github.com/zopefoundation/zope.pytestlayer/
6
6
  Author: gocept
7
7
  Author-email: zope-dev@zope.dev
8
- License: ZPL 2.1
8
+ License: ZPL-2.1
9
9
  Keywords: pytest zope.testrunner layer fixture
10
10
  Classifier: Development Status :: 4 - Beta
11
11
  Classifier: Environment :: Console
@@ -18,12 +18,11 @@ Classifier: License :: OSI Approved :: Zope Public License
18
18
  Classifier: Natural Language :: English
19
19
  Classifier: Operating System :: OS Independent
20
20
  Classifier: Programming Language :: Python :: 3
21
- Classifier: Programming Language :: Python :: 3.7
22
- Classifier: Programming Language :: Python :: 3.8
23
21
  Classifier: Programming Language :: Python :: 3.9
24
22
  Classifier: Programming Language :: Python :: 3.10
25
23
  Classifier: Programming Language :: Python :: 3.11
26
24
  Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Programming Language :: Python :: 3.13
27
26
  Classifier: Programming Language :: Python :: Implementation
28
27
  Classifier: Programming Language :: Python :: Implementation :: CPython
29
28
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -31,9 +30,9 @@ Classifier: Topic :: Software Development
31
30
  Classifier: Topic :: Software Development :: Libraries
32
31
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
33
32
  Classifier: Topic :: Software Development :: Testing
34
- Requires-Python: >=3.7
33
+ Requires-Python: >=3.9
35
34
  License-File: LICENSE.txt
36
- Requires-Dist: pytest<8,>=6
35
+ Requires-Dist: pytest>=8
37
36
  Requires-Dist: setuptools
38
37
  Requires-Dist: zope.dottedname
39
38
  Provides-Extra: test
@@ -41,6 +40,17 @@ Requires-Dist: plone.testing; extra == "test"
41
40
  Provides-Extra: docs
42
41
  Requires-Dist: Sphinx; extra == "docs"
43
42
  Requires-Dist: gocept.package; extra == "docs"
43
+ Dynamic: author
44
+ Dynamic: author-email
45
+ Dynamic: classifier
46
+ Dynamic: description
47
+ Dynamic: home-page
48
+ Dynamic: keywords
49
+ Dynamic: license
50
+ Dynamic: provides-extra
51
+ Dynamic: requires-dist
52
+ Dynamic: requires-python
53
+ Dynamic: summary
44
54
 
45
55
  =================================
46
56
  The zope.pytestlayer distribution
@@ -55,8 +65,9 @@ The zope.pytestlayer distribution
55
65
  .. image:: https://github.com/zopefoundation/zope.pytestlayer/actions/workflows/tests.yml/badge.svg
56
66
  :target: https://github.com/zopefoundation/zope.pytestlayer/actions?query=tests
57
67
 
58
- .. image:: https://coveralls.io/repos/github/zope/zope.pytestlayer/badge.svg?branch=master
59
- :target: https://coveralls.io/github/zope/zope.pytestlayer?branch=master
68
+ .. image:: https://coveralls.io/repos/github/zopefoundation/zope.pytestlayer/badge.svg?branch=master
69
+ :target: https://coveralls.io/github/zopefoundation/zope.pytestlayer?branch=master
70
+
60
71
 
61
72
 
62
73
  Integration of zope.testrunner-style test layers into the `pytest`_
@@ -166,6 +177,15 @@ Developing zope.pytestlayer
166
177
  Change log for zope.pytestlayer
167
178
  =================================
168
179
 
180
+ 8.3 (2025-05-15)
181
+ ================
182
+
183
+ - Add support for Python 3.13.
184
+
185
+ - Add support for pytest >= 8, requiring at least that version.
186
+
187
+ - Drop support for Python 3.7, 3.8.
188
+
169
189
  8.2 (2024-05-15)
170
190
  ================
171
191
 
@@ -11,8 +11,9 @@ The zope.pytestlayer distribution
11
11
  .. image:: https://github.com/zopefoundation/zope.pytestlayer/actions/workflows/tests.yml/badge.svg
12
12
  :target: https://github.com/zopefoundation/zope.pytestlayer/actions?query=tests
13
13
 
14
- .. image:: https://coveralls.io/repos/github/zope/zope.pytestlayer/badge.svg?branch=master
15
- :target: https://coveralls.io/github/zope/zope.pytestlayer?branch=master
14
+ .. image:: https://coveralls.io/repos/github/zopefoundation/zope.pytestlayer/badge.svg?branch=master
15
+ :target: https://coveralls.io/github/zopefoundation/zope.pytestlayer?branch=master
16
+
16
17
 
17
18
 
18
19
  Integration of zope.testrunner-style test layers into the `pytest`_
@@ -0,0 +1,33 @@
1
+ #
2
+ # Generated from:
3
+ # https://github.com/zopefoundation/meta/tree/master/config/pure-python
4
+
5
+ [build-system]
6
+ requires = [
7
+ "setuptools == 75.8.2",
8
+ "wheel",
9
+ ]
10
+ build-backend = "setuptools.build_meta"
11
+
12
+ [tool.coverage.run]
13
+ branch = true
14
+ source = ["zope.pytestlayer"]
15
+
16
+ [tool.coverage.report]
17
+ fail_under = 98
18
+ precision = 2
19
+ ignore_errors = true
20
+ show_missing = true
21
+ exclude_lines = [
22
+ "pragma: no cover",
23
+ "pragma: nocover",
24
+ "except ImportError:",
25
+ "raise NotImplementedError",
26
+ "if __name__ == '__main__':",
27
+ "self.fail",
28
+ "raise AssertionError",
29
+ "raise unittest.Skip",
30
+ ]
31
+
32
+ [tool.coverage.html]
33
+ directory = "parts/htmlcov"
@@ -6,11 +6,11 @@ from setuptools import setup
6
6
 
7
7
  setup(
8
8
  name='zope.pytestlayer',
9
- version='8.2',
9
+ version='8.3',
10
10
 
11
- python_requires='>=3.7',
11
+ python_requires='>=3.9',
12
12
  install_requires=[
13
- 'pytest >= 6, < 8',
13
+ 'pytest >= 8',
14
14
  'setuptools',
15
15
  'zope.dottedname',
16
16
  ],
@@ -33,7 +33,7 @@ setup(
33
33
 
34
34
  author='gocept',
35
35
  author_email='zope-dev@zope.dev',
36
- license='ZPL 2.1',
36
+ license='ZPL-2.1',
37
37
  url='https://github.com/zopefoundation/zope.pytestlayer/',
38
38
 
39
39
  keywords='pytest zope.testrunner layer fixture',
@@ -49,12 +49,11 @@ setup(
49
49
  "Natural Language :: English",
50
50
  "Operating System :: OS Independent",
51
51
  "Programming Language :: Python :: 3",
52
- "Programming Language :: Python :: 3.7",
53
- "Programming Language :: Python :: 3.8",
54
52
  "Programming Language :: Python :: 3.9",
55
53
  "Programming Language :: Python :: 3.10",
56
54
  "Programming Language :: Python :: 3.11",
57
55
  "Programming Language :: Python :: 3.12",
56
+ "Programming Language :: Python :: 3.13",
58
57
  "Programming Language :: Python :: Implementation",
59
58
  "Programming Language :: Python :: Implementation :: CPython",
60
59
  "Programming Language :: Python :: Implementation :: PyPy",
@@ -7,7 +7,7 @@ import pytest
7
7
  import zope.dottedname.resolve
8
8
 
9
9
 
10
- class ZopeLayerState(object):
10
+ class ZopeLayerState:
11
11
 
12
12
  def __init__(self):
13
13
  self.current = set()
@@ -104,7 +104,7 @@ def get_layer_name(layer):
104
104
  # As per zope.testrunner conventions, a layer is assumed to have a
105
105
  # __name__ even if it's not a class.
106
106
  name = layer.__name__
107
- return '%s.%s' % (layer.__module__, name)
107
+ return f'{layer.__module__}.{name}'
108
108
 
109
109
 
110
110
  def make_identifier(string):
@@ -115,7 +115,7 @@ def make_identifier(string):
115
115
  def get_fixture_name(layer, scope):
116
116
  name = make_identifier(get_layer_name(layer))
117
117
  layerid = id(layer)
118
- return 'zope_layer_{scope}_{name}_{layerid}'.format(**locals())
118
+ return f'zope_layer_{scope}_{name}_{layerid}'
119
119
 
120
120
 
121
121
  LAYERS = {}
@@ -39,18 +39,20 @@ class LayeredTestCaseInstance(_pytest.unittest.UnitTestCase):
39
39
 
40
40
  class LayeredTestCaseFunction(_pytest.unittest.TestCaseFunction):
41
41
 
42
+ _instance = None
43
+
42
44
  @classmethod
43
45
  def from_parent(cls, parent, name, **kw):
44
46
  description = get_description(parent)
45
47
  keywords = get_keywords(description)
46
- function = super(LayeredTestCaseFunction, cls).from_parent(
48
+ function = super().from_parent(
47
49
  parent=parent,
48
50
  name=name,
49
51
  keywords=keywords,
50
52
  )
51
53
  function.layer = function.parent.layer
52
54
  function.tc_description = description
53
- function._testcase = function.parent.obj
55
+ function._instance = function.parent.obj
54
56
  return function
55
57
 
56
58
  def setup(self):
@@ -65,10 +67,10 @@ class LayeredTestCaseFunction(_pytest.unittest.TestCaseFunction):
65
67
  self._request.getfixturevalue(fixture_name)
66
68
 
67
69
  def teardown(self):
68
- _testcase = self._testcase
69
- super(LayeredTestCaseFunction, self).teardown()
70
+ _instance = self._instance
71
+ super().teardown()
70
72
  # Do not die with a meaningless error message when rerunning doctests:
71
- self._testcase = _testcase
73
+ self._instance = _instance
72
74
 
73
75
  def reportinfo(self):
74
76
  return ('test_suite', None, self.tc_description)
@@ -96,5 +98,4 @@ def walk_suite(suite):
96
98
  fixture.raise_if_bad_layer(suite.layer)
97
99
  yield item, suite.layer
98
100
  else:
99
- for result in walk_suite(item):
100
- yield result
101
+ yield from walk_suite(item)
@@ -1,7 +1,7 @@
1
1
  import unittest
2
2
 
3
3
 
4
- class FooLayer(object):
4
+ class FooLayer:
5
5
  __name__ = 'FooLayer'
6
6
 
7
7
 
@@ -3,7 +3,7 @@ import unittest
3
3
  from zope.pytestlayer.testing import log_to_terminal
4
4
 
5
5
 
6
- class FooLayer(object):
6
+ class FooLayer:
7
7
 
8
8
  @classmethod
9
9
  def setUp(cls):
@@ -3,7 +3,7 @@ import unittest
3
3
  from zope.pytestlayer.testing import log_to_terminal
4
4
 
5
5
 
6
- class FooLayer(object):
6
+ class FooLayer:
7
7
 
8
8
  @classmethod
9
9
  def setUp(cls):
@@ -24,7 +24,7 @@ class FooLayer(object):
24
24
  del cls.test_foo
25
25
 
26
26
 
27
- class BarLayer(object):
27
+ class BarLayer:
28
28
 
29
29
  @classmethod
30
30
  def setUp(cls):
@@ -1,7 +1,7 @@
1
1
  import unittest
2
2
 
3
3
 
4
- class Layer(object):
4
+ class Layer:
5
5
 
6
6
  def __init__(self, value, bases=()):
7
7
  self.__name__ = 'TestLayer'
@@ -1,7 +1,7 @@
1
1
  import unittest
2
2
 
3
3
 
4
- class FooLayer(object):
4
+ class FooLayer:
5
5
  pass
6
6
 
7
7
 
@@ -3,7 +3,7 @@ import unittest
3
3
  from zope.pytestlayer.testing import log_to_terminal
4
4
 
5
5
 
6
- class FooLayer(object):
6
+ class FooLayer:
7
7
 
8
8
  @classmethod
9
9
  def setUp(cls):
@@ -24,7 +24,7 @@ class FooLayer(object):
24
24
  del cls.test_foo
25
25
 
26
26
 
27
- class BarLayer(object):
27
+ class BarLayer:
28
28
 
29
29
  @classmethod
30
30
  def setUp(cls):
@@ -6,7 +6,7 @@ from plone.testing import layered
6
6
  from zope.pytestlayer.testing import log_to_terminal
7
7
 
8
8
 
9
- class FooLayer(object):
9
+ class FooLayer:
10
10
 
11
11
  @classmethod
12
12
  def setUp(cls):
@@ -27,7 +27,7 @@ class FooLayer(object):
27
27
  del cls.test_foo
28
28
 
29
29
 
30
- class BarLayer(object):
30
+ class BarLayer:
31
31
 
32
32
  @classmethod
33
33
  def setUp(cls):
@@ -3,7 +3,7 @@ import unittest
3
3
  from zope.pytestlayer.testing import log_to_terminal
4
4
 
5
5
 
6
- class FooLayer(object):
6
+ class FooLayer:
7
7
 
8
8
  @classmethod
9
9
  def setUp(cls):
@@ -6,7 +6,7 @@ from plone.testing import layered
6
6
  from zope.pytestlayer.testing import log_to_terminal
7
7
 
8
8
 
9
- class FooLayer(object):
9
+ class FooLayer:
10
10
 
11
11
  @classmethod
12
12
  def setUp(cls):
@@ -3,7 +3,7 @@ import unittest
3
3
  from zope.pytestlayer.testing import log_to_terminal
4
4
 
5
5
 
6
- class FooLayer(object):
6
+ class FooLayer:
7
7
 
8
8
  @classmethod
9
9
  def setUp(cls):
@@ -3,7 +3,7 @@ import unittest
3
3
  from zope.pytestlayer.testing import log_to_terminal
4
4
 
5
5
 
6
- class FooLayer(object):
6
+ class FooLayer:
7
7
 
8
8
  @classmethod
9
9
  def setUp(cls):
@@ -3,7 +3,7 @@ import unittest
3
3
  from zope.pytestlayer.testing import log_to_terminal
4
4
 
5
5
 
6
- class BarLayer(object):
6
+ class BarLayer:
7
7
 
8
8
  @classmethod
9
9
  def setUp(cls):
@@ -6,7 +6,7 @@ from plone.testing import layered
6
6
  from zope.pytestlayer.testing import log_to_terminal
7
7
 
8
8
 
9
- class FooLayer(object):
9
+ class FooLayer:
10
10
 
11
11
  @classmethod
12
12
  def setUp(cls):
@@ -6,7 +6,7 @@ from plone.testing import layered
6
6
  from zope.pytestlayer.testing import log_to_terminal
7
7
 
8
8
 
9
- class FooLayer(object):
9
+ class FooLayer:
10
10
 
11
11
  @classmethod
12
12
  def setUp(cls):
@@ -3,7 +3,7 @@ import unittest
3
3
  from zope.pytestlayer.testing import log_to_terminal
4
4
 
5
5
 
6
- class FooLayer(object):
6
+ class FooLayer:
7
7
 
8
8
  @classmethod
9
9
  def setUp(cls):
@@ -3,7 +3,7 @@ import unittest
3
3
  from zope.pytestlayer.testing import log_to_terminal
4
4
 
5
5
 
6
- class FooLayer(object):
6
+ class FooLayer:
7
7
 
8
8
  @classmethod
9
9
  def setUp(cls):
@@ -24,7 +24,7 @@ class FooLayer(object):
24
24
  del cls.test_foo
25
25
 
26
26
 
27
- class BarLayer(object):
27
+ class BarLayer:
28
28
 
29
29
  @classmethod
30
30
  def setUp(cls):
@@ -3,7 +3,7 @@ import unittest
3
3
  from zope.pytestlayer.testing import log_to_terminal
4
4
 
5
5
 
6
- class FooLayer(object):
6
+ class FooLayer:
7
7
 
8
8
  @classmethod
9
9
  def setUp(cls):
@@ -1,7 +1,7 @@
1
1
  from .. import fixture
2
2
 
3
3
 
4
- class Layer(object):
4
+ class Layer:
5
5
  pass
6
6
 
7
7
 
@@ -1,7 +1,7 @@
1
1
  from zope.pytestlayer import fixture
2
2
 
3
3
 
4
- class LayerClass(object):
4
+ class LayerClass:
5
5
  pass
6
6
 
7
7
 
@@ -1,11 +1,11 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: zope.pytestlayer
3
- Version: 8.2
3
+ Version: 8.3
4
4
  Summary: Integration of zope.testrunner-style test layers into pytest framework
5
5
  Home-page: https://github.com/zopefoundation/zope.pytestlayer/
6
6
  Author: gocept
7
7
  Author-email: zope-dev@zope.dev
8
- License: ZPL 2.1
8
+ License: ZPL-2.1
9
9
  Keywords: pytest zope.testrunner layer fixture
10
10
  Classifier: Development Status :: 4 - Beta
11
11
  Classifier: Environment :: Console
@@ -18,12 +18,11 @@ Classifier: License :: OSI Approved :: Zope Public License
18
18
  Classifier: Natural Language :: English
19
19
  Classifier: Operating System :: OS Independent
20
20
  Classifier: Programming Language :: Python :: 3
21
- Classifier: Programming Language :: Python :: 3.7
22
- Classifier: Programming Language :: Python :: 3.8
23
21
  Classifier: Programming Language :: Python :: 3.9
24
22
  Classifier: Programming Language :: Python :: 3.10
25
23
  Classifier: Programming Language :: Python :: 3.11
26
24
  Classifier: Programming Language :: Python :: 3.12
25
+ Classifier: Programming Language :: Python :: 3.13
27
26
  Classifier: Programming Language :: Python :: Implementation
28
27
  Classifier: Programming Language :: Python :: Implementation :: CPython
29
28
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -31,9 +30,9 @@ Classifier: Topic :: Software Development
31
30
  Classifier: Topic :: Software Development :: Libraries
32
31
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
33
32
  Classifier: Topic :: Software Development :: Testing
34
- Requires-Python: >=3.7
33
+ Requires-Python: >=3.9
35
34
  License-File: LICENSE.txt
36
- Requires-Dist: pytest<8,>=6
35
+ Requires-Dist: pytest>=8
37
36
  Requires-Dist: setuptools
38
37
  Requires-Dist: zope.dottedname
39
38
  Provides-Extra: test
@@ -41,6 +40,17 @@ Requires-Dist: plone.testing; extra == "test"
41
40
  Provides-Extra: docs
42
41
  Requires-Dist: Sphinx; extra == "docs"
43
42
  Requires-Dist: gocept.package; extra == "docs"
43
+ Dynamic: author
44
+ Dynamic: author-email
45
+ Dynamic: classifier
46
+ Dynamic: description
47
+ Dynamic: home-page
48
+ Dynamic: keywords
49
+ Dynamic: license
50
+ Dynamic: provides-extra
51
+ Dynamic: requires-dist
52
+ Dynamic: requires-python
53
+ Dynamic: summary
44
54
 
45
55
  =================================
46
56
  The zope.pytestlayer distribution
@@ -55,8 +65,9 @@ The zope.pytestlayer distribution
55
65
  .. image:: https://github.com/zopefoundation/zope.pytestlayer/actions/workflows/tests.yml/badge.svg
56
66
  :target: https://github.com/zopefoundation/zope.pytestlayer/actions?query=tests
57
67
 
58
- .. image:: https://coveralls.io/repos/github/zope/zope.pytestlayer/badge.svg?branch=master
59
- :target: https://coveralls.io/github/zope/zope.pytestlayer?branch=master
68
+ .. image:: https://coveralls.io/repos/github/zopefoundation/zope.pytestlayer/badge.svg?branch=master
69
+ :target: https://coveralls.io/github/zopefoundation/zope.pytestlayer?branch=master
70
+
60
71
 
61
72
 
62
73
  Integration of zope.testrunner-style test layers into the `pytest`_
@@ -166,6 +177,15 @@ Developing zope.pytestlayer
166
177
  Change log for zope.pytestlayer
167
178
  =================================
168
179
 
180
+ 8.3 (2025-05-15)
181
+ ================
182
+
183
+ - Add support for Python 3.13.
184
+
185
+ - Add support for pytest >= 8, requiring at least that version.
186
+
187
+ - Drop support for Python 3.7, 3.8.
188
+
169
189
  8.2 (2024-05-15)
170
190
  ================
171
191
 
@@ -7,7 +7,7 @@ HACKING.rst
7
7
  LICENSE.txt
8
8
  MANIFEST.in
9
9
  README.rst
10
- buildout.cfg
10
+ pyproject.toml
11
11
  pytest.ini
12
12
  setup.cfg
13
13
  setup.py
@@ -1,4 +1,4 @@
1
- pytest<8,>=6
1
+ pytest>=8
2
2
  setuptools
3
3
  zope.dottedname
4
4
 
@@ -5,12 +5,11 @@ minversion = 3.18
5
5
  envlist =
6
6
  release-check
7
7
  lint
8
- py37
9
- py38
10
8
  py39
11
9
  py310
12
10
  py311
13
11
  py312
12
+ py313
14
13
  pypy3
15
14
  docs
16
15
  coverage
@@ -20,21 +19,30 @@ usedevelop = true
20
19
  package = wheel
21
20
  wheel_build_env = .pkg
22
21
  deps =
22
+ setuptools == 75.8.2
23
23
  pytest
24
24
  pytest-cov
25
25
  pytest-remove-stale-bytecode
26
- setenv =
27
- py312: VIRTUALENV_PIP=23.1.2
28
- py312: PIP_REQUIRE_VIRTUALENV=0
29
26
  commands =
30
27
  pytest []
31
28
  extras =
32
29
  test
30
+
31
+ [testenv:setuptools-latest]
32
+ basepython = python3
33
+ deps =
34
+ git+https://github.com/pypa/setuptools.git\#egg=setuptools
35
+ pytest
36
+ pytest-cov
37
+ pytest-remove-stale-bytecode
38
+
33
39
  [testenv:release-check]
34
40
  description = ensure that the distribution is ready to release
35
41
  basepython = python3
36
42
  skip_install = true
37
43
  deps =
44
+ setuptools == 75.8.2
45
+ wheel
38
46
  twine
39
47
  build
40
48
  check-manifest
@@ -48,23 +56,14 @@ commands =
48
56
  twine check dist/*
49
57
 
50
58
  [testenv:lint]
59
+ description = This env runs all linters configured in .pre-commit-config.yaml
51
60
  basepython = python3
52
61
  skip_install = true
53
62
  deps =
54
- isort
55
- flake8
56
- commands =
57
- isort --check-only --diff {toxinidir}/src {toxinidir}/setup.py
58
- flake8 src setup.py
59
-
60
- [testenv:isort-apply]
61
- basepython = python3
62
- skip_install = true
63
+ pre-commit
63
64
  commands_pre =
64
- deps =
65
- isort
66
65
  commands =
67
- isort {toxinidir}/src {toxinidir}/setup.py []
66
+ pre-commit run --all-files --show-diff-on-failure
68
67
 
69
68
  [testenv:docs]
70
69
  basepython = python3
@@ -80,30 +79,12 @@ basepython = python3
80
79
  allowlist_externals =
81
80
  mkdir
82
81
  deps =
83
- coverage
82
+ coverage[toml]
84
83
  pytest
85
84
  pytest-cov
86
85
  pytest-remove-stale-bytecode
87
86
  commands =
88
87
  mkdir -p {toxinidir}/parts/htmlcov
89
88
  pytest --cov=src --cov-report=html []
90
- coverage html --ignore-errors
91
- coverage report --ignore-errors --show-missing --fail-under=98
92
-
93
- [coverage:run]
94
- branch = True
95
- source = zope.pytestlayer
96
-
97
- [coverage:report]
98
- precision = 2
99
- exclude_lines =
100
- pragma: no cover
101
- pragma: nocover
102
- except ImportError:
103
- raise NotImplementedError
104
- if __name__ == '__main__':
105
- self.fail
106
- raise AssertionError
107
-
108
- [coverage:html]
109
- directory = parts/htmlcov
89
+ coverage html
90
+ coverage report
@@ -1,46 +0,0 @@
1
- ---
2
- repos:
3
- - repo: https://github.com/pre-commit/pre-commit-hooks
4
- rev: v4.5.0
5
- hooks:
6
- - id: trailing-whitespace
7
- - id: end-of-file-fixer
8
- - id: fix-encoding-pragma
9
- args: [--remove]
10
- - id: check-yaml
11
- - id: debug-statements
12
- language_version: python3
13
- - repo: https://github.com/PyCQA/flake8
14
- rev: 6.1.0
15
- hooks:
16
- - id: flake8
17
- language_version: python3
18
- additional_dependencies: [flake8-typing-imports==1.14.0]
19
- args: ["--per-file-ignores=src/zope/pytestlayer/tests/test_integration.py:E501"]
20
- - repo: https://github.com/hhatto/autopep8
21
- rev: v2.0.4
22
- hooks:
23
- - id: autopep8
24
- - repo: https://github.com/PyCQA/isort
25
- rev: 5.12.0
26
- hooks:
27
- - id: isort
28
- args: [--filter-files]
29
- files: \.py$
30
- - repo: local
31
- hooks:
32
- - id: rst
33
- name: rst
34
- entry: rst-lint --encoding utf-8
35
- exclude: ./doc/*
36
- # We have Sphinx directives in the docs. This cannot be validated
37
- # here. We therefore include two rst-linter. They complement each
38
- # other. This regex matches all *.rst not in the doc/ folder.
39
- files: ^[^(doc)].*rst
40
- language: python
41
- additional_dependencies: [pygments, restructuredtext_lint]
42
- - repo: https://github.com/rstcheck/rstcheck
43
- rev: 'v6.2.0'
44
- hooks:
45
- - id: rstcheck
46
- args: ["--ignore-messages", 'No directive entry for "autosummary"|No role entry for "ref"|Unknown interpreted text role "ref"|Unknown directive type "(autosummary|literalinclude|toctree)"']
@@ -1,48 +0,0 @@
1
- [buildout]
2
- parts =
3
- doc
4
- develop = .
5
- allow-picked-versions = true
6
- show-picked-versions = true
7
-
8
- [doc]
9
- recipe = zc.recipe.egg
10
- eggs = gocept.package [doc]
11
- zope.pytestlayer
12
- scripts = doc
13
-
14
- [versions]
15
- Sphinx = ${versions:sphinx}
16
- alabaster = 0.7.7
17
- Babel = 2.3.4
18
- coverage = 4.0.3
19
- docutils = 0.12
20
- flake8 = 2.5.4
21
- gocept.package = 2.1
22
- imagesize = 0.7.1
23
- Jinja2 = 2.8
24
- MarkupSafe = 0.23
25
- mccabe = 0.4.0
26
- Paste = 2.0.3
27
- PasteDeploy = 1.5.2
28
- PasteScript = 2.0.2
29
- pep8 = 1.7.0
30
- pkginfo = 1.2.1
31
- plone.testing = 5.0.0
32
- py = 1.4.31
33
- pyflakes = 1.0.0
34
- Pygments = 2.1.3
35
- pytest = 3.0.0
36
- pytest-cov = 2.2.1
37
- pytest-flake8 = 0.5
38
- pytz = 2016.4
39
- setuptools = 20.10.1
40
- six = 1.10.0
41
- snowballstemmer = 1.2.1
42
- sphinx = 1.4.1
43
- zc.buildout = 2.5.1
44
- zc.recipe.egg = 2.0.3
45
- zope.dottedname = 4.1.0
46
- zope.exceptions = 4.0.8
47
- zope.interface = 4.1.3
48
- zope.testing = 4.5.0
File without changes