Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-zope.proxy for
openSUSE:Factory checked in at 2022-11-10 14:19:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-zope.proxy (Old)
and /work/SRC/openSUSE:Factory/.python-zope.proxy.new.1597 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-zope.proxy"
Thu Nov 10 14:19:34 2022 rev:13 rq:1034952 version:4.6.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-zope.proxy/python-zope.proxy.changes
2022-10-31 10:44:38.948838447 +0100
+++
/work/SRC/openSUSE:Factory/.python-zope.proxy.new.1597/python-zope.proxy.changes
2022-11-10 14:19:39.333461125 +0100
@@ -1,0 +2,6 @@
+Wed Nov 9 19:58:28 UTC 2022 - Yogalakshmi Arunachalam <[email protected]>
+
+- Update to version 4.6.0
+ * Add support for Python 3.11.
+
+-------------------------------------------------------------------
Old:
----
zope.proxy-4.5.1.tar.gz
New:
----
zope.proxy-4.6.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-zope.proxy.spec ++++++
--- /var/tmp/diff_new_pack.2wAQBV/_old 2022-11-10 14:19:39.821463815 +0100
+++ /var/tmp/diff_new_pack.2wAQBV/_new 2022-11-10 14:19:39.825463837 +0100
@@ -27,7 +27,7 @@
%bcond_with test
%endif
Name: python-zope.proxy%{psuffix}
-Version: 4.5.1
+Version: 4.6.0
Release: 0
Summary: Generic Transparent Proxies
License: ZPL-2.1
++++++ zope.proxy-4.5.1.tar.gz -> zope.proxy-4.6.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.proxy-4.5.1/.manylinux-install.sh
new/zope.proxy-4.6.0/.manylinux-install.sh
--- old/zope.proxy-4.5.1/.manylinux-install.sh 2022-09-15 08:26:22.000000000
+0200
+++ new/zope.proxy-4.6.0/.manylinux-install.sh 2022-11-06 11:31:56.000000000
+0100
@@ -35,6 +35,7 @@
*"cp38"*) echo 'py38';;
*"cp39"*) echo 'py39';;
*"cp310"*) echo 'py310';;
+ *"cp311"*) echo 'py311';;
*) echo 'py';;
esac
}
@@ -44,6 +45,7 @@
if \
[[ "${PYBIN}" == *"cp27"* ]] || \
[[ "${PYBIN}" == *"cp35"* ]] || \
+ [[ "${PYBIN}" == *"cp311"* ]] || \
[[ "${PYBIN}" == *"cp36"* ]] || \
[[ "${PYBIN}" == *"cp37"* ]] || \
[[ "${PYBIN}" == *"cp38"* ]] || \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.proxy-4.5.1/CHANGES.rst
new/zope.proxy-4.6.0/CHANGES.rst
--- old/zope.proxy-4.5.1/CHANGES.rst 2022-09-15 08:26:22.000000000 +0200
+++ new/zope.proxy-4.6.0/CHANGES.rst 2022-11-06 11:31:56.000000000 +0100
@@ -2,6 +2,12 @@
Changes
=========
+4.6.0 (2022-11-03)
+==================
+
+- Add support for Python 3.11.
+
+
4.5.1 (2022-09-15)
==================
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.proxy-4.5.1/PKG-INFO
new/zope.proxy-4.6.0/PKG-INFO
--- old/zope.proxy-4.5.1/PKG-INFO 2022-09-15 08:26:24.555398200 +0200
+++ new/zope.proxy-4.6.0/PKG-INFO 2022-11-06 11:32:30.148068200 +0100
@@ -1,13 +1,12 @@
Metadata-Version: 2.1
Name: zope.proxy
-Version: 4.5.1
+Version: 4.6.0
Summary: Generic Transparent Proxies
Home-page: http://github.com/zopefoundation/zope.proxy
Author: Zope Foundation and Contributors
Author-email: [email protected]
License: ZPL 2.1
Keywords: proxy generic transparent
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Zope Public License
@@ -21,6 +20,7 @@
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Framework :: Zope :: 3
@@ -62,6 +62,12 @@
Changes
=========
+4.6.0 (2022-11-03)
+==================
+
+- Add support for Python 3.11.
+
+
4.5.1 (2022-09-15)
==================
@@ -340,5 +346,3 @@
- Corresponds to the verison of the ``zope.proxy`` package shipped as part of
the Zope X3.0.0 release.
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.proxy-4.5.1/appveyor.yml
new/zope.proxy-4.6.0/appveyor.yml
--- old/zope.proxy-4.5.1/appveyor.yml 2022-09-15 08:26:22.000000000 +0200
+++ new/zope.proxy-4.6.0/appveyor.yml 2022-11-06 11:31:56.000000000 +0100
@@ -23,6 +23,8 @@
- python: 39-x64
- python: 310
- python: 310-x64
+ - python: 311
+ - python: 311-x64
install:
- "SET PYTHONVERSION=%PYTHON%"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.proxy-4.5.1/buildout.cfg
new/zope.proxy-4.6.0/buildout.cfg
--- old/zope.proxy-4.5.1/buildout.cfg 2022-09-15 08:26:22.000000000 +0200
+++ new/zope.proxy-4.6.0/buildout.cfg 2022-11-06 11:31:56.000000000 +0100
@@ -7,7 +7,7 @@
[test]
recipe = zc.recipe.testrunner
eggs =
- zope.proxy[testing]
+ zope.proxy[test]
[test-wo-zope-security]
recipe = zc.recipe.testrunner
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.proxy-4.5.1/docs/_build/doctest/output.txt
new/zope.proxy-4.6.0/docs/_build/doctest/output.txt
--- old/zope.proxy-4.5.1/docs/_build/doctest/output.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/zope.proxy-4.6.0/docs/_build/doctest/output.txt 2022-11-03
14:35:50.000000000 +0100
@@ -0,0 +1,25 @@
+Results of doctest builder run on 2022-11-03 14:35:50
+=====================================================
+
+Document: api
+-------------
+1 items passed all tests:
+ 23 tests in default
+23 tests in 1 items.
+23 passed and 0 failed.
+Test passed.
+
+Document: narr
+--------------
+1 items passed all tests:
+ 37 tests in default
+37 tests in 1 items.
+37 passed and 0 failed.
+Test passed.
+
+Doctest summary
+===============
+ 60 tests
+ 0 failures in tests
+ 0 failures in setup code
+ 0 failures in cleanup code
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zope.proxy-4.5.1/docs/_build/html/_sources/api.rst.txt
new/zope.proxy-4.6.0/docs/_build/html/_sources/api.rst.txt
--- old/zope.proxy-4.5.1/docs/_build/html/_sources/api.rst.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/zope.proxy-4.6.0/docs/_build/html/_sources/api.rst.txt 2022-11-02
11:12:52.000000000 +0100
@@ -0,0 +1,95 @@
+:mod:`zope.proxy` API
+=====================
+
+:mod:`zope.proxy.interfaces`
+----------------------------
+
+.. automodule:: zope.proxy.interfaces
+
+ .. autointerface:: IProxyIntrospection
+ :members:
+ :member-order: bysource
+
+
+:mod:`zope.proxy`
+-----------------
+
+.. automodule:: zope.proxy
+ :members:
+
+
+:mod:`zope.proxy.decorator`
+---------------------------
+
+.. automodule:: zope.proxy.decorator
+
+ .. doctest::
+
+ >>> from zope.interface import Interface
+ >>> from zope.interface import directlyProvides
+ >>> from zope.interface import implementer
+ >>> class I1(Interface):
+ ... pass
+ >>> class I2(Interface):
+ ... pass
+ >>> class I3(Interface):
+ ... pass
+ >>> class I4(Interface):
+ ... pass
+ >>> from zope.proxy.decorator import SpecificationDecoratorBase
+ >>> @implementer(I1)
+ ... class D1(SpecificationDecoratorBase):
+ ... pass
+ >>> @implementer(I2)
+ ... class D2(SpecificationDecoratorBase):
+ ... pass
+ >>> @implementer(I3)
+ ... class X(object):
+ ... pass
+ >>> x = X()
+ >>> directlyProvides(x, I4)
+
+ Interfaces of X are ordered with the directly-provided interfaces first.
+
+ .. doctest::
+
+ >>> from zope.interface import providedBy
+ >>> [interface.getName() for interface in list(providedBy(x))]
+ ['I4', 'I3']
+
+ When we decorate objects, what order should the interfaces come
+ in? One could argue that decorators are less specific, so they
+ should come last.
+
+ .. doctest::
+
+ >>> [interface.getName() for interface in list(providedBy(D1(x)))]
+ ['I4', 'I3', 'I1']
+
+ >>> [interface.getName() for interface in list(providedBy(D2(D1(x))))]
+ ['I4', 'I3', 'I1', 'I2']
+
+ SpecificationDecorators also work with old-style classes:
+
+ .. doctest::
+
+ >>> @implementer(I3)
+ ... class X:
+ ... pass
+
+ >>> x = X()
+ >>> directlyProvides(x, I4)
+
+ >>> [interface.getName() for interface in list(providedBy(x))]
+ ['I4', 'I3']
+
+ >>> [interface.getName() for interface in list(providedBy(D1(x)))]
+ ['I4', 'I3', 'I1']
+
+ >>> [interface.getName() for interface in list(providedBy(D2(D1(x))))]
+ ['I4', 'I3', 'I1', 'I2']
+
+ .. autoclass:: DecoratorSpecificationDescriptor
+ :members:
+
+ .. autoclass:: SpecificationDecoratorBase
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zope.proxy-4.5.1/docs/_build/html/_sources/changes.rst.txt
new/zope.proxy-4.6.0/docs/_build/html/_sources/changes.rst.txt
--- old/zope.proxy-4.5.1/docs/_build/html/_sources/changes.rst.txt
1970-01-01 01:00:00.000000000 +0100
+++ new/zope.proxy-4.6.0/docs/_build/html/_sources/changes.rst.txt
2022-11-02 11:12:52.000000000 +0100
@@ -0,0 +1 @@
+.. include:: ../CHANGES.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zope.proxy-4.5.1/docs/_build/html/_sources/hacking.rst.txt
new/zope.proxy-4.6.0/docs/_build/html/_sources/hacking.rst.txt
--- old/zope.proxy-4.5.1/docs/_build/html/_sources/hacking.rst.txt
1970-01-01 01:00:00.000000000 +0100
+++ new/zope.proxy-4.6.0/docs/_build/html/_sources/hacking.rst.txt
2022-11-02 11:12:52.000000000 +0100
@@ -0,0 +1,311 @@
+Hacking on :mod:`zope.proxy`
+============================
+
+
+Getting the Code
+################
+
+The main repository for :mod:`zope.proxy` is in the Zope Foundation
+Github repository:
+
+ https://github.com/zopefoundation/zope.proxy
+
+You can get a read-only checkout from there:
+
+.. code-block:: sh
+
+ $ git clone https://github.com/zopefoundation/zope.proxy.git
+
+or fork it and get a writeable checkout of your fork:
+
+.. code-block:: sh
+
+ $ git clone [email protected]/jrandom/zope.proxy.git
+
+The project also mirrors the trunk from the Github repository as a
+Bazaar branch on Launchpad:
+
+https://code.launchpad.net/zope.proxy
+
+You can branch the trunk from there using Bazaar:
+
+.. code-block:: sh
+
+ $ bzr branch lp:zope.proxy
+
+
+Working in a ``virtualenv``
+###########################
+
+Installing
+----------
+
+If you use the ``virtualenv`` package to create lightweight Python
+development environments, you can run the tests using nothing more
+than the ``python`` binary in a virtualenv. First, create a scratch
+environment:
+
+.. code-block:: sh
+
+ $ /path/to/virtualenv --no-site-packages /tmp/hack-zope.proxy
+
+Next, get this package registered as a "development egg" in the
+environment:
+
+.. code-block:: sh
+
+ $ /tmp/hack-zope.proxy/bin/python setup.py develop
+
+Running the tests
+-----------------
+
+Then, you canrun the tests using the build-in ``setuptools`` testrunner:
+
+.. code-block:: sh
+
+ $ /tmp/hack-zope.proxy/bin/python setup.py test -q
+
...................................................................................................................................................
+ ----------------------------------------------------------------------
+ Ran 147 tests in 0.010s
+
+ OK
+
+
+If you have the :mod:`nose` package installed in the virtualenv, you can
+use its testrunner too:
+
+.. code-block:: sh
+
+ $ /tmp/hack-zope.proxy/bin/easy_install nose
+ ...
+ $ /tmp/hack-zope.proxy/bin/nosetests
+
.....................................................................................................................................................
+ ----------------------------------------------------------------------
+ Ran 149 tests in 0.107s
+
+ OK
+
+If you have the :mod:`coverage` pacakge installed in the virtualenv,
+you can see how well the tests cover the code:
+
+.. code-block:: sh
+
+ $ /tmp/hack-zope.proxy/bin/easy_install nose coverage
+ ...
+ $ /tmp/hack-zope.proxy/bin/nosetests --with coverage
+
.....................................................................................................................................................
+ Name Stmts Miss Cover Missing
+ -----------------------------------------------------
+ zope.proxy 271 0 100%
+ zope.proxy._compat 2 0 100%
+ zope.proxy.decorator 18 0 100%
+ zope.proxy.interfaces 10 0 100%
+ -----------------------------------------------------
+ TOTAL 301 0 100%
+ ----------------------------------------------------------------------
+ Ran 149 tests in 0.148s
+
+ OK
+
+
+Building the documentation
+--------------------------
+
+:mod:`zope.proxy` uses the nifty :mod:`Sphinx` documentation system
+for building its docs. Using the same virtualenv you set up to run the
+tests, you can build the docs:
+
+.. code-block:: sh
+
+ $ /tmp/hack-zope.proxy/bin/easy_install Sphinx
+ ...
+ $ cd docs
+ $ /tmp/hack-zope.proxy/bin/sphinx-build \
+ -b html -d _build/doctrees . _build/html
+ ...
+ build succeeded.
+
+You can also test the code snippets in the documentation:
+
+.. code-block:: sh
+
+ $ /tmp/hack-zope.proxy/bin/sphinx-build \
+ -b doctest -d _build/doctrees . _build/doctest
+ ...
+ running tests...
+
+ Document: api
+ -------------
+ 1 items passed all tests:
+ 23 tests in default
+ 23 tests in 1 items.
+ 23 passed and 0 failed.
+ Test passed.
+
+ Document: narr
+ --------------
+ 1 items passed all tests:
+ 37 tests in default
+ 37 tests in 1 items.
+ 37 passed and 0 failed.
+ Test passed.
+
+ Doctest summary
+ ===============
+ 60 tests
+ 0 failures in tests
+ 0 failures in setup code
+ 0 failures in cleanup code
+ build succeeded.
+
+
+
+Using :mod:`zc.buildout`
+########################
+
+Setting up the buildout
+-----------------------
+
+:mod:`zope.proxy` ships with its own :file:`buildout.cfg` file and
+:file:`bootstrap.py` for setting up a development buildout:
+
+.. code-block:: sh
+
+ $ /path/to/python2.6 bootstrap.py
+ ...
+ Generated script '.../bin/buildout'
+ $ bin/buildout
+ Develop: '/home/jrandom/projects/Zope/BTK/event/.'
+ ...
+ Generated script '.../bin/test'.
+
+Running the tests
+-----------------
+
+You can now run the tests:
+
+.. code-block:: sh
+
+ $ bin/test --all
+ Running zope.testing.testrunner.layer.UnitTests tests:
+ Set up zope.testing.testrunner.layer.UnitTests in 0.000 seconds.
+ Ran 147 tests with 0 failures and 0 errors in 0.000 seconds.
+ Tearing down left over layers:
+ Tear down zope.testing.testrunner.layer.UnitTests in 0.000 seconds.
+
+
+
+Using :mod:`tox`
+################
+
+Running Tests on Multiple Python Versions
+-----------------------------------------
+
+`tox <http://tox.testrun.org/latest/>`_ is a Python-based test automation
+tool designed to run tests against multiple Python versions. It creates
+a ``virtualenv`` for each configured version, installs the current package
+and configured dependencies into each ``virtualenv``, and then runs the
+configured commands.
+
+:mod:`zope.proxy` configures the following :mod:`tox` environments via
+its ``tox.ini`` file:
+
+- The ``py26``, ``py27``, ``py33``, ``py34``, and ``pypy`` environments
+ builds a ``virtualenv`` with ``pypy``,
+ installs :mod:`zope.proxy` and dependencies, and runs the tests
+ via ``python setup.py test -q``.
+
+- The ``coverage`` environment builds a ``virtualenv`` with ``python2.6``,
+ installs :mod:`zope.proxy`, installs
+ :mod:`nose` and :mod:`coverage`, and runs ``nosetests`` with statement
+ coverage.
+
+- The ``docs`` environment builds a virtualenv with ``python2.6``, installs
+ :mod:`zope.proxy`, installs ``Sphinx`` and
+ dependencies, and then builds the docs and exercises the doctest snippets.
+
+This example requires that you have a working ``python2.6`` on your path,
+as well as installing ``tox``:
+
+.. code-block:: sh
+
+ $ tox -e py26
+ GLOB sdist-make: .../zope.proxy/setup.py
+ py26 sdist-reinst: .../zope.proxy/.tox/dist/zope.proxy-4.0.2dev.zip
+ py26 runtests: commands[0]
+ ...
+ ----------------------------------------------------------------------
+ Ran 147 tests in 0.000s
+
+ OK
+ ___________________________________ summary
____________________________________
+ py26: commands succeeded
+ congratulations :)
+
+Running ``tox`` with no arguments runs all the configured environments,
+including building the docs and testing their snippets:
+
+.. code-block:: sh
+
+ $ tox
+ GLOB sdist-make: .../zope.proxy/setup.py
+ py26 sdist-reinst: .../zope.proxy/.tox/dist/zope.proxy-4.0.2dev.zip
+ py26 runtests: commands[0]
+ ...
+ Doctest summary
+ ===============
+ 60 tests
+ 0 failures in tests
+ 0 failures in setup code
+ 0 failures in cleanup code
+ build succeeded.
+ ___________________________________ summary
____________________________________
+ py26: commands succeeded
+ py27: commands succeeded
+ py32: commands succeeded
+ pypy: commands succeeded
+ coverage: commands succeeded
+ docs: commands succeeded
+ congratulations :)
+
+
+Contributing to :mod:`zope.proxy`
+#################################
+
+Submitting a Bug Report
+-----------------------
+
+:mod:`zope.proxy` tracks its bugs on Github:
+
+ https://github.com/zopefoundation/zope.proxy/issues
+
+Please submit bug reports and feature requests there.
+
+
+Sharing Your Changes
+--------------------
+
+.. note::
+
+ Please ensure that all tests are passing before you submit your code.
+ If possible, your submission should include new tests for new features
+ or bug fixes, although it is possible that you may have tested your
+ new code by updating existing tests.
+
+If have made a change you would like to share, the best route is to fork
+the Githb repository, check out your fork, make your changes on a branch
+in your fork, and push it. You can then submit a pull request from your
+branch:
+
+ https://github.com/zopefoundation/zope.proxy/pulls
+
+If you branched the code from Launchpad using Bazaar, you have another
+option: you can "push" your branch to Launchpad:
+
+.. code-block:: sh
+
+ $ bzr push lp:~jrandom/zope.proxy/cool_feature
+
+After pushing your branch, you can link it to a bug report on Github,
+or request that the maintainers merge your branch using the Launchpad
+"merge request" feature.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zope.proxy-4.5.1/docs/_build/html/_sources/index.rst.txt
new/zope.proxy-4.6.0/docs/_build/html/_sources/index.rst.txt
--- old/zope.proxy-4.5.1/docs/_build/html/_sources/index.rst.txt
1970-01-01 01:00:00.000000000 +0100
+++ new/zope.proxy-4.6.0/docs/_build/html/_sources/index.rst.txt
2022-11-02 11:12:52.000000000 +0100
@@ -0,0 +1,20 @@
+:mod:`zope.proxy`
+=================
+
+Contents:
+
+.. toctree::
+ :maxdepth: 2
+
+ narr
+ api
+ hacking
+ changes
+
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/zope.proxy-4.5.1/docs/_build/html/_sources/narr.rst.txt
new/zope.proxy-4.6.0/docs/_build/html/_sources/narr.rst.txt
--- old/zope.proxy-4.5.1/docs/_build/html/_sources/narr.rst.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/zope.proxy-4.6.0/docs/_build/html/_sources/narr.rst.txt 2022-11-02
11:12:52.000000000 +0100
@@ -0,0 +1,153 @@
+:mod:`zope.proxy` Narrative Documentation
+=========================================
+
+Subclassing :class:`ProxyBase`
+------------------------------
+
+If you subclass a proxy, instances of the subclass have access to
+data defined in the class, including descriptors.
+
+Your subclass instances don't get instance dictionaries, but they
+can have slots.
+
+.. doctest::
+
+ >>> from zope.proxy import ProxyBase
+ >>> class MyProxy(ProxyBase):
+ ... __slots__ = 'x', 'y'
+ ...
+ ... def f(self):
+ ... return self.x
+
+ >>> l = [1, 2, 3]
+ >>> p = MyProxy(l)
+
+You can use attributes defined by the class, including slots:
+
+.. doctest::
+
+ >>> p.x = 'x'
+ >>> p.x
+ 'x'
+ >>> p.f()
+ 'x'
+
+You can also use attributes of the proxied object:
+
+.. doctest::
+
+ >>> p
+ [1, 2, 3]
+ >>> p.pop()
+ 3
+ >>> p
+ [1, 2]
+
+
+Using get descriptors in proxy classes
+--------------------------------------
+
+A non-data descriptor in a proxy class doesn't hide an attribute on
+a proxied object or prevent writing the attribute.
+
+.. doctest::
+
+ >>> class ReadDescr(object):
+ ... def __get__(self, i, c):
+ ... return 'read'
+
+ >>> from zope.proxy import ProxyBase
+ >>> class MyProxy(ProxyBase):
+ ... __slots__ = ()
+ ...
+ ... z = ReadDescr()
+ ... q = ReadDescr()
+
+ >>> class MyOb:
+ ... q = 1
+
+ >>> o = MyOb()
+ >>> p = MyProxy(o)
+ >>> p.q
+ 1
+
+ >>> p.z
+ 'read'
+
+ >>> p.z = 1
+ >>> o.z, p.z
+ (1, 1)
+
+
+Marking proxy attributes as non-overridable
+-------------------------------------------
+
+Normally, methods defined in proxies are overridden by
+methods of proxied objects. This applies to all non-data
+descriptors. The non_overridable function can be used to
+convert a non-data descriptor to a data descriptor that disallows
+writes. This function can be used as a decorator to make functions
+defined in proxy classes take precedence over functions defined
+in proxied objects.
+
+.. doctest::
+
+ >>> from zope.proxy import ProxyBase
+ >>> from zope.proxy import non_overridable
+ >>> class MyProxy(ProxyBase):
+ ... __slots__ = ()
+ ...
+ ... @non_overridable
+ ... def foo(self):
+ ... return 'MyProxy foo'
+
+ >>> class MyOb:
+ ... def foo(self):
+ ... return 'MyOb foo'
+
+ >>> o = MyOb()
+ >>> p = MyProxy(o)
+ >>> p.foo()
+ 'MyProxy foo'
+
+
+Changing the proxied object
+---------------------------
+
+.. doctest::
+
+ >>> from zope.proxy import ProxyBase
+ >>> from zope.proxy import setProxiedObject, getProxiedObject
+
+ >>> class C(object):
+ ... pass
+
+ >>> c1 = C()
+ >>> c2 = C()
+
+ >>> p = ProxyBase(c1)
+
+`setProxiedObject()` allows us to change the object a proxy refers to,
+returning the previous referent:
+
+.. doctest::
+
+ >>> old = setProxiedObject(p, c2)
+ >>> old is c1
+ True
+
+ >>> getProxiedObject(p) is c2
+ True
+
+The first argument to `setProxiedObject()` must be a proxy; other objects
+cause it to raise an exception:
+
+.. doctest::
+
+ >>> try:
+ ... setProxiedObject(c1, None)
+ ... except TypeError:
+ ... print("TypeError raised")
+ ... else:
+ ... print("Expected TypeError not raised")
+ TypeError raised
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.proxy-4.5.1/setup.py
new/zope.proxy-4.6.0/setup.py
--- old/zope.proxy-4.5.1/setup.py 2022-09-15 08:26:22.000000000 +0200
+++ new/zope.proxy-4.6.0/setup.py 2022-11-06 11:31:56.000000000 +0100
@@ -80,7 +80,7 @@
headers = [os.path.join('src', 'zope', 'proxy', 'proxy.h')]
setup(name='zope.proxy',
- version='4.5.1',
+ version='4.6.0',
author='Zope Foundation and Contributors',
author_email='[email protected]',
description='Generic Transparent Proxies',
@@ -105,6 +105,7 @@
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.10',
+ 'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: Implementation :: CPython',
'Programming Language :: Python :: Implementation :: PyPy',
'Framework :: Zope :: 3',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.proxy-4.5.1/src/zope.proxy.egg-info/PKG-INFO
new/zope.proxy-4.6.0/src/zope.proxy.egg-info/PKG-INFO
--- old/zope.proxy-4.5.1/src/zope.proxy.egg-info/PKG-INFO 2022-09-15
08:26:23.000000000 +0200
+++ new/zope.proxy-4.6.0/src/zope.proxy.egg-info/PKG-INFO 2022-11-06
11:32:30.000000000 +0100
@@ -1,13 +1,12 @@
Metadata-Version: 2.1
Name: zope.proxy
-Version: 4.5.1
+Version: 4.6.0
Summary: Generic Transparent Proxies
Home-page: http://github.com/zopefoundation/zope.proxy
Author: Zope Foundation and Contributors
Author-email: [email protected]
License: ZPL 2.1
Keywords: proxy generic transparent
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Zope Public License
@@ -21,6 +20,7 @@
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Framework :: Zope :: 3
@@ -62,6 +62,12 @@
Changes
=========
+4.6.0 (2022-11-03)
+==================
+
+- Add support for Python 3.11.
+
+
4.5.1 (2022-09-15)
==================
@@ -340,5 +346,3 @@
- Corresponds to the verison of the ``zope.proxy`` package shipped as part of
the Zope X3.0.0 release.
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.proxy-4.5.1/src/zope.proxy.egg-info/SOURCES.txt
new/zope.proxy-4.6.0/src/zope.proxy.egg-info/SOURCES.txt
--- old/zope.proxy-4.5.1/src/zope.proxy.egg-info/SOURCES.txt 2022-09-15
08:26:24.000000000 +0200
+++ new/zope.proxy-4.6.0/src/zope.proxy.egg-info/SOURCES.txt 2022-11-06
11:32:30.000000000 +0100
@@ -21,6 +21,12 @@
docs/index.rst
docs/make.bat
docs/narr.rst
+docs/_build/doctest/output.txt
+docs/_build/html/_sources/api.rst.txt
+docs/_build/html/_sources/changes.rst.txt
+docs/_build/html/_sources/hacking.rst.txt
+docs/_build/html/_sources/index.rst.txt
+docs/_build/html/_sources/narr.rst.txt
src/zope/__init__.py
src/zope.proxy.egg-info/PKG-INFO
src/zope.proxy.egg-info/SOURCES.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/zope.proxy-4.5.1/tox.ini new/zope.proxy-4.6.0/tox.ini
--- old/zope.proxy-4.5.1/tox.ini 2022-09-15 08:26:22.000000000 +0200
+++ new/zope.proxy-4.6.0/tox.ini 2022-11-06 11:31:56.000000000 +0100
@@ -11,6 +11,7 @@
py38,py38-pure
py39,py39-pure
py310,py310-pure
+ py311,py311-pure
pypy
pypy3
docs