diff --git a/pydantic_core/core_schema.py b/pydantic_core/core_schema.py index f77879bf2..8066e6a0d 100644 --- a/pydantic_core/core_schema.py +++ b/pydantic_core/core_schema.py @@ -3283,52 +3283,59 @@ def definition_reference_schema( return dict_not_none(type='definition-ref', schema_ref=schema_ref, metadata=metadata, serialization=serialization) -CoreSchema = Union[ - AnySchema, - NoneSchema, - BoolSchema, - IntSchema, - FloatSchema, - StringSchema, - BytesSchema, - DateSchema, - TimeSchema, - DatetimeSchema, - TimedeltaSchema, - LiteralSchema, - IsInstanceSchema, - IsSubclassSchema, - CallableSchema, - ListSchema, - TuplePositionalSchema, - TupleVariableSchema, - SetSchema, - FrozenSetSchema, - GeneratorSchema, - DictSchema, - AfterValidatorFunctionSchema, - BeforeValidatorFunctionSchema, - WrapValidatorFunctionSchema, - PlainValidatorFunctionSchema, - WithDefaultSchema, - NullableSchema, - UnionSchema, - TaggedUnionSchema, - ChainSchema, - LaxOrStrictSchema, - TypedDictSchema, - ModelSchema, - DataclassArgsSchema, - DataclassSchema, - ArgumentsSchema, - CallSchema, - CustomErrorSchema, - JsonSchema, - UrlSchema, - MultiHostUrlSchema, - DefinitionsSchema, - DefinitionReferenceSchema, -] +MYPY = False +# See https://github.com/python/mypy/issues/14034 for details, in summary mypy is extremely slow to process this +# union which kills performance not just for pydantic, but even for code using pydantic +if not MYPY: + CoreSchema = Union[ + AnySchema, + NoneSchema, + BoolSchema, + IntSchema, + FloatSchema, + StringSchema, + BytesSchema, + DateSchema, + TimeSchema, + DatetimeSchema, + TimedeltaSchema, + LiteralSchema, + IsInstanceSchema, + IsSubclassSchema, + CallableSchema, + ListSchema, + TuplePositionalSchema, + TupleVariableSchema, + SetSchema, + FrozenSetSchema, + GeneratorSchema, + DictSchema, + AfterValidatorFunctionSchema, + BeforeValidatorFunctionSchema, + WrapValidatorFunctionSchema, + PlainValidatorFunctionSchema, + WithDefaultSchema, + NullableSchema, + UnionSchema, + TaggedUnionSchema, + ChainSchema, + LaxOrStrictSchema, + TypedDictSchema, + ModelSchema, + DataclassArgsSchema, + DataclassSchema, + ArgumentsSchema, + CallSchema, + CustomErrorSchema, + JsonSchema, + UrlSchema, + MultiHostUrlSchema, + DefinitionsSchema, + DefinitionReferenceSchema, + ] +elif False: + CoreSchema: TypeAlias = Dict[str, Any] + # to update this, call `pytest -k test_core_schema_type_literal` and copy the output CoreSchemaType = Literal[