datamodel-code-generator 0.26.1__py3-none-any.whl → 0.26.2__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.

Files changed (30) hide show
  1. datamodel_code_generator/__init__.py +9 -2
  2. datamodel_code_generator/__main__.py +31 -1
  3. datamodel_code_generator/arguments.py +14 -1
  4. datamodel_code_generator/format.py +10 -0
  5. datamodel_code_generator/model/__init__.py +5 -3
  6. datamodel_code_generator/model/base.py +3 -0
  7. datamodel_code_generator/model/dataclass.py +65 -4
  8. datamodel_code_generator/model/enum.py +2 -0
  9. datamodel_code_generator/model/msgspec.py +2 -0
  10. datamodel_code_generator/model/pydantic/base_model.py +4 -0
  11. datamodel_code_generator/model/pydantic/types.py +13 -2
  12. datamodel_code_generator/model/pydantic_v2/base_model.py +2 -0
  13. datamodel_code_generator/model/pydantic_v2/imports.py +1 -0
  14. datamodel_code_generator/model/pydantic_v2/types.py +16 -5
  15. datamodel_code_generator/model/scalar.py +2 -0
  16. datamodel_code_generator/model/template/dataclass.jinja2 +1 -1
  17. datamodel_code_generator/model/typed_dict.py +2 -0
  18. datamodel_code_generator/model/types.py +5 -7
  19. datamodel_code_generator/model/union.py +2 -0
  20. datamodel_code_generator/parser/base.py +15 -2
  21. datamodel_code_generator/parser/graphql.py +6 -0
  22. datamodel_code_generator/parser/jsonschema.py +8 -0
  23. datamodel_code_generator/parser/openapi.py +6 -0
  24. datamodel_code_generator/types.py +3 -1
  25. datamodel_code_generator/version.py +1 -1
  26. {datamodel_code_generator-0.26.1.dist-info → datamodel_code_generator-0.26.2.dist-info}/METADATA +8 -1
  27. {datamodel_code_generator-0.26.1.dist-info → datamodel_code_generator-0.26.2.dist-info}/RECORD +30 -30
  28. {datamodel_code_generator-0.26.1.dist-info → datamodel_code_generator-0.26.2.dist-info}/WHEEL +1 -1
  29. {datamodel_code_generator-0.26.1.dist-info → datamodel_code_generator-0.26.2.dist-info}/LICENSE +0 -0
  30. {datamodel_code_generator-0.26.1.dist-info → datamodel_code_generator-0.26.2.dist-info}/entry_points.txt +0 -0
@@ -30,7 +30,7 @@ from urllib.parse import ParseResult
30
30
  import yaml
31
31
 
32
32
  import datamodel_code_generator.pydantic_patch # noqa: F401
33
- from datamodel_code_generator.format import PythonVersion
33
+ from datamodel_code_generator.format import DatetimeClassType, PythonVersion
34
34
  from datamodel_code_generator.model.pydantic_v2 import UnionMode
35
35
  from datamodel_code_generator.parser import DefaultPutDict, LiteralType
36
36
  from datamodel_code_generator.parser.base import Parser
@@ -301,6 +301,8 @@ def generate(
301
301
  treat_dots_as_module: bool = False,
302
302
  use_exact_imports: bool = False,
303
303
  union_mode: Optional[UnionMode] = None,
304
+ output_datetime_class: Optional[DatetimeClassType] = None,
305
+ keyword_only: bool = False,
304
306
  ) -> None:
305
307
  remote_text_cache: DefaultPutDict[str, str] = DefaultPutDict()
306
308
  if isinstance(input_, str):
