99 lines
2.3 KiB
Python
99 lines
2.3 KiB
Python
__all__ = [
|
|
"PassThroughOptions",
|
|
"Undefined",
|
|
"UndefinedType",
|
|
"Unsupported",
|
|
"ValidationError",
|
|
"alias",
|
|
"dependent_required",
|
|
"deserialization_method",
|
|
"deserialize",
|
|
"deserializer",
|
|
"identity",
|
|
"order",
|
|
"properties",
|
|
"schema",
|
|
"schema_ref",
|
|
"serialization_default",
|
|
"serialization_method",
|
|
"serialize",
|
|
"serialized",
|
|
"serializer",
|
|
"settings",
|
|
"type_name",
|
|
"validator",
|
|
]
|
|
|
|
import warnings
|
|
|
|
from . import ( # noqa: F401
|
|
cache,
|
|
conversions,
|
|
dataclasses,
|
|
fields,
|
|
json_schema,
|
|
metadata,
|
|
objects,
|
|
skip,
|
|
tagged_unions,
|
|
validation,
|
|
)
|
|
from .aliases import alias
|
|
from .conversions import deserializer, serializer
|
|
from .dependencies import dependent_required
|
|
from .deserialization import deserialization_method, deserialize
|
|
from .metadata import properties
|
|
from .ordering import order
|
|
from .schemas import schema
|
|
from .serialization import (
|
|
PassThroughOptions,
|
|
serialization_default,
|
|
serialization_method,
|
|
serialize,
|
|
)
|
|
from .serialization.serialized_methods import serialized
|
|
from .settings import settings
|
|
from .type_names import schema_ref, type_name
|
|
from .types import Undefined, UndefinedType
|
|
from .utils import identity
|
|
from .validation import ValidationError, validator
|
|
from .visitor import Unsupported
|
|
|
|
try:
|
|
import graphql as _gql
|
|
|
|
if _gql.__version__.startswith("2."):
|
|
warnings.warn(
|
|
f"graphql-core version {_gql.__version__} is incompatible with apischema;\n"
|
|
"GraphQL schema generation is thus not available."
|
|
)
|
|
else:
|
|
from . import graphql # noqa: F401
|
|
|
|
__all__.append("graphql")
|
|
del _gql
|
|
except ImportError:
|
|
pass
|
|
|
|
|
|
def __getattr__(name):
|
|
if name == "graphql":
|
|
raise AttributeError(
|
|
"GraphQL feature requires graphql-core library\n"
|
|
"Run `pip install apischema[graphql]` to install it"
|
|
)
|
|
if name == "skip":
|
|
warnings.warn("apischema.skip module is deprecated")
|
|
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
|
|
|
|
def register_default_conversions():
|
|
"""Handle standard library + internal types"""
|
|
from . import std_types # noqa: F401
|
|
|
|
deserializer(ValidationError.from_errors)
|
|
serializer(ValidationError.errors)
|
|
|
|
|
|
register_default_conversions()
|
|
del register_default_conversions
|