1 ``zope.interface Changelog``
2 ============================
7 - New module ``zope.interface.registry``. This is code moved from
8 ``zope.component.registry`` which implements a basic nonperistent component
9 registry as ``zope.interface.registry.Components``. This class was moved
10 from ``zope.component`` to make porting systems (such as Pyramid) that rely
11 only on a basic component registry to Python 3 possible without needing to
12 port the entirety of the ``zope.component`` package. Backwards
13 compatibility import shims have been left behind in ``zope.component``, so
14 this change will not break any existing code.
16 - New ``tests_require`` dependency: ``zope.event`` to test events sent by
17 Components implementation. The ``zope.interface`` package does not have a
18 hard dependency on ``zope.event``, but if ``zope.event`` is importable, it
19 will send component registration events when methods of an instance of
20 ``zope.interface.registry.Components`` are called.
22 - New interfaces added to support ``zope.interface.registry.Components``
23 addition: ``ComponentLookupError``, ``Invalid``, ``IObjectEvent``,
24 ``ObjectEvent``, ``IComponentLookup``, ``IRegistration``,
25 ``IUtilityRegistration``, ``IAdapterRegistration``,
26 ``ISubscriptionAdapterRegistration``, ``IHandlerRegistration``,
27 ``IRegistrationEvent``, ``RegistrationEvent``, ``IRegistered``,
28 ``Registered``, ``IUnregistered``, ``Unregistered``,
29 ``IComponentRegistry``, and ``IComponents``.
31 - No longer Python 2.4 compatible (tested under 2.5, 2.6, 2.7, and 3.2).
36 - Move changes from 3.6.2 - 3.6.5 to a new 3.7.x release line.
41 - Fix sporadic failures on x86-64 platforms in tests of rich comparisons
47 - LP #570942: Now correctly compare interfaces from different modules but
50 N.B.: This is a less intrusive / destabilizing fix than the one applied in
51 3.6.3: we only fix the underlying cmp-alike function, rather than adding
52 the other "rich comparison" functions.
54 - Revert to software as released with 3.6.1 for "stable" 3.6 release branch.
59 - LP #811792: work around buggy behavior in some subclasses of
60 ``zope.interface.interface.InterfaceClass``, which invoke ``__hash__``
61 before initializing ``__module__`` and ``__name__``. The workaround
62 returns a fixed constant hash in such cases, and issues a ``UserWarning``.
64 - LP #804832: Under PyPy, ``zope.interface`` should not build its C
65 extension. Also, prevent attempting to build it under Jython.
67 - Add a tox.ini for easier xplatform testing.
69 - Fix testing deprecation warnings issued when tested under Py3K.
74 - LP 804951: InterfaceClass instances were unhashable under Python 3.x.
79 - LP #570942: Now correctly compare interfaces from different modules but
85 - Moved detailed documentation out-of-line from PyPI page, linking instead to
86 http://docs.zope.org/zope.interface .
88 - Fixes for small issues when running tests under Python 3.2 using
91 - LP # 675064: Specify return value type for C optimizations module init
92 under Python 3: undeclared value caused warnings, and segfaults on some
95 - setup.py now raises RuntimeError if you don't have Distutils installed when
96 running under Python 3.
101 - A non-ASCII character in the changelog made 3.6.0 uninstallable on
102 Python 3 systems with another default encoding than UTF-8.
104 - Fixed compiler warnings under GCC 4.3.3.
109 - LP #185974: Clear the cache used by ``Specificaton.get`` inside
110 ``Specification.changed``. Thanks to Jacob Holm for the patch.
112 - Added support for Python 3.1. Contributors:
119 The 3.1 support is completely backwards compatible. However, the implements
120 syntax used under Python 2.X does not work under 3.X, since it depends on
121 how metaclasses are implemented and this has changed. Instead it now supports
122 a decorator syntax (also under Python 2.X)::
128 can now also be written::
134 There are 2to3 fixers available to do this change automatically in the
137 - Python 2.3 is no longer supported.
143 - Use the standard Python doctest module instead of zope.testing.doctest, which
150 - Fix an edge case: make providedBy() work when a class has '__provides__' in
151 its __slots__ (see http://thread.gmane.org/gmane.comp.web.zope.devel/22490)
157 - BaseAdapterRegistry.unregister, unsubscribe: Remove empty portions of
158 the data structures when something is removed. This avoids leaving
159 references to global objects (interfaces) that may be slated for
160 removal from the calling application.
166 - verifyObject: use getattr instead of hasattr to test for object attributes
167 in order to let exceptions other than AttributeError raised by properties
168 propagate to the caller
170 - Add Sphinx-based documentation building to the package buildout
171 configuration. Use the ``bin/docs`` command after buildout.
173 - Improve package description a bit. Unify changelog entries formatting.
175 - Change package's mailing list address to zope-dev at zope.org as
176 zope3-dev at zope.org is now retired.
182 - Fixed declaration of _zope_interface_coptimizations, it's not a top level
185 - Add a DocTestSuite for odd.py module, so their tests are run.
187 - Allow to bootstrap on Jython.
189 - Fix https://bugs.launchpad.net/zope3/3.3/+bug/98388: ISpecification
190 was missing a declaration for __iro__.
192 - Added optional code optimizations support, which allows the building
193 of C code optimizations to fail (Jython).
195 - Replaced `_flatten` with a non-recursive implementation, effectively making
202 - Fixed a setup bug that prevented installation from source on systems
209 - Final release for 3.4.0.
216 - Objects with picky custom comparison methods couldn't be added to
217 component registries. Now, when checking whether an object is
218 already registered, identity comparison is used.
224 - Made a reference to OverflowWarning, which disappeared in Python
234 - The adapter-lookup algorithim was refactored to make it
235 much simpler and faster.
237 Also, more of the adapter-lookup logic is implemented in C, making
238 debugging of application code easier, since there is less
239 infrastructre code to step through.
241 - We now treat objects without interface declarations as if they
242 declared that they provide zope.interface.Interface.
244 - There are a number of richer new adapter-registration interfaces
245 that provide greater control and introspection.
247 - Added a new interface decorator to zope.interface that allows the
248 setting of tagged values on an interface at definition time (see
249 zope.interface.taggedValue).
254 - A bug in multi-adapter lookup sometimes caused incorrect adapters to
261 - Fix packaging bug: 'package_dir' must be a *relative* path.
267 - Packaging change: suppress inclusion of 'setup.cfg' in 'sdist' builds.
273 - Corresponds to the verison of the zope.interface package shipped as part of
274 the Zope 3.2.0 release.
280 - Corresponds to the verison of the zope.interface package shipped as part of
281 the Zope 3.1.0 release.
283 - Made attribute resolution order consistent with component lookup order,
284 i.e. new-style class MRO semantics.
286 - Deprecated 'isImplementedBy' and 'isImplementedByInstancesOf' APIs in
287 favor of 'implementedBy' and 'providedBy'.
293 - Corresponds to the verison of the zope.interface package shipped as part of
294 the Zope X3.0.1 release.
296 - Fixed a bug reported by James Knight, which caused adapter registries
297 to fail occasionally to reflect declaration changes.
303 - Corresponds to the verison of the zope.interface package shipped as part of
304 the Zope X3.0.0 release.