@@ -395,9 +397,12 @@ def generate(
395
397
  raise Error('union_mode is only supported for pydantic_v2.BaseModel')
396
398
  else:
397
399
  default_field_extras = None
400
+
398
401
  from datamodel_code_generator.model import get_data_model_types
399
402
 
400
- data_model_types = get_data_model_types(output_model_type, target_python_version)
403
+ data_model_types = get_data_model_types(
404
+ output_model_type, target_python_version, output_datetime_class
405
+ )
401
406
  parser = parser_class(
402
407
  source=input_text or input_,
403
408
  data_model_type=data_model_types.data_model,
@@ -471,6 +476,8 @@ def generate(
471
476
  treat_dots_as_module=treat_dots_as_module,
472
477
  use_exact_imports=use_exact_imports,
473
478
  default_field_extras=default_field_extras,
479
+ target_datetime_class=output_datetime_class,
480
+ keyword_only=keyword_only,
474
481
  **kwargs,
475
482
  )
476
483
 
@@ -51,6 +51,7 @@ from datamodel_code_generator import (
51
51
  )
52
52
  from datamodel_code_generator.arguments import DEFAULT_ENCODING, arg_parser, namespace
53
53
  from datamodel_code_generator.format import (
54
+ DatetimeClassType,
54
55
  PythonVersion,
55
56
  black_find_project_root,
56
57
  is_supported_in_black,
@@ -159,7 +160,7 @@ class Config(BaseModel):
159
160
  target_python_version: PythonVersion = values['target_python_version']
160
161
  if target_python_version == target_python_version.PY_36:
161
162
  raise Error(
162
- f'`--use-generic-container-types` can not be used with `--target-python_version` {target_python_version.PY_36.value}.\n'
163
+ f'`--use-generic-container-types` can not be used with `--target-python-version` {target_python_version.PY_36.value}.\n'
163
164
  ' The version will be not supported in a future version'
164
165
  )
165
166
  return values
@@ -183,6 +184,31 @@ class Config(BaseModel):
183
184
  ) # pragma: no cover
184
185
  return values
185
186
 
187
+ @model_validator(mode='after')
188
+ def validate_keyword_only(cls, values: Dict[str, Any]) -> Dict[str, Any]:
189
+ python_target: PythonVersion = values.get('target_python_version')
190
+ if values.get('keyword_only') and not python_target.has_kw_only_dataclass:
191
+ raise Error(
192
+ f'`--keyword-only` requires `--target-python-version` {PythonVersion.PY_310.value} or higher.'
193
+ )
194
+ return values
195
+
196
+ @model_validator(mode='after')
197
+ def validate_output_datetime_class(cls, values: Dict[str, Any]) -> Dict[str, Any]:
198
+ datetime_class_type: Optional[DatetimeClassType] = values.get(
199
+ 'output_datetime_class'
200
+ )
201
+ if (
202
+ datetime_class_type
203
+ and datetime_class_type is not DatetimeClassType.Datetime
204
+ and values.get('output_model_type') == DataModelType.DataclassesDataclass
205
+ ):
206
+ raise Error(
207
+ '`--output-datetime-class` only allows "datetime" for '
208
+ f'`--output-model-type` {DataModelType.DataclassesDataclass.value}'
209
+ )
210
+ return values
211
+
186
212
  # Pydantic 1.5.1 doesn't support each_item=True correctly
187
213
  @field_validator('http_headers', mode='before')
188
214
  def validate_http_headers(cls, value: Any) -> Optional[List[Tuple[str, str]]]:
@@ -313,6 +339,8 @@ class Config(BaseModel):
313
339
  treat_dot_as_module: bool = False
314
340
  use_exact_imports: bool = False
315
341
  union_mode: Optional[UnionMode] = None
342
+ output_datetime_class: Optional[DatetimeClassType] = None
343
+ keyword_only: bool = False
316
344
 
317
345
  def merge_args(self, args: Namespace) -> None:
318
346
  set_args = {
@@ -512,6 +540,8 @@ def main(args: Optional[Sequence[str]] = None) -> Exit:
512
540
  treat_dots_as_module=config.treat_dot_as_module,
513
541
  use_exact_imports=config.use_exact_imports,
514
542
  union_mode=config.union_mode,
543
+ output_datetime_class=config.output_datetime_class,
544
+ keyword_only=config.keyword_only,
515
545
  )
516
546
  return Exit.OK
517
547
  except InvalidClassNameError as e:
@@ -6,7 +6,7 @@ from operator import attrgetter
6
6
  from typing import TYPE_CHECKING
7
7
 
8
8
  from datamodel_code_generator import DataModelType, InputFileType, OpenAPIScope
9
- from datamodel_code_generator.format import PythonVersion
9
+ from datamodel_code_generator.format import DatetimeClassType, PythonVersion
10
10
  from datamodel_code_generator.model.pydantic_v2 import UnionMode
11
11
  from datamodel_code_generator.parser import LiteralType
12
12
  from datamodel_code_generator.types import StrictTypes
@@ -150,6 +150,12 @@ model_options.add_argument(
150
150
  action='store_true',
151
151
  default=None,
152
152
  )
153
+ model_options.add_argument(
154
+ '--keyword-only',
155
+ help='Defined models as keyword only (for example dataclass(kw_only=True)).',
156
+ action='store_true',
157
+ default=None,
158
+ )
153
159
  model_options.add_argument(
154
160
  '--reuse-model',
155
161
  help='Reuse models on the field when a module has the model with the same content',
@@ -192,6 +198,13 @@ model_options.add_argument(
192
198
  action='store_true',
193
199
  default=False,
194
200
  )
201
+ model_options.add_argument(
202
+ '--output-datetime-class',
203
+ help='Choose Datetime class between AwareDatetime, NaiveDatetime or datetime. '
204
+ 'Each output model has its default mapping (for example pydantic: datetime, dataclass: str, ...)',
205
+ choices=[i.value for i in DatetimeClassType],
206
+ default=None,
207
+ )
195
208
 
196
209
  # ======================================================================================
197
210
  # Typing options for generated models
@@ -17,6 +17,12 @@ except ImportError: # pragma: no cover
17
17
  black.mode = None
18
18
 
19
19
 
20
+ class DatetimeClassType(Enum):
21
+ Datetime = 'datetime'
22
+ Awaredatetime = 'AwareDatetime'
23
+ Naivedatetime = 'NaiveDatetime'
24
+
25
+
20
26
  class PythonVersion(Enum):
21
27
  PY_36 = '3.6'
22
28
  PY_37 = '3.7'
@@ -73,6 +79,10 @@ class PythonVersion(Enum):
73
79
  def has_typed_dict_non_required(self) -> bool:
74
80
  return self._is_py_311_or_later
75
81
 
82
+ @property
83
+ def has_kw_only_dataclass(self) -> bool:
84
+ return self._is_py_310_or_later
85
+
76
86
 
77
87
  if TYPE_CHECKING:
78
88
 
@@ -6,7 +6,7 @@ from ..types import DataTypeManager as DataTypeManagerABC
6
6
  from .base import ConstraintsBase, DataModel, DataModelFieldBase
7
7
 
8
8
  if TYPE_CHECKING:
9
- from .. import DataModelType, PythonVersion
9
+ from .. import DataModelType, DatetimeClassType, PythonVersion
10
10
 
11
11
 
12
12
  class DataModelSet(NamedTuple):
@@ -19,7 +19,9 @@ class DataModelSet(NamedTuple):
19
19
 
20
20
 
21
21
  def get_data_model_types(
22
- data_model_type: DataModelType, target_python_version: PythonVersion
22
+ data_model_type: DataModelType,
23
+ target_python_version: PythonVersion,
24
+ target_datetime_class: DatetimeClassType,
23
25
  ) -> DataModelSet:
24
26
  from .. import DataModelType
25
27
  from . import dataclass, msgspec, pydantic, pydantic_v2, rootmodel, typed_dict
@@ -46,7 +48,7 @@ def get_data_model_types(
46
48
  data_model=dataclass.DataClass,
47
49
  root_model=rootmodel.RootModel,
48
50
  field_model=dataclass.DataModelField,
49
- data_type_manager=DataTypeManager,
51
+ data_type_manager=dataclass.DataTypeManager,
50
52
  dump_resolve_reference_action=None,
51
53
  )
52
54
  elif data_model_type == DataModelType.TypingTypedDict:
@@ -293,7 +293,9 @@ class DataModel(TemplateBase, Nullable, ABC):
293
293
  description: Optional[str] = None,
294
294
  default: Any = UNDEFINED,
295
295
  nullable: bool = False,
296
+ keyword_only: bool = False,
296
297
  ) -> None:
298
+ self.keyword_only = keyword_only
297
299
  if not self.TEMPLATE_FILE_PATH:
298
300
  raise Exception('TEMPLATE_FILE_PATH is undefined')
299
301
 
@@ -452,6 +454,7 @@ class DataModel(TemplateBase, Nullable, ABC):
452
454
  base_class=self.base_class,
453
455
  methods=self.methods,
454
456
  description=self.description,
457
+ keyword_only=self.keyword_only,
455
458
  **self.extra_template_data,
456
459
  )
457
460
  return response
@@ -1,13 +1,32 @@
1
1
  from pathlib import Path
2
- from typing import Any, ClassVar, DefaultDict, Dict, List, Optional, Set, Tuple
3
-
4
- from datamodel_code_generator.imports import Import
2
+ from typing import (
3
+ Any,
4
+ ClassVar,
5
+ DefaultDict,
6
+ Dict,
7
+ List,
8
+ Optional,
9
+ Sequence,
10
+ Set,
11
+ Tuple,
12
+ )
13
+
14
+ from datamodel_code_generator import DatetimeClassType, PythonVersion
15
+ from datamodel_code_generator.imports import (
16
+ IMPORT_DATE,
17
+ IMPORT_DATETIME,
18
+ IMPORT_TIME,
19
+ IMPORT_TIMEDELTA,
20
+ Import,
21
+ )
5
22
  from datamodel_code_generator.model import DataModel, DataModelFieldBase
6
23
  from datamodel_code_generator.model.base import UNDEFINED
7
24
  from datamodel_code_generator.model.imports import IMPORT_DATACLASS, IMPORT_FIELD
8
25
  from datamodel_code_generator.model.pydantic.base_model import Constraints
26
+ from datamodel_code_generator.model.types import DataTypeManager as _DataTypeManager
27
+ from datamodel_code_generator.model.types import type_map_factory
9
28
  from datamodel_code_generator.reference import Reference
10
- from datamodel_code_generator.types import chain_as_tuple
29
+ from datamodel_code_generator.types import DataType, StrictTypes, Types, chain_as_tuple
11
30
 
12
31
 
13
32
  def _has_field_assignment(field: DataModelFieldBase) -> bool:
@@ -36,6 +55,7 @@ class DataClass(DataModel):
36
55
  description: Optional[str] = None,
37
56
  default: Any = UNDEFINED,
38
57
  nullable: bool = False,
58
+ keyword_only: bool = False,
39
59
  ) -> None:
