datamodel-code-generator 0.25.4__py3-none-any.whl → 0.25.5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of datamodel-code-generator might be problematic. Click here for more details.

@@ -58,8 +58,7 @@ def load_yaml_from_path(path: Path, encoding: str) -> Any:
58
58
 
59
59
  if TYPE_CHECKING:
60
60
 
61
- def get_version() -> str:
62
- ...
61
+ def get_version() -> str: ...
63
62
 
64
63
  else:
65
64
 
@@ -94,8 +94,7 @@ class Config(BaseModel):
94
94
  if TYPE_CHECKING:
95
95
 
96
96
  @classmethod
97
- def get_fields(cls) -> Dict[str, Any]:
98
- ...
97
+ def get_fields(cls) -> Dict[str, Any]: ...
99
98
 
100
99
  else:
101
100
 
@@ -76,8 +76,7 @@ class PythonVersion(Enum):
76
76
 
77
77
  if TYPE_CHECKING:
78
78
 
79
- class _TargetVersion(Enum):
80
- ...
79
+ class _TargetVersion(Enum): ...
81
80
 
82
81
  BLACK_PYTHON_VERSION: Dict[PythonVersion, _TargetVersion]
83
82
  else:
@@ -98,8 +97,7 @@ def black_find_project_root(sources: Sequence[Path]) -> Path:
98
97
 
99
98
  def _find_project_root(
100
99
  srcs: Union[Sequence[str], Iterable[str]],
101
- ) -> Union[Tuple[Path, str], Path]:
102
- ...
100
+ ) -> Union[Tuple[Path, str], Path]: ...
103
101
 
104
102
  else:
105
103
  from black import find_project_root as _find_project_root
@@ -153,9 +151,9 @@ class CodeFormatter:
153
151
  f' for wrapping string literal in {black.__version__}'
154
152
  )
155
153
  elif black.__version__ < '24.1.0': # type: ignore
156
- black_kwargs[
157
- 'experimental_string_processing'
158
- ] = experimental_string_processing
154
+ black_kwargs['experimental_string_processing'] = (
155
+ experimental_string_processing
156
+ )
159
157
  elif experimental_string_processing:
160
158
  black_kwargs['preview'] = True
161
159
  black_kwargs['unstable'] = config.get('unstable', False)
@@ -240,8 +238,7 @@ class CodeFormatter:
240
238
 
241
239
  if TYPE_CHECKING:
242
240
 
243
- def apply_isort(self, code: str) -> str:
244
- ...
241
+ def apply_isort(self, code: str) -> str: ...
245
242
 
246
243
  else:
247
244
  if isort.__version__.startswith('4.'):
@@ -116,5 +116,6 @@ IMPORT_DICT = Import.from_full_path('typing.Dict')
116
116
  IMPORT_DECIMAL = Import.from_full_path('decimal.Decimal')
117
117
  IMPORT_DATE = Import.from_full_path('datetime.date')
118
118
  IMPORT_DATETIME = Import.from_full_path('datetime.datetime')
119
+ IMPORT_PATH = Import.from_full_path('pathlib.Path')
119
120
  IMPORT_TIME = Import.from_full_path('datetime.time')
120
121
  IMPORT_UUID = Import.from_full_path('uuid.UUID')
@@ -267,8 +267,7 @@ class TemplateBase(ABC):
267
267
  return self.render()
268
268
 
269
269
 
270
- class BaseClassDataType(DataType):
271
- ...
270
+ class BaseClassDataType(DataType): ...
272
271
 
273
272
 
274
273
  UNDEFINED: Any = object()
@@ -9,6 +9,7 @@ from datamodel_code_generator.imports import (
9
9
  IMPORT_DATE,
10
10
  IMPORT_DATETIME,
11
11
  IMPORT_DECIMAL,
12
+ IMPORT_PATH,
12
13
  IMPORT_TIME,
13
14
  IMPORT_UUID,
14
15
  )
