-
- Notifications
You must be signed in to change notification settings - Fork 29
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
This code does not work:
from classes import typeclass class Meta(type): def __instancecheck__(self, other) -> bool: return other == 1 class Some(object, metaclass=Meta): ... @typeclass def some(instance) -> bool: ... @some.instance(Some) def _some_some(instance: Some) -> bool: return True print(some(1)) # NotImplementedError: Missing matched typeclass instance for type: int
But, it should! For example, phantom-types
use this method: https://github.com/antonagestam/phantom-types/blob/main/phantom/base.py#L28-L43
If we want to support them - we would need this feature.
Solution
I suggest that we need to add types with __instancecheck__
defined to both ._instances
and ._protocols
.
This way both of these cases would work:
print(some(Some())) print(some(1))
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request