40
60
  super().__init__(
41
61
  reference=reference,
@@ -50,6 +70,7 @@ class DataClass(DataModel):
50
70
  description=description,
51
71
  default=default,
52
72
  nullable=nullable,
73
+ keyword_only=keyword_only,
53
74
  )
54
75
 
55
76
 
@@ -118,3 +139,43 @@ class DataModelField(DataModelFieldBase):
118
139
  f'{k}={v if k == "default_factory" else repr(v)}' for k, v in data.items()
119
140
  ]
120
141
  return f'field({", ".join(kwargs)})'
142
+
143
+
144
+ class DataTypeManager(_DataTypeManager):
145
+ def __init__(
146
+ self,
147
+ python_version: PythonVersion = PythonVersion.PY_38,
148
+ use_standard_collections: bool = False,
149
+ use_generic_container_types: bool = False,
150
+ strict_types: Optional[Sequence[StrictTypes]] = None,
151
+ use_non_positive_negative_number_constrained_types: bool = False,
152
+ use_union_operator: bool = False,
153
+ use_pendulum: bool = False,
154
+ target_datetime_class: DatetimeClassType = DatetimeClassType.Datetime,
155
+ ):
156
+ super().__init__(
157
+ python_version,
158
+ use_standard_collections,
159
+ use_generic_container_types,
160
+ strict_types,
161
+ use_non_positive_negative_number_constrained_types,
162
+ use_union_operator,
163
+ use_pendulum,
164
+ target_datetime_class,
165
+ )
166
+
167
+ datetime_map = (
168
+ {
169
+ Types.time: self.data_type.from_import(IMPORT_TIME),
170
+ Types.date: self.data_type.from_import(IMPORT_DATE),
171
+ Types.date_time: self.data_type.from_import(IMPORT_DATETIME),
172
+ Types.timedelta: self.data_type.from_import(IMPORT_TIMEDELTA),
173
+ }
174
+ if target_datetime_class is DatetimeClassType.Datetime
175
+ else {}
176
+ )
177
+
178
+ self.type_map: Dict[Types, DataType] = {
179
+ **type_map_factory(self.data_type),
180
+ **datetime_map,
181
+ }
@@ -47,6 +47,7 @@ class Enum(DataModel):
47
47
  type_: Optional[Types] = None,
48
48
  default: Any = UNDEFINED,
49
49
  nullable: bool = False,
50
+ keyword_only: bool = False,
50
51
  ):
51
52
  super().__init__(
52
53
  reference=reference,
@@ -61,6 +62,7 @@ class Enum(DataModel):
61
62
  description=description,
62
63
  default=default,
63
64
  nullable=nullable,
65
+ keyword_only=keyword_only,
64
66
  )
65
67
 
66
68
  if not base_classes and type_:
@@ -86,6 +86,7 @@ class Struct(DataModel):
86
86
  description: Optional[str] = None,
87
87
  default: Any = UNDEFINED,
88
88
  nullable: bool = False,
89
+ keyword_only: bool = False,
89
90
  ) -> None:
90
91
  super().__init__(
91
92
  reference=reference,
@@ -100,6 +101,7 @@ class Struct(DataModel):
100
101
  description=description,
101
102
  default=default,
102
103
  nullable=nullable,
104
+ keyword_only=keyword_only,
103
105
  )
104
106
 
105
107
 
@@ -225,6 +225,7 @@ class BaseModelBase(DataModel, ABC):
225
225
  description: Optional[str] = None,
226
226
  default: Any = UNDEFINED,
227
227
  nullable: bool = False,
228
+ keyword_only: bool = False,
228
229
  ) -> None:
229
230
  methods: List[str] = [field.method for field in fields if field.method]
230
231
 
@@ -241,6 +242,7 @@ class BaseModelBase(DataModel, ABC):
241
242
  description=description,
242
243
  default=default,
243
244
  nullable=nullable,
245
+ keyword_only=keyword_only,
244
246
  )
245
247
 
246
248
  @cached_property
@@ -275,6 +277,7 @@ class BaseModel(BaseModelBase):
275
277
  description: Optional[str] = None,
276
278
  default: Any = UNDEFINED,
277
279
  nullable: bool = False,
280
+ keyword_only: bool = False,
278
281
  ) -> None:
279
282
  super().__init__(
280
283
  reference=reference,
@@ -288,6 +291,7 @@ class BaseModel(BaseModelBase):
288
291
  description=description,
289
292
  default=default,
290
293
  nullable=nullable,
294
+ keyword_only=keyword_only,
291
295
  )
292
296
  config_parameters: Dict[str, Any] = {}
293
297
 
@@ -3,7 +3,7 @@ from __future__ import annotations
3
3
  from decimal import Decimal
4
4
  from typing import Any, ClassVar, Dict, Optional, Sequence, Set, Type
5
5
 
6
- from datamodel_code_generator.format import PythonVersion
6
+ from datamodel_code_generator.format import DatetimeClassType, PythonVersion
7
7
  from datamodel_code_generator.imports import (
8
8
  IMPORT_ANY,
9
9
  IMPORT_DATE,
@@ -59,6 +59,7 @@ def type_map_factory(
59
59
  strict_types: Sequence[StrictTypes],
60
60
  pattern_key: str,
61
61
  use_pendulum: bool,
62
+ target_datetime_class: DatetimeClassType,
62
63
  ) -> Dict[Types, DataType]:
63
64
  data_type_int = data_type(type='int')
64
65
  data_type_float = data_type(type='float')
@@ -162,6 +163,7 @@ class DataTypeManager(_DataTypeManager):
162
163
  use_non_positive_negative_number_constrained_types: bool = False,
163
164
  use_union_operator: bool = False,
164
165
  use_pendulum: bool = False,
166
+ target_datetime_class: Optional[DatetimeClassType] = None,
165
167
  ):
