MCPcopy
hub / github.com/pydantic/pydantic / prepare_discriminated_union_sub_fields

Method prepare_discriminated_union_sub_fields

pydantic/v1/fields.py:758–784  ·  view source on GitHub ↗

Prepare the mapping -> and update `sub_fields` Note that this process can be aborted if a `ForwardRef` is encountered

(self)

Source from the content-addressed store, hash-verified

756 self.sub_fields = [self._create_sub_type(self.type_, '_' + self.name)]
757
758 def prepare_discriminated_union_sub_fields(self) -> None:
759 """
760 Prepare the mapping <discriminator key> -> <ModelField> and update `sub_fields`
761 Note that this process can be aborted if a `ForwardRef` is encountered
762 """
763 assert self.discriminator_key is not None
764
765 if self.type_.__class__ is DeferredType:
766 return
767
768 assert self.sub_fields is not None
769 sub_fields_mapping: Dict[str, 'ModelField'] = {}
770 all_aliases: Set[str] = set()
771
772 for sub_field in self.sub_fields:
773 t = sub_field.type_
774 if t.__class__ is ForwardRef:
775 # Stopping everything...will need to call `update_forward_refs`
776 return
777
778 alias, discriminator_values = get_discriminator_alias_and_values(t, self.discriminator_key)
779 all_aliases.add(alias)
780 for discriminator_value in discriminator_values:
781 sub_fields_mapping[discriminator_value] = sub_field
782
783 self.sub_fields_mapping = sub_fields_mapping
784 self.discriminator_alias = get_unique_discriminator_alias(all_aliases, self.discriminator_key)
785
786 def _create_sub_type(self, type_: Type[Any], name: str, *, for_keys: bool = False) -> 'ModelField':
787 if for_keys:

Callers 2

_type_analysisMethod · 0.95

Tested by

no test coverage detected