File tree Expand file tree Collapse file tree
src/datamodel_code_generator Expand file tree Collapse file tree Original file line number Diff line number Diff line change 4343
4444 import inflect
4545
46- from datamodel_code_generator .model .base import DataModel
46+ from datamodel_code_generator .model .base import DataModel , DataModelFieldBase
4747 from datamodel_code_generator .types import DataType
4848
4949
@@ -77,6 +77,32 @@ def reference(self) -> Reference | None:
7777 ...
7878
7979
80+ if TYPE_CHECKING :
81+
82+ class _ReferenceSource (Protocol ):
83+ """Protocol for objects that can be assigned to Reference.source."""
84+
85+ fields : list [DataModelFieldBase ]
86+
87+ @property
88+ def is_alias (self ) -> bool :
89+ """Return whether this source renders as an alias."""
90+ ...
91+
92+ @property
93+ def module_name (self ) -> str | None :
94+ """Return this source module name."""
95+ ...
96+
97+ @property
98+ def nullable (self ) -> bool :
99+ """Return whether this source is nullable."""
100+ ...
101+
102+ else :
103+ _ReferenceSource = ReferenceChild
104+
105+
80106class _BaseModel (BaseModel ):
81107 """Base model with field exclusion and pass-through support."""
82108
@@ -124,7 +150,7 @@ class Reference(_BaseModel):
124150 name : str
125151 duplicate_name : Optional [str ] = None # noqa: UP045
126152 loaded : bool = True
127- source : Optional [ReferenceChild ] = None # noqa: UP045
153+ source : Optional [_ReferenceSource ] = None # noqa: UP045
128154 children : list [ReferenceChild ] = Field (default_factory = list )
129155 _exclude_fields : ClassVar [set [str ]] = {"children" }
130156
You can’t perform that action at this time.
0 commit comments