@@ -70,6 +71,7 @@ def type_map_factory(
70
71
  Types.binary: data_type(type='bytes'),
71
72
  Types.date: data_type.from_import(IMPORT_DATE),
72
73
  Types.date_time: data_type.from_import(IMPORT_DATETIME),
74
+ Types.path: data_type.from_import(IMPORT_PATH),
73
75
  Types.password: data_type.from_import(IMPORT_SECRET_STR),
74
76
  Types.email: data_type.from_import(IMPORT_EMAIL_STR),
75
77
  Types.uuid: data_type.from_import(IMPORT_UUID),
@@ -408,19 +408,19 @@ class Parser(ABC):
408
408
  self.base_class: Optional[str] = base_class
409
409
  self.target_python_version: PythonVersion = target_python_version
410
410
  self.results: List[DataModel] = []
411
- self.dump_resolve_reference_action: Optional[
412
- Callable[[Iterable[str]], str]
413
- ] = dump_resolve_reference_action
411
+ self.dump_resolve_reference_action: Optional[Callable[[Iterable[str]], str]] = (
412
+ dump_resolve_reference_action
413
+ )
414
414
  self.validation: bool = validation
415
415
  self.field_constraints: bool = field_constraints
416
416
  self.snake_case_field: bool = snake_case_field
417
417
  self.strip_default_none: bool = strip_default_none
418
- self.apply_default_values_for_required_fields: (
419
- bool
420
- ) = apply_default_values_for_required_fields
421
- self.force_optional_for_required_fields: (
422
- bool
423
- ) = force_optional_for_required_fields
418
+ self.apply_default_values_for_required_fields: bool = (
419
+ apply_default_values_for_required_fields
420
+ )
421
+ self.force_optional_for_required_fields: bool = (
422
+ force_optional_for_required_fields
423
+ )
424
424
  self.use_schema_description: bool = use_schema_description
425
425
  self.use_field_description: bool = use_field_description
426
426
  self.use_default_kwarg: bool = use_default_kwarg
@@ -433,9 +433,9 @@ class Parser(ABC):
433
433
  self.use_generic_container_types: bool = use_generic_container_types
434
434
  self.use_union_operator: bool = use_union_operator
435
435
  self.enable_faux_immutability: bool = enable_faux_immutability
436
- self.custom_class_name_generator: Optional[
437
- Callable[[str], str]
438
- ] = custom_class_name_generator
436
+ self.custom_class_name_generator: Optional[Callable[[str], str]] = (
437
+ custom_class_name_generator
438
+ )
439
439
  self.field_extra_keys: Set[str] = field_extra_keys or set()
440
440
  self.field_extra_keys_without_x_prefix: Set[str] = (
441
441
  field_extra_keys_without_x_prefix or set()
@@ -568,9 +568,9 @@ class Parser(ABC):
568
568
 
569
569
  def __delete_duplicate_models(self, models: List[DataModel]) -> None:
570
570
  model_class_names: Dict[str, DataModel] = {}
571
- model_to_duplicate_models: DefaultDict[
572
- DataModel, List[DataModel]
573
- ] = defaultdict(list)
571
+ model_to_duplicate_models: DefaultDict[DataModel, List[DataModel]] = (
572
+ defaultdict(list)
573
+ )
574
574
  for model in models[:]:
575
575
  if isinstance(model, self.data_model_root_type):
576
576
  root_data_type = model.fields[0].data_type
@@ -756,7 +756,7 @@ class Parser(ABC):
756
756
  (pydantic_model.BaseModel, pydantic_model_v2.BaseModel),
757
757
  ):
758
758
  continue # pragma: no cover
759
- type_name = None
759
+ type_names = []
760
760
  if mapping:
761
761
  for name, path in mapping.items():
762
762
  if (
@@ -765,10 +765,10 @@ class Parser(ABC):
765
765
  ):
766
766
  # TODO: support external reference
767
767
  continue
768
- type_name = name
768
+ type_names.append(name)
769
769
  else:
770
- type_name = discriminator_model.path.split('/')[-1]
771
- if not type_name: # pragma: no cover
770
+ type_names = [discriminator_model.path.split('/')[-1]]
771
+ if not type_names: # pragma: no cover
772
772
  raise RuntimeError(
773
773
  f'Discriminator type is not found. {data_type.reference.path}'
774
774
  )
@@ -780,7 +780,11 @@ class Parser(ABC):
780
780
  ) != property_name:
781
781
  continue
782
782
  literals = discriminator_field.data_type.literals
783
- if len(literals) == 1 and literals[0] == type_name:
783
+ if (
784
+ len(literals) == 1 and literals[0] == type_names[0]
785
+ if type_names
786
+ else None
787
+ ):
784
788
  has_one_literal = True