166
168
  super().__init__(
167
169
  python_version,
@@ -171,12 +173,14 @@ class DataTypeManager(_DataTypeManager):
171
173
  use_non_positive_negative_number_constrained_types,
172
174
  use_union_operator,
173
175
  use_pendulum,
176
+ target_datetime_class,
174
177
  )
175
178
 
176
179
  self.type_map: Dict[Types, DataType] = self.type_map_factory(
177
180
  self.data_type,
178
181
  strict_types=self.strict_types,
179
182
  pattern_key=self.PATTERN_KEY,
183
+ target_datetime_class=target_datetime_class,
180
184
  )
181
185
  self.strict_type_map: Dict[StrictTypes, DataType] = strict_type_map_factory(
182
186
  self.data_type,
@@ -200,8 +204,15 @@ class DataTypeManager(_DataTypeManager):
200
204
  data_type: Type[DataType],
201
205
  strict_types: Sequence[StrictTypes],
202
206
  pattern_key: str,
207
+ target_datetime_class: DatetimeClassType,
203
208
  ) -> Dict[Types, DataType]:
204
- return type_map_factory(data_type, strict_types, pattern_key, self.use_pendulum)
209
+ return type_map_factory(
210
+ data_type,
211
+ strict_types,
212
+ pattern_key,
213
+ self.use_pendulum,
214
+ self.target_datetime_class,
215
+ )
205
216
 
206
217
  def transform_kwargs(
207
218
  self, kwargs: Dict[str, Any], filter_: Set[str]
@@ -183,6 +183,7 @@ class BaseModel(BaseModelBase):
183
183
  description: Optional[str] = None,
184
184
  default: Any = UNDEFINED,
185
185
  nullable: bool = False,
186
+ keyword_only: bool = False,
186
187
  ) -> None:
187
188
  super().__init__(
188
189
  reference=reference,
@@ -196,6 +197,7 @@ class BaseModel(BaseModelBase):
196
197
  description=description,
197
198
  default=default,
198
199
  nullable=nullable,
200
+ keyword_only=keyword_only,
199
201
  )
200
202
  config_parameters: Dict[str, Any] = {}
201
203
 
@@ -2,3 +2,4 @@ from datamodel_code_generator.imports import Import
2
2
 
3
3
  IMPORT_CONFIG_DICT = Import.from_full_path('pydantic.ConfigDict')
4
4
  IMPORT_AWARE_DATETIME = Import.from_full_path('pydantic.AwareDatetime')
5
+ IMPORT_NAIVE_DATETIME = Import.from_full_path('pydantic.NaiveDatetime')
@@ -1,10 +1,14 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import ClassVar, Dict, Sequence, Type
3
+ from typing import ClassVar, Dict, Optional, Sequence, Type
4
4
 
5
+ from datamodel_code_generator.format import DatetimeClassType
5
6
  from datamodel_code_generator.model.pydantic import DataTypeManager as _DataTypeManager
6
7
  from datamodel_code_generator.model.pydantic.imports import IMPORT_CONSTR
7
- from datamodel_code_generator.model.pydantic_v2.imports import IMPORT_AWARE_DATETIME
8
+ from datamodel_code_generator.model.pydantic_v2.imports import (
9
+ IMPORT_AWARE_DATETIME,
10
+ IMPORT_NAIVE_DATETIME,
11
+ )
8
12
  from datamodel_code_generator.types import DataType, StrictTypes, Types
9
13
 
10
14
 
@@ -16,9 +20,12 @@ class DataTypeManager(_DataTypeManager):
16
20
  data_type: Type[DataType],
17
21
  strict_types: Sequence[StrictTypes],
18
22
  pattern_key: str,
23
+ target_datetime_class: Optional[DatetimeClassType] = None,
19
24
  ) -> Dict[Types, DataType]:
20
- return {
21
- **super().type_map_factory(data_type, strict_types, pattern_key),
25
+ result = {
26
+ **super().type_map_factory(
27
+ data_type, strict_types, pattern_key, target_datetime_class
28
+ ),
22
29
  Types.hostname: self.data_type.from_import(
23
30
  IMPORT_CONSTR,
24
31
  strict=StrictTypes.str in strict_types,
@@ -28,5 +35,9 @@ class DataTypeManager(_DataTypeManager):
28
35
  **({'strict': True} if StrictTypes.str in strict_types else {}),
29
36
  },
30
37
  ),
31
- Types.date_time: data_type.from_import(IMPORT_AWARE_DATETIME),
32
38
  }
39
+ if target_datetime_class == DatetimeClassType.Awaredatetime:
40
+ result[Types.date_time] = data_type.from_import(IMPORT_AWARE_DATETIME)
41
+ if target_datetime_class == DatetimeClassType.Naivedatetime:
42
+ result[Types.date_time] = data_type.from_import(IMPORT_NAIVE_DATETIME)
43
+ return result
@@ -46,6 +46,7 @@ class DataTypeScalar(DataModel):
46
46
  description: Optional[str] = None,
47
47
  default: Any = UNDEFINED,
48
48
  nullable: bool = False,
49
+ keyword_only: bool = False,
49
50
  ):
50
51
  extra_template_data = extra_template_data or defaultdict(dict)
51
52
 
@@ -75,4 +76,5 @@ class DataTypeScalar(DataModel):
75
76
  description=description,
76
77
  default=default,
77
78
  nullable=nullable,
79
+ keyword_only=keyword_only,
78
80
  )
@@ -1,7 +1,7 @@
1
1
  {% for decorator in decorators -%}
2
2
  {{ decorator }}
3
3
  {% endfor -%}
4
- @dataclass
4
+ @dataclass{%- if keyword_only -%}(kw_only=True){%- endif %}
5
5
  {%- if base_class %}
6
6
  class {{ class_name }}({{ base_class }}):
7
7
  {%- else %}
@@ -63,6 +63,7 @@ class TypedDict(DataModel):
63
63
  description: Optional[str] = None,
64
64
  default: Any = UNDEFINED,
65
65
  nullable: bool = False,
66
+ keyword_only: bool = False,
66
67
  ) -> None:
67
68
  super().__init__(
68
69
  reference=reference,
@@ -77,6 +78,7 @@ class TypedDict(DataModel):
77
78
  description=description,
78
79
  default=default,
79
80
  nullable=nullable,
81
+ keyword_only=keyword_only,
80
82
  )
81
83
 
82
84
  @property
@@ -1,6 +1,6 @@
1
1
  from typing import Any, Dict, Optional, Sequence, Type
2
2
 
