Skip to content

Commit 534630f

Browse files
Make mypy ignore CoreSchema's typing (#528)
* Make mypy ignore CoreSchema's typing * add comment --------- Co-authored-by: Samuel Colvin <[email protected]>
1 parent cc7a74e commit 534630f

File tree

1 file changed

+53
-46
lines changed

1 file changed

+53
-46
lines changed

pydantic_core/core_schema.py

Lines changed: 53 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3283,52 +3283,59 @@ def definition_reference_schema(
32833283
return dict_not_none(type='definition-ref', schema_ref=schema_ref, metadata=metadata, serialization=serialization)
32843284

32853285

3286-
CoreSchema = Union[
3287-
AnySchema,
3288-
NoneSchema,
3289-
BoolSchema,
3290-
IntSchema,
3291-
FloatSchema,
3292-
StringSchema,
3293-
BytesSchema,
3294-
DateSchema,
3295-
TimeSchema,
3296-
DatetimeSchema,
3297-
TimedeltaSchema,
3298-
LiteralSchema,
3299-
IsInstanceSchema,
3300-
IsSubclassSchema,
3301-
CallableSchema,
3302-
ListSchema,
3303-
TuplePositionalSchema,
3304-
TupleVariableSchema,
3305-
SetSchema,
3306-
FrozenSetSchema,
3307-
GeneratorSchema,
3308-
DictSchema,
3309-
AfterValidatorFunctionSchema,
3310-
BeforeValidatorFunctionSchema,
3311-
WrapValidatorFunctionSchema,
3312-
PlainValidatorFunctionSchema,
3313-
WithDefaultSchema,
3314-
NullableSchema,
3315-
UnionSchema,
3316-
TaggedUnionSchema,
3317-
ChainSchema,
3318-
LaxOrStrictSchema,
3319-
TypedDictSchema,
3320-
ModelSchema,
3321-
DataclassArgsSchema,
3322-
DataclassSchema,
3323-
ArgumentsSchema,
3324-
CallSchema,
3325-
CustomErrorSchema,
3326-
JsonSchema,
3327-
UrlSchema,
3328-
MultiHostUrlSchema,
3329-
DefinitionsSchema,
3330-
DefinitionReferenceSchema,
3331-
]
3286+
MYPY = False
3287+
# See https://github.com/python/mypy/issues/14034 for details, in summary mypy is extremely slow to process this
3288+
# union which kills performance not just for pydantic, but even for code using pydantic
3289+
if not MYPY:
3290+
CoreSchema = Union[
3291+
AnySchema,
3292+
NoneSchema,
3293+
BoolSchema,
3294+
IntSchema,
3295+
FloatSchema,
3296+
StringSchema,
3297+
BytesSchema,
3298+
DateSchema,
3299+
TimeSchema,
3300+
DatetimeSchema,
3301+
TimedeltaSchema,
3302+
LiteralSchema,
3303+
IsInstanceSchema,
3304+
IsSubclassSchema,
3305+
CallableSchema,
3306+
ListSchema,
3307+
TuplePositionalSchema,
3308+
TupleVariableSchema,
3309+
SetSchema,
3310+
FrozenSetSchema,
3311+
GeneratorSchema,
3312+
DictSchema,
3313+
AfterValidatorFunctionSchema,
3314+
BeforeValidatorFunctionSchema,
3315+
WrapValidatorFunctionSchema,
3316+
PlainValidatorFunctionSchema,
3317+
WithDefaultSchema,
3318+
NullableSchema,
3319+
UnionSchema,
3320+
TaggedUnionSchema,
3321+
ChainSchema,
3322+
LaxOrStrictSchema,
3323+
TypedDictSchema,
3324+
ModelSchema,
3325+
DataclassArgsSchema,
3326+
DataclassSchema,
3327+
ArgumentsSchema,
3328+
CallSchema,
3329+
CustomErrorSchema,
3330+
JsonSchema,
3331+
UrlSchema,
3332+
MultiHostUrlSchema,
3333+
DefinitionsSchema,
3334+
DefinitionReferenceSchema,
3335+
]
3336+
elif False:
3337+
CoreSchema: TypeAlias = Dict[str, Any]
3338+
33323339

33333340
# to update this, call `pytest -k test_core_schema_type_literal` and copy the output
33343341
CoreSchemaType = Literal[

0 commit comments

Comments
 (0)