785
789
  continue
786
790
  for (
@@ -789,7 +793,7 @@ class Parser(ABC):
789
793
  if field_data_type.reference: # pragma: no cover
790
794
  field_data_type.remove_reference()
791
795
  discriminator_field.data_type = self.data_type(
792
- literals=[type_name]
796
+ literals=type_names
793
797
  )
794
798
  discriminator_field.data_type.parent = discriminator_field
795
799
  discriminator_field.required = True
@@ -799,7 +803,7 @@ class Parser(ABC):
799
803
  discriminator_model.fields.append(
800
804
  self.data_model_field_type(
801
805
  name=property_name,
802
- data_type=self.data_type(literals=[type_name]),
806
+ data_type=self.data_type(literals=type_names),
803
807
  required=True,
804
808
  )
805
809
  )
@@ -1235,6 +1239,7 @@ class Parser(ABC):
1235
1239
 
1236
1240
  scoped_model_resolver = ModelResolver()
1237
1241
 
1242
+ self.__override_required_field(models)
1238
1243
  self.__replace_unique_list_to_set(models)
1239
1244
  self.__change_from_import(models, imports, scoped_model_resolver, init)
1240
1245
  self.__extract_inherited_enum(models)
@@ -1242,7 +1247,6 @@ class Parser(ABC):
1242
1247
  self.__reuse_model(models, require_update_action_models)
1243
1248
  self.__collapse_root_models(models, unused_models, imports)
1244
1249
  self.__set_default_enum_member(models)
1245
- self.__override_required_field(models)
1246
1250
  self.__sort_models(models, imports)
1247
1251
  self.__set_one_literal_on_default(models)
1248
1252
  self.__apply_discriminator_type(models, imports)
@@ -118,6 +118,7 @@ json_schema_data_formats: Dict[str, Dict[str, Types]] = {
118
118
  'date-time': Types.date_time,
119
119
  'time': Types.time,
120
120
  'password': Types.password,
121
+ 'path': Types.path,
121
122
  'email': Types.email,
122
123
  'idn-email': Types.email,
123
124
  'uuid': Types.uuid,
@@ -632,9 +633,9 @@ class JsonSchemaParser(Parser):
632
633
 
633
634
  def set_additional_properties(self, name: str, obj: JsonSchemaObject) -> None:
634
635
  if isinstance(obj.additionalProperties, bool):
635
- self.extra_template_data[name][
636
- 'additionalProperties'
637
- ] = obj.additionalProperties
636
+ self.extra_template_data[name]['additionalProperties'] = (
637
+ obj.additionalProperties
638
+ )
638
639
 
639
640
  def set_title(self, name: str, obj: JsonSchemaObject) -> None:
640
641
  if obj.title:
@@ -548,6 +548,7 @@ class Types(Enum):
548
548
  date = auto()
549
549
  date_time = auto()
550
550
  password = auto()
551
+ path = auto()
551
552
  email = auto()
552
553
  uuid = auto()
553
554
  uuid1 = auto()
@@ -23,8 +23,7 @@ if TYPE_CHECKING:
23
23
 
24
24
  from typing_extensions import Literal
25
25
 
26
- def load_toml(path: Path) -> Dict[str, Any]:
27
- ...
26
+ def load_toml(path: Path) -> Dict[str, Any]: ...
28
27
 
29
28
  else:
30
29
  try:
@@ -1 +1 @@
1
- version: str = '0.25.4'
1
+ version: str = '0.25.5'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: datamodel-code-generator
3
- Version: 0.25.4
3
+ Version: 0.25.5
4
4
  Summary: Datamodel Code Generator
5
5
  Home-page: https://github.com/koxudaxi/datamodel-code-generator
6
6
  License: MIT
@@ -1,11 +1,11 @@
1
- datamodel_code_generator/__init__.py,sha256=cCmyB7qRG9GE6wNQmTcY7MC_rY43yryxyhxLlVav1EA,17715
2
- datamodel_code_generator/__main__.py,sha256=7yvaMVa8KXwFUzBwiuKVzD-bs-tO66oGcIzWW3ZAOSI,18496
1
+ datamodel_code_generator/__init__.py,sha256=T2FKUpXjyLwcssL2AHYBeIQyCk2_5kvXRJdqLvMD5q0,17707
2
+ datamodel_code_generator/__main__.py,sha256=yoBk5FUlSXTv46EkmD1fRCacddXInKZU9iKZAb3-ECk,18480
3
3
  datamodel_code_generator/arguments.py,sha256=N5dOWb_cR5orktDK1FeGy7txVN566mxRlGkvyGeTVaY,14594
4
- datamodel_code_generator/format.py,sha256=eC_TTYICLDtM4Y_mbdT9PNjxzwuWSirwaOc5pyTt0to,8625
4
+ datamodel_code_generator/format.py,sha256=yTSOf3-jUO4X5NOljAjm-4xYC_uBJV3-RLXUYIvw-yw,8595
5
5
  datamodel_code_generator/http.py,sha256=WYScR7rqz8GjgdVPPhFp4PJzgON5DPpO1vmHQLDxYxE,590
6
- datamodel_code_generator/imports.py,sha256=SJmkUIxHPCH3rDLMdXsUcT5pPfT9rjc-nmREOLx4Kxw,5283
6
+ datamodel_code_generator/imports.py,sha256=0PoAG59qI1wujrzcsySFNQRh-po0bRjt7tPI8KDjHg4,5335
7
7
  datamodel_code_generator/model/__init__.py,sha256=A0CqnL87-lY_Te-n-99ya5v7h6l4jE6hOPP_itvcWOc,3091
8
- datamodel_code_generator/model/base.py,sha256=WshtblvxQ9fiRE2G7bdFiDRu6aDGSPhcIiiGIIBp1hg,14023
8
+ datamodel_code_generator/model/base.py,sha256=M1T8L7how4nW0aqGuunzc1LyWVSJ3OuFvRnx1Ig13hA,14019
9
9
  datamodel_code_generator/model/dataclass.py,sha256=9meJNWb-XPYYO8kDMSLhSfO6fulGWV7r3_XIM5kA71M,3965
10
10
  datamodel_code_generator/model/enum.py,sha256=Giehhtij2DZs2LssSJnG_CIIHsSA7Mkz471GU-Cb5kI,3338
11
11
  datamodel_code_generator/model/imports.py,sha256=9-0bd-DvZRjZkWMsmw-gykL8fzTd6M-vQEqS7Rm_ty4,725
@@ -15,7 +15,7 @@ datamodel_code_generator/model/pydantic/base_model.py,sha256=Y2GSlcLBvQh8hrlwGE3
15
15
  datamodel_code_generator/model/pydantic/custom_root_type.py,sha256=XOeJqzUEAYE21C3hPAnRIz9iDWIjZvUOWDc9MCrpdvw,299
16
16
  datamodel_code_generator/model/pydantic/dataclass.py,sha256=sbqTmutl8Fjf1pYngfdv0NMXt904QcTRpHqmZy6GUiQ,424
17
17
  datamodel_code_generator/model/pydantic/imports.py,sha256=2nSLYwphBUMQEa0PTSNwoLjEBslu02EQb6BdZ-S51yk,2189
18
- datamodel_code_generator/model/pydantic/types.py,sha256=B5iwjqujJSAADGW8WGh4NN9HT5U98emJ0sTERcCXXx0,12504
18
+ datamodel_code_generator/model/pydantic/types.py,sha256=tvPOPXO04qcPiP0vhf70OHK2Mw2uWGlN8SYiD7jaGKg,12577
19
19
  datamodel_code_generator/model/pydantic_v2/__init__.py,sha256=ahhh9sRT9d032dG5gf14M4Q-8MC3P2rQ5Ngo7v_uB6A,865
20
20
  datamodel_code_generator/model/pydantic_v2/base_model.py,sha256=ed4wP_DkrsafPh5Clt1wccel9svggJ8MXKy8w1jCQDs,7596
21
21
  datamodel_code_generator/model/pydantic_v2/imports.py,sha256=Q6XC6iE5v4LJvQ2DOXDGFtR-FnGPsaZ56KiiTiF2bIE,191
@@ -43,17 +43,17 @@ datamodel_code_generator/model/typed_dict.py,sha256=pzUaKLaVDF5rfxAaR1m4FqnhR00e
43
43
  datamodel_code_generator/model/types.py,sha256=GmKGPrpbJRgcsfRv9Khpo26e8DgMrPBnmLw6cpdjdiE,2891
44
44
  datamodel_code_generator/model/union.py,sha256=loaVWQi-UHkV4gLfF2JhxLcgZRMsejaoJzGvjTlp_bo,1716
45
45
  datamodel_code_generator/parser/__init__.py,sha256=zHbw6RPlJC0SAQjb-XyVlyZhcOu5PfYgPidy6jlUM8M,793
46
- datamodel_code_generator/parser/base.py,sha256=SvOqP1C2avQmJAUDDplVhEJJELtLPSnS21-lu-dyn7Y,52714
46
+ datamodel_code_generator/parser/base.py,sha256=9Qp1TUYRKzpjYNuELPqaRB_2w-3e7dcVB56GYAzXe14,52868
47
47
  datamodel_code_generator/parser/graphql.py,sha256=PuHN3WlCMA0dHuYp0xMmKWHrlhJYryV_LP3831y46YQ,20387
48
- datamodel_code_generator/parser/jsonschema.py,sha256=3MG0QUt12RFd_lTo6JGQoeJmArbVheJ6dR3nTDRZrBw,69262
48
+ datamodel_code_generator/parser/jsonschema.py,sha256=ccjDf266lWQzeJr0Mn6-NmnJKIIaFJo15z5bygzJe5Y,69292
49
49
  datamodel_code_generator/parser/openapi.py,sha256=Iderij7OytmLchS7EJ6FjCz7rATFp0VlmRz__2uCGvQ,25416
50
50
  datamodel_code_generator/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
51
  datamodel_code_generator/reference.py,sha256=EoalUNUP5us31bfMrHDa1iiKqxL8gHrpZKY_IxgZrOg,26347
52
- datamodel_code_generator/types.py,sha256=nGUJRwli267SBEhbsAfWIWSf1kDtqGM74Ha-Y05Xvzg,19551
53
- datamodel_code_generator/util.py,sha256=LCEqSCPsVJkn-aiXltZBcw5G7cQqte9IQnyd0Z8LGrE,3700
54
- datamodel_code_generator/version.py,sha256=CqzzGug_BFVu7hwUZejterHsBy7pNwfFPjYBYXKyO8g,24
55
- datamodel_code_generator-0.25.4.dist-info/LICENSE,sha256=K54Lwc6_jduycsy8oFFjQEeSSuEiqvVIjCGIXOMnuTQ,1068
56
- datamodel_code_generator-0.25.4.dist-info/METADATA,sha256=ukdujdmWa09n01AAkzibHYZ-hffMFPT9F1jdodyCzzQ,22998
57
- datamodel_code_generator-0.25.4.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
58
- datamodel_code_generator-0.25.4.dist-info/entry_points.txt,sha256=bykbUWqOCiKfxJPGe8jpNqTqD1NG7uyRmozdnwzu7rk,76
59
- datamodel_code_generator-0.25.4.dist-info/RECORD,,
52
+ datamodel_code_generator/types.py,sha256=NcbLfgrx7nhu6UX1fW-uPOhZnJv1vI5uefe_bYtE_rE,19569
53
+ datamodel_code_generator/util.py,sha256=Lrjj20mmma4Glpfs42sCoGpt1cncalgUGyNZZviqWdU,3692
54
+ datamodel_code_generator/version.py,sha256=50th3mtCHhxAHTTiNr6-p9dr4WfCx_PVJcY39lYUlvc,24
55
+ datamodel_code_generator-0.25.5.dist-info/LICENSE,sha256=K54Lwc6_jduycsy8oFFjQEeSSuEiqvVIjCGIXOMnuTQ,1068
56
+ datamodel_code_generator-0.25.5.dist-info/METADATA,sha256=i-e_XWpioMc7kc0LRle0OiEUysIHEdPNUWWS5uvOoVo,22998
57
+ datamodel_code_generator-0.25.5.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
58
+ datamodel_code_generator-0.25.5.dist-info/entry_points.txt,sha256=bykbUWqOCiKfxJPGe8jpNqTqD1NG7uyRmozdnwzu7rk,76
59
+ datamodel_code_generator-0.25.5.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.8.1
2
+ Generator: poetry-core 1.9.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any