datamodel-code-generator 0.25.3__tar.gz → 0.25.5__tar.gz

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.

Files changed (59) hide show
  1. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/PKG-INFO +3 -3
  2. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/README.md +2 -2
  3. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/__init__.py +2 -3
  4. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/__main__.py +1 -2
  5. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/format.py +11 -10
  6. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/imports.py +1 -0
  7. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/base.py +2 -3
  8. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/pydantic/base_model.py +5 -3
  9. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/pydantic/types.py +2 -0
  10. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/parser/base.py +27 -23
  11. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/parser/jsonschema.py +4 -3
  12. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/types.py +1 -0
  13. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/util.py +1 -2
  14. datamodel_code_generator-0.25.5/datamodel_code_generator/version.py +1 -0
  15. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/pyproject.toml +9 -2
  16. datamodel_code_generator-0.25.3/datamodel_code_generator/version.py +0 -1
  17. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/LICENSE +0 -0
  18. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/arguments.py +0 -0
  19. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/http.py +0 -0
  20. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/__init__.py +0 -0
  21. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/dataclass.py +0 -0
  22. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/enum.py +0 -0
  23. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/imports.py +0 -0
  24. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/msgspec.py +0 -0
  25. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/pydantic/__init__.py +0 -0
  26. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/pydantic/custom_root_type.py +0 -0
  27. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/pydantic/dataclass.py +0 -0
  28. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/pydantic/imports.py +0 -0
  29. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/pydantic_v2/__init__.py +0 -0
  30. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/pydantic_v2/base_model.py +0 -0
  31. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/pydantic_v2/imports.py +0 -0
  32. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/pydantic_v2/root_model.py +0 -0
  33. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/pydantic_v2/types.py +0 -0
  34. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/rootmodel.py +0 -0
  35. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/scalar.py +0 -0
  36. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/Enum.jinja2 +0 -0
  37. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/Scalar.jinja2 +0 -0
  38. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/TypedDict.jinja2 +0 -0
  39. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/TypedDictClass.jinja2 +0 -0
  40. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/TypedDictFunction.jinja2 +0 -0
  41. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/Union.jinja2 +0 -0
  42. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/dataclass.jinja2 +0 -0
  43. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/msgspec.jinja2 +0 -0
  44. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/pydantic/BaseModel.jinja2 +0 -0
  45. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/pydantic/BaseModel_root.jinja2 +0 -0
  46. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/pydantic/Config.jinja2 +0 -0
  47. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/pydantic/dataclass.jinja2 +0 -0
  48. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/pydantic_v2/BaseModel.jinja2 +0 -0
  49. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/pydantic_v2/ConfigDict.jinja2 +0 -0
  50. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/pydantic_v2/RootModel.jinja2 +0 -0
  51. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/template/root.jinja2 +0 -0
  52. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/typed_dict.py +0 -0
  53. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/types.py +0 -0
  54. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/model/union.py +0 -0
  55. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/parser/__init__.py +0 -0
  56. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/parser/graphql.py +0 -0
  57. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/parser/openapi.py +0 -0
  58. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/py.typed +0 -0
  59. {datamodel_code_generator-0.25.3 → datamodel_code_generator-0.25.5}/datamodel_code_generator/reference.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: datamodel-code-generator
3
- Version: 0.25.3
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
@@ -377,7 +377,7 @@ Options:
377
377
  --http-ignore-tls Disable verification of the remote host's TLS
378
378
  certificate
379
379
  --input INPUT Input file/directory (default: stdin)
380
- --input-file-type {auto,openapi,jsonschema,json,yaml,dict,csv}
380
+ --input-file-type {auto,openapi,graphql,jsonschema,json,yaml,dict,csv}
381
381
  Input file type (default: auto)
382
382
  --output OUTPUT Output file (default: stdout)
383
383
  --output-model-type {pydantic.BaseModel,pydantic_v2.BaseModel,dataclasses.dataclass,typing.TypedDict,msgspec.Struct}
@@ -467,7 +467,7 @@ Model customization:
467
467
  --enable-version-header
468
468
  Enable package version on file headers
469
469
  --keep-model-order Keep generated models' order
470
- --reuse-model Re-use models on the field when a module has the model
470
+ --reuse-model Reuse models on the field when a module has the model
471
471
  with the same content
472
472
  --target-python-version {3.6,3.7,3.8,3.9,3.10,3.11}
473
473
  target python version (default: 3.7)
@@ -332,7 +332,7 @@ Options:
332
332
  --http-ignore-tls Disable verification of the remote host's TLS
333
333
  certificate
334
334
  --input INPUT Input file/directory (default: stdin)
335
- --input-file-type {auto,openapi,jsonschema,json,yaml,dict,csv}
335
+ --input-file-type {auto,openapi,graphql,jsonschema,json,yaml,dict,csv}
336
336
  Input file type (default: auto)
337
337
  --output OUTPUT Output file (default: stdout)
338
338
  --output-model-type {pydantic.BaseModel,pydantic_v2.BaseModel,dataclasses.dataclass,typing.TypedDict,msgspec.Struct}
@@ -422,7 +422,7 @@ Model customization:
422
422
  --enable-version-header
423
423
  Enable package version on file headers
424
424
  --keep-model-order Keep generated models' order
425
- --reuse-model Re-use models on the field when a module has the model
425
+ --reuse-model Reuse models on the field when a module has the model
426
426
  with the same content
427
427
  --target-python-version {3.6,3.7,3.8,3.9,3.10,3.11}
428
428
  target python version (default: 3.7)
@@ -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
 
@@ -525,7 +524,7 @@ def infer_input_type(text: str) -> InputFileType:
525
524
 
526
525
 
