zope.proxy 7.0__tar.gz → 7.1__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 (44) hide show
  1. {zope_proxy-7.0 → zope_proxy-7.1}/.manylinux-install.sh +8 -5
  2. {zope_proxy-7.0 → zope_proxy-7.1}/.pre-commit-config.yaml +3 -3
  3. {zope_proxy-7.0 → zope_proxy-7.1}/CHANGES.rst +71 -41
  4. zope_proxy-7.1/PKG-INFO +72 -0
  5. {zope_proxy-7.0 → zope_proxy-7.1}/docs/conf.py +1 -1
  6. {zope_proxy-7.0 → zope_proxy-7.1}/docs/requirements.txt +1 -2
  7. zope_proxy-7.1/pyproject.toml +91 -0
  8. zope_proxy-7.1/setup.py +77 -0
  9. zope_proxy-7.1/src/zope.proxy.egg-info/PKG-INFO +72 -0
  10. {zope_proxy-7.0 → zope_proxy-7.1}/src/zope.proxy.egg-info/SOURCES.txt +0 -1
  11. {zope_proxy-7.0 → zope_proxy-7.1}/src/zope.proxy.egg-info/requires.txt +1 -2
  12. {zope_proxy-7.0 → zope_proxy-7.1}/tox.ini +4 -4
  13. zope_proxy-7.0/PKG-INFO +0 -438
  14. zope_proxy-7.0/pyproject.toml +0 -41
  15. zope_proxy-7.0/setup.py +0 -148
  16. zope_proxy-7.0/src/zope.proxy.egg-info/PKG-INFO +0 -438
  17. zope_proxy-7.0/src/zope.proxy.egg-info/not-zip-safe +0 -1
  18. {zope_proxy-7.0 → zope_proxy-7.1}/.manylinux.sh +0 -0
  19. {zope_proxy-7.0 → zope_proxy-7.1}/.readthedocs.yaml +0 -0
  20. {zope_proxy-7.0 → zope_proxy-7.1}/CONTRIBUTING.md +0 -0
  21. {zope_proxy-7.0 → zope_proxy-7.1}/COPYRIGHT.txt +0 -0
  22. {zope_proxy-7.0 → zope_proxy-7.1}/LICENSE.txt +0 -0
  23. {zope_proxy-7.0 → zope_proxy-7.1}/MANIFEST.in +0 -0
  24. {zope_proxy-7.0 → zope_proxy-7.1}/README.rst +0 -0
  25. {zope_proxy-7.0 → zope_proxy-7.1}/buildout.cfg +0 -0
  26. {zope_proxy-7.0 → zope_proxy-7.1}/docs/Makefile +0 -0
  27. {zope_proxy-7.0 → zope_proxy-7.1}/docs/api.rst +0 -0
  28. {zope_proxy-7.0 → zope_proxy-7.1}/docs/changes.rst +0 -0
  29. {zope_proxy-7.0 → zope_proxy-7.1}/docs/hacking.rst +0 -0
  30. {zope_proxy-7.0 → zope_proxy-7.1}/docs/index.rst +0 -0
  31. {zope_proxy-7.0 → zope_proxy-7.1}/docs/make.bat +0 -0
  32. {zope_proxy-7.0 → zope_proxy-7.1}/docs/narr.rst +0 -0
  33. {zope_proxy-7.0 → zope_proxy-7.1}/setup.cfg +0 -0
  34. {zope_proxy-7.0 → zope_proxy-7.1}/src/zope/proxy/__init__.py +0 -0
  35. {zope_proxy-7.0 → zope_proxy-7.1}/src/zope/proxy/_zope_proxy_proxy.c +0 -0
  36. {zope_proxy-7.0 → zope_proxy-7.1}/src/zope/proxy/decorator.py +0 -0
  37. {zope_proxy-7.0 → zope_proxy-7.1}/src/zope/proxy/interfaces.py +0 -0
  38. {zope_proxy-7.0 → zope_proxy-7.1}/src/zope/proxy/proxy.h +0 -0
  39. {zope_proxy-7.0 → zope_proxy-7.1}/src/zope/proxy/tests/__init__.py +0 -0
  40. {zope_proxy-7.0 → zope_proxy-7.1}/src/zope/proxy/tests/test_compile_flags.py +0 -0
  41. {zope_proxy-7.0 → zope_proxy-7.1}/src/zope/proxy/tests/test_decorator.py +0 -0
  42. {zope_proxy-7.0 → zope_proxy-7.1}/src/zope/proxy/tests/test_proxy.py +0 -0
  43. {zope_proxy-7.0 → zope_proxy-7.1}/src/zope.proxy.egg-info/dependency_links.txt +0 -0
  44. {zope_proxy-7.0 → zope_proxy-7.1}/src/zope.proxy.egg-info/top_level.txt +0 -0
