MCPcopy
hub / github.com/pydantic/pydantic / GenerateSchema

Class GenerateSchema

pydantic/_internal/_generate_schema.py:350–2541  ·  view source on GitHub ↗

Generate core schema for a Pydantic model, dataclass and types like `str`, `datetime`, ... .

Source from the content-addressed store, hash-verified

348
349
350class GenerateSchema:
351 """Generate core schema for a Pydantic model, dataclass and types like `str`, `datetime`, ... ."""
352
353 __slots__ = (
354 '_config_wrapper_stack',
355 '_ns_resolver',
356 '_typevars_map',
357 'field_name_stack',
358 'model_type_stack',
359 'defs',
360 )
361
362 def __init__(
363 self,
364 config_wrapper: ConfigWrapper,
365 ns_resolver: NsResolver | None = None,
366 typevars_map: Mapping[TypeVar, Any] | None = None,
367 ) -> None:
368 # we need a stack for recursing into nested models
369 self._config_wrapper_stack = ConfigWrapperStack(config_wrapper)
370 self._ns_resolver = ns_resolver or NsResolver()
371 self._typevars_map = typevars_map
372 self.field_name_stack = _FieldNameStack()
373 self.model_type_stack = _ModelTypeStack()
374 self.defs = _Definitions()
375
376 def __init_subclass__(cls) -> None:
377 super().__init_subclass__()
378 warnings.warn(
379 'Subclassing `GenerateSchema` is not supported. The API is highly subject to change in minor versions.',
380 UserWarning,
381 stacklevel=2,
382 )
383
384 @property
385 def _config_wrapper(self) -> ConfigWrapper:
386 return self._config_wrapper_stack.tail
387
388 @property
389 def _types_namespace(self) -> NamespacesTuple:
390 return self._ns_resolver.types_namespace
391
392 @property
393 def _arbitrary_types(self) -> bool:
394 return self._config_wrapper.arbitrary_types_allowed
395
396 # the following methods can be overridden but should be considered
397 # unstable / private APIs
398 def _list_schema(self, items_type: Any) -> CoreSchema:
399 return core_schema.list_schema(self.generate_schema(items_type))
400
401 def _dict_schema(self, keys_type: Any, values_type: Any) -> CoreSchema:
402 return core_schema.dict_schema(self.generate_schema(keys_type), self.generate_schema(values_type))
403
404 def _set_schema(self, items_type: Any) -> CoreSchema:
405 return core_schema.set_schema(self.generate_schema(items_type))
406
407 def _frozenset_schema(self, items_type: Any) -> CoreSchema:

Calls

no outgoing calls