3
- from datamodel_code_generator import PythonVersion
3
+ from datamodel_code_generator import DatetimeClassType, PythonVersion
4
4
  from datamodel_code_generator.imports import (
5
5
  IMPORT_ANY,
6
6
  IMPORT_DECIMAL,
@@ -10,9 +10,7 @@ from datamodel_code_generator.types import DataType, StrictTypes, Types
10
10
  from datamodel_code_generator.types import DataTypeManager as _DataTypeManager
11
11
 
12
12
 
13
- def type_map_factory(
14
- data_type: Type[DataType],
15
- ) -> Dict[Types, DataType]:
13
+ def type_map_factory(data_type: Type[DataType]) -> Dict[Types, DataType]:
16
14
  data_type_int = data_type(type='int')
17
15
  data_type_float = data_type(type='float')
18
16
  data_type_str = data_type(type='str')
@@ -64,6 +62,7 @@ class DataTypeManager(_DataTypeManager):
64
62
  use_non_positive_negative_number_constrained_types: bool = False,
65
63
  use_union_operator: bool = False,
66
64
  use_pendulum: bool = False,
65
+ target_datetime_class: DatetimeClassType = DatetimeClassType.Datetime,
67
66
  ):
68
67
  super().__init__(
69
68
  python_version,
@@ -73,11 +72,10 @@ class DataTypeManager(_DataTypeManager):
73
72
  use_non_positive_negative_number_constrained_types,
74
73
  use_union_operator,
75
74
  use_pendulum,
75
+ target_datetime_class,
76
76
  )
77
77
 
78
- self.type_map: Dict[Types, DataType] = type_map_factory(
79
- self.data_type,
80
- )
78
+ self.type_map: Dict[Types, DataType] = type_map_factory(self.data_type)
81
79
 
82
80
  def get_data_type(
83
81
  self,
@@ -32,6 +32,7 @@ class DataTypeUnion(DataModel):
32
32
  description: Optional[str] = None,
33
33
  default: Any = UNDEFINED,
34
34
  nullable: bool = False,
35
+ keyword_only: bool = False,
35
36
  ):
36
37
  super().__init__(
37
38
  reference=reference,
@@ -46,4 +47,5 @@ class DataTypeUnion(DataModel):
46
47
  description=description,
47
48
  default=default,
48
49
  nullable=nullable,
50
+ keyword_only=keyword_only,
49
51
  )
@@ -26,7 +26,11 @@ from urllib.parse import ParseResult
26
26
 
27
27
  from pydantic import BaseModel
28
28
 
29
- from datamodel_code_generator.format import CodeFormatter, PythonVersion
29
+ from datamodel_code_generator.format import (
30
+ CodeFormatter,
31
+ DatetimeClassType,
32
+ PythonVersion,
33
+ )
30
34
  from datamodel_code_generator.imports import (
31
35
  IMPORT_ANNOTATIONS,
32
36
  IMPORT_LITERAL,
@@ -34,6 +38,7 @@ from datamodel_code_generator.imports import (
34
38
  Import,
35
39
  Imports,
36
40
  )
41
+ from datamodel_code_generator.model import dataclass as dataclass_model
37
42
  from datamodel_code_generator.model import pydantic as pydantic_model
38
43
  from datamodel_code_generator.model import pydantic_v2 as pydantic_model_v2
39
44
  from datamodel_code_generator.model.base import (
@@ -404,7 +409,10 @@ class Parser(ABC):
404
409
  treat_dots_as_module: bool = False,
405
410
  use_exact_imports: bool = False,
406
411
  default_field_extras: Optional[Dict[str, Any]] = None,
412
+ target_datetime_class: DatetimeClassType = DatetimeClassType.Datetime,
413
+ keyword_only: bool = False,
407
414
  ) -> None:
415
+ self.keyword_only = keyword_only
408
416
  self.data_type_manager: DataTypeManager = data_type_manager_type(
409
417
  python_version=target_python_version,
410
418
  use_standard_collections=use_standard_collections,
@@ -412,6 +420,7 @@ class Parser(ABC):
412
420
  strict_types=strict_types,
413
421
  use_union_operator=use_union_operator,
414
422
  use_pendulum=use_pendulum,
423
+ target_datetime_class=target_datetime_class,
415
424
  )
416
425
  self.data_model_type: Type[DataModel] = data_model_type
417
426
  self.data_model_root_type: Type[DataModel] = data_model_root_type
@@ -796,7 +805,11 @@ class Parser(ABC):
796
805
  discriminator_model = data_type.reference.source
797
806
  if not isinstance( # pragma: no cover
798
807
  discriminator_model,
799
- (pydantic_model.BaseModel, pydantic_model_v2.BaseModel),
808
+ (
809
+ pydantic_model.BaseModel,
810
+ pydantic_model_v2.BaseModel,
811
+ dataclass_model.DataClass,
812
+ ),
800
813
  ):
801
814
  continue # pragma: no cover
802
815
  type_names = []
@@ -46,6 +46,7 @@ except ImportError: # pragma: no cover
46
46
  "Please run `$pip install 'datamodel-code-generator[graphql]`' to generate data-model from a GraphQL schema."
47
47
  )
48
48
 
49
+ from datamodel_code_generator.format import DatetimeClassType
49
50
 
50
51
  graphql_resolver = graphql.type.introspection.TypeResolvers()
51
52
 
@@ -157,6 +158,8 @@ class GraphQLParser(Parser):
157
158
  treat_dots_as_module: bool = False,
158
159
  use_exact_imports: bool = False,
159
160
  default_field_extras: Optional[Dict[str, Any]] = None,
161
+ target_datetime_class: DatetimeClassType = DatetimeClassType.Datetime,
162
+ keyword_only: bool = False,
160
163
  ) -> None:
161
164
  super().__init__(
162
165
  source=source,
@@ -227,6 +230,8 @@ class GraphQLParser(Parser):
227
230
  treat_dots_as_module=treat_dots_as_module,
228
231
  use_exact_imports=use_exact_imports,
229
232
  default_field_extras=default_field_extras,
233
+ target_datetime_class=target_datetime_class,
234
+ keyword_only=keyword_only,
230
235
  )
231
236
 
232
237
  self.data_model_scalar_type = data_model_scalar_type
@@ -460,6 +465,7 @@ class GraphQLParser(Parser):
460
465
  extra_template_data=self.extra_template_data,
461
466
  path=self.current_source_path,
462
467
  description=obj.description,
468
+ keyword_only=self.keyword_only,
463
469
  )
464
470
  self.results.append(data_model_type)
465
471
 
@@ -71,6 +71,8 @@ from datamodel_code_generator.util import (
71
71
  if PYDANTIC_V2:
72
72
  from pydantic import ConfigDict
73
73
 
74
+ from datamodel_code_generator.format import DatetimeClassType
75
+
74
76
 
75
77
  def get_model_by_path(
76
78
  schema: Union[Dict[str, Any], List[Any]], keys: Union[List[str], List[int]]
@@ -444,6 +446,8 @@ class JsonSchemaParser(Parser):
444
446
  treat_dots_as_module: bool = False,
445
447
  use_exact_imports: bool = False,
446
448
  default_field_extras: Optional[Dict[str, Any]] = None,
449
+ target_datetime_class: DatetimeClassType = DatetimeClassType.Datetime,
450
+ keyword_only: bool = False,
447
451
  ) -> None:
448
452
  super().__init__(
449
453
  source=source,
@@ -514,6 +518,8 @@ class JsonSchemaParser(Parser):
514
518
  treat_dots_as_module=treat_dots_as_module,
515
519
  use_exact_imports=use_exact_imports,
516
520
  default_field_extras=default_field_extras,
521
+ target_datetime_class=target_datetime_class,
522
+ keyword_only=keyword_only,
517
523
  )
518
524
 
519
525
  self.remote_object_cache: DefaultPutDict[str, Dict[str, Any]] = DefaultPutDict()
@@ -804,6 +810,7 @@ class JsonSchemaParser(Parser):
804
810
  extra_template_data=self.extra_template_data,
805
811
  path=self.current_source_path,
806
812
  description=obj.description if self.use_schema_description else None,
813
+ keyword_only=self.keyword_only,
807
814
  )
