Closed
Description
Feature Request
We want to define our own generic container-types (similar to List[T]
), but we want to do the type-checking on our own:
class Array(numpy.ndarray, Collection[T]):
@classmethod
def get_validators(cls):
yield cls.validate_type
@classmethod
def validate_type(cls, val):
return np.array(val, dtype=cls.__args__[0])
(We read in very large lists from a json-file, and pydantic's validation logic is a real bottleneck).
class MyModel:
values: Array[float]
Problem
For now, pydantic assumes that generic types are from a selected set (Tuple, List, Mapping, plus a few others) and therefore this assertion error is thrown here:
assert issubclass(origin, Mapping)
Possible solutions
Allowing this, could generally be done in two ways:
- Treat custom generic types not differently than other types. The type-parameter is just ignored by pydantic.
- Have a notion of general generic types in pydantic, and provide a validation-interface which allows users to interact with the type-parameters.