@@ -28,12 +28,12 @@ yum -y install libffi-devel
28
28
 
29
29
  tox_env_map() {
30
30
  case $1 in
31
- *"cp39"*) echo 'py39';;
32
31
  *"cp310"*) echo 'py310';;
33
32
  *"cp311"*) echo 'py311';;
34
33
  *"cp312"*) echo 'py312';;
35
34
  *"cp313"*) echo 'py313';;
36
35
  *"cp314"*) echo 'py314';;
36
+ *"cp315"*) echo 'py315';;
37
37
  *) echo 'py';;
38
38
  esac
39
39
  }
@@ -41,13 +41,13 @@ tox_env_map() {
41
41
  # Compile wheels
42
42
  for PYBIN in /opt/python/*/bin; do
43
43
  if \
44
- [[ "${PYBIN}" == *"cp39/"* ]] || \
45
44
  [[ "${PYBIN}" == *"cp310/"* ]] || \
46
45
  [[ "${PYBIN}" == *"cp311/"* ]] || \
47
46
  [[ "${PYBIN}" == *"cp312/"* ]] || \
48
47
  [[ "${PYBIN}" == *"cp313/"* ]] || \
49
- [[ "${PYBIN}" == *"cp314/"* ]] ; then
50
- if [[ "${PYBIN}" == *"cp314/"* ]] ; then
48
+ [[ "${PYBIN}" == *"cp314/"* ]] || \
49
+ [[ "${PYBIN}" == *"cp315/"* ]] ; then
50
+ if [[ "${PYBIN}" == *"cp315/"* ]] ; then
51
51
  "${PYBIN}/pip" install --pre -e /io/
52
52
  "${PYBIN}/pip" wheel /io/ --pre -w wheelhouse/
53
53
  else
@@ -65,7 +65,10 @@ for PYBIN in /opt/python/*/bin; do
65
65
  fi
66
66
  done
67
67
 
68
+ # Show what wheels we have
69
+ echo "Fixing up the following wheels:"
70
+ ls -l wheelhouse/zope?proxy*.whl
68
71
  # Bundle external shared libraries into the wheels
69
- for whl in wheelhouse/zope_proxy*.whl; do
72
+ for whl in wheelhouse/zope?proxy*.whl; do
70
73
  auditwheel repair "$whl" -w /io/wheelhouse/
71
74
  done
@@ -3,7 +3,7 @@
3
3
  minimum_pre_commit_version: '3.6'
4
4
  repos:
5
5
  - repo: https://github.com/pycqa/isort
6
- rev: "6.0.1"
6
+ rev: "7.0.0"
7
7
  hooks:
8
8
  - id: isort
9
9
  - repo: https://github.com/hhatto/autopep8
@@ -12,10 +12,10 @@ repos:
12
12
  - id: autopep8
13
13
  args: [--in-place, --aggressive, --aggressive]
14
14
  - repo: https://github.com/asottile/pyupgrade
15
- rev: v3.20.0
15
+ rev: v3.21.0
16
16
  hooks:
17
17
  - id: pyupgrade
18
- args: [--py39-plus]
18
+ args: [--py310-plus]
19
19
  exclude: ^src/zope/proxy/__init__\.py$
20
20
  - repo: https://github.com/isidentical/teyit
21
21
  rev: 0.4.3
@@ -1,9 +1,20 @@
1
- =========
2
- Changes
3
- =========
1
+ Change log
2
+ ==========
3
+
4
+ 7.1 (2025-11-18)
5
+ ----------------
6
+
7
+ - Drop support for Python 3.9.
8
+
9
+ - Add support for Python 3.14.
10
+
11
+ - Move all supported package metadata into ``pyproject.toml``.
12
+
13
+ - Remove no longer necessary ``setuptools`` runtime dependency.
14
+
4
15
 
5
16
  7.0 (2025-09-12)
6
- ================
17
+ ----------------
7
18
 
8
19
  - Replace ``pkg_resources`` namespace with PEP 420 native namespace.
9
20
 
@@ -15,13 +26,13 @@
15
26
 
16
27
 
17
28
  6.1 (2024-10-02)
18
- ================
29
+ ----------------
19
30
 
20
31
  - Respect ``PURE_PYTHON`` environment variable set to ``0``.
21
32
 
22
33
 
23
34
  6.0 (2024-09-17)
24
- ================
35
+ ----------------
25
36
 
26
37
  - Declare full support for Python 3.13.
27
38
 
@@ -29,7 +40,7 @@
29
40
 
30
41
 
31
42
  5.3 (2024-08-07)
32
- ================
43
+ ----------------
33
44
 
34
45
  - Build Windows wheels on GHA.
35
46
 
@@ -38,19 +49,19 @@
38
49
 
39
50
 
40
51
  5.2 (2024-02-09)
41
- ================
52
+ ----------------
42
53
 
43
54
  - Add preliminary support for Python 3.13 as of 3.13a3.
44
55
 
45
56
 
46
57
  5.1 (2023-10-05)
47
- ================
58
+ ----------------
48
59
 
49
60
  - Add support for Python 3.12.
50
61
 
51
62
 
52
63
  5.0.0 (2023-01-18)
53
- ==================
64
+ ------------------
54
65
 
55
66
  - Drop support for Python 2.7, 3.5, 3.6.
56
67
 
@@ -60,32 +71,32 @@
60
71
 
61
72
 
62
73
  4.6.1 (2022-11-16)
63
- ==================
74
+ ------------------
64
75
 
65
76
  - Add support for building arm64 wheels on macOS.
66
77
 
67
78
 
68
79
  4.6.0 (2022-11-03)
69
- ==================
80
+ ------------------
70
81
 
71
82
  - Add support for Python 3.11.
72
83
 
73
84
 
74
85
  4.5.1 (2022-09-15)
75
- ==================
86
+ ------------------
76
87
 
77
88
  - Disable unsafe math optimizations in C code. See `pull request 53
78
89
  <https://github.com/zopefoundation/zope.proxy/pull/53>`_.
79
90
 
80
91
 
81
92
  4.5.0 (2021-11-17)
82
- ==================
93
+ ------------------
83
94
 
84
95
  - Add support for Python 3.10.
85
96
 
86
97
 
87
98
  4.4.0 (2021-07-22)
88
- ==================
99
+ ------------------
89
100
 
90
101
  - Add support for Python 3.9.
91
102
 
@@ -93,7 +104,7 @@
93
104
 
94
105
 
95
106
  4.3.5 (2020-03-16)
96
- ==================
107
+ ------------------
97
108
 
98
109
  - Stop installing C header files on PyPy (which is what zope.proxy before 4.3.4
99
110
  used to do), fixes `issue 39
@@ -101,7 +112,7 @@
101
112
 
102
113
 
103
114
  4.3.4 (2020-03-13)
104
- ==================
115
+ ------------------
105
116
 
106
117
  - Fix a compilation warning on Python 3.8. The slot ``tp_print``
107
118
  changed to ``tp_vectorcall_offset`` in 3.8 and must not be set.
@@ -114,7 +125,7 @@
114
125
 
115
126
 
116
127
  4.3.3 (2019-11-11)
117
- ==================
128
+ ------------------
118
129
 
119
130
  - Add support for Python 3.8.
120
131
 
@@ -122,7 +133,7 @@
122
133
 
123
134
 
124
135
  4.3.2 (2019-07-12)
125
- ==================
136
+ ------------------
126
137
 
127
138
  - Fix error handling in ``ProxyBase.__setattr__``: any the exception raised by
128
139
  ``PyString_AsString``/``PyUnicode_AsUTF8`` would be silently swallowed up
@@ -131,7 +142,7 @@
131
142
 
132
143
 
133
144
  4.3.1 (2018-08-09)
134
- ==================
145
+ ------------------
135
146
 
136
147
  - Simplify the internal C handling of attribute names in
137
148
  ``__getattribute__`` and ``__setattr__``.
@@ -145,8 +156,9 @@
145
156
 
146
157
  - Add support for Python 3.7.
147
158
 
159
+
148
160
  4.3.0 (2017-09-13)
149
- ==================
161
+ ------------------
150
162
 
151
163
  - Fix a potential rare crash when deallocating proxies. See `issue 20
152
164
  <https://github.com/zopefoundation/zope.proxy/issues/20>`_.
@@ -164,16 +176,18 @@
164
176
  2, a custom ``__getslice__`` was ignored. See `issue 21
165
177
  <https://github.com/zopefoundation/zope.proxy/issues/21>`_.
166
178
 
179
+
167
180
  4.2.1 (2017-04-23)
168
- ==================
181
+ ------------------
169
182
 
170
183
  - Make the pure-Python implementation of ``sameProxiedObjects`` handle
171
184
  ``zope.security`` proxies. See `issue 15 <https://github.com/zopefoundation/zope.proxy/issues/15>`_.
172
185
 
173
186
  - Add support for Python 3.6.
174
187
 
188
+
175
189
  4.2.0 (2016-05-05)
176
- ==================
190
+ ------------------
177
191
 
178
192
  - Correctly strip ``zope.security`` proxies in ``removeAllProxies``.
179
193
  See `issue 13 <https://github.com/zopefoundation/zope.proxy/pull/13>`_.
@@ -185,8 +199,9 @@
185
199
 
186
200
  - Add support for Python 3.5.
187
201
 
202
+
188
203
  4.1.6 (2015-06-02)
189
- ==================
204
+ ------------------
190
205
 
191
206
  - Make subclasses of ProxyBase properly delegate ``__module__`` to the
192
207
  wrapped object. This fixes some ``zope.interface`` lookups under
@@ -196,8 +211,9 @@
196
211
  ``zope.interface`` interfaces implemented by builtin types like
197
212
  ``list``. This fixes some ``zope.interface`` lookups under PyPy.
198
213
 
214
+
199
215
  4.1.5 (2015-05-19)
200
- ==================
216
+ ------------------
201
217
 
202
218
  - Make the C implementation proxy ``__unicode__`` correctly.
203
219
 
@@ -208,23 +224,26 @@
208
224
  subclasses like the C version. See
209
225
  https://github.com/zopefoundation/zope.proxy/issues/5.
210
226
 
227
+
211
228
  4.1.4 (2014-03-19)
212
- ==================
229
+ ------------------
213
230
 
214
231
  - Add support for Python 3.4.
215
232
 
216
233
  - Update ``bootstrap.py`` to version 2.2.
217
234
 
235
+
218
236
  4.1.3 (2013-03-12)
219
- ==================
237
+ ------------------
220
238
 
221
239
  - Fix interface object introspection in PyPy. For some reason PyPy makes
222
240
  attributes available despite the restrictive ``__slots__`` declaration.
223
241
 
224
242
  - Add a bunch of tests surrounding interface lookup and adaptation.
225
243
 
244
+
226
245
  4.1.2 (2013-03-11)
227
- ==================
246
+ ------------------
228
247
 
229
248
  - Make ``PyProxyBase.__iter__()`` return the result of
230
249
  ``PyProxyBase._wrapped.__iter__`` if available, otherwise falling back to
@@ -234,13 +253,15 @@
234
253
  proxy itself. This is needed to properly allow proxy extensions as was
235
254
  evidenced int he ``zope.security.decorator`` module.
236
255
 
256
+
237
257
  4.1.1 (2012-12-31)
238
- ==================
258
+ ------------------
239
259
 
240
260
  - Fleshed out PyPI Trove classifiers.
241
261
 
262
+
242
263
  4.1.0 (2012-12-19)
243
- ==================
264
+ ------------------
244
265
 
245
266
  - Enable compilation of dependent modules under Py3k.
246
267
 
@@ -251,13 +272,15 @@
251
272
  extensions built under Python 2.7 against 4.0.x versions of
252
273
  ``zope.proxy`` must be rebuilt.
253
274
 
275
+
254
276
  4.0.1 (2012-11-21)
255
- ==================
277
+ ------------------
256
278
 
257
279
  - Add support for Python 3.3.
258
280
 
281
+
259
282
  4.0.0 (2012-06-06)
260
- ==================
283
+ ------------------
261
284
 
262
285
  - Add support for PyPy.
263
286
 
@@ -290,32 +313,37 @@
290
313
 
291
314
  - Add Python 3.2 support.
292
315
 
316
+
293
317
  3.6.1 (2010-07-06)
294
- ==================
318
+ ------------------
295
319
 
296
320
  - Make tests compatible with Python 2.7.
297
321
 
322
+
298
323
  3.6.0 (2010-04-30)
299
- ==================
324
+ ------------------
300
325
 
301
326
  - Remove test extra and the remaining dependency on zope.testing.
302
327
 
303
328
  - Remove use of 'zope.testing.doctestunit' in favor of stdlib's 'doctest.
304
329
 
330
+
305
331
  3.5.0 (2009/01/31)
306
- ==================
332
+ ------------------
307
333
 
308
334
  - Add support to bootstrap on Jython.
309
335
 
310
336
  - Use ``zope.container`` instead of ``zope.app.container``.
311
337
 
338
+
312
339
  3.4.2 (2008/07/27)
313
- ==================
340
+ ------------------
314
341
 
315
342
  - Make C code compatible with Python 2.5 on 64bit architectures.
316
343
 
344
+
317
345
  3.4.1 (2008/06/24)
318
- ==================
346
+ ------------------
319
347
 
320
348
  - Bug: Update ``setup.py`` script to conform to common layout. Also updated
321
349
  some of the fields.
@@ -324,28 +352,30 @@
324
352
  and ``__setslice__()`` methods. See
325
353
  http://docs.python.org/ref/sequence-methods.html.
326
354
 
355
+
327
356
  3.4.0 (2007/07/12)
328
- ==================
357
+ ------------------
329
358
 
330
359
  - Feature: Add a ``decorator`` module that supports declaring interfaces on
331
360
  proxies that get blended with the interfaces of the things they proxy.
332
361
 
362
+
333
363
  3.3.0 (2006/12/20)
334
- ==================
364
+ ------------------
335
365
 
336
366
  - Corresponds to the verison of the ``zope.proxy`` package shipped as part of
337
367
  the Zope 3.3.0 release.
338
368
 
339
369
 
340
370
  3.2.0 (2006/01/05)
341
- ==================
371
+ ------------------
342
372
 
343
373
  - Corresponds to the verison of the ``zope.proxy`` package shipped as part of
344
374
  the Zope 3.2.0 release.
345
375
 
346
376
 
347
377
  3.0.0 (2004/11/07)
348
- ==================
378
+ ------------------
349
379
 
350
380
  - Corresponds to the verison of the ``zope.proxy`` package shipped as part of
351
381
  the Zope X3.0.0 release.
@@ -0,0 +1,72 @@
1
+ Metadata-Version: 2.4
2
+ Name: zope.proxy
3
+ Version: 7.1
4
+ Summary: Generic Transparent Proxies
5
+ Author-email: Zope Foundation and contributors <zope-dev@zope.dev>
6
+ Maintainer-email: Plone Foundation and contributors <zope-dev@zope.dev>
7
+ License-Expression: ZPL-2.1
8
+ Project-URL: Documentation, https://zopeproxy.readthedocs.io
9
+ Project-URL: Issues, https://github.com/zopefoundation/zope.proxy/issues
10
+ Project-URL: Source, https://github.com/zopefoundation/zope.proxy
11
+ Project-URL: Changelog, https://github.com/zopefoundation/zope.proxy/blob/master/CHANGES.rst
12
+ Keywords: zope,proxy,generic,transparent
13
+ Classifier: Development Status :: 5 - Production/Stable
14
+ Classifier: Framework :: Zope :: 3
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3 :: Only
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Programming Language :: Python :: 3.13
24
+ Classifier: Programming Language :: Python :: 3.14
25
+ Classifier: Programming Language :: Python :: Implementation :: CPython
26
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
27
+ Requires-Python: >=3.10
28
+ Description-Content-Type: text/x-rst
29
+ License-File: LICENSE.txt
30
+ Requires-Dist: zope.interface
31
+ Provides-Extra: docs
32
+ Requires-Dist: Sphinx; extra == "docs"
33
+ Requires-Dist: repoze.sphinx.autointerface; extra == "docs"
34
+ Requires-Dist: furo; extra == "docs"
35
+ Provides-Extra: test
36
+ Requires-Dist: zope.security>=7.3; extra == "test"
37
+ Requires-Dist: zope.testrunner>=6.4; extra == "test"
38
+ Dynamic: license-file
39
+
40
+ ================
41
+ ``zope.proxy``
42
+ ================
43
+
44
+ .. image:: https://github.com/zopefoundation/zope.proxy/actions/workflows/tests.yml/badge.svg
45
+ :target: https://github.com/zopefoundation/zope.proxy/actions/workflows/tests.yml
46
+
47
+ .. image:: https://coveralls.io/repos/github/zopefoundation/zope.proxy/badge.svg?branch=master
48
+ :target: https://coveralls.io/github/zopefoundation/zope.proxy?branch=master
49
+
50
+ .. image:: https://readthedocs.org/projects/zopeproxy/badge/?version=latest
51
+ :target: https://zopeproxy.readthedocs.io/en/latest/
52
+ :alt: Documentation Status
53
+
54
+ .. image:: https://img.shields.io/pypi/v/zope.proxy.svg
55
+ :target: https://pypi.org/project/zope.proxy/
56
+ :alt: Latest release
57
+
58
+ .. image:: https://img.shields.io/pypi/pyversions/zope.proxy.svg
59
+ :target: https://pypi.org/project/zope.proxy/
60
+ :alt: Python versions
61
+
62
+ Proxies are special objects which serve as mostly-transparent
63
+ wrappers around another object, intervening in the apparent behavior of
64
+ the wrapped object only when necessary to apply the policy (e.g., access
65
+ checking, location brokering, etc.) for which the proxy is responsible.
66
+
67
+ zope.proxy is implemented via a C extension module, which lets it do things
68
+ like lie about its own ``__class__`` that are difficult in pure Python (and
69
+ were completely impossible before metaclasses). It also proxies all the
70
+ internal slots (such as ``__int__``/``__str__``/``__add__``).
71
+
72
+ Complete documentation is at https://zopeproxy.readthedocs.io
@@ -30,5 +30,5 @@ exclude_patterns = []
30
30
  # -- Options for HTML output -------------------------------------------------
31
31
  # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
32
32
 
33
- html_theme = 'sphinx_rtd_theme'
33
+ html_theme = 'furo'
34
34
  html_static_path = ['_static']
@@ -1,4 +1,3 @@
1
1
  Sphinx
2
2
  repoze.sphinx.autointerface
3
- sphinx_rtd_theme>1
4
- docutils<0.19
3
+ furo
@@ -0,0 +1,91 @@
1
+ #
2
+ # Generated from:
3
+ # https://github.com/zopefoundation/meta/tree/master/config/c-code
4
+
5
+ [build-system]
6
+ requires = [
7
+ "setuptools",
8
+ "wheel",
9
+ ]
10
+ build-backend = "setuptools.build_meta"
11
+
12
+ [project]
13
+ name = "zope.proxy"
14
+ version = "7.1"
15
+ description = "Generic Transparent Proxies"
16
+ keywords = ["zope", "proxy", "generic", "transparent"]
17
+ readme = "README.rst"
18
+ requires-python = ">=3.10"
19
+ license = "ZPL-2.1"
20
+ authors = [
21
+ { name = "Zope Foundation and contributors", email = "zope-dev@zope.dev" },
22
+ ]
23
+ maintainers = [
24
+ { name = "Plone Foundation and contributors", email = "zope-dev@zope.dev" },
25
+ ]
26
+ classifiers = [
27
+ "Development Status :: 5 - Production/Stable",
28
+ "Framework :: Zope :: 3",
29
+ "Intended Audience :: Developers",
30
+ "Operating System :: OS Independent",
31
+ "Programming Language :: Python",
32
+ "Programming Language :: Python :: 3",
33
+ "Programming Language :: Python :: 3 :: Only",
34
+ "Programming Language :: Python :: 3.10",
35
+ "Programming Language :: Python :: 3.11",
36
+ "Programming Language :: Python :: 3.12",
37
+ "Programming Language :: Python :: 3.13",
38
+ "Programming Language :: Python :: 3.14",
39
+ "Programming Language :: Python :: Implementation :: CPython",
40
+ "Programming Language :: Python :: Implementation :: PyPy",
41
+ ]
42
+ dependencies = ["zope.interface"]
43
+
44
+ [project.optional-dependencies]
45
+ docs = [
46
+ "Sphinx",
47
+ "repoze.sphinx.autointerface",
48
+ "furo",
49
+ ]
50
+ # We have a circular dependency with zope.security for testing
51
+ test = [
52
+ "zope.security >= 7.3",
53
+ "zope.testrunner >= 6.4",
54
+ ]
55
+
56
+ [project.urls]
57
+ Documentation = "https://zopeproxy.readthedocs.io"
58
+ Issues = "https://github.com/zopefoundation/zope.proxy/issues"
59
+ Source = "https://github.com/zopefoundation/zope.proxy"
60
+ Changelog = "https://github.com/zopefoundation/zope.proxy/blob/master/CHANGES.rst"
61
+
62
+ [tool.coverage.run]
63
+ branch = true
64
+ source = ["zope.proxy"]
65
+ relative_files = true
66
+
67
+ [tool.coverage.report]
68
+ fail_under = 99
69
+ precision = 2
70
+ ignore_errors = true
71
+ show_missing = true
72
+ exclude_lines = [
73
+ "pragma: no cover",
74
+ "pragma: nocover",
75
+ "except ImportError:",
76
+ "raise NotImplementedError",
77
+ "if __name__ == '__main__':",
78
+ "self.fail",
79
+ "raise AssertionError",
80
+ "raise unittest.Skip",
81
+ ]
82
+
83
+ [tool.coverage.html]
84
+ directory = "parts/htmlcov"
85
+
86
+ [tool.coverage.paths]
87
+ source = [
88
+ "src/",
89
+ ".tox/*/lib/python*/site-packages/",
90
+ ".tox/pypy*/site-packages/",
91
+ ]
@@ -0,0 +1,77 @@
1
+ ##############################################################################
2
+ #
3
+ # Copyright (c) 2006-2008 Zope Foundation and Contributors.
4
+ # All Rights Reserved.
5
+ #
6
+ # This software is subject to the provisions of the Zope Public License,
7
+ # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
8
+ # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
9
+ # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
10
+ # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
11
+ # FOR A PARTICULAR PURPOSE.
12
+ #
13
+ ##############################################################################
14
+ # This package is developed by the Zope Toolkit project, documented here:
15
+ # http://docs.zope.org/zopetoolkit
16
+ # When developing and releasing this package, please follow the documented
17
+ # Zope Toolkit policies as described by this documentation.
18
+ ##############################################################################
19
+ """Setup for zope.proxy package
20
+ """
21
+
22
+ import os
23
+ import platform
24
+ from distutils.errors import CCompilerError
25
+ from distutils.errors import DistutilsExecError
26
+ from distutils.errors import DistutilsPlatformError
27
+
28
+ from setuptools import Extension
29
+ from setuptools import setup
30
+ from setuptools.command.build_ext import build_ext
31
+
32
+
33
+ class optional_build_ext(build_ext):
34
+ """This class subclasses build_ext and allows
35
+ the building of C extensions to fail.
36
+ """
37
+
38
+ def run(self):
39
+ try:
40
+ build_ext.run(self)
41
+ except DistutilsPlatformError as e:
42
+ self._unavailable(e)
43
+
44
+ def build_extension(self, ext):
45
+ try:
46
+ build_ext.build_extension(self, ext)
47
+ except (CCompilerError, DistutilsExecError, OSError) as e:
48
+ self._unavailable(e)
49
+
50
+ def _unavailable(self, e):
51
+ print('*' * 80)
52
+ print("""WARNING:
53
+ An optional code optimization (C extension) could not be compiled.
54
+ Optimizations for this package will not be available!""")
55
+ print()
56
+ print(e)
57
+ print('*' * 80)
58
+
59
+
60
+ codeoptimization = [
61
+ Extension(
62
+ "zope.proxy._zope_proxy_proxy",
63
+ [os.path.join('src', 'zope', 'proxy', "_zope_proxy_proxy.c")],
64
+ ),
65
+ ]
66
+
67
+ # PyPy won't build the extension.
68
+ if platform.python_implementation() == 'PyPy':
69
+ ext_modules = []
70
+ headers = []
71
+ else:
72
+ ext_modules = codeoptimization
73
+ headers = [os.path.join('src', 'zope', 'proxy', 'proxy.h')]
74
+
75
+ setup(cmdclass={'build_ext': optional_build_ext},
76
+ headers=headers,
77
+ ext_modules=ext_modules)