808
815
  self.results.append(data_model_type)
809
816
 
@@ -1047,6 +1054,7 @@ class JsonSchemaParser(Parser):
1047
1054
  path=self.current_source_path,
1048
1055
  description=obj.description if self.use_schema_description else None,
1049
1056
  nullable=obj.type_has_null,
1057
+ keyword_only=self.keyword_only,
1050
1058
  )
1051
1059
  self.results.append(data_model_type)
1052
1060
  return self.data_type(reference=reference)
@@ -36,6 +36,7 @@ from datamodel_code_generator import (
36
36
  load_yaml,
37
37
  snooper_to_methods,
38
38
  )
39
+ from datamodel_code_generator.format import DatetimeClassType
39
40
  from datamodel_code_generator.model import DataModel, DataModelFieldBase
40
41
  from datamodel_code_generator.model import pydantic as pydantic_model
41
42
  from datamodel_code_generator.parser.base import get_special_path
@@ -225,6 +226,8 @@ class OpenAPIParser(JsonSchemaParser):
225
226
  treat_dots_as_module: bool = False,
226
227
  use_exact_imports: bool = False,
227
228
  default_field_extras: Optional[Dict[str, Any]] = None,
229
+ target_datetime_class: DatetimeClassType = DatetimeClassType.Datetime,
230
+ keyword_only: bool = False,
228
231
  ):
229
232
  super().__init__(
230
233
  source=source,
@@ -295,6 +298,8 @@ class OpenAPIParser(JsonSchemaParser):
295
298
  treat_dots_as_module=treat_dots_as_module,
296
299
  use_exact_imports=use_exact_imports,
297
300
  default_field_extras=default_field_extras,
301
+ target_datetime_class=target_datetime_class,
302
+ keyword_only=keyword_only,
298
303
  )
299
304
  self.open_api_scopes: List[OpenAPIScope] = openapi_scopes or [
300
305
  OpenAPIScope.Schemas
@@ -508,6 +513,7 @@ class OpenAPIParser(JsonSchemaParser):
508
513
  fields=fields,
509
514
  reference=reference,
510
515
  custom_base_class=self.base_class,
516
+ keyword_only=self.keyword_only,
511
517
  )
512
518
  )
513
519
 
@@ -27,7 +27,7 @@ import pydantic
27
27
  from packaging import version
28
28
  from pydantic import StrictBool, StrictInt, StrictStr, create_model
29
29
 
30
- from datamodel_code_generator.format import PythonVersion
30
+ from datamodel_code_generator.format import DatetimeClassType, PythonVersion
31
31
  from datamodel_code_generator.imports import (
32
32
  IMPORT_ABC_MAPPING,
33
33
  IMPORT_ABC_SEQUENCE,
@@ -575,6 +575,7 @@ class DataTypeManager(ABC):
575
575
  use_non_positive_negative_number_constrained_types: bool = False,
576
576
  use_union_operator: bool = False,
577
577
  use_pendulum: bool = False,
578
+ target_datetime_class: Optional[DatetimeClassType] = None,
578
579
  ) -> None:
579
580
  self.python_version = python_version
580
581
  self.use_standard_collections: bool = use_standard_collections
@@ -585,6 +586,7 @@ class DataTypeManager(ABC):
585
586
  )
586
587
  self.use_union_operator: bool = use_union_operator
587
588
  self.use_pendulum: bool = use_pendulum
589
+ self.target_datetime_class: DatetimeClassType = target_datetime_class
588
590
 
