Skip to main content

Generic Transparent Proxies

Project description

zope.proxy

Latest Version https://travis-ci.org/zopefoundation/zope.proxy.svg?branch=master Documentation Status

Proxies are special objects which serve as mostly-transparent wrappers around another object, intervening in the apparent behavior of the wrapped object only when necessary to apply the policy (e.g., access checking, location brokering, etc.) for which the proxy is responsible.

zope.proxy is implemented via a C extension module, which lets it do things like lie about its own __class__ that are difficult in pure Python (and were completely impossible before metaclasses). It also proxies all the internal slots (such as __int__/__str__/__add__).

Complete documentation is at https://zopeproxy.readthedocs.io

Changes

4.3.4 (2020-03-13)

  • Fix a compilation warning on Python 3.8. The slot tp_print changed to tp_vectorcall_offset in 3.8 and must not be set. Prior to 3.8, it was reserved and ignored in all Python 3 versions. See issue 36.

  • Remove deprecated use of setuptools features. See issue 38.

4.3.3 (2019-11-11)

  • Add support for Python 3.8.

  • Drop support for Python 3.4.

4.3.2 (2019-07-12)

  • Fix error handling in ProxyBase.__setattr__: any the exception raised by PyString_AsString/PyUnicode_AsUTF8 would be silently swallowed up and ignored. See issue 31.

4.3.1 (2018-08-09)

  • Simplify the internal C handling of attribute names in __getattribute__ and __setattr__.

  • Make building the C extension optional. We still attempt to build it on supported platforms, but we allow it to fail in case of a missing compiler or headers. See issue 26.

  • Test the PURE_PYTHON environment and PyPy3 on Travis CI.

  • Add support for Python 3.7.

4.3.0 (2017-09-13)

  • Fix a potential rare crash when deallocating proxies. See issue 20.

  • Drop support for Python 3.3.

  • Drop support for “python setup.py test”.

  • 100% test coverage.

  • Fix indexing pure-Python proxies with slices under Python 3, and restore the use of __getslice__ (if implemented by the target’s type) under Python 2. Previously, pure-Python proxies would fail with an AttributeError when given a slice on Python 3, and on Python 2, a custom __getslice__ was ignored. See issue 21.

4.2.1 (2017-04-23)

  • Make the pure-Python implementation of sameProxiedObjects handle zope.security proxies. See issue 15.

  • Add support for Python 3.6.

4.2.0 (2016-05-05)

  • Correctly strip zope.security proxies in removeAllProxies. See issue 13.

  • Avoid poisoning the user’s global wheel cache when testing PURE_PYTHON environments under tox,

  • Drop support for Python 2.6 and 3.2.

  • Add support for Python 3.5.

4.1.6 (2015-06-02)

  • Make subclasses of ProxyBase properly delegate __module__ to the wrapped object. This fixes some zope.interface lookups under PyPy.

  • Make the pure-Python implementation of ProxyBase properly report the zope.interface interfaces implemented by builtin types like list. This fixes some zope.interface lookups under PyPy.

4.1.5 (2015-05-19)

  • Make the C implementation proxy __unicode__ correctly.

  • Make the C implementation use the standard methods to proxy int and float.

  • Make the pure Python implementation handle descriptors defined in subclasses like the C version. See https://github.com/zopefoundation/zope.proxy/issues/5.

4.1.4 (2014-03-19)

  • Add support for Python 3.4.

  • Update bootstrap.py to version 2.2.

4.1.3 (2013-03-12)

  • Fix interface object introspection in PyPy. For some reason PyPy makes attributes available despite the restrictive __slots__ declaration.

  • Add a bunch of tests surrounding interface lookup and adaptation.

4.1.2 (2013-03-11)

  • Make PyProxyBase.__iter__() return the result of PyProxyBase._wrapped.__iter__ if available, otherwise falling back to Python internals. The previous implementation always created a generator.

  • In PyProxyBase.__setattr__(), allow setting of properties on the proxy itself. This is needed to properly allow proxy extensions as was evidenced int he zope.security.decorator module.

4.1.1 (2012-12-31)

  • Fleshed out PyPI Trove classifiers.

