Pydantic SupportΒΆ
phantom-types supports pydantic out of the box by providing a
__get_validators__()
hook
on the base Phantom
class. Most of the shipped types also
implements full JSON Schema and OpenAPI support.
To make a phantom type compatible with pydantic, all you need to do is override
Phantom.__schema__()
:
from phantom import Phantom
from phantom.schema import Schema
class Name(str, Phantom, predicate=...):
@classmethod
def __schema__(cls) -> Schema:
return super().__schema__() | Schema(
description="A type for names",
format="name-format",
)
As can be seen in the example, __schema__()
implementations are expected to return a
dict extending its super().__schema__()
, however this is not a requirement and any
Schema
-compatible dict
can be returned.