|
9 | 9 |
|
10 | 10 | from datamodel_code_generator import Error |
11 | 11 | from datamodel_code_generator.imports import IMPORT_ANY, Import |
| 12 | +from datamodel_code_generator.model.base import _safe_extra_template_data |
12 | 13 | from datamodel_code_generator.model.pydantic_v2.base_model import ( |
13 | 14 | _CONFIG_ITEMS_TEMPLATE_DATA_KEY, |
14 | 15 | BaseModel, |
@@ -95,8 +96,27 @@ def add_sequence_interface(self, item_type: str, slice_type: str) -> None: |
95 | 96 |
|
96 | 97 | def render(self, *, class_name: str | None = None) -> str: |
97 | 98 | """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 |
98 | 103 | 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 | + ) |
100 | 120 | self._validate_custom_template_sequence_interface(rendered) |
101 | 121 | return rendered |
102 | 122 |
|
|
0 commit comments