Metadata-Version: 2.1
Name: ExtensionClass
Version: 4.6
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
Platform: UNKNOWN
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.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
License-File: LICENSE.txt
Provides-Extra: test
Requires-Dist: zope.testrunner ; extra == 'test'

====================================================
 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), 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.6 (2022-01-14)
================

- Add support for Python 3.10 and 3.11 (as of alpha 3).


4.5.1 (2021-06-11)
==================

- Create wheels for Linux (2010, 2014 and aarch) and MacOS.


4.5.0 (2020-10-07)
==================

- Drop support for Python 3.4.

- Add support for Python 3.8 and 3.9.

- Fix accessing ``__parent__`` when it is defined as a class attribute
  that is ``None`` (e.g., in subclasses of
  ``zope.conatiner.contained.Contained``). See `issue 24
  <https://github.com/zopefoundation/ExtensionClass/issues/24>`_.

4.4.0 (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.


