Skip to content

Commit 3930969

Browse files
authored
Fix import alias if two types are provided (Json schema) (#2611)
1 parent 3dd150e commit 3930969

3 files changed

Lines changed: 37 additions & 13 deletions

File tree

src/datamodel_code_generator/parser/base.py

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1583,19 +1583,17 @@ def __alias_shadowed_imports( # noqa: PLR6301
15831583
) -> None:
15841584
for model in models:
15851585
for model_field in model.fields:
1586-
if (
1587-
model_field.data_type.type in all_model_field_names
1588-
and model_field.data_type.type == model_field.name
1589-
):
1590-
alias = model_field.data_type.type + "_aliased"
1591-
model_field.data_type.type = alias
1592-
if model_field.data_type.import_: # pragma: no cover
1593-
model_field.data_type.import_ = Import(
1594-
from_=model_field.data_type.import_.from_,
1595-
import_=model_field.data_type.import_.import_,
1596-
alias=alias,
1597-
reference_path=model_field.data_type.import_.reference_path,
1598-
)
1586+
for data_type in model_field.data_type.all_data_types:
1587+
if data_type and data_type.type in all_model_field_names and data_type.type == model_field.name:
1588+
alias = data_type.type + "_aliased"
1589+
data_type.type = alias
1590+
if data_type.import_: # pragma: no cover
1591+
data_type.import_ = Import(
1592+
from_=data_type.import_.from_,
1593+
import_=data_type.import_.import_,
1594+
alias=alias,
1595+
reference_path=data_type.import_.reference_path,
1596+
)
15991597

16001598
@classmethod
16011599
def _collect_exports_for_init(
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# generated by datamodel-codegen:
2+
# filename: date.schema.json
3+
# timestamp: 2019-07-26T00:00:00+00:00
4+
5+
from __future__ import annotations
6+
7+
from datetime import date as date_aliased
8+
from datetime import datetime as datetime_aliased
9+
from typing import Optional
10+
11+
from pydantic import BaseModel
12+
13+
14+
class TypeDate(BaseModel):
15+
date: Optional[date_aliased]
16+
datetime: Optional[datetime_aliased] = None
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-07/schema#",
3+
"title": "TypeDate",
4+
"type": "object",
5+
"properties": {
6+
"date": { "type": ["string", "null"], "format": "date"},
7+
"datetime": { "type": ["string", "null"], "format": "date-time"}
8+
},
9+
"required": ["date"]
10+
}

0 commit comments

Comments
 (0)