jpayne@69
|
1 Metadata-Version: 2.1
|
jpayne@69
|
2 Name: zope.interface
|
jpayne@69
|
3 Version: 7.2
|
jpayne@69
|
4 Summary: Interfaces for Python
|
jpayne@69
|
5 Home-page: https://github.com/zopefoundation/zope.interface
|
jpayne@69
|
6 Author: Zope Foundation and Contributors
|
jpayne@69
|
7 Author-email: zope-dev@zope.dev
|
jpayne@69
|
8 License: ZPL 2.1
|
jpayne@69
|
9 Keywords: interface,components,plugins
|
jpayne@69
|
10 Classifier: Development Status :: 5 - Production/Stable
|
jpayne@69
|
11 Classifier: Intended Audience :: Developers
|
jpayne@69
|
12 Classifier: License :: OSI Approved :: Zope Public License
|
jpayne@69
|
13 Classifier: Operating System :: OS Independent
|
jpayne@69
|
14 Classifier: Programming Language :: Python
|
jpayne@69
|
15 Classifier: Programming Language :: Python :: 3
|
jpayne@69
|
16 Classifier: Programming Language :: Python :: 3.8
|
jpayne@69
|
17 Classifier: Programming Language :: Python :: 3.9
|
jpayne@69
|
18 Classifier: Programming Language :: Python :: 3.10
|
jpayne@69
|
19 Classifier: Programming Language :: Python :: 3.11
|
jpayne@69
|
20 Classifier: Programming Language :: Python :: 3.12
|
jpayne@69
|
21 Classifier: Programming Language :: Python :: 3.13
|
jpayne@69
|
22 Classifier: Programming Language :: Python :: Implementation :: CPython
|
jpayne@69
|
23 Classifier: Programming Language :: Python :: Implementation :: PyPy
|
jpayne@69
|
24 Classifier: Framework :: Zope :: 3
|
jpayne@69
|
25 Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
jpayne@69
|
26 Requires-Python: >=3.8
|
jpayne@69
|
27 Description-Content-Type: text/x-rst
|
jpayne@69
|
28 License-File: LICENSE.txt
|
jpayne@69
|
29 Requires-Dist: setuptools
|
jpayne@69
|
30 Provides-Extra: docs
|
jpayne@69
|
31 Requires-Dist: Sphinx ; extra == 'docs'
|
jpayne@69
|
32 Requires-Dist: repoze.sphinx.autointerface ; extra == 'docs'
|
jpayne@69
|
33 Requires-Dist: furo ; extra == 'docs'
|
jpayne@69
|
34 Provides-Extra: test
|
jpayne@69
|
35 Requires-Dist: coverage[toml] ; extra == 'test'
|
jpayne@69
|
36 Requires-Dist: zope.event ; extra == 'test'
|
jpayne@69
|
37 Requires-Dist: zope.testing ; extra == 'test'
|
jpayne@69
|
38 Provides-Extra: testing
|
jpayne@69
|
39 Requires-Dist: coverage[toml] ; extra == 'testing'
|
jpayne@69
|
40 Requires-Dist: zope.event ; extra == 'testing'
|
jpayne@69
|
41 Requires-Dist: zope.testing ; extra == 'testing'
|
jpayne@69
|
42
|
jpayne@69
|
43 ====================
|
jpayne@69
|
44 ``zope.interface``
|
jpayne@69
|
45 ====================
|
jpayne@69
|
46
|
jpayne@69
|
47 .. image:: https://img.shields.io/pypi/v/zope.interface.svg
|
jpayne@69
|
48 :target: https://pypi.python.org/pypi/zope.interface/
|
jpayne@69
|
49 :alt: Latest Version
|
jpayne@69
|
50
|
jpayne@69
|
51 .. image:: https://img.shields.io/pypi/pyversions/zope.interface.svg
|
jpayne@69
|
52 :target: https://pypi.org/project/zope.interface/
|
jpayne@69
|
53 :alt: Supported Python versions
|
jpayne@69
|
54
|
jpayne@69
|
55 .. image:: https://github.com/zopefoundation/zope.interface/actions/workflows/tests.yml/badge.svg
|
jpayne@69
|
56 :target: https://github.com/zopefoundation/zope.interface/actions/workflows/tests.yml
|
jpayne@69
|
57
|
jpayne@69
|
58 .. image:: https://readthedocs.org/projects/zopeinterface/badge/?version=latest
|
jpayne@69
|
59 :target: https://zopeinterface.readthedocs.io/en/latest/
|
jpayne@69
|
60 :alt: Documentation Status
|
jpayne@69
|
61
|
jpayne@69
|
62 This package is intended to be independently reusable in any Python
|
jpayne@69
|
63 project. It is maintained by the `Zope Toolkit project
|
jpayne@69
|
64 <https://zopetoolkit.readthedocs.io/>`_.
|
jpayne@69
|
65
|
jpayne@69
|
66 This package provides an implementation of "object interfaces" for Python.
|
jpayne@69
|
67 Interfaces are a mechanism for labeling objects as conforming to a given
|
jpayne@69
|
68 API or contract. So, this package can be considered as implementation of
|
jpayne@69
|
69 the `Design By Contract`_ methodology support in Python.
|
jpayne@69
|
70
|
jpayne@69
|
71 .. _Design By Contract: http://en.wikipedia.org/wiki/Design_by_contract
|
jpayne@69
|
72
|
jpayne@69
|
73 For detailed documentation, please see https://zopeinterface.readthedocs.io/en/latest/
|
jpayne@69
|
74
|
jpayne@69
|
75 =========
|
jpayne@69
|
76 Changes
|
jpayne@69
|
77 =========
|
jpayne@69
|
78
|
jpayne@69
|
79 7.2 (2024-11-28)
|
jpayne@69
|
80 ================
|
jpayne@69
|
81
|
jpayne@69
|
82 - Add preliminary support for Python 3.14a2, this means that
|
jpayne@69
|
83 ``.common.builtins.IByteString`` and ``.common.collections.IByteString`` are
|
jpayne@69
|
84 no longer available from this Python version onwards as Python 3.14 dropped
|
jpayne@69
|
85 ``collections.abc.ByteString``.
|
jpayne@69
|
86
|
jpayne@69
|
87
|
jpayne@69
|
88 7.1.1 (2024-10-23)
|
jpayne@69
|
89 ==================
|
jpayne@69
|
90
|
jpayne@69
|
91 - Fix segmentation faults in `weakrefobject.c` on Python 3.12 and 3.13.
|
jpayne@69
|
92 (`#323 <https://github.com/zopefoundation/zope.interface/issues/323>`_)
|
jpayne@69
|
93
|
jpayne@69
|
94
|
jpayne@69
|
95 7.1.0 (2024-10-10)
|
jpayne@69
|
96 ==================
|
jpayne@69
|
97
|
jpayne@69
|
98 - Declare support for Python 3.13.
|
jpayne@69
|
99
|
jpayne@69
|
100 - Fix segmentation faults on Python 3.13.
|
jpayne@69
|
101 (`#323 <https://github.com/zopefoundation/zope.interface/issues/323>`_)
|
jpayne@69
|
102
|
jpayne@69
|
103
|
jpayne@69
|
104 7.0.3 (2024-08-27)
|
jpayne@69
|
105 ==================
|
jpayne@69
|
106
|
jpayne@69
|
107 - Fix `Assertion 'memb->type == T_PYSSIZET' failed.` for Python < 3.12.
|
jpayne@69
|
108 (`#319 <https://github.com/zopefoundation/zope.interface/issues/319>`_)
|
jpayne@69
|
109
|
jpayne@69
|
110
|
jpayne@69
|
111 7.0.2 (2024-08-26)
|
jpayne@69
|
112 ==================
|
jpayne@69
|
113
|
jpayne@69
|
114 - Fix reference-counting bug in C module initialization (broken in 7.0).
|
jpayne@69
|
115 (`#316 <https://github.com/zopefoundation/zope.interface/issues/316>`_)
|
jpayne@69
|
116
|
jpayne@69
|
117
|
jpayne@69
|
118 7.0.1 (2024-08-06)
|
jpayne@69
|
119 ==================
|
jpayne@69
|
120
|
jpayne@69
|
121 - Fix subclassability of ``ObjectSpecificationDescriptor`` (broken in 7.0).
|
jpayne@69
|
122 (`#312 <https://github.com/zopefoundation/zope.interface/issues/312>`_)
|
jpayne@69
|
123
|
jpayne@69
|
124
|
jpayne@69
|
125 7.0 (2024-08-06)
|
jpayne@69
|
126 ================
|
jpayne@69
|
127
|
jpayne@69
|
128 - Enable heap-based types (PEP 384) for Python >= 3.11.
|
jpayne@69
|
129
|
jpayne@69
|
130 - Adopt multi-phase module initialization (PEP 489).
|
jpayne@69
|
131
|
jpayne@69
|
132 - Drop support for Python 3.7.
|
jpayne@69
|
133
|
jpayne@69
|
134
|
jpayne@69
|
135 6.4.post2 (2024-05-24)
|
jpayne@69
|
136 ======================
|
jpayne@69
|
137
|
jpayne@69
|
138 - Publish missing Windows wheels, second attempt.
|
jpayne@69
|
139 (`#295 <https://github.com/zopefoundation/zope.interface/issues/295>`_)
|
jpayne@69
|
140
|
jpayne@69
|
141
|
jpayne@69
|
142 6.4.post1 (2024-05-23)
|
jpayne@69
|
143 ======================
|
jpayne@69
|
144
|
jpayne@69
|
145 - Publish missing Windows wheels.
|
jpayne@69
|
146 (`#295 <https://github.com/zopefoundation/zope.interface/issues/295>`_)
|
jpayne@69
|
147
|
jpayne@69
|
148
|
jpayne@69
|
149 6.4.post0 (2024-05-22)
|
jpayne@69
|
150 ======================
|
jpayne@69
|
151
|
jpayne@69
|
152 - The sdist of version 6.4 was uploaded to PyPI as
|
jpayne@69
|
153 ``zope_interface-6.4.tar.gz`` instead of ``zope.interface-6.4-py2.tar.gz``
|
jpayne@69
|
154 which cannot be installed by ``zc.buildout``. This release is a re-release
|
jpayne@69
|
155 of version 6.4 with the correct sdist name.
|
jpayne@69
|
156 (`#298 <https://github.com/zopefoundation/zope.interface/issues/298>`_)
|
jpayne@69
|
157
|
jpayne@69
|
158
|
jpayne@69
|
159 6.4 (2024-05-15)
|
jpayne@69
|
160 ================
|
jpayne@69
|
161
|
jpayne@69
|
162 - Adjust for incompatible changes in Python 3.13b1.
|
jpayne@69
|
163 (`#292 <https://github.com/zopefoundation/zope.interface/issues/292>`_)
|
jpayne@69
|
164
|
jpayne@69
|
165 - Build windows wheels on GHA.
|
jpayne@69
|
166
|
jpayne@69
|
167 6.3 (2024-04-12)
|
jpayne@69
|
168 ================
|
jpayne@69
|
169
|
jpayne@69
|
170 - Add preliminary support for Python 3.13 as of 3.13a6.
|
jpayne@69
|
171
|
jpayne@69
|
172
|
jpayne@69
|
173 6.2 (2024-02-16)
|
jpayne@69
|
174 ================
|
jpayne@69
|
175
|
jpayne@69
|
176 - Add preliminary support for Python 3.13 as of 3.13a3.
|
jpayne@69
|
177
|
jpayne@69
|
178 - Add support to use the pipe (``|``) syntax for ``typing.Union``.
|
jpayne@69
|
179 (`#280 <https://github.com/zopefoundation/zope.interface/issues/280>`_)
|
jpayne@69
|
180
|
jpayne@69
|
181
|
jpayne@69
|
182 6.1 (2023-10-05)
|
jpayne@69
|
183 ================
|
jpayne@69
|
184
|
jpayne@69
|
185 - Build Linux binary wheels for Python 3.12.
|
jpayne@69
|
186
|
jpayne@69
|
187 - Add support for Python 3.12.
|
jpayne@69
|
188
|
jpayne@69
|
189 - Fix building of the docs for non-final versions.
|
jpayne@69
|
190
|
jpayne@69
|
191
|
jpayne@69
|
192 6.0 (2023-03-17)
|
jpayne@69
|
193 ================
|
jpayne@69
|
194
|
jpayne@69
|
195 - Build Linux binary wheels for Python 3.11.
|
jpayne@69
|
196
|
jpayne@69
|
197 - Drop support for Python 2.7, 3.5, 3.6.
|
jpayne@69
|
198
|
jpayne@69
|
199 - Fix test deprecation warning on Python 3.11.
|
jpayne@69
|
200
|
jpayne@69
|
201 - Add preliminary support for Python 3.12 as of 3.12a5.
|
jpayne@69
|
202
|
jpayne@69
|
203 - Drop:
|
jpayne@69
|
204
|
jpayne@69
|
205 + `zope.interface.implements`
|
jpayne@69
|
206 + `zope.interface.implementsOnly`
|
jpayne@69
|
207 + `zope.interface.classProvides`
|
jpayne@69
|
208
|
jpayne@69
|
209
|
jpayne@69
|
210 5.5.2 (2022-11-17)
|
jpayne@69
|
211 ==================
|
jpayne@69
|
212
|
jpayne@69
|
213 - Add support for building arm64 wheels on macOS.
|
jpayne@69
|
214
|
jpayne@69
|
215
|
jpayne@69
|
216 5.5.1 (2022-11-03)
|
jpayne@69
|
217 ==================
|
jpayne@69
|
218
|
jpayne@69
|
219 - Add support for final Python 3.11 release.
|
jpayne@69
|
220
|
jpayne@69
|
221
|
jpayne@69
|
222 5.5.0 (2022-10-10)
|
jpayne@69
|
223 ==================
|
jpayne@69
|
224
|
jpayne@69
|
225 - Add support for Python 3.10 and 3.11 (as of 3.11.0rc2).
|
jpayne@69
|
226
|
jpayne@69
|
227 - Add missing Trove classifier showing support for Python 3.9.
|
jpayne@69
|
228
|
jpayne@69
|
229 - Add some more entries to ``zope.interface.interfaces.__all__``.
|
jpayne@69
|
230
|
jpayne@69
|
231 - Disable unsafe math optimizations in C code. See `pull request 262
|
jpayne@69
|
232 <https://github.com/zopefoundation/zope.interface/pull/262>`_.
|
jpayne@69
|
233
|
jpayne@69
|
234
|
jpayne@69
|
235 5.4.0 (2021-04-15)
|
jpayne@69
|
236 ==================
|
jpayne@69
|
237
|
jpayne@69
|
238 - Make the C implementation of the ``__providedBy__`` descriptor stop
|
jpayne@69
|
239 ignoring all errors raised when accessing the instance's
|
jpayne@69
|
240 ``__provides__``. Now it behaves like the Python version and only
|
jpayne@69
|
241 catches ``AttributeError``. The previous behaviour could lead to
|
jpayne@69
|
242 crashing the interpreter in cases of recursion and errors. See
|
jpayne@69
|
243 `issue 239 <https://github.com/zopefoundation/zope.interface/issues>`_.
|
jpayne@69
|
244
|
jpayne@69
|
245 - Update the ``repr()`` and ``str()`` of various objects to be shorter
|
jpayne@69
|
246 and more informative. In many cases, the ``repr()`` is now something
|
jpayne@69
|
247 that can be evaluated to produce an equal object. For example, what
|
jpayne@69
|
248 was previously printed as ``<implementedBy builtins.list>`` is now
|
jpayne@69
|
249 shown as ``classImplements(list, IMutableSequence, IIterable)``. See
|
jpayne@69
|
250 `issue 236 <https://github.com/zopefoundation/zope.interface/issues/236>`_.
|
jpayne@69
|
251
|
jpayne@69
|
252 - Make ``Declaration.__add__`` (as in ``implementedBy(Cls) +
|
jpayne@69
|
253 ISomething``) try harder to preserve a consistent resolution order
|
jpayne@69
|
254 when the two arguments share overlapping pieces of the interface
|
jpayne@69
|
255 inheritance hierarchy. Previously, the right hand side was always
|
jpayne@69
|
256 put at the end of the resolution order, which could easily produce
|
jpayne@69
|
257 invalid orders. See `issue 193
|
jpayne@69
|
258 <https://github.com/zopefoundation/zope.interface/issues/193>`_.
|
jpayne@69
|
259
|
jpayne@69
|
260 5.3.0 (2020-03-21)
|
jpayne@69
|
261 ==================
|
jpayne@69
|
262
|
jpayne@69
|
263 - No changes from 5.3.0a1
|
jpayne@69
|
264
|
jpayne@69
|
265
|
jpayne@69
|
266 5.3.0a1 (2021-03-18)
|
jpayne@69
|
267 ====================
|
jpayne@69
|
268
|
jpayne@69
|
269 - Improve the repr of ``zope.interface.Provides`` to remove ambiguity
|
jpayne@69
|
270 about what is being provided. This is especially helpful diagnosing
|
jpayne@69
|
271 IRO issues.
|
jpayne@69
|
272
|
jpayne@69
|
273 - Allow subclasses of ``BaseAdapterRegistry`` (including
|
jpayne@69
|
274 ``AdapterRegistry`` and ``VerifyingAdapterRegistry``) to have
|
jpayne@69
|
275 control over the data structures. This allows persistent
|
jpayne@69
|
276 implementations such as those based on ZODB to choose more scalable
|
jpayne@69
|
277 options (e.g., BTrees instead of dicts). See `issue 224
|
jpayne@69
|
278 <https://github.com/zopefoundation/zope.interface/issues/224>`_.
|
jpayne@69
|
279
|
jpayne@69
|
280 - Fix a reference counting issue in ``BaseAdapterRegistry`` that could
|
jpayne@69
|
281 lead to references to interfaces being kept around even when all
|
jpayne@69
|
282 utilities/adapters/subscribers providing that interface have been
|
jpayne@69
|
283 removed. This is mostly an issue for persistent implementations.
|
jpayne@69
|
284 Note that this only corrects the issue moving forward, it does not
|
jpayne@69
|
285 solve any already corrupted reference counts. See `issue 227
|
jpayne@69
|
286 <https://github.com/zopefoundation/zope.interface/issues/227>`_.
|
jpayne@69
|
287
|
jpayne@69
|
288 - Add the method ``BaseAdapterRegistry.rebuild()``. This can be used
|
jpayne@69
|
289 to fix the reference counting issue mentioned above, as well as to
|
jpayne@69
|
290 update the data structures when custom data types have changed.
|
jpayne@69
|
291
|
jpayne@69
|
292 - Add the interface method ``IAdapterRegistry.subscribed()`` and
|
jpayne@69
|
293 implementation ``BaseAdapterRegistry.subscribed()`` for querying
|
jpayne@69
|
294 directly registered subscribers. See `issue 230
|
jpayne@69
|
295 <https://github.com/zopefoundation/zope.interface/issues/230>`_.
|
jpayne@69
|
296
|
jpayne@69
|
297 - Add the maintenance method
|
jpayne@69
|
298 ``Components.rebuildUtilityRegistryFromLocalCache()``. Most users
|
jpayne@69
|
299 will not need this, but it can be useful if the ``Components.utilities``
|
jpayne@69
|
300 registry is suspected to be out of sync with the ``Components``
|
jpayne@69
|
301 object itself (this might happen to persistent ``Components``
|
jpayne@69
|
302 implementations in the face of bugs).
|
jpayne@69
|
303
|
jpayne@69
|
304 - Fix the ``Provides`` and ``ClassProvides`` descriptors to stop
|
jpayne@69
|
305 allowing redundant interfaces (those already implemented by the
|
jpayne@69
|
306 underlying class or meta class) to produce an inconsistent
|
jpayne@69
|
307 resolution order. This is similar to the change in ``@implementer``
|
jpayne@69
|
308 in 5.1.0, and resolves inconsistent resolution orders with
|
jpayne@69
|
309 ``zope.proxy`` and ``zope.location``. See `issue 207
|
jpayne@69
|
310 <https://github.com/zopefoundation/zope.interface/issues/207>`_.
|
jpayne@69
|
311
|
jpayne@69
|
312 5.2.0 (2020-11-05)
|
jpayne@69
|
313 ==================
|
jpayne@69
|
314
|
jpayne@69
|
315 - Add documentation section ``Persistency and Equality``
|
jpayne@69
|
316 (`#218 <https://github.com/zopefoundation/zope.interface/issues/218>`_).
|
jpayne@69
|
317
|
jpayne@69
|
318 - Create arm64 wheels.
|
jpayne@69
|
319
|
jpayne@69
|
320 - Add support for Python 3.9.
|
jpayne@69
|
321
|
jpayne@69
|
322
|
jpayne@69
|
323 5.1.2 (2020-10-01)
|
jpayne@69
|
324 ==================
|
jpayne@69
|
325
|
jpayne@69
|
326 - Make sure to call each invariant only once when validating invariants.
|
jpayne@69
|
327 Previously, invariants could be called multiple times because when an
|
jpayne@69
|
328 invariant is defined in an interface, it's found by in all interfaces
|
jpayne@69
|
329 inheriting from that interface. See `pull request 215
|
jpayne@69
|
330 <https://github.com/zopefoundation/zope.interface/pull/215/>`_.
|
jpayne@69
|
331
|
jpayne@69
|
332 5.1.1 (2020-09-30)
|
jpayne@69
|
333 ==================
|
jpayne@69
|
334
|
jpayne@69
|
335 - Fix the method definitions of ``IAdapterRegistry.subscribe``,
|
jpayne@69
|
336 ``subscriptions`` and ``subscribers``. Previously, they all were
|
jpayne@69
|
337 defined to accept a ``name`` keyword argument, but subscribers have
|
jpayne@69
|
338 no names and the implementation of that interface did not accept
|
jpayne@69
|
339 that argument. See `issue 208
|
jpayne@69
|
340 <https://github.com/zopefoundation/zope.interface/issues/208>`_.
|
jpayne@69
|
341
|
jpayne@69
|
342 - Fix a potential reference leak in the C optimizations. Previously,
|
jpayne@69
|
343 applications that dynamically created unique ``Specification``
|
jpayne@69
|
344 objects (e.g., used ``@implementer`` on dynamic classes) could
|
jpayne@69
|
345 notice a growth of small objects over time leading to increased
|
jpayne@69
|
346 garbage collection times. See `issue 216
|
jpayne@69
|
347 <https://github.com/zopefoundation/zope.interface/issues/216>`_.
|
jpayne@69
|
348
|
jpayne@69
|
349 .. caution::
|
jpayne@69
|
350
|
jpayne@69
|
351 This leak could prevent interfaces used as the bases of
|
jpayne@69
|
352 other interfaces from being garbage collected. Those interfaces
|
jpayne@69
|
353 will now be collected.
|
jpayne@69
|
354
|
jpayne@69
|
355 One way in which this would manifest was that ``weakref.ref``
|
jpayne@69
|
356 objects (and things built upon them, like
|
jpayne@69
|
357 ``Weak[Key|Value]Dictionary``) would continue to have access to
|
jpayne@69
|
358 the original object even if there were no other visible
|
jpayne@69
|
359 references to Python and the original object *should* have been
|
jpayne@69
|
360 collected. This could be especially problematic for the
|
jpayne@69
|
361 ``WeakKeyDictionary`` when combined with dynamic or local
|
jpayne@69
|
362 (created in the scope of a function) interfaces, since interfaces
|
jpayne@69
|
363 are hashed based just on their name and module name. See the
|
jpayne@69
|
364 linked issue for an example of a resulting ``KeyError``.
|
jpayne@69
|
365
|
jpayne@69
|
366 Note that such potential errors are not new, they are just once
|
jpayne@69
|
367 again a possibility.
|
jpayne@69
|
368
|
jpayne@69
|
369 5.1.0 (2020-04-08)
|
jpayne@69
|
370 ==================
|
jpayne@69
|
371
|
jpayne@69
|
372 - Make ``@implementer(*iface)`` and ``classImplements(cls, *iface)``
|
jpayne@69
|
373 ignore redundant interfaces. If the class already implements an
|
jpayne@69
|
374 interface through inheritance, it is no longer redeclared
|
jpayne@69
|
375 specifically for *cls*. This solves many instances of inconsistent
|
jpayne@69
|
376 resolution orders, while still allowing the interface to be declared
|
jpayne@69
|
377 for readability and maintenance purposes. See `issue 199
|
jpayne@69
|
378 <https://github.com/zopefoundation/zope.interface/issues/199>`_.
|
jpayne@69
|
379
|
jpayne@69
|
380 - Remove all bare ``except:`` statements. Previously, when accessing
|
jpayne@69
|
381 special attributes such as ``__provides__``, ``__providedBy__``,
|
jpayne@69
|
382 ``__class__`` and ``__conform__``, this package wrapped such access
|
jpayne@69
|
383 in a bare ``except:`` statement, meaning that many errors could pass
|
jpayne@69
|
384 silently; typically this would result in a fallback path being taken
|
jpayne@69
|
385 and sometimes (like with ``providedBy()``) the result would be
|
jpayne@69
|
386 non-sensical. This is especially true when those attributes are
|
jpayne@69
|
387 implemented with descriptors. Now, only ``AttributeError`` is
|
jpayne@69
|
388 caught. This makes errors more obvious.
|
jpayne@69
|
389
|
jpayne@69
|
390 Obviously, this means that some exceptions will be propagated
|
jpayne@69
|
391 differently than before. In particular, ``RuntimeError`` raised by
|
jpayne@69
|
392 Acquisition in the case of circular containment will now be
|
jpayne@69
|
393 propagated. Previously, when adapting such a broken object, a
|
jpayne@69
|
394 ``TypeError`` would be the common result, but now it will be a more
|
jpayne@69
|
395 informative ``RuntimeError``.
|
jpayne@69
|
396
|
jpayne@69
|
397 In addition, ZODB errors like ``POSKeyError`` could now be
|
jpayne@69
|
398 propagated where previously they would ignored by this package.
|
jpayne@69
|
399
|
jpayne@69
|
400 See `issue 200 <https://github.com/zopefoundation/zope.interface/issues/200>`_.
|
jpayne@69
|
401
|
jpayne@69
|
402 - Require that the second argument (*bases*) to ``InterfaceClass`` is
|
jpayne@69
|
403 a tuple. This only matters when directly using ``InterfaceClass`` to
|
jpayne@69
|
404 create new interfaces dynamically. Previously, an individual
|
jpayne@69
|
405 interface was allowed, but did not work correctly. Now it is
|
jpayne@69
|
406 consistent with ``type`` and requires a tuple.
|
jpayne@69
|
407
|
jpayne@69
|
408 - Let interfaces define custom ``__adapt__`` methods. This implements
|
jpayne@69
|
409 the other side of the :pep:`246` adaptation protocol: objects being
|
jpayne@69
|
410 adapted could already implement ``__conform__`` if they know about
|
jpayne@69
|
411 the interface, and now interfaces can implement ``__adapt__`` if
|
jpayne@69
|
412 they know about particular objects. There is no performance penalty
|
jpayne@69
|
413 for interfaces that do not supply custom ``__adapt__`` methods.
|
jpayne@69
|
414
|
jpayne@69
|
415 This includes the ability to add new methods, or override existing
|
jpayne@69
|
416 interface methods using the new ``@interfacemethod`` decorator.
|
jpayne@69
|
417
|
jpayne@69
|
418 See `issue 3 <https://github.com/zopefoundation/zope.interface/issues/3>`_.
|
jpayne@69
|
419
|
jpayne@69
|
420 - Make the internal singleton object returned by APIs like
|
jpayne@69
|
421 ``implementedBy`` and ``directlyProvidedBy`` for objects that
|
jpayne@69
|
422 implement or provide no interfaces more immutable. Previously an
|
jpayne@69
|
423 internal cache could be mutated. See `issue 204
|
jpayne@69
|
424 <https://github.com/zopefoundation/zope.interface/issues/204>`_.
|
jpayne@69
|
425
|
jpayne@69
|
426 5.0.2 (2020-03-30)
|
jpayne@69
|
427 ==================
|
jpayne@69
|
428
|
jpayne@69
|
429 - Ensure that objects that implement no interfaces (such as direct
|
jpayne@69
|
430 subclasses of ``object``) still include ``Interface`` itself in
|
jpayne@69
|
431 their ``__iro___`` and ``__sro___``. This fixes adapter registry
|
jpayne@69
|
432 lookups for such objects when the adapter is registered for
|
jpayne@69
|
433 ``Interface``. See `issue 197
|
jpayne@69
|
434 <https://github.com/zopefoundation/zope.interface/issues/197>`_.
|
jpayne@69
|
435
|
jpayne@69
|
436
|
jpayne@69
|
437 5.0.1 (2020-03-21)
|
jpayne@69
|
438 ==================
|
jpayne@69
|
439
|
jpayne@69
|
440 - Ensure the resolution order for ``InterfaceClass`` is consistent.
|
jpayne@69
|
441 See `issue 192 <https://github.com/zopefoundation/zope.interface/issues/192>`_.
|
jpayne@69
|
442
|
jpayne@69
|
443 - Ensure the resolution order for ``collections.OrderedDict`` is
|
jpayne@69
|
444 consistent on CPython 2. (It was already consistent on Python 3 and PyPy).
|
jpayne@69
|
445
|
jpayne@69
|
446 - Fix the handling of the ``ZOPE_INTERFACE_STRICT_IRO`` environment
|
jpayne@69
|
447 variable. Previously, ``ZOPE_INTERFACE_STRICT_RO`` was read, in
|
jpayne@69
|
448 contrast with the documentation. See `issue 194
|
jpayne@69
|
449 <https://github.com/zopefoundation/zope.interface/issues/194>`_.
|
jpayne@69
|
450
|
jpayne@69
|
451
|
jpayne@69
|
452 5.0.0 (2020-03-19)
|
jpayne@69
|
453 ==================
|
jpayne@69
|
454
|
jpayne@69
|
455 - Make an internal singleton object returned by APIs like
|
jpayne@69
|
456 ``implementedBy`` and ``directlyProvidedBy`` immutable. Previously,
|
jpayne@69
|
457 it was fully mutable and allowed changing its ``__bases___``. That
|
jpayne@69
|
458 could potentially lead to wrong results in pathological corner
|
jpayne@69
|
459 cases. See `issue 158
|
jpayne@69
|
460 <https://github.com/zopefoundation/zope.interface/issues/158>`_.
|
jpayne@69
|
461
|
jpayne@69
|
462 - Support the ``PURE_PYTHON`` environment variable at runtime instead
|
jpayne@69
|
463 of just at wheel build time. A value of 0 forces the C extensions to
|
jpayne@69
|
464 be used (even on PyPy) failing if they aren't present. Any other
|
jpayne@69
|
465 value forces the Python implementation to be used, ignoring the C
|
jpayne@69
|
466 extensions. See `PR 151 <https://github.com/zopefoundation/zope.interface/pull/151>`_.
|
jpayne@69
|
467
|
jpayne@69
|
468 - Cache the result of ``__hash__`` method in ``InterfaceClass`` as a
|
jpayne@69
|
469 speed optimization. The method is called very often (i.e several
|
jpayne@69
|
470 hundred thousand times during Plone 5.2 startup). Because the hash value never
|
jpayne@69
|
471 changes it can be cached. This improves test performance from 0.614s
|
jpayne@69
|
472 down to 0.575s (1.07x faster). In a real world Plone case a reindex
|
jpayne@69
|
473 index came down from 402s to 320s (1.26x faster). See `PR 156
|
jpayne@69
|
474 <https://github.com/zopefoundation/zope.interface/pull/156>`_.
|
jpayne@69
|
475
|
jpayne@69
|
476 - Change the C classes ``SpecificationBase`` and its subclass
|
jpayne@69
|
477 ``ClassProvidesBase`` to store implementation attributes in their structures
|
jpayne@69
|
478 instead of their instance dictionaries. This eliminates the use of
|
jpayne@69
|
479 an undocumented private C API function, and helps make some
|
jpayne@69
|
480 instances require less memory. See `PR 154 <https://github.com/zopefoundation/zope.interface/pull/154>`_.
|
jpayne@69
|
481
|
jpayne@69
|
482 - Reduce memory usage in other ways based on observations of usage
|
jpayne@69
|
483 patterns in Zope (3) and Plone code bases.
|
jpayne@69
|
484
|
jpayne@69
|
485 - Specifications with no dependents are common (more than 50%) so
|
jpayne@69
|
486 avoid allocating a ``WeakKeyDictionary`` unless we need it.
|
jpayne@69
|
487 - Likewise, tagged values are relatively rare, so don't allocate a
|
jpayne@69
|
488 dictionary to hold them until they are used.
|
jpayne@69
|
489 - Use ``__slots___`` or the C equivalent ``tp_members`` in more
|
jpayne@69
|
490 common places. Note that this removes the ability to set arbitrary
|
jpayne@69
|
491 instance variables on certain objects.
|
jpayne@69
|
492 See `PR 155 <https://github.com/zopefoundation/zope.interface/pull/155>`_.
|
jpayne@69
|
493
|
jpayne@69
|
494 The changes in this release resulted in a 7% memory reduction after
|
jpayne@69
|
495 loading about 6,000 modules that define about 2,200 interfaces.
|
jpayne@69
|
496
|
jpayne@69
|
497 .. caution::
|
jpayne@69
|
498
|
jpayne@69
|
499 Details of many private attributes have changed, and external use
|
jpayne@69
|
500 of those private attributes may break. In particular, the
|
jpayne@69
|
501 lifetime and default value of ``_v_attrs`` has changed.
|
jpayne@69
|
502
|
jpayne@69
|
503 - Remove support for hashing uninitialized interfaces. This could only
|
jpayne@69
|
504 be done by subclassing ``InterfaceClass``. This has generated a
|
jpayne@69
|
505 warning since it was first added in 2011 (3.6.5). Please call the
|
jpayne@69
|
506 ``InterfaceClass`` constructor or otherwise set the appropriate
|
jpayne@69
|
507 fields in your subclass before attempting to hash or sort it. See
|
jpayne@69
|
508 `issue 157 <https://github.com/zopefoundation/zope.interface/issues/157>`_.
|
jpayne@69
|
509
|
jpayne@69
|
510 - Remove unneeded override of the ``__hash__`` method from
|
jpayne@69
|
511 ``zope.interface.declarations.Implements``. Watching a reindex index
|
jpayne@69
|
512 process in ZCatalog with on a Py-Spy after 10k samples the time for
|
jpayne@69
|
513 ``.adapter._lookup`` was reduced from 27.5s to 18.8s (~1.5x faster).
|
jpayne@69
|
514 Overall reindex index time shrunk from 369s to 293s (1.26x faster).
|
jpayne@69
|
515 See `PR 161
|
jpayne@69
|
516 <https://github.com/zopefoundation/zope.interface/pull/161>`_.
|
jpayne@69
|
517
|
jpayne@69
|
518 - Make the Python implementation closer to the C implementation by
|
jpayne@69
|
519 ignoring all exceptions, not just ``AttributeError``, during (parts
|
jpayne@69
|
520 of) interface adaptation. See `issue 163
|
jpayne@69
|
521 <https://github.com/zopefoundation/zope.interface/issues/163>`_.
|
jpayne@69
|
522
|
jpayne@69
|
523 - Micro-optimization in ``.adapter._lookup`` , ``.adapter._lookupAll``
|
jpayne@69
|
524 and ``.adapter._subscriptions``: By loading ``components.get`` into
|
jpayne@69
|
525 a local variable before entering the loop a bytcode "LOAD_FAST 0
|
jpayne@69
|
526 (components)" in the loop can be eliminated. In Plone, while running
|
jpayne@69
|
527 all tests, average speedup of the "owntime" of ``_lookup`` is ~5x.
|
jpayne@69
|
528 See `PR 167
|
jpayne@69
|
529 <https://github.com/zopefoundation/zope.interface/pull/167>`_.
|
jpayne@69
|
530
|
jpayne@69
|
531 - Add ``__all__`` declarations to all modules. This helps tools that
|
jpayne@69
|
532 do auto-completion and documentation and results in less cluttered
|
jpayne@69
|
533 results. Wildcard ("*") are not recommended and may be affected. See
|
jpayne@69
|
534 `issue 153
|
jpayne@69
|
535 <https://github.com/zopefoundation/zope.interface/issues/153>`_.
|
jpayne@69
|
536
|
jpayne@69
|
537 - Fix ``verifyClass`` and ``verifyObject`` for builtin types like
|
jpayne@69
|
538 ``dict`` that have methods taking an optional, unnamed argument with
|
jpayne@69
|
539 no default value like ``dict.pop``. On PyPy3, the verification is
|
jpayne@69
|
540 strict, but on PyPy2 (as on all versions of CPython) those methods
|
jpayne@69
|
541 cannot be verified and are ignored. See `issue 118
|
jpayne@69
|
542 <https://github.com/zopefoundation/zope.interface/issues/118>`_.
|
jpayne@69
|
543
|
jpayne@69
|
544 - Update the common interfaces ``IEnumerableMapping``,
|
jpayne@69
|
545 ``IExtendedReadMapping``, ``IExtendedWriteMapping``,
|
jpayne@69
|
546 ``IReadSequence`` and ``IUniqueMemberWriteSequence`` to no longer
|
jpayne@69
|
547 require methods that were removed from Python 3 on Python 3, such as
|
jpayne@69
|
548 ``__setslice___``. Now, ``dict``, ``list`` and ``tuple`` properly
|
jpayne@69
|
549 verify as ``IFullMapping``, ``ISequence`` and ``IReadSequence,``
|
jpayne@69
|
550 respectively on all versions of Python.
|
jpayne@69
|
551
|
jpayne@69
|
552 - Add human-readable ``__str___`` and ``__repr___`` to ``Attribute``
|
jpayne@69
|
553 and ``Method``. These contain the name of the defining interface
|
jpayne@69
|
554 and the attribute. For methods, it also includes the signature.
|
jpayne@69
|
555
|
jpayne@69
|
556 - Change the error strings raised by ``verifyObject`` and
|
jpayne@69
|
557 ``verifyClass``. They now include more human-readable information
|
jpayne@69
|
558 and exclude extraneous lines and spaces. See `issue 170
|
jpayne@69
|
559 <https://github.com/zopefoundation/zope.interface/issues/170>`_.
|
jpayne@69
|
560
|
jpayne@69
|
561 .. caution:: This will break consumers (such as doctests) that
|
jpayne@69
|
562 depended on the exact error messages.
|
jpayne@69
|
563
|
jpayne@69
|
564 - Make ``verifyObject`` and ``verifyClass`` report all errors, if the
|
jpayne@69
|
565 candidate object has multiple detectable violations. Previously they
|
jpayne@69
|
566 reported only the first error. See `issue
|
jpayne@69
|
567 <https://github.com/zopefoundation/zope.interface/issues/171>`_.
|
jpayne@69
|
568
|
jpayne@69
|
569 Like the above, this will break consumers depending on the exact
|
jpayne@69
|
570 output of error messages if more than one error is present.
|
jpayne@69
|
571
|
jpayne@69
|
572 - Add ``zope.interface.common.collections``,
|
jpayne@69
|
573 ``zope.interface.common.numbers``, and ``zope.interface.common.io``.
|
jpayne@69
|
574 These modules define interfaces based on the ABCs defined in the
|
jpayne@69
|
575 standard library ``collections.abc``, ``numbers`` and ``io``
|
jpayne@69
|
576 modules, respectively. Importing these modules will make the
|
jpayne@69
|
577 standard library concrete classes that are registered with those
|
jpayne@69
|
578 ABCs declare the appropriate interface. See `issue 138
|
jpayne@69
|
579 <https://github.com/zopefoundation/zope.interface/issues/138>`_.
|
jpayne@69
|
580
|
jpayne@69
|
581 - Add ``zope.interface.common.builtins``. This module defines
|
jpayne@69
|
582 interfaces of common builtin types, such as ``ITextString`` and
|
jpayne@69
|
583 ``IByteString``, ``IDict``, etc. These interfaces extend the
|
jpayne@69
|
584 appropriate interfaces from ``collections`` and ``numbers``, and the
|
jpayne@69
|
585 standard library classes implement them after importing this module.
|
jpayne@69
|
586 This is intended as a replacement for third-party packages like
|
jpayne@69
|
587 `dolmen.builtins <https://pypi.org/project/dolmen.builtins/>`_.
|
jpayne@69
|
588 See `issue 138 <https://github.com/zopefoundation/zope.interface/issues/138>`_.
|
jpayne@69
|
589
|
jpayne@69
|
590 - Make ``providedBy()`` and ``implementedBy()`` respect ``super``
|
jpayne@69
|
591 objects. For instance, if class ``Derived`` implements ``IDerived``
|
jpayne@69
|
592 and extends ``Base`` which in turn implements ``IBase``, then
|
jpayne@69
|
593 ``providedBy(super(Derived, derived))`` will return ``[IBase]``.
|
jpayne@69
|
594 Previously it would have returned ``[IDerived]`` (in general, it
|
jpayne@69
|
595 would previously have returned whatever would have been returned
|
jpayne@69
|
596 without ``super``).
|
jpayne@69
|
597
|
jpayne@69
|
598 Along with this change, adapter registries will unpack ``super``
|
jpayne@69
|
599 objects into their ``__self___`` before passing it to the factory.
|
jpayne@69
|
600 Together, this means that ``component.getAdapter(super(Derived,
|
jpayne@69
|
601 self), ITarget)`` is now meaningful.
|
jpayne@69
|
602
|
jpayne@69
|
603 See `issue 11 <https://github.com/zopefoundation/zope.interface/issues/11>`_.
|
jpayne@69
|
604
|
jpayne@69
|
605 - Fix a potential interpreter crash in the low-level adapter
|
jpayne@69
|
606 registry lookup functions. See issue 11.
|
jpayne@69
|
607
|
jpayne@69
|
608 - Adopt Python's standard `C3 resolution order
|
jpayne@69
|
609 <https://www.python.org/download/releases/2.3/mro/>`_ to compute the
|
jpayne@69
|
610 ``__iro__`` and ``__sro__`` of interfaces, with tweaks to support
|
jpayne@69
|
611 additional cases that are common in interfaces but disallowed for
|
jpayne@69
|
612 Python classes. Previously, an ad-hoc ordering that made no
|
jpayne@69
|
613 particular guarantees was used.
|
jpayne@69
|
614
|
jpayne@69
|
615 This has many beneficial properties, including the fact that base
|
jpayne@69
|
616 interface and base classes tend to appear near the end of the
|
jpayne@69
|
617 resolution order instead of the beginning. The resolution order in
|
jpayne@69
|
618 general should be more predictable and consistent.
|
jpayne@69
|
619
|
jpayne@69
|
620 .. caution::
|
jpayne@69
|
621 In some cases, especially with complex interface inheritance
|
jpayne@69
|
622 trees or when manually providing or implementing interfaces, the
|
jpayne@69
|
623 resulting IRO may be quite different. This may affect adapter
|
jpayne@69
|
624 lookup.
|
jpayne@69
|
625
|
jpayne@69
|
626 The C3 order enforces some constraints in order to be able to
|
jpayne@69
|
627 guarantee a sensible ordering. Older versions of zope.interface did
|
jpayne@69
|
628 not impose similar constraints, so it was possible to create
|
jpayne@69
|
629 interfaces and declarations that are inconsistent with the C3
|
jpayne@69
|
630 constraints. In that event, zope.interface will still produce a
|
jpayne@69
|
631 resolution order equal to the old order, but it won't be guaranteed
|
jpayne@69
|
632 to be fully C3 compliant. In the future, strict enforcement of C3
|
jpayne@69
|
633 order may be the default.
|
jpayne@69
|
634
|
jpayne@69
|
635 A set of environment variables and module constants allows
|
jpayne@69
|
636 controlling several aspects of this new behaviour. It is possible to
|
jpayne@69
|
637 request warnings about inconsistent resolution orders encountered,
|
jpayne@69
|
638 and even to forbid them. Differences between the C3 resolution order
|
jpayne@69
|
639 and the previous order can be logged, and, in extreme cases, the
|
jpayne@69
|
640 previous order can still be used (this ability will be removed in
|
jpayne@69
|
641 the future). For details, see the documentation for
|
jpayne@69
|
642 ``zope.interface.ro``.
|
jpayne@69
|
643
|
jpayne@69
|
644 - Make inherited tagged values in interfaces respect the resolution
|
jpayne@69
|
645 order (``__iro__``), as method and attribute lookup does. Previously
|
jpayne@69
|
646 tagged values could give inconsistent results. See `issue 190
|
jpayne@69
|
647 <https://github.com/zopefoundation/zope.interface/issues/190>`_.
|
jpayne@69
|
648
|
jpayne@69
|
649 - Add ``getDirectTaggedValue`` (and related methods) to interfaces to
|
jpayne@69
|
650 allow accessing tagged values irrespective of inheritance. See
|
jpayne@69
|
651 `issue 190
|
jpayne@69
|
652 <https://github.com/zopefoundation/zope.interface/issues/190>`_.
|
jpayne@69
|
653
|
jpayne@69
|
654 - Ensure that ``Interface`` is always the last item in the ``__iro__``
|
jpayne@69
|
655 and ``__sro__``. This is usually the case, but if classes that do
|
jpayne@69
|
656 not implement any interfaces are part of a class inheritance
|
jpayne@69
|
657 hierarchy, ``Interface`` could be assigned too high a priority.
|
jpayne@69
|
658 See `issue 8 <https://github.com/zopefoundation/zope.interface/issues/8>`_.
|
jpayne@69
|
659
|
jpayne@69
|
660 - Implement sorting, equality, and hashing in C for ``Interface``
|
jpayne@69
|
661 objects. In micro benchmarks, this makes those operations 40% to 80%
|
jpayne@69
|
662 faster. This translates to a 20% speed up in querying adapters.
|
jpayne@69
|
663
|
jpayne@69
|
664 Note that this changes certain implementation details. In
|
jpayne@69
|
665 particular, ``InterfaceClass`` now has a non-default metaclass, and
|
jpayne@69
|
666 it is enforced that ``__module__`` in instances of
|
jpayne@69
|
667 ``InterfaceClass`` is read-only.
|
jpayne@69
|
668
|
jpayne@69
|
669 See `PR 183 <https://github.com/zopefoundation/zope.interface/pull/183>`_.
|
jpayne@69
|
670
|
jpayne@69
|
671
|
jpayne@69
|
672 4.7.2 (2020-03-10)
|
jpayne@69
|
673 ==================
|
jpayne@69
|
674
|
jpayne@69
|
675 - Remove deprecated use of setuptools features. See `issue 30
|
jpayne@69
|
676 <https://github.com/zopefoundation/zope.interface/issues/30>`_.
|
jpayne@69
|
677
|
jpayne@69
|
678
|
jpayne@69
|
679 4.7.1 (2019-11-11)
|
jpayne@69
|
680 ==================
|
jpayne@69
|
681
|
jpayne@69
|
682 - Use Python 3 syntax in the documentation. See `issue 119
|
jpayne@69
|
683 <https://github.com/zopefoundation/zope.interface/issues/119>`_.
|
jpayne@69
|
684
|
jpayne@69
|
685
|
jpayne@69
|
686 4.7.0 (2019-11-11)
|
jpayne@69
|
687 ==================
|
jpayne@69
|
688
|
jpayne@69
|
689 - Drop support for Python 3.4.
|
jpayne@69
|
690
|
jpayne@69
|
691 - Change ``queryTaggedValue``, ``getTaggedValue``,
|
jpayne@69
|
692 ``getTaggedValueTags`` in interfaces. They now include inherited
|
jpayne@69
|
693 values by following ``__bases__``. See `PR 144
|
jpayne@69
|
694 <https://github.com/zopefoundation/zope.interface/pull/144>`_.
|
jpayne@69
|
695
|
jpayne@69
|
696 .. caution:: This may be a breaking change.
|
jpayne@69
|
697
|
jpayne@69
|
698 - Add support for Python 3.8.
|
jpayne@69
|
699
|
jpayne@69
|
700
|
jpayne@69
|
701 4.6.0 (2018-10-23)
|
jpayne@69
|
702 ==================
|
jpayne@69
|
703
|
jpayne@69
|
704 - Add support for Python 3.7
|
jpayne@69
|
705
|
jpayne@69
|
706 - Fix ``verifyObject`` for class objects with staticmethods on
|
jpayne@69
|
707 Python 3. See `issue 126
|
jpayne@69
|
708 <https://github.com/zopefoundation/zope.interface/issues/126>`_.
|
jpayne@69
|
709
|
jpayne@69
|
710
|
jpayne@69
|
711 4.5.0 (2018-04-19)
|
jpayne@69
|
712 ==================
|
jpayne@69
|
713
|
jpayne@69
|
714 - Drop support for 3.3, avoid accidental dependence breakage via setup.py.
|
jpayne@69
|
715 See `PR 110 <https://github.com/zopefoundation/zope.interface/pull/110>`_.
|
jpayne@69
|
716 - Allow registering and unregistering instance methods as listeners.
|
jpayne@69
|
717 See `issue 12 <https://github.com/zopefoundation/zope.interface/issues/12>`_
|
jpayne@69
|
718 and `PR 102 <https://github.com/zopefoundation/zope.interface/pull/102>`_.
|
jpayne@69
|
719 - Synchronize and simplify zope/__init__.py. See `issue 114
|
jpayne@69
|
720 <https://github.com/zopefoundation/zope.interface/issues/114>`_
|
jpayne@69
|
721
|
jpayne@69
|
722
|
jpayne@69
|
723 4.4.3 (2017-09-22)
|
jpayne@69
|
724 ==================
|
jpayne@69
|
725
|
jpayne@69
|
726 - Avoid exceptions when the ``__annotations__`` attribute is added to
|
jpayne@69
|
727 interface definitions with Python 3.x type hints. See `issue 98
|
jpayne@69
|
728 <https://github.com/zopefoundation/zope.interface/issues/98>`_.
|
jpayne@69
|
729 - Fix the possibility of a rare crash in the C extension when
|
jpayne@69
|
730 deallocating items. See `issue 100
|
jpayne@69
|
731 <https://github.com/zopefoundation/zope.interface/issues/100>`_.
|
jpayne@69
|
732
|
jpayne@69
|
733
|
jpayne@69
|
734 4.4.2 (2017-06-14)
|
jpayne@69
|
735 ==================
|
jpayne@69
|
736
|
jpayne@69
|
737 - Fix a regression storing
|
jpayne@69
|
738 ``zope.component.persistentregistry.PersistentRegistry`` instances.
|
jpayne@69
|
739 See `issue 85 <https://github.com/zopefoundation/zope.interface/issues/85>`_.
|
jpayne@69
|
740
|
jpayne@69
|
741 - Fix a regression that could lead to the utility registration cache
|
jpayne@69
|
742 of ``Components`` getting out of sync. See `issue 93
|
jpayne@69
|
743 <https://github.com/zopefoundation/zope.interface/issues/93>`_.
|
jpayne@69
|
744
|
jpayne@69
|
745 4.4.1 (2017-05-13)
|
jpayne@69
|
746 ==================
|
jpayne@69
|
747
|
jpayne@69
|
748 - Simplify the caching of utility-registration data. In addition to
|
jpayne@69
|
749 simplification, avoids spurious test failures when checking for
|
jpayne@69
|
750 leaks in tests with persistent registries. See `pull 84
|
jpayne@69
|
751 <https://github.com/zopefoundation/zope.interface/pull/84>`_.
|
jpayne@69
|
752
|
jpayne@69
|
753 - Raise ``ValueError`` when non-text names are passed to adapter registry
|
jpayne@69
|
754 methods: prevents corruption of lookup caches.
|
jpayne@69
|
755
|
jpayne@69
|
756 4.4.0 (2017-04-21)
|
jpayne@69
|
757 ==================
|
jpayne@69
|
758
|
jpayne@69
|
759 - Avoid a warning from the C compiler.
|
jpayne@69
|
760 (https://github.com/zopefoundation/zope.interface/issues/71)
|
jpayne@69
|
761
|
jpayne@69
|
762 - Add support for Python 3.6.
|
jpayne@69
|
763
|
jpayne@69
|
764 4.3.3 (2016-12-13)
|
jpayne@69
|
765 ==================
|
jpayne@69
|
766
|
jpayne@69
|
767 - Correct typos and ReST formatting errors in documentation.
|
jpayne@69
|
768
|
jpayne@69
|
769 - Add API documentation for the adapter registry.
|
jpayne@69
|
770
|
jpayne@69
|
771 - Ensure that the ``LICENSE.txt`` file is included in built wheels.
|
jpayne@69
|
772
|
jpayne@69
|
773 - Fix C optimizations broken on Py3k. See the Python bug at:
|
jpayne@69
|
774 http://bugs.python.org/issue15657
|
jpayne@69
|
775 (https://github.com/zopefoundation/zope.interface/issues/60)
|
jpayne@69
|
776
|
jpayne@69
|
777
|
jpayne@69
|
778 4.3.2 (2016-09-05)
|
jpayne@69
|
779 ==================
|
jpayne@69
|
780
|
jpayne@69
|
781 - Fix equality testing of ``implementedBy`` objects and proxies.
|
jpayne@69
|
782 (https://github.com/zopefoundation/zope.interface/issues/55)
|
jpayne@69
|
783
|
jpayne@69
|
784
|
jpayne@69
|
785 4.3.1 (2016-08-31)
|
jpayne@69
|
786 ==================
|
jpayne@69
|
787
|
jpayne@69
|
788 - Support Components subclasses that are not hashable.
|
jpayne@69
|
789 (https://github.com/zopefoundation/zope.interface/issues/53)
|
jpayne@69
|
790
|
jpayne@69
|
791
|
jpayne@69
|
792 4.3.0 (2016-08-31)
|
jpayne@69
|
793 ==================
|
jpayne@69
|
794
|
jpayne@69
|
795 - Add the ability to sort the objects returned by ``implementedBy``.
|
jpayne@69
|
796 This is compatible with the way interface classes sort so they can
|
jpayne@69
|
797 be used together in ordered containers like BTrees.
|
jpayne@69
|
798 (https://github.com/zopefoundation/zope.interface/issues/42)
|
jpayne@69
|
799
|
jpayne@69
|
800 - Make ``setuptools`` a hard dependency of ``setup.py``.
|
jpayne@69
|
801 (https://github.com/zopefoundation/zope.interface/issues/13)
|
jpayne@69
|
802
|
jpayne@69
|
803 - Change a linear algorithm (O(n)) in ``Components.registerUtility`` and
|
jpayne@69
|
804 ``Components.unregisterUtility`` into a dictionary lookup (O(1)) for
|
jpayne@69
|
805 hashable components. This substantially improves the time taken to
|
jpayne@69
|
806 manipulate utilities in large registries at the cost of some
|
jpayne@69
|
807 additional memory usage. (https://github.com/zopefoundation/zope.interface/issues/46)
|
jpayne@69
|
808
|
jpayne@69
|
809
|
jpayne@69
|
810 4.2.0 (2016-06-10)
|
jpayne@69
|
811 ==================
|
jpayne@69
|
812
|
jpayne@69
|
813 - Add support for Python 3.5
|
jpayne@69
|
814
|
jpayne@69
|
815 - Drop support for Python 2.6 and 3.2.
|
jpayne@69
|
816
|
jpayne@69
|
817
|
jpayne@69
|
818 4.1.3 (2015-10-05)
|
jpayne@69
|
819 ==================
|
jpayne@69
|
820
|
jpayne@69
|
821 - Fix installation without a C compiler on Python 3.5
|
jpayne@69
|
822 (https://github.com/zopefoundation/zope.interface/issues/24).
|
jpayne@69
|
823
|
jpayne@69
|
824
|
jpayne@69
|
825 4.1.2 (2014-12-27)
|
jpayne@69
|
826 ==================
|
jpayne@69
|
827
|
jpayne@69
|
828 - Add support for PyPy3.
|
jpayne@69
|
829
|
jpayne@69
|
830 - Remove unittest assertions deprecated in Python3.x.
|
jpayne@69
|
831
|
jpayne@69
|
832 - Add ``zope.interface.document.asReStructuredText``, which formats the
|
jpayne@69
|
833 generated text for an interface using ReST double-backtick markers.
|
jpayne@69
|
834
|
jpayne@69
|
835
|
jpayne@69
|
836 4.1.1 (2014-03-19)
|
jpayne@69
|
837 ==================
|
jpayne@69
|
838
|
jpayne@69
|
839 - Add support for Python 3.4.
|
jpayne@69
|
840
|
jpayne@69
|
841
|
jpayne@69
|
842 4.1.0 (2014-02-05)
|
jpayne@69
|
843 ==================
|
jpayne@69
|
844
|
jpayne@69
|
845 - Update ``boostrap.py`` to version 2.2.
|
jpayne@69
|
846
|
jpayne@69
|
847 - Add ``@named(name)`` declaration, that specifies the component name, so it
|
jpayne@69
|
848 does not have to be passed in during registration.
|
jpayne@69
|
849
|
jpayne@69
|
850
|
jpayne@69
|
851 4.0.5 (2013-02-28)
|
jpayne@69
|
852 ==================
|
jpayne@69
|
853
|
jpayne@69
|
854 - Fix a bug where a decorated method caused false positive failures on
|
jpayne@69
|
855 ``verifyClass()``.
|
jpayne@69
|
856
|
jpayne@69
|
857
|
jpayne@69
|
858 4.0.4 (2013-02-21)
|
jpayne@69
|
859 ==================
|
jpayne@69
|
860
|
jpayne@69
|
861 - Fix a bug that was revealed by porting zope.traversing. During a loop, the
|
jpayne@69
|
862 loop body modified a weakref dict causing a ``RuntimeError`` error.
|
jpayne@69
|
863
|
jpayne@69
|
864 4.0.3 (2012-12-31)
|
jpayne@69
|
865 ==================
|
jpayne@69
|
866
|
jpayne@69
|
867 - Fleshed out PyPI Trove classifiers.
|
jpayne@69
|
868
|
jpayne@69
|
869 4.0.2 (2012-11-21)
|
jpayne@69
|
870 ==================
|
jpayne@69
|
871
|
jpayne@69
|
872 - Add support for Python 3.3.
|
jpayne@69
|
873
|
jpayne@69
|
874 - Restored ability to install the package in the absence of ``setuptools``.
|
jpayne@69
|
875
|
jpayne@69
|
876 - LP #1055223: Fix test which depended on dictionary order and failed randomly
|
jpayne@69
|
877 in Python 3.3.
|
jpayne@69
|
878
|
jpayne@69
|
879 4.0.1 (2012-05-22)
|
jpayne@69
|
880 ==================
|
jpayne@69
|
881
|
jpayne@69
|
882 - Drop explicit ``DeprecationWarnings`` for "class advice" APIS (these
|
jpayne@69
|
883 APIs are still deprecated under Python 2.x, and still raise an exception
|
jpayne@69
|
884 under Python 3.x, but no longer cause a warning to be emitted under
|
jpayne@69
|
885 Python 2.x).
|
jpayne@69
|
886
|
jpayne@69
|
887 4.0.0 (2012-05-16)
|
jpayne@69
|
888 ==================
|
jpayne@69
|
889
|
jpayne@69
|
890 - Automated build of Sphinx HTML docs and running doctest snippets via tox.
|
jpayne@69
|
891
|
jpayne@69
|
892 - Deprecate the "class advice" APIs from ``zope.interface.declarations``:
|
jpayne@69
|
893 ``implements``, ``implementsOnly``, and ``classProvides``. In their place,
|
jpayne@69
|
894 prefer the equivalent class decorators: ``@implementer``,
|
jpayne@69
|
895 ``@implementer_only``, and ``@provider``. Code which uses the deprecated
|
jpayne@69
|
896 APIs will not work as expected under Py3k.
|
jpayne@69
|
897
|
jpayne@69
|
898 - Remove use of '2to3' and associated fixers when installing under Py3k.
|
jpayne@69
|
899 The code is now in a "compatible subset" which supports Python 2.6, 2.7,
|
jpayne@69
|
900 and 3.2, including PyPy 1.8 (the version compatible with the 2.7 language
|
jpayne@69
|
901 spec).
|
jpayne@69
|
902
|
jpayne@69
|
903 - Drop explicit support for Python 2.4 / 2.5 / 3.1.
|
jpayne@69
|
904
|
jpayne@69
|
905 - Add support for PyPy.
|
jpayne@69
|
906
|
jpayne@69
|
907 - Add support for continuous integration using ``tox`` and ``jenkins``.
|
jpayne@69
|
908
|
jpayne@69
|
909 - Add 'setup.py dev' alias (runs ``setup.py develop`` plus installs
|
jpayne@69
|
910 ``nose`` and ``coverage``).
|
jpayne@69
|
911
|
jpayne@69
|
912 - Add 'setup.py docs' alias (installs ``Sphinx`` and dependencies).
|
jpayne@69
|
913
|
jpayne@69
|
914 - Replace all unittest coverage previously accomplished via doctests with
|
jpayne@69
|
915 unittests. The doctests have been moved into a ``docs`` section, managed
|
jpayne@69
|
916 as a Sphinx collection.
|
jpayne@69
|
917
|
jpayne@69
|
918 - LP #910987: Ensure that the semantics of the ``lookup`` method of
|
jpayne@69
|
919 ``zope.interface.adapter.LookupBase`` are the same in both the C and
|
jpayne@69
|
920 Python implementations.
|
jpayne@69
|
921
|
jpayne@69
|
922 - LP #900906: Avoid exceptions due to tne new ``__qualname__`` attribute
|
jpayne@69
|
923 added in Python 3.3 (see PEP 3155 for rationale). Thanks to Antoine
|
jpayne@69
|
924 Pitrou for the patch.
|
jpayne@69
|
925
|
jpayne@69
|
926 3.8.0 (2011-09-22)
|
jpayne@69
|
927 ==================
|
jpayne@69
|
928
|
jpayne@69
|
929 - New module ``zope.interface.registry``. This is code moved from
|
jpayne@69
|
930 ``zope.component.registry`` which implements a basic nonperistent component
|
jpayne@69
|
931 registry as ``zope.interface.registry.Components``. This class was moved
|
jpayne@69
|
932 from ``zope.component`` to make porting systems (such as Pyramid) that rely
|
jpayne@69
|
933 only on a basic component registry to Python 3 possible without needing to
|
jpayne@69
|
934 port the entirety of the ``zope.component`` package. Backwards
|
jpayne@69
|
935 compatibility import shims have been left behind in ``zope.component``, so
|
jpayne@69
|
936 this change will not break any existing code.
|
jpayne@69
|
937
|
jpayne@69
|
938 - New ``tests_require`` dependency: ``zope.event`` to test events sent by
|
jpayne@69
|
939 Components implementation. The ``zope.interface`` package does not have a
|
jpayne@69
|
940 hard dependency on ``zope.event``, but if ``zope.event`` is importable, it
|
jpayne@69
|
941 will send component registration events when methods of an instance of
|
jpayne@69
|
942 ``zope.interface.registry.Components`` are called.
|
jpayne@69
|
943
|
jpayne@69
|
944 - New interfaces added to support ``zope.interface.registry.Components``
|
jpayne@69
|
945 addition: ``ComponentLookupError``, ``Invalid``, ``IObjectEvent``,
|
jpayne@69
|
946 ``ObjectEvent``, ``IComponentLookup``, ``IRegistration``,
|
jpayne@69
|
947 ``IUtilityRegistration``, ``IAdapterRegistration``,
|
jpayne@69
|
948 ``ISubscriptionAdapterRegistration``, ``IHandlerRegistration``,
|
jpayne@69
|
949 ``IRegistrationEvent``, ``RegistrationEvent``, ``IRegistered``,
|
jpayne@69
|
950 ``Registered``, ``IUnregistered``, ``Unregistered``,
|
jpayne@69
|
951 ``IComponentRegistry``, and ``IComponents``.
|
jpayne@69
|
952
|
jpayne@69
|
953 - No longer Python 2.4 compatible (tested under 2.5, 2.6, 2.7, and 3.2).
|
jpayne@69
|
954
|
jpayne@69
|
955 3.7.0 (2011-08-13)
|
jpayne@69
|
956 ==================
|
jpayne@69
|
957
|
jpayne@69
|
958 - Move changes from 3.6.2 - 3.6.5 to a new 3.7.x release line.
|
jpayne@69
|
959
|
jpayne@69
|
960 3.6.7 (2011-08-20)
|
jpayne@69
|
961 ==================
|
jpayne@69
|
962
|
jpayne@69
|
963 - Fix sporadic failures on x86-64 platforms in tests of rich comparisons
|
jpayne@69
|
964 of interfaces.
|
jpayne@69
|
965
|
jpayne@69
|
966 3.6.6 (2011-08-13)
|
jpayne@69
|
967 ==================
|
jpayne@69
|
968
|
jpayne@69
|
969 - LP #570942: Now correctly compare interfaces from different modules but
|
jpayne@69
|
970 with the same names.
|
jpayne@69
|
971
|
jpayne@69
|
972 N.B.: This is a less intrusive / destabilizing fix than the one applied in
|
jpayne@69
|
973 3.6.3: we only fix the underlying cmp-alike function, rather than adding
|
jpayne@69
|
974 the other "rich comparison" functions.
|
jpayne@69
|
975
|
jpayne@69
|
976 - Revert to software as released with 3.6.1 for "stable" 3.6 release branch.
|
jpayne@69
|
977
|
jpayne@69
|
978 3.6.5 (2011-08-11)
|
jpayne@69
|
979 ==================
|
jpayne@69
|
980
|
jpayne@69
|
981 - LP #811792: work around buggy behavior in some subclasses of
|
jpayne@69
|
982 ``zope.interface.interface.InterfaceClass``, which invoke ``__hash__``
|
jpayne@69
|
983 before initializing ``__module__`` and ``__name__``. The workaround
|
jpayne@69
|
984 returns a fixed constant hash in such cases, and issues a ``UserWarning``.
|
jpayne@69
|
985
|
jpayne@69
|
986 - LP #804832: Under PyPy, ``zope.interface`` should not build its C
|
jpayne@69
|
987 extension. Also, prevent attempting to build it under Jython.
|
jpayne@69
|
988
|
jpayne@69
|
989 - Add a tox.ini for easier xplatform testing.
|
jpayne@69
|
990
|
jpayne@69
|
991 - Fix testing deprecation warnings issued when tested under Py3K.
|
jpayne@69
|
992
|
jpayne@69
|
993 3.6.4 (2011-07-04)
|
jpayne@69
|
994 ==================
|
jpayne@69
|
995
|
jpayne@69
|
996 - LP 804951: InterfaceClass instances were unhashable under Python 3.x.
|
jpayne@69
|
997
|
jpayne@69
|
998 3.6.3 (2011-05-26)
|
jpayne@69
|
999 ==================
|
jpayne@69
|
1000
|
jpayne@69
|
1001 - LP #570942: Now correctly compare interfaces from different modules but
|
jpayne@69
|
1002 with the same names.
|
jpayne@69
|
1003
|
jpayne@69
|
1004 3.6.2 (2011-05-17)
|
jpayne@69
|
1005 ==================
|
jpayne@69
|
1006
|
jpayne@69
|
1007 - Moved detailed documentation out-of-line from PyPI page, linking instead to
|
jpayne@69
|
1008 http://docs.zope.org/zope.interface .
|
jpayne@69
|
1009
|
jpayne@69
|
1010 - Fixes for small issues when running tests under Python 3.2 using
|
jpayne@69
|
1011 ``zope.testrunner``.
|
jpayne@69
|
1012
|
jpayne@69
|
1013 - LP # 675064: Specify return value type for C optimizations module init
|
jpayne@69
|
1014 under Python 3: undeclared value caused warnings, and segfaults on some
|
jpayne@69
|
1015 64 bit architectures.
|
jpayne@69
|
1016
|
jpayne@69
|
1017 - setup.py now raises RuntimeError if you don't have Distutils installed when
|
jpayne@69
|
1018 running under Python 3.
|
jpayne@69
|
1019
|
jpayne@69
|
1020 3.6.1 (2010-05-03)
|
jpayne@69
|
1021 ==================
|
jpayne@69
|
1022
|
jpayne@69
|
1023 - A non-ASCII character in the changelog made 3.6.0 uninstallable on
|
jpayne@69
|
1024 Python 3 systems with another default encoding than UTF-8.
|
jpayne@69
|
1025
|
jpayne@69
|
1026 - Fix compiler warnings under GCC 4.3.3.
|
jpayne@69
|
1027
|
jpayne@69
|
1028 3.6.0 (2010-04-29)
|
jpayne@69
|
1029 ==================
|
jpayne@69
|
1030
|
jpayne@69
|
1031 - LP #185974: Clear the cache used by ``Specificaton.get`` inside
|
jpayne@69
|
1032 ``Specification.changed``. Thanks to Jacob Holm for the patch.
|
jpayne@69
|
1033
|
jpayne@69
|
1034 - Add support for Python 3.1. Contributors:
|
jpayne@69
|
1035
|
jpayne@69
|
1036 Lennart Regebro
|
jpayne@69
|
1037 Martin v Loewis
|
jpayne@69
|
1038 Thomas Lotze
|
jpayne@69
|
1039 Wolfgang Schnerring
|
jpayne@69
|
1040
|
jpayne@69
|
1041 The 3.1 support is completely backwards compatible. However, the implements
|
jpayne@69
|
1042 syntax used under Python 2.X does not work under 3.X, since it depends on
|
jpayne@69
|
1043 how metaclasses are implemented and this has changed. Instead it now supports
|
jpayne@69
|
1044 a decorator syntax (also under Python 2.X)::
|
jpayne@69
|
1045
|
jpayne@69
|
1046 class Foo:
|
jpayne@69
|
1047 implements(IFoo)
|
jpayne@69
|
1048 ...
|
jpayne@69
|
1049
|
jpayne@69
|
1050 can now also be written::
|
jpayne@69
|
1051
|
jpayne@69
|
1052 @implementer(IFoo):
|
jpayne@69
|
1053 class Foo:
|
jpayne@69
|
1054 ...
|
jpayne@69
|
1055
|
jpayne@69
|
1056 There are 2to3 fixers available to do this change automatically in the
|
jpayne@69
|
1057 zope.fixers package.
|
jpayne@69
|
1058
|
jpayne@69
|
1059 - Python 2.3 is no longer supported.
|
jpayne@69
|
1060
|
jpayne@69
|
1061
|
jpayne@69
|
1062 3.5.4 (2009-12-23)
|
jpayne@69
|
1063 ==================
|
jpayne@69
|
1064
|
jpayne@69
|
1065 - Use the standard Python doctest module instead of zope.testing.doctest, which
|
jpayne@69
|
1066 has been deprecated.
|
jpayne@69
|
1067
|
jpayne@69
|
1068
|
jpayne@69
|
1069 3.5.3 (2009-12-08)
|
jpayne@69
|
1070 ==================
|
jpayne@69
|
1071
|
jpayne@69
|
1072 - Fix an edge case: make providedBy() work when a class has '__provides__' in
|
jpayne@69
|
1073 its __slots__ (see http://thread.gmane.org/gmane.comp.web.zope.devel/22490)
|
jpayne@69
|
1074
|
jpayne@69
|
1075
|
jpayne@69
|
1076 3.5.2 (2009-07-01)
|
jpayne@69
|
1077 ==================
|
jpayne@69
|
1078
|
jpayne@69
|
1079 - BaseAdapterRegistry.unregister, unsubscribe: Remove empty portions of
|
jpayne@69
|
1080 the data structures when something is removed. This avoids leaving
|
jpayne@69
|
1081 references to global objects (interfaces) that may be slated for
|
jpayne@69
|
1082 removal from the calling application.
|
jpayne@69
|
1083
|
jpayne@69
|
1084
|
jpayne@69
|
1085 3.5.1 (2009-03-18)
|
jpayne@69
|
1086 ==================
|
jpayne@69
|
1087
|
jpayne@69
|
1088 - verifyObject: use getattr instead of hasattr to test for object attributes
|
jpayne@69
|
1089 in order to let exceptions other than AttributeError raised by properties
|
jpayne@69
|
1090 propagate to the caller
|
jpayne@69
|
1091
|
jpayne@69
|
1092 - Add Sphinx-based documentation building to the package buildout
|
jpayne@69
|
1093 configuration. Use the ``bin/docs`` command after buildout.
|
jpayne@69
|
1094
|
jpayne@69
|
1095 - Improve package description a bit. Unify changelog entries formatting.
|
jpayne@69
|
1096
|
jpayne@69
|
1097 - Change package's mailing list address to zope-dev at zope.org as
|
jpayne@69
|
1098 zope3-dev at zope.org is now retired.
|
jpayne@69
|
1099
|
jpayne@69
|
1100
|
jpayne@69
|
1101 3.5.0 (2008-10-26)
|
jpayne@69
|
1102 ==================
|
jpayne@69
|
1103
|
jpayne@69
|
1104 - Fix declaration of _zope_interface_coptimizations, it's not a top level
|
jpayne@69
|
1105 package.
|
jpayne@69
|
1106
|
jpayne@69
|
1107 - Add a DocTestSuite for odd.py module, so their tests are run.
|
jpayne@69
|
1108
|
jpayne@69
|
1109 - Allow to bootstrap on Jython.
|
jpayne@69
|
1110
|
jpayne@69
|
1111 - Fix https://bugs.launchpad.net/zope3/3.3/+bug/98388: ISpecification
|
jpayne@69
|
1112 was missing a declaration for __iro__.
|
jpayne@69
|
1113
|
jpayne@69
|
1114 - Add optional code optimizations support, which allows the building
|
jpayne@69
|
1115 of C code optimizations to fail (Jython).
|
jpayne@69
|
1116
|
jpayne@69
|
1117 - Replace `_flatten` with a non-recursive implementation, effectively making
|
jpayne@69
|
1118 it 3x faster.
|
jpayne@69
|
1119
|
jpayne@69
|
1120
|
jpayne@69
|
1121 3.4.1 (2007-10-02)
|
jpayne@69
|
1122 ==================
|
jpayne@69
|
1123
|
jpayne@69
|
1124 - Fix a setup bug that prevented installation from source on systems
|
jpayne@69
|
1125 without setuptools.
|
jpayne@69
|
1126
|
jpayne@69
|
1127
|
jpayne@69
|
1128 3.4.0 (2007-07-19)
|
jpayne@69
|
1129 ==================
|
jpayne@69
|
1130
|
jpayne@69
|
1131 - Final release for 3.4.0.
|
jpayne@69
|
1132
|
jpayne@69
|
1133
|
jpayne@69
|
1134 3.4.0b3 (2007-05-22)
|
jpayne@69
|
1135 ====================
|
jpayne@69
|
1136
|
jpayne@69
|
1137
|
jpayne@69
|
1138 - When checking whether an object is already registered, use identity
|
jpayne@69
|
1139 comparison, to allow adding registering with picky custom comparison methods.
|
jpayne@69
|
1140
|
jpayne@69
|
1141
|
jpayne@69
|
1142 3.3.0.1 (2007-01-03)
|
jpayne@69
|
1143 ====================
|
jpayne@69
|
1144
|
jpayne@69
|
1145 - Made a reference to OverflowWarning, which disappeared in Python
|
jpayne@69
|
1146 2.5, conditional.
|
jpayne@69
|
1147
|
jpayne@69
|
1148
|
jpayne@69
|
1149 3.3.0 (2007/01/03)
|
jpayne@69
|
1150 ==================
|
jpayne@69
|
1151
|
jpayne@69
|
1152 New Features
|
jpayne@69
|
1153 ------------
|
jpayne@69
|
1154
|
jpayne@69
|
1155 - Refactor the adapter-lookup algorithim to make it much simpler and faster.
|
jpayne@69
|
1156
|
jpayne@69
|
1157 Also, implement more of the adapter-lookup logic in C, making
|
jpayne@69
|
1158 debugging of application code easier, since there is less
|
jpayne@69
|
1159 infrastructre code to step through.
|
jpayne@69
|
1160
|
jpayne@69
|
1161 - Treat objects without interface declarations as if they
|
jpayne@69
|
1162 declared that they provide ``zope.interface.Interface``.
|
jpayne@69
|
1163
|
jpayne@69
|
1164 - Add a number of richer new adapter-registration interfaces
|
jpayne@69
|
1165 that provide greater control and introspection.
|
jpayne@69
|
1166
|
jpayne@69
|
1167 - Add a new interface decorator to zope.interface that allows the
|
jpayne@69
|
1168 setting of tagged values on an interface at definition time (see
|
jpayne@69
|
1169 zope.interface.taggedValue).
|
jpayne@69
|
1170
|
jpayne@69
|
1171 Bug Fixes
|
jpayne@69
|
1172 ---------
|
jpayne@69
|
1173
|
jpayne@69
|
1174 - A bug in multi-adapter lookup sometimes caused incorrect adapters to
|
jpayne@69
|
1175 be returned.
|
jpayne@69
|
1176
|
jpayne@69
|
1177
|
jpayne@69
|
1178 3.2.0.2 (2006-04-15)
|
jpayne@69
|
1179 ====================
|
jpayne@69
|
1180
|
jpayne@69
|
1181 - Fix packaging bug: 'package_dir' must be a *relative* path.
|
jpayne@69
|
1182
|
jpayne@69
|
1183
|
jpayne@69
|
1184 3.2.0.1 (2006-04-14)
|
jpayne@69
|
1185 ====================
|
jpayne@69
|
1186
|
jpayne@69
|
1187 - Packaging change: suppress inclusion of 'setup.cfg' in 'sdist' builds.
|
jpayne@69
|
1188
|
jpayne@69
|
1189
|
jpayne@69
|
1190 3.2.0 (2006-01-05)
|
jpayne@69
|
1191 ==================
|
jpayne@69
|
1192
|
jpayne@69
|
1193 - Corresponds to the version of the zope.interface package shipped as part of
|
jpayne@69
|
1194 the Zope 3.2.0 release.
|
jpayne@69
|
1195
|
jpayne@69
|
1196
|
jpayne@69
|
1197 3.1.0 (2005-10-03)
|
jpayne@69
|
1198 ==================
|
jpayne@69
|
1199
|
jpayne@69
|
1200 - Corresponds to the version of the zope.interface package shipped as part of
|
jpayne@69
|
1201 the Zope 3.1.0 release.
|
jpayne@69
|
1202
|
jpayne@69
|
1203 - Made attribute resolution order consistent with component lookup order,
|
jpayne@69
|
1204 i.e. new-style class MRO semantics.
|
jpayne@69
|
1205
|
jpayne@69
|
1206 - Deprecate 'isImplementedBy' and 'isImplementedByInstancesOf' APIs in
|
jpayne@69
|
1207 favor of 'implementedBy' and 'providedBy'.
|
jpayne@69
|
1208
|
jpayne@69
|
1209
|
jpayne@69
|
1210 3.0.1 (2005-07-27)
|
jpayne@69
|
1211 ==================
|
jpayne@69
|
1212
|
jpayne@69
|
1213 - Corresponds to the version of the zope.interface package shipped as part of
|
jpayne@69
|
1214 the Zope X3.0.1 release.
|
jpayne@69
|
1215
|
jpayne@69
|
1216 - Fix a bug reported by James Knight, which caused adapter registries
|
jpayne@69
|
1217 to fail occasionally to reflect declaration changes.
|
jpayne@69
|
1218
|
jpayne@69
|
1219
|
jpayne@69
|
1220 3.0.0 (2004-11-07)
|
jpayne@69
|
1221 ==================
|
jpayne@69
|
1222
|
jpayne@69
|
1223 - Corresponds to the version of the zope.interface package shipped as part of
|
jpayne@69
|
1224 the Zope X3.0.0 release.
|