Skip to content

v8.0.0

Compare
Choose a tag to compare
@tim-mitchell tim-mitchell released this 15 Nov 23:58
· 7 commits to master since this release

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_implicit parameter to provided_by (it was pointless).
  • Removed pure_interface.dataclass decorator in favour of supporting decorator from standard library.
  • Added mypy plugin.