dry-python/classes

Multiple `Supports` are not added to a single type

sobolevn opened this issue · 0 comments

This code:

from classes import AssociatedType, Supports, typeclass

class A(AssociatedType):
    ...

class B(AssociatedType):
    ...

@typeclass(A)
def one(instance) -> bool:
    ...

@one.instance(int)
def _one_int(instance: int) -> bool:
    ...

@typeclass(B)
def two(instance) -> bool:
    ...

@two.instance(int)
def _two_int(instance: int) -> bool:
    ...


a: Supports[A] = 1
b: Supports[B] = 1

does not work:

ex.py:35: error: Incompatible types in assignment (expression has type "int", variable has type "Supports[B]")

This happens because of this line:

if supports_spec.type not in instance_type.type.mro:

We only add one Supports type to each instance.