Metadata-Version: 2.1
Name: ExtensionClass
Version: 4.4
Summary: Metaclass for subclassable extension types
Home-page: https://github.com/zopefoundation/ExtensionClass
Author: Zope Foundation and Contributors
Author-email: zope-dev@zope.org
License: ZPL 2.1
Classifier: Development Status :: 6 - Mature
Classifier: Environment :: Web Environment
Classifier: Framework :: Zope2
Classifier: License :: OSI Approved :: Zope Public License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Provides-Extra: test
License-File: LICENSE.txt

ExtensionClass and ExtensionClass-related packages
==================================================

ExtensionClass
--------------

This package provides a metaclass that allows classes implemented in
extension modules to be subclassed in Python.  Unless you need
ExtensionClasses for legacy applications (e.g. Zope 2), you probably
want to use Python's new-style classes (available since Python 2.2).

ComputedAttribute
-----------------

This package provides a way to attach attributes to an
``ExtensionClass`` or instance that are computed by calling a
callable.  This works very much like ``property`` known from new-style
classes, except that a ``ComputedAttribute`` can also be attached to
an instance and that it honours ExtensionClass semantics (which is
useful for retaining Acquisition wrappers, for example).

MethodObject
------------

This package lets you attach additional "methods" to ExtensionClasses.
These "methods" are actually implemented by subclassing the
``MethodObject.Method`` class and implementing the ``__call__`` method
there.  Instances of those classes will be bound to the instances
they're attached to and will receive that instance object as a first
parameter (after ``self``).


Changelog
=========

4.4 (2018-10-05)
----------------

- Fail if C extensions couldn't be compiled on compatible platforms.

- Add Appveyor configuration to automate building Windows eggs

- Add support for Python 3.7.

- Fix getting attributes that are data descriptors in the Python
  implementation.

- Reach and automatically maintain 100% test coverage.

4.3.0 (2017-02-22)
------------------

- Drop support for Python 3.3.

- Remove unused C macro from `ExtensionClass.h`.

- Fix C compilation under Windows.

4.2.1 (2017-02-02)
------------------

- Fix problems with computed attribute and property wrapping.

4.2.0 (2017-01-18)
------------------

- Port the C extension to Python 3.

- Add support for Python 3.5 and 3.6.

- Drop support for Python 2.6, 3.2.

4.1.2 (2015-04-03)
------------------

- Fix calling of `__class_init__` hook by Python implementation.

4.1.1 (2015-03-20)
------------------

- Avoid wrapping ``__parent__`` in pure-Python version.  Matches
  change made to C version in afb8488.  See issue #3.

4.1 (2014-12-18)
------------------

- Housekeeping changes only.

4.1b1 (2014-11-12)
------------------

- Added compatibility with Python 3.4.

4.1a1 (2013-05-04)
------------------

- Added compatibility with Python 3.2 and 3.3 using the Python reference
  implementation.

- Add Python reference implementation. Used by default on PyPy.

4.0 (2013-02-24)
----------------

- Added trove classifiers to project metadata.

4.0a1 (2011-12-13)
------------------

- Don't create wrappers when retrieving parent pointers.

2.13.2 (2010-06-16)
-------------------

- LP #587760: Handle tp_basicsize correctly.

2.13.1 (2010-04-03)
-------------------

- Removed undeclared testing dependency on zope.testing.

- Removed cruft in ``pickle/pickle.c`` related to removed ``__getnewargs__``.

2.13.0 (2010-02-22)
-------------------

- Avoid defining ``__getnewargs__`` as not to defeat the ZODB persistent
  reference optimization. Refs https://bugs.launchpad.net/zope2/+bug/143657.
  In order to take advantage of this optimization, you need to re-save your
  objects.

2.12.0 (2010-02-14)
-------------------

- Removed old build artifacts and some metadata cleanup.

- Added support for method cache in ExtensionClass. Patch contributed by
  Yoshinori K. Okuji. See https://bugs.launchpad.net/zope2/+bug/486182.

2.11.3 (2009-08-02)
-------------------

- Further 64-bit fixes (Python 2.4 compatibility).

2.11.2 (2009-08-02)
-------------------

- Fixed 64-bit compatibility issues for Python 2.5.x / 2.6.x.  See
  http://www.python.org/dev/peps/pep-0353/ for details.

2.11.1 (2009-02-19)
-------------------

- Initial egg release.
