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

Reply via email to