Tue Apr 14 09:12:36 UTC 2020 - Tomáš Chvátal <tchvatal@suse.com>
- Update to 5.1.0:
* Make @implementer(*iface) and classImplements(cls, *iface) ignore redundant interfaces. If the class already implements an interface through inheritance, it is no longer redeclared specifically for cls. This solves many instances of inconsistent resolution orders, while still allowing the interface to be declared for readability and maintenance purposes. See issue 199.
* Remove all bare except: statements. Previously, when accessing special attributes such as __provides__, __providedBy__, __class__ and __conform__, this package wrapped such access in a bare except: statement, meaning that many errors could pass silently; typically this would result in a fallback path being taken and sometimes (like with providedBy()) the result would be non-sensical. This is especially true when those attributes are implemented with descriptors. Now, only AttributeError is caught. This makes errors more obvious.
* In addition, ZODB errors like POSKeyError could now be propagated where previously they would ignored by this package.
* Require that the second argument (bases) to InterfaceClass is a tuple. This only matters when directly using InterfaceClass to create new interfaces dynamically. Previously, an individual interface was allowed, but did not work correctly. Now it is consistent with type and requires a tuple.
* Let interfaces define custom __adapt__ methods. This implements the other side of the PEP 246 adaptation protocol: objects being adapted could already implement __conform__ if they know about the interface, and now interfaces can implement __adapt__ if they know about particular objects. There is no performance penalty for interfaces that do not supply custom __adapt__ methods.
* Make the internal singleton object returned by APIs like implementedBy and directlyProvidedBy for objects that implement or provide no interfaces more immutable. Previously an internal cache could be mutated. See issue 204.
* Fix a regression storing zope.component.persistentregistry.PersistentRegistry instances. See issue 85.
* Fix a regression that could lead to the utility registration cache of Components getting out of sync. See issue 93.
- Update to 4.4.1
* Simplify the caching of utility-registration data. In addition to simplification, avoids spurious test failures when checking for leaks in tests with persistent registries. See pull 84.
* Raise ValueError when non-text names are passed to adapter registry methods: prevents corruption of lookup caches.
- Update to 4.4.0
* Avoid a warning from the C compiler. (https://github.com/zopefoundation/zope.interface/issues/71)
* Add support for Python 3.6.
- Update to 4.3.3
* Correct typos and ReST formatting errors in documentation.
* Add API documentation for the adapter registry.
* Ensure that the LICENSE.txt file is included in built wheels.
* Fix C optimizations broken on Py3k. See the Python bug at: http://bugs.python.org/issue15657 (https://github.com/zopefoundation/zope.interface/issues/60)
- Update to 4.3.2
* Fix equality testing of implementedBy objects and proxies. (https://github.com/zopefoundation/zope.interface/issues/55)
Sat Oct 13 21:42:08 CST 2012 - douglarek@outlook.com
- Fix spec bugs
- Updated to 4.0.1
* Dropped explicit DeprecationWarnings for "class advice" APIS (these APIs are still deprecated under Python 2.x, and still raise an exception under Python 3.x, but no longer cause a warning to be emitted under Python 2.x).
* Automated build of Sphinx HTML docs and running doctest snippets via tox.
* Deprecated the "class advice" APIs from zope.interface.declarations: implements, implementsOnly, and classProvides. In their place, prefer the equivalent class decorators: @implementer, @implementer_only, and @provider. Code which uses the deprecated APIs will not work as expected under Py3k.
* Removed use of '2to3' and associated fixers when installing under Py3k. The code is now in a "compatible subset" which supports Python 2.6, 2.7, and 3.2, including PyPy 1.8 (the version compatible with the 2.7 language spec).
* Dropped explicit support for Python 2.4 / 2.5 / 3.1.
* Added support for PyPy.
* Added support for continuous integration using tox and jenkins.
* Added 'setup.py dev' alias (runs setup.py develop plus installs nose and coverage).
* Added 'setup.py docs' alias (installs Sphinx and dependencies).
* Replaced all unittest coverage previously accomplished via doctests with unittests. The doctests have been moved into a docs section, managed as a Sphinx collection.
* LP #910987: Ensure that the semantics of the lookup method of zope.interface.adapter.LookupBase are the same in both the C and Python implementations.
* LP #900906: Avoid exceptions due to tne new __qualname__ attribute added in Python 3.3 (see PEP 3155 for rationale). Thanks to Antoine Pitrou for the patch.