4.1.0 (2012-12-19)

  • Enable compilation of dependent modules under Py3k.

  • Replace use of PyCObject APIs with equivalent PyCapsule APIs, except under Python 2.6.

    N.B. This change is an ABI incompatibility under Python 2.7:

    extensions built under Python 2.7 against 4.0.x versions of zope.proxy must be rebuilt.

4.0.1 (2012-11-21)

  • Add support for Python 3.3.

4.0.0 (2012-06-06)

  • Add support for PyPy.

    N.B.: the C extension is not built under PyPy.

  • Add a pure-Python reference / fallback implementations of zope.proxy.ProxyBase and the proxy module API functions.

    N.B.: the pure-Python proxy implements all regular features of ProxyBase; however, it does not exclude access to the wrapped object in the same way that the C version does. If you need that information hiding (e.g., to implement security sandboxing), you still need to use the C version.

  • Add support for continuous integration using tox and jenkins.

  • 100% unit test coverage.

  • Add Sphinx documentation: moved doctest examples to API reference.

  • Add ‘setup.py docs’ alias (installs Sphinx and dependencies).

  • Add ‘setup.py dev’ alias (runs setup.py develop plus installs nose and coverage).

  • Replace deprecated zope.interface.implements usage with equivalent zope.interface.implementer decorator.

  • Drop support for Python 2.4 and 2.5.

  • Add Python 3.2 support.

3.6.1 (2010-07-06)

  • Make tests compatible with Python 2.7.

3.6.0 (2010-04-30)

  • Remove test extra and the remaining dependency on zope.testing.

  • Remove use of ‘zope.testing.doctestunit’ in favor of stdlib’s ‘doctest.

3.5.0 (2009/01/31)

  • Add support to bootstrap on Jython.

  • Use zope.container instead of zope.app.container.

3.4.2 (2008/07/27)

  • Make C code compatible with Python 2.5 on 64bit architectures.

3.4.1 (2008/06/24)

  • Bug: Update setup.py script to conform to common layout. Also updated some of the fields.

  • Bug: Honor pre-cooked indices for tuples and lists in the __getslice__() and __setslice__() methods. See http://docs.python.org/ref/sequence-methods.html.

3.4.0 (2007/07/12)

  • Feature: Add a decorator module that supports declaring interfaces on proxies that get blended with the interfaces of the things they proxy.

3.3.0 (2006/12/20)

  • Corresponds to the verison of the zope.proxy package shipped as part of the Zope 3.3.0 release.

3.2.0 (2006/01/05)

  • Corresponds to the verison of the zope.proxy package shipped as part of the Zope 3.2.0 release.

3.0.0 (2004/11/07)

  • Corresponds to the verison of the zope.proxy package shipped as part of the Zope X3.0.0 release.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zope.proxy-4.3.4.tar.gz (45.0 kB view hashes)

Uploaded Source

Built Distributions