527
526
  inferred_message = (
528
- 'The input file type was determined to be: {}\nThis can be specificied explicitly with the '
527
+ 'The input file type was determined to be: {}\nThis can be specified explicitly with the '
529
528
  '`--input-file-type` option.'
530
529
  )
531
530
 
@@ -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
 
@@ -7,11 +7,15 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Sequence
7
7
  from warnings import warn
8
8
 
9
9
  import black
10
- import black.mode
11
10
  import isort
12
11
 
13
12
  from datamodel_code_generator.util import cached_property, load_toml
14
13
 
14
+ try:
15
+ import black.mode
16
+ except ImportError: # pragma: no cover
17
+ black.mode = None
18
+
15
19
 
16
20
  class PythonVersion(Enum):
17
21
  PY_36 = '3.6'
@@ -72,8 +76,7 @@ class PythonVersion(Enum):
72
76
 
73
77
  if TYPE_CHECKING:
74
78
 
75
- class _TargetVersion(Enum):
76
- ...
79
+ class _TargetVersion(Enum): ...
77
80
 
78
81
  BLACK_PYTHON_VERSION: Dict[PythonVersion, _TargetVersion]
79
82
  else:
@@ -94,8 +97,7 @@ def black_find_project_root(sources: Sequence[Path]) -> Path:
94
97
 
95
98
  def _find_project_root(
96
99
  srcs: Union[Sequence[str], Iterable[str]],
97
- ) -> Union[Tuple[Path, str], Path]:
98
- ...
100
+ ) -> Union[Tuple[Path, str], Path]: ...
99
101
 
100
102
  else:
101
103
  from black import find_project_root as _find_project_root
@@ -149,9 +151,9 @@ class CodeFormatter:
149
151
  f' for wrapping string literal in {black.__version__}'
150
152
  )
151
153
  elif black.__version__ < '24.1.0': # type: ignore
152
- black_kwargs[
153
- 'experimental_string_processing'
154
- ] = experimental_string_processing
154
+ black_kwargs['experimental_string_processing'] = (
155
+ experimental_string_processing
156
+ )
155
157
  elif experimental_string_processing:
156
158
  black_kwargs['preview'] = True
157
159
  black_kwargs['unstable'] = config.get('unstable', False)
@@ -236,8 +238,7 @@ class CodeFormatter:
236
238
 
237
239
  if TYPE_CHECKING:
238
240
 
239
- def apply_isort(self, code: str) -> str:
240
- ...
241
+ def apply_isort(self, code: str) -> str: ...
241
242
 
242
243
  else:
243
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')
@@ -63,7 +63,7 @@ class ConstraintsBase(_BaseModel):
63
63
 
64
64
  @cached_property
65
65
  def has_constraints(self) -> bool:
66
- return any(v for v in self.dict().values() if v is not None)
66
+ return any(v is not None for v in self.dict().values())
67
67
 
68
68
  @staticmethod
69
69
  def merge_constraints(
@@ -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()
@@ -87,7 +87,9 @@ class DataModelField(DataModelFieldBase):
87
87
  return result
88
88
 
89
89
  def self_reference(self) -> bool:
90
- return isinstance(self.parent, BaseModel) and self.parent.reference.path in {
90
+ return isinstance(
91
+ self.parent, BaseModelBase
92
+ ) and self.parent.reference.path in {
91
93
  d.reference.path for d in self.data_type.all_data_types if d.reference
92
94
  }
93
95
 
@@ -111,12 +113,12 @@ class DataModelField(DataModelFieldBase):
111
113
  data_type = data_type.data_types[0]
112
114
  if (
113
115
  data_type.reference
114
- and isinstance(data_type.reference.source, BaseModel)
116
+ and isinstance(data_type.reference.source, BaseModelBase)
115
117
  and isinstance(self.default, list)
116
118
  ): # pragma: no cover
117
119
  return f'lambda :[{data_type.alias or data_type.reference.source.class_name}.{self._PARSE_METHOD}(v) for v in {repr(self.default)}]'
118
120
  elif data_type.reference and isinstance(
119
- data_type.reference.source, BaseModel
121
+ data_type.reference.source, BaseModelBase
120
122
  ): # pragma: no cover
121
123
  return f'lambda :{data_type.alias or data_type.reference.source.class_name}.{self._PARSE_METHOD}({repr(self.default)})'
122
124
  return None
@@ -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:
@@ -0,0 +1 @@
1
+ version: str = '0.25.5'
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "datamodel-code-generator"
3
- version = "0.25.3"
3
+ version = "0.25.5"
4
4
  description = "Datamodel Code Generator"
5
5
  authors = ["Koudai Aono <koxudaxi@gmail.com>"]
6
6
  readme = "README.md"
@@ -78,7 +78,7 @@ types-setuptools = ">=67.6.0.5,<70.0.0.0"
78
78
  pydantic = "*"
79
79
  httpx = ">=0.24.1"
80
80
  PySnooper = "*"
81
- ruff = ">=0.0.290,<0.1.16"
81
+ ruff = ">=0.0.290,<0.3.3"
82
82
  ruff-lsp = ">=0.0.39,<0.0.41"
83
83
  pre-commit = "*"
84
84
  pytest-xdist = "^3.3.1"
@@ -153,3 +153,10 @@ ignore-init-method-arguments = true
153
153
  [tool.pydantic-pycharm-plugin.parsable-types]
154
154
  # str field may parse int and float
155
155
  str = ["int", "float"]
156
+
157
+ [tool.codespell]
158
+ # Ref: https://github.com/codespell-project/codespell#using-a-config-file
159
+ skip = '.git,*.lock,tests'
160
+ # check-hidden = true
161
+ # ignore-regex = ''
162
+ # ignore-words-list = ''
@@ -1 +0,0 @@
1
- version: str = '0.25.3'