589
591
  if (
590
592
  use_generic_container_types and python_version == PythonVersion.PY_36
@@ -1 +1 @@
1
- version: str = '0.26.1'
1
+ version: str = '0.26.2'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: datamodel-code-generator
3
- Version: 0.26.1
3
+ Version: 0.26.2
4
4
  Summary: Datamodel Code Generator
5
5
  Home-page: https://github.com/koxudaxi/datamodel-code-generator
6
6
  License: MIT
@@ -16,6 +16,7 @@ Classifier: Programming Language :: Python :: 3.9
16
16
  Classifier: Programming Language :: Python :: 3.10
17
17
  Classifier: Programming Language :: Python :: 3.11
18
18
  Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
19
20
  Classifier: Programming Language :: Python :: Implementation :: CPython
20
21
  Provides-Extra: debug
21
22
  Provides-Extra: graphql
@@ -494,6 +495,12 @@ Model customization:
494
495
  --enable-version-header
495
496
  Enable package version on file headers
496
497
  --keep-model-order Keep generated models'' order
498
+ --keyword-only Defined models as keyword only (for example
499
+ dataclass(kw_only=True)).
500
+ --output-datetime-class {datetime,AwareDatetime,NaiveDatetime}
501
+ Choose Datetime class between AwareDatetime, NaiveDatetime or
502
+ datetime. Each output model has its default mapping, and only
503
+ pydantic and dataclass support this override"
497
504
  --reuse-model Reuse models on the field when a module has the model with the same
498
505
  content
499
506
  --target-python-version {3.6,3.7,3.8,3.9,3.10,3.11,3.12}
@@ -1,35 +1,35 @@
1
- datamodel_code_generator/__init__.py,sha256=HjG9D_8lr44liXSIOEsYYj3xgn-jEz_2iK2uwc0dJao,18517
2
- datamodel_code_generator/__main__.py,sha256=MWBehWH8aY4zqSOUUwuZ4fUBOlnuJ16ZOna4NL28HFo,19746
3
- datamodel_code_generator/arguments.py,sha256=DCiFpkhqvq5OvHNgABCtNtw6eckp0U7U5fYT1e8NCHM,15558
4
- datamodel_code_generator/format.py,sha256=keAejlYYIBdfUNbkr-IFMfro0on9ZzaqlVulNgpnKco,8653
1
+ datamodel_code_generator/__init__.py,sha256=iNtaR-iP5McYCDelHc_67DiuKlx-EU7j9rLbCJnYHII,18757
2
+ datamodel_code_generator/__main__.py,sha256=oWeH6qccmFP5DJJWqCGmtLCXCExizYbro6hUb6Q4uGk,21085
3
+ datamodel_code_generator/arguments.py,sha256=Q3LxZut72yqazXGjEG4CN1w4WFvpmldwOrgRhi_gL2o,16070
4
+ datamodel_code_generator/format.py,sha256=kA2rESd51uCDGAzTCz4wX24WitU7X1Zi68v4a_59wmc,8884
5
5
  datamodel_code_generator/http.py,sha256=CwLVnXO4_W_fWKJsHnJp6Q_3GuF3qjCjeAe48Ihawrs,714
6
6
  datamodel_code_generator/imports.py,sha256=RagA3hne8OtrbZwDA7TaORQll6tKIzket-A6ShOWf8s,5728
7
- datamodel_code_generator/model/__init__.py,sha256=A0CqnL87-lY_Te-n-99ya5v7h6l4jE6hOPP_itvcWOc,3091
8
- datamodel_code_generator/model/base.py,sha256=3a7gTAI3e_2WMdgHyhKTWqs1qELqVb18HuwcBof-2C4,14059
9
- datamodel_code_generator/model/dataclass.py,sha256=9meJNWb-XPYYO8kDMSLhSfO6fulGWV7r3_XIM5kA71M,3965
10
- datamodel_code_generator/model/enum.py,sha256=Giehhtij2DZs2LssSJnG_CIIHsSA7Mkz471GU-Cb5kI,3338
7
+ datamodel_code_generator/model/__init__.py,sha256=-5-3m6xlNia1ROePCqmV2lvvvwyzgFS9zFGUzqQzQf8,3171
8
+ datamodel_code_generator/model/base.py,sha256=KMrVsxoQEeKhA5akGLxM-nUzHINM0GTt2t6HTF9SrKQ,14180
9
+ datamodel_code_generator/model/dataclass.py,sha256=Ebn48PRvCOCcyKhxYxgYBbRcpIvXko-VomZ6N8gKrLA,5871
10
+ datamodel_code_generator/model/enum.py,sha256=HTFMCNoHmJRHUoNqQCat3kLbtdmSVX666BubN3bcF1I,3413
11
11
  datamodel_code_generator/model/imports.py,sha256=9-0bd-DvZRjZkWMsmw-gykL8fzTd6M-vQEqS7Rm_ty4,725
12
- datamodel_code_generator/model/msgspec.py,sha256=J4U8aroVzBdMkv8CfuOf9mV3X7k83lom-CW4ATpbCfk,9093
12
+ datamodel_code_generator/model/msgspec.py,sha256=GONU6gRJ84piJpNDrmU9gTg_n_eY7Sd5KeCUQJN5IaE,9168
13
13
  datamodel_code_generator/model/pydantic/__init__.py,sha256=AYMjDCtnV4vweYqe1asTRCYdOo8IGLBhd8pEdxyY8ok,1372
14
- datamodel_code_generator/model/pydantic/base_model.py,sha256=Y2GSlcLBvQh8hrlwGE3rGLTsQLKxERBts0so5BcUP6Y,11970
14
+ datamodel_code_generator/model/pydantic/base_model.py,sha256=sTxrFItp7wpL0OxBYOGLyyjWWrzGDuV_pFeHPsSQ4Gs,12120
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=_-Ihb5TVCq0QO2wMf7N0OfzhTeuc4B0oVaT5XiszJrQ,13234
18
+ datamodel_code_generator/model/pydantic/types.py,sha256=xtkdfQc295ACRvsSig0Zo-mxCw8Xdfu2VXeDbLF_l0Y,13607
19
19
  datamodel_code_generator/model/pydantic_v2/__init__.py,sha256=4CS-uI5_4xnvxBKl-Ht1a4E_4fIsfZ8T4jdst0cbZDk,975
20
- datamodel_code_generator/model/pydantic_v2/base_model.py,sha256=kObU_n-RN7RSR7lfiH2oxjqGD8cALPxi24AHlFdFEgE,7958
21
- datamodel_code_generator/model/pydantic_v2/imports.py,sha256=Q6XC6iE5v4LJvQ2DOXDGFtR-FnGPsaZ56KiiTiF2bIE,191
20
+ datamodel_code_generator/model/pydantic_v2/base_model.py,sha256=JHUirMIITztUFtvL1vc_tkE0tRhum3f-JNydmVuzngs,8033
21
+ datamodel_code_generator/model/pydantic_v2/imports.py,sha256=n0yWg5QGDDzOseN35RJFlEbmV6oKMLQ8Kju1w4N6D08,263
22
22
  datamodel_code_generator/model/pydantic_v2/root_model.py,sha256=iApUz1uGe4hHV8RyOK8rGjaEJcnqTJZqo-0uSfyVMGc,884
23
- datamodel_code_generator/model/pydantic_v2/types.py,sha256=6KAJXO_SGs5bc8GQScCpowgqjaSmrn9W9iewpWIHack,1440
23
+ datamodel_code_generator/model/pydantic_v2/types.py,sha256=JV2m0TOPbh-1oHpN_W12KKuNf19RI-V2oehAUJtDIn4,1921
24
24
  datamodel_code_generator/model/rootmodel.py,sha256=8bW7emVQtDGe2iUAmqtlQb607LvTRL0TBSP66pIeNzY,202
25
- datamodel_code_generator/model/scalar.py,sha256=d4vqDW9OcvPR1I0lrlss2wDprWbUt9kPv767VYZi_Ks,2521
25
+ datamodel_code_generator/model/scalar.py,sha256=md13JdHahWqjuASbivhywvy4MQ8sZhCAaClhEvWrY3M,2596
26
26
  datamodel_code_generator/model/template/Enum.jinja2,sha256=k9lB8iQUsB94bPi8e3xJEd0AGk2ciWL-pSZuGY5kNPQ,378
27
27
  datamodel_code_generator/model/template/Scalar.jinja2,sha256=Ss22-mYG3Vez-pbqmW2zFzwxGVhXkbQcAVTMV7POpg8,104
28
28
  datamodel_code_generator/model/template/TypedDict.jinja2,sha256=J_Pe_CiuvTOb-EUCExXPaeTEFzn2keyrKB0wglZ8HgA,135
29
29
  datamodel_code_generator/model/template/TypedDictClass.jinja2,sha256=URwp5__WyR8G21Hoyc17aMzoast-NppXnXe19VFi5wQ,377
30
30
  datamodel_code_generator/model/template/TypedDictFunction.jinja2,sha256=KjSij5_w4ow4a12SR3orYOndmXGkIvJBBUN735bQ6G0,321
31
31
  datamodel_code_generator/model/template/Union.jinja2,sha256=sq7o--2ESUSfIL4kCfgnr5ZXPFa_VeioqbATTY-N-5I,258
32
- datamodel_code_generator/model/template/dataclass.jinja2,sha256=U-zwO9xoClVcNmNCDBnvZQo0_xcRWsPYh2QfsNMyUsQ,816
32
+ datamodel_code_generator/model/template/dataclass.jinja2,sha256=wRSy2g11Dr1GN9YUl13OZt2xg37bQyFwKn2wEsQIndE,865
33
33
  datamodel_code_generator/model/template/msgspec.jinja2,sha256=DVYCuXV5VpOx-8xiDsaqKwBzDuGAmMuD3dgWCM6-o4o,1070
34
34
  datamodel_code_generator/model/template/pydantic/BaseModel.jinja2,sha256=sYZa-47YAXqZrd5cYKVnPrsbDvLkHEJOUd7M0nAosP8,1084
35
35
  datamodel_code_generator/model/template/pydantic/BaseModel_root.jinja2,sha256=WDdTXYNTrkIw-B4OvPVxOaETTknLs0zdNuq_iDQ2Bcw,1000
@@ -39,22 +39,22 @@ datamodel_code_generator/model/template/pydantic_v2/BaseModel.jinja2,sha256=XdSC
39
39
  datamodel_code_generator/model/template/pydantic_v2/ConfigDict.jinja2,sha256=xHvBYrh__32O1xRCSl6_u5zbyYIjB8a5k8fZiTo0spY,149
40
40
  datamodel_code_generator/model/template/pydantic_v2/RootModel.jinja2,sha256=XQBlML7Hm5hN6_AExENNvVc_yxNWijcIfTTbbmegCpE,1223
41
41
  datamodel_code_generator/model/template/root.jinja2,sha256=3OTtibxLcGA-FMdR0QDCJUJQgf_kRW0OafeCTPFSFFo,162
42
- datamodel_code_generator/model/typed_dict.py,sha256=pzUaKLaVDF5rfxAaR1m4FqnhR00eE6AIP30oGTj67fY,4717
43
- datamodel_code_generator/model/types.py,sha256=pCh1vRmz8QPo7VBJed4vUrrgKtI5sLMqeSySmkQfI5c,3054
44
- datamodel_code_generator/model/union.py,sha256=loaVWQi-UHkV4gLfF2JhxLcgZRMsejaoJzGvjTlp_bo,1716
42
+ datamodel_code_generator/model/typed_dict.py,sha256=W1r3NRy8uFkYe3YVnjL9PAGZdGyoSDcd-Otq7cxFDMM,4792
43
+ datamodel_code_generator/model/types.py,sha256=T3Xxa7MToHXIH1zXHT1P6PzE49aah0IhnwkCbYVc79c,3157
44
+ datamodel_code_generator/model/union.py,sha256=4LT5E46c2OH1dvQmvRWM7mX1Pziu_oWBHwXsGsylUbY,1791
45
45
  datamodel_code_generator/parser/__init__.py,sha256=zHbw6RPlJC0SAQjb-XyVlyZhcOu5PfYgPidy6jlUM8M,793
46
- datamodel_code_generator/parser/base.py,sha256=cAs2AeqUMnGnWM7iGrzUzfuzX3b2GaOECDPqilomunA,59912
47
- datamodel_code_generator/parser/graphql.py,sha256=LmPQZuu7VYQ3JBD6RUCqDQNlSZuqIZSwFcbZouo-4qc,22037
48
- datamodel_code_generator/parser/jsonschema.py,sha256=PJ0VGIYxrm6tUcQhouuV50FwOmh3nZfcPNMeG3ojU6w,70259
49
- datamodel_code_generator/parser/openapi.py,sha256=mawqfJeOqDvkX1_63uqRhLC1EaYR8QkAyZ93MneeMK8,25930
46
+ datamodel_code_generator/parser/base.py,sha256=mHnU_EJbbChqL4JrmS_MluWNfGKDBdR2PTJy_xz4YZs,60371
47
+ datamodel_code_generator/parser/graphql.py,sha256=QpLHwyCw5F51w6_Iui_cL1cAblQ74ZrRx1vfzYh0Uo0,22354
48
+ datamodel_code_generator/parser/jsonschema.py,sha256=L_QxO4lG6lzHbcVl33ImEQP6mNlZWUH3ootPMrtmHQI,70621
49
+ datamodel_code_generator/parser/openapi.py,sha256=ENpjBKcqZyjcxgVfLKMbI5sDWfQufY1JmPXzir_IwCE,26255
50
50
  datamodel_code_generator/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
51
  datamodel_code_generator/pydantic_patch.py,sha256=5UKotLqor9HixzXk463CUevyCcH2zmQljMAPRyTOxiM,570
52
52
  datamodel_code_generator/reference.py,sha256=EoalUNUP5us31bfMrHDa1iiKqxL8gHrpZKY_IxgZrOg,26347
53
- datamodel_code_generator/types.py,sha256=-4gHSowXFyXQ3iNPMnnMl3pJfTC9B710Fg_kpI4bXnU,19654
53
+ datamodel_code_generator/types.py,sha256=Mtp-owOLiNlbbXU9tTFJH0MBFP3UYyFLL4jENdDD6es,19818
54
54
  datamodel_code_generator/util.py,sha256=OmYaVP0z0fGPnvmZQx63qmdMwFnMAIVHfTwSkExpoKk,2829
55
- datamodel_code_generator/version.py,sha256=9Z2YqjjyXFb87xaBctkV6VEOIZxXm7gvppfOR4W9AK4,24
56
- datamodel_code_generator-0.26.1.dist-info/LICENSE,sha256=K54Lwc6_jduycsy8oFFjQEeSSuEiqvVIjCGIXOMnuTQ,1068
57
- datamodel_code_generator-0.26.1.dist-info/METADATA,sha256=xFQ9aKdPmLd1isX6YP-FVm_b9AVkx7F9vEgfyhsmlEI,24317
58
- datamodel_code_generator-0.26.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
59
- datamodel_code_generator-0.26.1.dist-info/entry_points.txt,sha256=bykbUWqOCiKfxJPGe8jpNqTqD1NG7uyRmozdnwzu7rk,76
60
- datamodel_code_generator-0.26.1.dist-info/RECORD,,
55
+ datamodel_code_generator/version.py,sha256=2wxCCX8dkrhCy1rddbMrBMdf8znpK_gbbznigtdWVUk,24
56
+ datamodel_code_generator-0.26.2.dist-info/LICENSE,sha256=K54Lwc6_jduycsy8oFFjQEeSSuEiqvVIjCGIXOMnuTQ,1068
57
+ datamodel_code_generator-0.26.2.dist-info/METADATA,sha256=Ejj598KgHsENHFlQDdWl07onYpZG1ge38ucnRLqWZRY,24793
58
+ datamodel_code_generator-0.26.2.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
59
+ datamodel_code_generator-0.26.2.dist-info/entry_points.txt,sha256=bykbUWqOCiKfxJPGe8jpNqTqD1NG7uyRmozdnwzu7rk,76
60
+ datamodel_code_generator-0.26.2.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.0
2
+ Generator: poetry-core 1.9.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any