zope.proxy-4.3.4-cp38-cp38-win_amd64.whl (41.7 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

zope.proxy-4.3.4-cp38-cp38-win32.whl (40.6 kB view hashes)

Uploaded CPython 3.8 Windows x86

zope.proxy-4.3.4-cp38-cp38-manylinux2010_x86_64.whl (70.8 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

zope.proxy-4.3.4-cp38-cp38-manylinux2010_i686.whl (63.3 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686

zope.proxy-4.3.4-cp38-cp38-manylinux1_x86_64.whl (70.8 kB view hashes)

Uploaded CPython 3.8

zope.proxy-4.3.4-cp38-cp38-manylinux1_i686.whl (63.3 kB view hashes)

Uploaded CPython 3.8

zope.proxy-4.3.4-cp38-cp38-macosx_10_9_x86_64.whl (40.1 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

zope.proxy-4.3.4-cp37-cp37m-win_amd64.whl (41.6 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

zope.proxy-4.3.4-cp37-cp37m-win32.whl (40.5 kB view hashes)

Uploaded CPython 3.7m Windows x86

zope.proxy-4.3.4-cp37-cp37m-manylinux2010_x86_64.whl (70.2 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

zope.proxy-4.3.4-cp37-cp37m-manylinux2010_i686.whl (62.8 kB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686

zope.proxy-4.3.4-cp37-cp37m-manylinux1_x86_64.whl (70.2 kB view hashes)

Uploaded CPython 3.7m

zope.proxy-4.3.4-cp37-cp37m-manylinux1_i686.whl (62.8 kB view hashes)

Uploaded CPython 3.7m

zope.proxy-4.3.4-cp37-cp37m-macosx_10_9_x86_64.whl (40.0 kB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

zope.proxy-4.3.4-cp36-cp36m-win_amd64.whl (41.6 kB view hashes)

Uploaded CPython 3.6m Windows x86-64

zope.proxy-4.3.4-cp36-cp36m-win32.whl (40.5 kB view hashes)

Uploaded CPython 3.6m Windows x86

zope.proxy-4.3.4-cp36-cp36m-manylinux2010_x86_64.whl (69.3 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

zope.proxy-4.3.4-cp36-cp36m-manylinux2010_i686.whl (61.9 kB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.12+ i686

zope.proxy-4.3.4-cp36-cp36m-manylinux1_x86_64.whl (69.3 kB view hashes)

Uploaded CPython 3.6m

zope.proxy-4.3.4-cp36-cp36m-manylinux1_i686.whl (61.9 kB view hashes)

Uploaded CPython 3.6m

zope.proxy-4.3.4-cp36-cp36m-macosx_10_6_intel.whl (48.7 kB view hashes)

Uploaded CPython 3.6m macOS 10.6+ intel

zope.proxy-4.3.4-cp35-cp35m-win_amd64.whl (41.5 kB view hashes)

Uploaded CPython 3.5m Windows x86-64

zope.proxy-4.3.4-cp35-cp35m-win32.whl (40.5 kB view hashes)

Uploaded CPython 3.5m Windows x86

zope.proxy-4.3.4-cp35-cp35m-manylinux2010_x86_64.whl (69.1 kB view hashes)

Uploaded CPython 3.5m manylinux: glibc 2.12+ x86-64

zope.proxy-4.3.4-cp35-cp35m-manylinux2010_i686.whl (61.7 kB view hashes)

Uploaded CPython 3.5m manylinux: glibc 2.12+ i686

zope.proxy-4.3.4-cp35-cp35m-manylinux1_x86_64.whl (69.1 kB view hashes)

Uploaded CPython 3.5m

zope.proxy-4.3.4-cp35-cp35m-manylinux1_i686.whl (61.7 kB view hashes)

Uploaded CPython 3.5m

zope.proxy-4.3.4-cp35-cp35m-macosx_10_6_intel.whl (48.7 kB view hashes)

Uploaded CPython 3.5m macOS 10.6+ intel

zope.proxy-4.3.4-cp27-cp27mu-manylinux2010_x86_64.whl (70.8 kB view hashes)

Uploaded CPython 2.7mu manylinux: glibc 2.12+ x86-64

zope.proxy-4.3.4-cp27-cp27mu-manylinux2010_i686.whl (62.8 kB view hashes)

Uploaded CPython 2.7mu manylinux: glibc 2.12+ i686

zope.proxy-4.3.4-cp27-cp27mu-manylinux1_x86_64.whl (70.7 kB view hashes)

Uploaded CPython 2.7mu

zope.proxy-4.3.4-cp27-cp27mu-manylinux1_i686.whl (62.8 kB view hashes)

Uploaded CPython 2.7mu

zope.proxy-4.3.4-cp27-cp27m-win_amd64.whl (39.9 kB view hashes)

Uploaded CPython 2.7m Windows x86-64

zope.proxy-4.3.4-cp27-cp27m-win32.whl (39.4 kB view hashes)

Uploaded CPython 2.7m Windows x86

zope.proxy-4.3.4-cp27-cp27m-manylinux2010_x86_64.whl (70.7 kB view hashes)

Uploaded CPython 2.7m manylinux: glibc 2.12+ x86-64

zope.proxy-4.3.4-cp27-cp27m-manylinux2010_i686.whl (62.8 kB view hashes)

Uploaded CPython 2.7m manylinux: glibc 2.12+ i686

zope.proxy-4.3.4-cp27-cp27m-manylinux1_x86_64.whl (70.7 kB view hashes)

Uploaded CPython 2.7m

zope.proxy-4.3.4-cp27-cp27m-manylinux1_i686.whl (62.8 kB view hashes)

Uploaded CPython 2.7m

zope.proxy-4.3.4-cp27-cp27m-macosx_10_9_x86_64.whl (40.5 kB view hashes)

Uploaded CPython 2.7m macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page