diff --git a/docarray/typing/tensor/abstract_tensor.py b/docarray/typing/tensor/abstract_tensor.py index cf7ddf1320..24b837afbb 100644 --- a/docarray/typing/tensor/abstract_tensor.py +++ b/docarray/typing/tensor/abstract_tensor.py @@ -59,8 +59,8 @@ class _ParametrizedMeta(type): def _equals_special_case(cls, other): is_type = isinstance(other, type) - is_tensor = is_type and AbstractTensor in other.mro() - same_parents = is_tensor and cls.mro()[1:] == other.mro()[1:] + is_tensor = is_type and AbstractTensor in other.__mro__ + same_parents = is_tensor and cls.__mro__[1:] == other.__mro__[1:] subclass_target_shape = getattr(other, '__docarray_target_shape__', False) self_target_shape = getattr(cls, '__docarray_target_shape__', False) @@ -92,9 +92,11 @@ def __instancecheck__(cls, instance): return False return any( safe_issubclass(candidate, _cls.__unparametrizedcls__) - for candidate in type(instance).mro() + for candidate in type(instance).__mro__ ) - return any(issubclass(candidate, cls) for candidate in type(instance).mro()) + return any( + issubclass(candidate, cls) for candidate in type(instance).__mro__ + ) return super().__instancecheck__(instance) def __eq__(cls, other): diff --git a/tests/units/typing/tensor/test_tensor.py b/tests/units/typing/tensor/test_tensor.py index 02aaaeea74..6d506201cb 100644 --- a/tests/units/typing/tensor/test_tensor.py +++ b/tests/units/typing/tensor/test_tensor.py @@ -41,3 +41,8 @@ class MyTensorDoc(BaseDoc): assert isinstance(doc.tensor, TensorFlowTensor) assert isinstance(doc.tensor.tensor, tf.Tensor) assert tnp.allclose(doc.tensor.tensor, tf.zeros((1000, 2))) + + +def test_equals_type(): + # see https://github.com/docarray/docarray/pull/1739 + assert not (TorchTensor == type)