Releases: seequent/pure_interface
v8.3.0
v8.2.0
Adds support for python 3.14
drops support for python 3.9
v8.1.0
v8.0.4
Runs tests on python 3.13
dropped 3.8.
v8.0.3
Adds support for python 3.13
v8.0.2
v8.0.1
Fixes bug when dataclass decorator is used with property implementation of an attribute.
v8.0.0
Version 8.0 is not backwards compatible with version 7.x.
The way concrete types are created has changed to be in line with typing.Protocol. This also made writing a mypy plugin easier (maybe even possible).
As per Protocols, a class now has to directly inherit from Interface to be considered an interface type, this was not the case in previous versions.
This also removes the annoying idiom of concrete classes being created with object in the bases list.
Given
class MyInterface(Interface):
...in version 7.x and earlier
class SubInterface(MyInterface):
...
class Concrete(MyInterface, object):
....however in version 8.0
class SubInterface(MyInterface, Interface):
...
class Concrete(MyInterface):
....To assist in migrating existing code a simple script for listing interface classes is attached.
Other changes:
- Removed
allow_implicitparameter to provided_by (it was pointless). - Removed
pure_interface.dataclassdecorator in favour of supporting decorator from standard library. - Added mypy plugin.
v7.3.0
Adds sub_interface_of decorator.
Drops official support for Python 3.7
Adds py.typed marker file for type-hinting.
Interfaces may now subclass typing.Generic.
v7.1.0
Removed deprecated base class mro fixing.
Fixed generic classes breaking type_is_interface.
Fixed fallback delegates accidentally creating interface attributes on sub-classes.