Skip to content

Commit 96e9535

Browse files
committed
Stabilize RootModel config rendering
1 parent 3f6daa7 commit 96e9535

1 file changed

Lines changed: 21 additions & 1 deletion

File tree

src/datamodel_code_generator/model/pydantic_v2/root_model.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
from datamodel_code_generator import Error
1111
from datamodel_code_generator.imports import IMPORT_ANY, Import
12+
from datamodel_code_generator.model.base import _safe_extra_template_data
1213
from datamodel_code_generator.model.pydantic_v2.base_model import (
1314
_CONFIG_ITEMS_TEMPLATE_DATA_KEY,
1415
BaseModel,
@@ -95,8 +96,27 @@ def add_sequence_interface(self, item_type: str, slice_type: str) -> None:
9596

9697
def render(self, *, class_name: str | None = None) -> str:
9798
"""Render the RootModel and validate custom sequence templates when needed."""
99+
use_custom_template = self.template_file_path.is_absolute()
100+
fields = self.fields if use_custom_template else self.rendered_fields
101+
if fields:
102+
_ = fields[0].type_hint
98103
self._sync_config_items()
99-
rendered = super().render(class_name=class_name)
104+
extra_template_data = (
105+
self.extra_template_data if use_custom_template else _safe_extra_template_data(self.extra_template_data)
106+
)
107+
rendered = self._render(
108+
class_name=class_name or self.class_name,
109+
fields=fields,
110+
decorators=self.decorators,
111+
base_class=self.base_class,
112+
methods=self.methods,
113+
description=self.description
114+
if use_custom_template or not self.FORMAT_DESCRIPTION_AS_DOCSTRING
115+
else self.rendered_description,
116+
dataclass_arguments=self.dataclass_arguments,
117+
path=self.path,
118+
**extra_template_data,
119+
)
100120
self._validate_custom_template_sequence_interface(rendered)
101121
return rendered
102122

0 commit comments

Comments
 (0)