datamodel-code-generator 0.25.9__py3-none-any.whl → 0.26.0__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.
- datamodel_code_generator/__init__.py +13 -8
- datamodel_code_generator/__main__.py +5 -1
- datamodel_code_generator/arguments.py +9 -3
- datamodel_code_generator/format.py +3 -1
- datamodel_code_generator/model/pydantic/types.py +1 -1
- datamodel_code_generator/model/pydantic_v2/__init__.py +2 -1
- datamodel_code_generator/model/pydantic_v2/base_model.py +14 -18
- datamodel_code_generator/model/pydantic_v2/root_model.py +1 -4
- datamodel_code_generator/model/template/pydantic_v2/BaseModel.jinja2 +1 -1
- datamodel_code_generator/model/types.py +1 -1
- datamodel_code_generator/parser/base.py +3 -1
- datamodel_code_generator/parser/graphql.py +29 -17
- datamodel_code_generator/parser/jsonschema.py +8 -3
- datamodel_code_generator/parser/openapi.py +3 -1
- datamodel_code_generator/pydantic_patch.py +2 -1
- datamodel_code_generator/types.py +2 -2
- datamodel_code_generator/util.py +12 -31
- datamodel_code_generator/version.py +1 -1
- {datamodel_code_generator-0.25.9.dist-info → datamodel_code_generator-0.26.0.dist-info}/METADATA +71 -73
- {datamodel_code_generator-0.25.9.dist-info → datamodel_code_generator-0.26.0.dist-info}/RECORD +23 -23
- {datamodel_code_generator-0.25.9.dist-info → datamodel_code_generator-0.26.0.dist-info}/LICENSE +0 -0
- {datamodel_code_generator-0.25.9.dist-info → datamodel_code_generator-0.26.0.dist-info}/WHEEL +0 -0
- {datamodel_code_generator-0.25.9.dist-info → datamodel_code_generator-0.26.0.dist-info}/entry_points.txt +0 -0
|
@@ -31,6 +31,7 @@ import yaml
|
|
|
31
31
|
|
|
32
32
|
import datamodel_code_generator.pydantic_patch # noqa: F401
|
|
33
33
|
from datamodel_code_generator.format import PythonVersion
|
|
34
|
+
from datamodel_code_generator.model.pydantic_v2 import UnionMode
|
|
34
35
|
from datamodel_code_generator.parser import DefaultPutDict, LiteralType
|
|
35
36
|
from datamodel_code_generator.parser.base import Parser
|
|
36
37
|
from datamodel_code_generator.types import StrictTypes
|
|
@@ -66,14 +67,9 @@ else:
|
|
|
66
67
|
def get_version() -> str:
|
|
67
68
|
package = 'datamodel-code-generator'
|
|
68
69
|
|
|
69
|
-
|
|
70
|
-
from importlib.metadata import version
|
|
71
|
-
|
|
72
|
-
return version(package)
|
|
73
|
-
except ImportError:
|
|
74
|
-
import pkg_resources
|
|
70
|
+
from importlib.metadata import version
|
|
75
71
|
|
|
76
|
-
|
|
72
|
+
return version(package)
|
|
77
73
|
|
|
78
74
|
|
|
79
75
|
def enable_debug_message() -> None: # pragma: no cover
|
|
@@ -241,7 +237,7 @@ def generate(
|
|
|
241
237
|
input_file_type: InputFileType = InputFileType.Auto,
|
|
242
238
|
output: Optional[Path] = None,
|
|
243
239
|
output_model_type: DataModelType = DataModelType.PydanticBaseModel,
|
|
244
|
-
target_python_version: PythonVersion = PythonVersion.
|
|
240
|
+
target_python_version: PythonVersion = PythonVersion.PY_38,
|
|
245
241
|
base_class: str = '',
|
|
246
242
|
additional_imports: Optional[List[str]] = None,
|
|
247
243
|
custom_template_dir: Optional[Path] = None,
|
|
@@ -304,6 +300,7 @@ def generate(
|
|
|
304
300
|
http_query_parameters: Optional[Sequence[Tuple[str, str]]] = None,
|
|
305
301
|
treat_dots_as_module: bool = False,
|
|
306
302
|
use_exact_imports: bool = False,
|
|
303
|
+
union_mode: Optional[UnionMode] = None,
|
|
307
304
|
) -> None:
|
|
308
305
|
remote_text_cache: DefaultPutDict[str, str] = DefaultPutDict()
|
|
309
306
|
if isinstance(input_, str):
|
|
@@ -391,6 +388,13 @@ def generate(
|
|
|
391
388
|
if isinstance(input_, ParseResult) and input_file_type not in RAW_DATA_TYPES:
|
|
392
389
|
input_text = None
|
|
393
390
|
|
|
391
|
+
if union_mode is not None:
|
|
392
|
+
if output_model_type == DataModelType.PydanticV2BaseModel:
|
|
393
|
+
default_field_extras = {'union_mode': union_mode}
|
|
394
|
+
else: # pragma: no cover
|
|
395
|
+
raise Error('union_mode is only supported for pydantic_v2.BaseModel')
|
|
396
|
+
else:
|
|
397
|
+
default_field_extras = None
|
|
394
398
|
from datamodel_code_generator.model import get_data_model_types
|
|
395
399
|
|
|
396
400
|
data_model_types = get_data_model_types(output_model_type, target_python_version)
|
|
@@ -466,6 +470,7 @@ def generate(
|
|
|
466
470
|
http_query_parameters=http_query_parameters,
|
|
467
471
|
treat_dots_as_module=treat_dots_as_module,
|
|
468
472
|
use_exact_imports=use_exact_imports,
|
|
473
|
+
default_field_extras=default_field_extras,
|
|
469
474
|
**kwargs,
|
|
470
475
|
)
|
|
471
476
|
|
|
@@ -33,6 +33,8 @@ import argcomplete
|
|
|
33
33
|
import black
|
|
34
34
|
from pydantic import BaseModel
|
|
35
35
|
|
|
36
|
+
from datamodel_code_generator.model.pydantic_v2 import UnionMode
|
|
37
|
+
|
|
36
38
|
if TYPE_CHECKING:
|
|
37
39
|
from argparse import Namespace
|
|
38
40
|
|
|
@@ -248,7 +250,7 @@ class Config(BaseModel):
|
|
|
248
250
|
output: Optional[Path] = None
|
|
249
251
|
debug: bool = False
|
|
250
252
|
disable_warnings: bool = False
|
|
251
|
-
target_python_version: PythonVersion = PythonVersion.
|
|
253
|
+
target_python_version: PythonVersion = PythonVersion.PY_38
|
|
252
254
|
base_class: str = ''
|
|
253
255
|
additional_imports: Optional[List[str]] = (None,)
|
|
254
256
|
custom_template_dir: Optional[Path] = None
|
|
@@ -310,6 +312,7 @@ class Config(BaseModel):
|
|
|
310
312
|
http_query_parameters: Optional[Sequence[Tuple[str, str]]] = None
|
|
311
313
|
treat_dot_as_module: bool = False
|
|
312
314
|
use_exact_imports: bool = False
|
|
315
|
+
union_mode: Optional[UnionMode] = None
|
|
313
316
|
|
|
314
317
|
def merge_args(self, args: Namespace) -> None:
|
|
315
318
|
set_args = {
|
|
@@ -508,6 +511,7 @@ def main(args: Optional[Sequence[str]] = None) -> Exit:
|
|
|
508
511
|
http_query_parameters=config.http_query_parameters,
|
|
509
512
|
treat_dots_as_module=config.treat_dot_as_module,
|
|
510
513
|
use_exact_imports=config.use_exact_imports,
|
|
514
|
+
union_mode=config.union_mode,
|
|
511
515
|
)
|
|
512
516
|
return Exit.OK
|
|
513
517
|
except InvalidClassNameError as e:
|
|
@@ -7,6 +7,7 @@ from typing import TYPE_CHECKING
|
|
|
7
7
|
|
|
8
8
|
from datamodel_code_generator import DataModelType, InputFileType, OpenAPIScope
|
|
9
9
|
from datamodel_code_generator.format import PythonVersion
|
|
10
|
+
from datamodel_code_generator.model.pydantic_v2 import UnionMode
|
|
10
11
|
from datamodel_code_generator.parser import LiteralType
|
|
11
12
|
from datamodel_code_generator.types import StrictTypes
|
|
12
13
|
|
|
@@ -151,13 +152,13 @@ model_options.add_argument(
|
|
|
151
152
|
)
|
|
152
153
|
model_options.add_argument(
|
|
153
154
|
'--reuse-model',
|
|
154
|
-
help='
|
|
155
|
+
help='Reuse models on the field when a module has the model with the same content',
|
|
155
156
|
action='store_true',
|
|
156
157
|
default=None,
|
|
157
158
|
)
|
|
158
159
|
model_options.add_argument(
|
|
159
160
|
'--target-python-version',
|
|
160
|
-
help='target python version (default: 3.
|
|
161
|
+
help='target python version (default: 3.8)',
|
|
161
162
|
choices=[v.value for v in PythonVersion],
|
|
162
163
|
)
|
|
163
164
|
model_options.add_argument(
|
|
@@ -361,6 +362,12 @@ field_options.add_argument(
|
|
|
361
362
|
action='store_true',
|
|
362
363
|
default=None,
|
|
363
364
|
)
|
|
365
|
+
field_options.add_argument(
|
|
366
|
+
'--union-mode',
|
|
367
|
+
help='Union mode for only pydantic v2 field',
|
|
368
|
+
choices=[u.value for u in UnionMode],
|
|
369
|
+
default=None,
|
|
370
|
+
)
|
|
364
371
|
|
|
365
372
|
# ======================================================================================
|
|
366
373
|
# Options for templating output
|
|
@@ -492,7 +499,6 @@ general_options.add_argument(
|
|
|
492
499
|
help='show version',
|
|
493
500
|
)
|
|
494
501
|
|
|
495
|
-
|
|
496
502
|
__all__ = [
|
|
497
503
|
'arg_parser',
|
|
498
504
|
'DEFAULT_ENCODING',
|
|
@@ -139,7 +139,9 @@ class CodeFormatter:
|
|
|
139
139
|
'experimental-string-processing'
|
|
140
140
|
)
|
|
141
141
|
else:
|
|
142
|
-
experimental_string_processing = config.get(
|
|
142
|
+
experimental_string_processing = config.get(
|
|
143
|
+
'preview', False
|
|
144
|
+
) and ( # pragma: no cover
|
|
143
145
|
config.get('unstable', False)
|
|
144
146
|
or 'string_processing' in config.get('enable-unstable-feature', [])
|
|
145
147
|
)
|
|
@@ -151,7 +151,7 @@ class DataTypeManager(_DataTypeManager):
|
|
|
151
151
|
|
|
152
152
|
def __init__(
|
|
153
153
|
self,
|
|
154
|
-
python_version: PythonVersion = PythonVersion.
|
|
154
|
+
python_version: PythonVersion = PythonVersion.PY_38,
|
|
155
155
|
use_standard_collections: bool = False,
|
|
156
156
|
use_generic_container_types: bool = False,
|
|
157
157
|
strict_types: Optional[Sequence[StrictTypes]] = None,
|
|
@@ -4,7 +4,7 @@ from typing import Iterable, Optional, Tuple
|
|
|
4
4
|
|
|
5
5
|
from pydantic import BaseModel as _BaseModel
|
|
6
6
|
|
|
7
|
-
from .base_model import BaseModel, DataModelField
|
|
7
|
+
from .base_model import BaseModel, DataModelField, UnionMode
|
|
8
8
|
from .root_model import RootModel
|
|
9
9
|
from .types import DataTypeManager
|
|
10
10
|
|
|
@@ -31,4 +31,5 @@ __all__ = [
|
|
|
31
31
|
'RootModel',
|
|
32
32
|
'dump_resolve_reference_action',
|
|
33
33
|
'DataTypeManager',
|
|
34
|
+
'UnionMode',
|
|
34
35
|
]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import re
|
|
2
|
+
from enum import Enum
|
|
2
3
|
from pathlib import Path
|
|
3
4
|
from typing import (
|
|
4
|
-
TYPE_CHECKING,
|
|
5
5
|
Any,
|
|
6
6
|
ClassVar,
|
|
7
7
|
DefaultDict,
|
|
@@ -13,6 +13,7 @@ from typing import (
|
|
|
13
13
|
)
|
|
14
14
|
|
|
15
15
|
from pydantic import Field
|
|
16
|
+
from typing_extensions import Literal
|
|
16
17
|
|
|
17
18
|
from datamodel_code_generator.model.base import UNDEFINED, DataModelFieldBase
|
|
18
19
|
from datamodel_code_generator.model.pydantic.base_model import (
|
|
@@ -28,13 +29,10 @@ from datamodel_code_generator.model.pydantic_v2.imports import IMPORT_CONFIG_DIC
|
|
|
28
29
|
from datamodel_code_generator.reference import Reference
|
|
29
30
|
from datamodel_code_generator.util import field_validator, model_validator
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
from typing import Literal
|
|
36
|
-
except ImportError: # pragma: no cover
|
|
37
|
-
from typing_extensions import Literal
|
|
32
|
+
|
|
33
|
+
class UnionMode(Enum):
|
|
34
|
+
smart = 'smart'
|
|
35
|
+
left_to_right = 'left_to_right'
|
|
38
36
|
|
|
39
37
|
|
|
40
38
|
class Constraints(_Constraints):
|
|
@@ -133,6 +131,12 @@ class DataModelField(DataModelFieldV1):
|
|
|
133
131
|
# unique_items is not supported in pydantic 2.0
|
|
134
132
|
data.pop('unique_items', None)
|
|
135
133
|
|
|
134
|
+
if 'union_mode' in data:
|
|
135
|
+
if self.data_type.is_union:
|
|
136
|
+
data['union_mode'] = data.pop('union_mode').value
|
|
137
|
+
else:
|
|
138
|
+
data.pop('union_mode')
|
|
139
|
+
|
|
136
140
|
# **extra is not supported in pydantic 2.0
|
|
137
141
|
json_schema_extra = {
|
|
138
142
|
k: v for k, v in data.items() if k not in self._DEFAULT_FIELD_KEYS
|
|
@@ -143,17 +147,9 @@ class DataModelField(DataModelFieldV1):
|
|
|
143
147
|
data.pop(key)
|
|
144
148
|
|
|
145
149
|
def _process_annotated_field_arguments(
|
|
146
|
-
self,
|
|
150
|
+
self,
|
|
151
|
+
field_arguments: List[str],
|
|
147
152
|
) -> List[str]:
|
|
148
|
-
if not self.required or self.const:
|
|
149
|
-
if self.use_default_kwarg: # pragma: no cover
|
|
150
|
-
return [
|
|
151
|
-
f'default={repr(self.default)}',
|
|
152
|
-
*field_arguments,
|
|
153
|
-
]
|
|
154
|
-
else:
|
|
155
|
-
# TODO: Allow '=' style default for v1?
|
|
156
|
-
return [f'{repr(self.default)}', *field_arguments]
|
|
157
153
|
return field_arguments
|
|
158
154
|
|
|
159
155
|
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from typing import
|
|
3
|
+
from typing import Any, ClassVar, Literal, Optional
|
|
4
4
|
|
|
5
5
|
from datamodel_code_generator.model.pydantic_v2.base_model import BaseModel
|
|
6
6
|
|
|
7
|
-
if TYPE_CHECKING:
|
|
8
|
-
from typing_extensions import Literal
|
|
9
|
-
|
|
10
7
|
|
|
11
8
|
class RootModel(BaseModel):
|
|
12
9
|
TEMPLATE_FILE_PATH: ClassVar[str] = 'pydantic_v2/RootModel.jinja2'
|
|
@@ -24,7 +24,7 @@ class {{ class_name }}({{ base_class }}):{% if comment is defined %} # {{ comme
|
|
|
24
24
|
{%- else %}
|
|
25
25
|
{{ field.name }}: {{ field.type_hint }}
|
|
26
26
|
{%- endif %}
|
|
27
|
-
{%- if
|
|
27
|
+
{%- if not (field.required or (field.represented_default == 'None' and field.strip_default_none)) or field.data_type.is_optional
|
|
28
28
|
%} = {{ field.represented_default }}
|
|
29
29
|
{%- endif -%}
|
|
30
30
|
{%- endif %}
|
|
@@ -52,7 +52,7 @@ def type_map_factory(
|
|
|
52
52
|
class DataTypeManager(_DataTypeManager):
|
|
53
53
|
def __init__(
|
|
54
54
|
self,
|
|
55
|
-
python_version: PythonVersion = PythonVersion.
|
|
55
|
+
python_version: PythonVersion = PythonVersion.PY_38,
|
|
56
56
|
use_standard_collections: bool = False,
|
|
57
57
|
use_generic_container_types: bool = False,
|
|
58
58
|
strict_types: Optional[Sequence[StrictTypes]] = None,
|
|
@@ -342,7 +342,7 @@ class Parser(ABC):
|
|
|
342
342
|
additional_imports: Optional[List[str]] = None,
|
|
343
343
|
custom_template_dir: Optional[Path] = None,
|
|
344
344
|
extra_template_data: Optional[DefaultDict[str, Dict[str, Any]]] = None,
|
|
345
|
-
target_python_version: PythonVersion = PythonVersion.
|
|
345
|
+
target_python_version: PythonVersion = PythonVersion.PY_38,
|
|
346
346
|
dump_resolve_reference_action: Optional[Callable[[Iterable[str]], str]] = None,
|
|
347
347
|
validation: bool = False,
|
|
348
348
|
field_constraints: bool = False,
|
|
@@ -402,6 +402,7 @@ class Parser(ABC):
|
|
|
402
402
|
http_query_parameters: Optional[Sequence[Tuple[str, str]]] = None,
|
|
403
403
|
treat_dots_as_module: bool = False,
|
|
404
404
|
use_exact_imports: bool = False,
|
|
405
|
+
default_field_extras: Optional[Dict[str, Any]] = None,
|
|
405
406
|
) -> None:
|
|
406
407
|
self.data_type_manager: DataTypeManager = data_type_manager_type(
|
|
407
408
|
python_version=target_python_version,
|
|
@@ -526,6 +527,7 @@ class Parser(ABC):
|
|
|
526
527
|
self.custom_formatter = custom_formatters
|
|
527
528
|
self.custom_formatters_kwargs = custom_formatters_kwargs
|
|
528
529
|
self.treat_dots_as_module = treat_dots_as_module
|
|
530
|
+
self.default_field_extras: Optional[Dict[str, Any]] = default_field_extras
|
|
529
531
|
|
|
530
532
|
@property
|
|
531
533
|
def iter_source(self) -> Iterator[Source]:
|
|
@@ -98,7 +98,7 @@ class GraphQLParser(Parser):
|
|
|
98
98
|
additional_imports: Optional[List[str]] = None,
|
|
99
99
|
custom_template_dir: Optional[Path] = None,
|
|
100
100
|
extra_template_data: Optional[DefaultDict[str, Dict[str, Any]]] = None,
|
|
101
|
-
target_python_version: PythonVersion = PythonVersion.
|
|
101
|
+
target_python_version: PythonVersion = PythonVersion.PY_38,
|
|
102
102
|
dump_resolve_reference_action: Optional[Callable[[Iterable[str]], str]] = None,
|
|
103
103
|
validation: bool = False,
|
|
104
104
|
field_constraints: bool = False,
|
|
@@ -156,6 +156,7 @@ class GraphQLParser(Parser):
|
|
|
156
156
|
http_query_parameters: Optional[Sequence[Tuple[str, str]]] = None,
|
|
157
157
|
treat_dots_as_module: bool = False,
|
|
158
158
|
use_exact_imports: bool = False,
|
|
159
|
+
default_field_extras: Optional[Dict[str, Any]] = None,
|
|
159
160
|
) -> None:
|
|
160
161
|
super().__init__(
|
|
161
162
|
source=source,
|
|
@@ -225,6 +226,7 @@ class GraphQLParser(Parser):
|
|
|
225
226
|
http_query_parameters=http_query_parameters,
|
|
226
227
|
treat_dots_as_module=treat_dots_as_module,
|
|
227
228
|
use_exact_imports=use_exact_imports,
|
|
229
|
+
default_field_extras=default_field_extras,
|
|
228
230
|
)
|
|
229
231
|
|
|
230
232
|
self.data_model_scalar_type = data_model_scalar_type
|
|
@@ -294,6 +296,22 @@ class GraphQLParser(Parser):
|
|
|
294
296
|
has_default=True,
|
|
295
297
|
)
|
|
296
298
|
|
|
299
|
+
def _get_default(
|
|
300
|
+
self,
|
|
301
|
+
field: Union[graphql.GraphQLField, graphql.GraphQLInputField],
|
|
302
|
+
final_data_type: DataType,
|
|
303
|
+
required: bool,
|
|
304
|
+
) -> Any:
|
|
305
|
+
if isinstance(field, graphql.GraphQLInputField): # pragma: no cover
|
|
306
|
+
if field.default_value == graphql.pyutils.Undefined: # pragma: no cover
|
|
307
|
+
return None
|
|
308
|
+
return field.default_value
|
|
309
|
+
if required is False:
|
|
310
|
+
if final_data_type.is_list:
|
|
311
|
+
return None
|
|
312
|
+
|
|
313
|
+
return None
|
|
314
|
+
|
|
297
315
|
def parse_scalar(self, scalar_graphql_object: graphql.GraphQLScalarType) -> None:
|
|
298
316
|
self.results.append(
|
|
299
317
|
self.data_model_scalar_type(
|
|
@@ -381,22 +399,16 @@ class GraphQLParser(Parser):
|
|
|
381
399
|
required = (not self.force_optional_for_required_fields) and (
|
|
382
400
|
not final_data_type.is_optional
|
|
383
401
|
)
|
|
384
|
-
extras = {}
|
|
385
402
|
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
extras = {'default_factory': 'list'}
|
|
396
|
-
else:
|
|
397
|
-
default = None
|
|
398
|
-
else:
|
|
399
|
-
default = None
|
|
403
|
+
default = self._get_default(field, final_data_type, required)
|
|
404
|
+
extras = (
|
|
405
|
+
{}
|
|
406
|
+
if self.default_field_extras is None
|
|
407
|
+
else self.default_field_extras.copy()
|
|
408
|
+
)
|
|
409
|
+
|
|
410
|
+
if field.description is not None: # pragma: no cover
|
|
411
|
+
extras['description'] = field.description
|
|
400
412
|
|
|
401
413
|
return self.data_model_field_type(
|
|
402
414
|
name=field_name,
|
|
@@ -407,7 +419,7 @@ class GraphQLParser(Parser):
|
|
|
407
419
|
alias=alias,
|
|
408
420
|
strip_default_none=self.strip_default_none,
|
|
409
421
|
use_annotated=self.use_annotated,
|
|
410
|
-
use_field_description=
|
|
422
|
+
use_field_description=self.use_field_description,
|
|
411
423
|
use_default_kwarg=self.use_default_kwarg,
|
|
412
424
|
original_name=field_name,
|
|
413
425
|
has_default=default is not None,
|
|
@@ -384,7 +384,7 @@ class JsonSchemaParser(Parser):
|
|
|
384
384
|
additional_imports: Optional[List[str]] = None,
|
|
385
385
|
custom_template_dir: Optional[Path] = None,
|
|
386
386
|
extra_template_data: Optional[DefaultDict[str, Dict[str, Any]]] = None,
|
|
387
|
-
target_python_version: PythonVersion = PythonVersion.
|
|
387
|
+
target_python_version: PythonVersion = PythonVersion.PY_38,
|
|
388
388
|
dump_resolve_reference_action: Optional[Callable[[Iterable[str]], str]] = None,
|
|
389
389
|
validation: bool = False,
|
|
390
390
|
field_constraints: bool = False,
|
|
@@ -442,6 +442,7 @@ class JsonSchemaParser(Parser):
|
|
|
442
442
|
http_query_parameters: Optional[Sequence[Tuple[str, str]]] = None,
|
|
443
443
|
treat_dots_as_module: bool = False,
|
|
444
444
|
use_exact_imports: bool = False,
|
|
445
|
+
default_field_extras: Optional[Dict[str, Any]] = None,
|
|
445
446
|
) -> None:
|
|
446
447
|
super().__init__(
|
|
447
448
|
source=source,
|
|
@@ -511,6 +512,7 @@ class JsonSchemaParser(Parser):
|
|
|
511
512
|
http_query_parameters=http_query_parameters,
|
|
512
513
|
treat_dots_as_module=treat_dots_as_module,
|
|
513
514
|
use_exact_imports=use_exact_imports,
|
|
515
|
+
default_field_extras=default_field_extras,
|
|
514
516
|
)
|
|
515
517
|
|
|
516
518
|
self.remote_object_cache: DefaultPutDict[str, Dict[str, Any]] = DefaultPutDict()
|
|
@@ -534,20 +536,23 @@ class JsonSchemaParser(Parser):
|
|
|
534
536
|
|
|
535
537
|
def get_field_extras(self, obj: JsonSchemaObject) -> Dict[str, Any]:
|
|
536
538
|
if self.field_include_all_keys:
|
|
537
|
-
|
|
539
|
+
extras = {
|
|
538
540
|
self.get_field_extra_key(
|
|
539
541
|
k.lstrip('x-') if k in self.field_extra_keys_without_x_prefix else k
|
|
540
542
|
): v
|
|
541
543
|
for k, v in obj.extras.items()
|
|
542
544
|
}
|
|
543
545
|
else:
|
|
544
|
-
|
|
546
|
+
extras = {
|
|
545
547
|
self.get_field_extra_key(
|
|
546
548
|
k.lstrip('x-') if k in self.field_extra_keys_without_x_prefix else k
|
|
547
549
|
): v
|
|
548
550
|
for k, v in obj.extras.items()
|
|
549
551
|
if k in self.field_keys
|
|
550
552
|
}
|
|
553
|
+
if self.default_field_extras:
|
|
554
|
+
extras.update(self.default_field_extras)
|
|
555
|
+
return extras
|
|
551
556
|
|
|
552
557
|
@cached_property
|
|
553
558
|
def schema_paths(self) -> List[Tuple[str, List[str]]]:
|
|
@@ -165,7 +165,7 @@ class OpenAPIParser(JsonSchemaParser):
|
|
|
165
165
|
additional_imports: Optional[List[str]] = None,
|
|
166
166
|
custom_template_dir: Optional[Path] = None,
|
|
167
167
|
extra_template_data: Optional[DefaultDict[str, Dict[str, Any]]] = None,
|
|
168
|
-
target_python_version: PythonVersion = PythonVersion.
|
|
168
|
+
target_python_version: PythonVersion = PythonVersion.PY_38,
|
|
169
169
|
dump_resolve_reference_action: Optional[Callable[[Iterable[str]], str]] = None,
|
|
170
170
|
validation: bool = False,
|
|
171
171
|
field_constraints: bool = False,
|
|
@@ -224,6 +224,7 @@ class OpenAPIParser(JsonSchemaParser):
|
|
|
224
224
|
http_query_parameters: Optional[Sequence[Tuple[str, str]]] = None,
|
|
225
225
|
treat_dots_as_module: bool = False,
|
|
226
226
|
use_exact_imports: bool = False,
|
|
227
|
+
default_field_extras: Optional[Dict[str, Any]] = None,
|
|
227
228
|
):
|
|
228
229
|
super().__init__(
|
|
229
230
|
source=source,
|
|
@@ -293,6 +294,7 @@ class OpenAPIParser(JsonSchemaParser):
|
|
|
293
294
|
http_query_parameters=http_query_parameters,
|
|
294
295
|
treat_dots_as_module=treat_dots_as_module,
|
|
295
296
|
use_exact_imports=use_exact_imports,
|
|
297
|
+
default_field_extras=default_field_extras,
|
|
296
298
|
)
|
|
297
299
|
self.open_api_scopes: List[OpenAPIScope] = openapi_scopes or [
|
|
298
300
|
OpenAPIScope.Schemas
|
|
@@ -261,7 +261,7 @@ class DataType(_BaseModel):
|
|
|
261
261
|
is_func: bool = False
|
|
262
262
|
kwargs: Optional[Dict[str, Any]] = None
|
|
263
263
|
import_: Optional[Import] = None
|
|
264
|
-
python_version: PythonVersion = PythonVersion.
|
|
264
|
+
python_version: PythonVersion = PythonVersion.PY_38
|
|
265
265
|
is_optional: bool = False
|
|
266
266
|
is_dict: bool = False
|
|
267
267
|
is_list: bool = False
|
|
@@ -567,7 +567,7 @@ class Types(Enum):
|
|
|
567
567
|
class DataTypeManager(ABC):
|
|
568
568
|
def __init__(
|
|
569
569
|
self,
|
|
570
|
-
python_version: PythonVersion = PythonVersion.
|
|
570
|
+
python_version: PythonVersion = PythonVersion.PY_38,
|
|
571
571
|
use_standard_collections: bool = False,
|
|
572
572
|
use_generic_container_types: bool = False,
|
|
573
573
|
strict_types: Optional[Sequence[StrictTypes]] = None,
|
datamodel_code_generator/util.py
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import copy
|
|
4
|
+
from functools import cached_property # noqa: F401
|
|
4
5
|
from pathlib import Path
|
|
5
|
-
from typing import
|
|
6
|
+
from typing import ( # noqa: F401
|
|
7
|
+
TYPE_CHECKING,
|
|
8
|
+
Any,
|
|
9
|
+
Callable,
|
|
10
|
+
Dict,
|
|
11
|
+
Protocol,
|
|
12
|
+
TypeVar,
|
|
13
|
+
runtime_checkable,
|
|
14
|
+
)
|
|
6
15
|
|
|
7
16
|
import pydantic
|
|
8
17
|
from packaging import version
|
|
@@ -15,46 +24,18 @@ PYDANTIC_VERSION = version.parse(
|
|
|
15
24
|
PYDANTIC_V2: bool = PYDANTIC_VERSION >= version.parse('2.0b3')
|
|
16
25
|
|
|
17
26
|
if TYPE_CHECKING:
|
|
18
|
-
|
|
19
|
-
from yaml import SafeLoader
|
|
20
|
-
|
|
21
|
-
Protocol = object
|
|
22
|
-
runtime_checkable: Callable[..., Any]
|
|
27
|
+
from typing import Literal
|
|
23
28
|
|
|
24
|
-
from
|
|
29
|
+
from yaml import SafeLoader
|
|
25
30
|
|
|
26
31
|
def load_toml(path: Path) -> Dict[str, Any]: ...
|
|
27
32
|
|
|
28
33
|
else:
|
|
29
|
-
try:
|
|
30
|
-
from typing import Protocol
|
|
31
|
-
except ImportError:
|
|
32
|
-
from typing_extensions import Protocol # noqa
|
|
33
|
-
try:
|
|
34
|
-
from typing import runtime_checkable
|
|
35
|
-
except ImportError:
|
|
36
|
-
from typing_extensions import runtime_checkable # noqa
|
|
37
34
|
try:
|
|
38
35
|
from yaml import CSafeLoader as SafeLoader
|
|
39
36
|
except ImportError: # pragma: no cover
|
|
40
37
|
from yaml import SafeLoader
|
|
41
38
|
|
|
42
|
-
try:
|
|
43
|
-
from functools import cached_property
|
|
44
|
-
except ImportError:
|
|
45
|
-
_NOT_FOUND = object()
|
|
46
|
-
|
|
47
|
-
class cached_property:
|
|
48
|
-
def __init__(self, func: Callable) -> None:
|
|
49
|
-
self.func: Callable = func
|
|
50
|
-
self.__doc__: Any = func.__doc__
|
|
51
|
-
|
|
52
|
-
def __get__(self, instance: Any, owner: Any = None) -> Any:
|
|
53
|
-
value = instance.__dict__.get(self.func.__name__, _NOT_FOUND)
|
|
54
|
-
if value is _NOT_FOUND: # pragma: no cover
|
|
55
|
-
value = instance.__dict__[self.func.__name__] = self.func(instance)
|
|
56
|
-
return value
|
|
57
|
-
|
|
58
39
|
try:
|
|
59
40
|
import tomllib
|
|
60
41
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
version: str = '0.
|
|
1
|
+
version: str = '0.26.0'
|
{datamodel_code_generator-0.25.9.dist-info → datamodel_code_generator-0.26.0.dist-info}/METADATA
RENAMED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: datamodel-code-generator
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.26.0
|
|
4
4
|
Summary: Datamodel Code Generator
|
|
5
5
|
Home-page: https://github.com/koxudaxi/datamodel-code-generator
|
|
6
6
|
License: MIT
|
|
7
7
|
Author: Koudai Aono
|
|
8
8
|
Author-email: koxudaxi@gmail.com
|
|
9
|
-
Requires-Python: >=3.
|
|
9
|
+
Requires-Python: >=3.8,<4.0
|
|
10
10
|
Classifier: Development Status :: 4 - Beta
|
|
11
11
|
Classifier: License :: OSI Approved :: MIT License
|
|
12
12
|
Classifier: Natural Language :: English
|
|
13
13
|
Classifier: Programming Language :: Python :: 3
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
15
14
|
Classifier: Programming Language :: Python :: 3.8
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.9
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -386,61 +385,64 @@ This method needs the [http extra option](#http-extra-option)
|
|
|
386
385
|
|
|
387
386
|
The `datamodel-codegen` command:
|
|
388
387
|
|
|
388
|
+
<!-- start command help -->
|
|
389
389
|
```bash
|
|
390
|
-
usage:
|
|
390
|
+
usage:
|
|
391
391
|
datamodel-codegen [options]
|
|
392
392
|
|
|
393
393
|
Generate Python data models from schema definitions or structured data
|
|
394
394
|
|
|
395
395
|
Options:
|
|
396
|
+
--additional-imports ADDITIONAL_IMPORTS
|
|
397
|
+
Custom imports for output (delimited list input). For example
|
|
398
|
+
"datetime.date,datetime.datetime"
|
|
399
|
+
--custom-formatters CUSTOM_FORMATTERS
|
|
400
|
+
List of modules with custom formatter (delimited list input).
|
|
396
401
|
--http-headers HTTP_HEADER [HTTP_HEADER ...]
|
|
397
|
-
Set headers in HTTP requests to the remote host.
|
|
398
|
-
|
|
399
|
-
--http-ignore-tls Disable verification of the remote host''s TLS
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
(example: "ref=branch")
|
|
402
|
+
Set headers in HTTP requests to the remote host. (example:
|
|
403
|
+
"Authorization: Basic dXNlcjpwYXNz")
|
|
404
|
+
--http-ignore-tls Disable verification of the remote host''s TLS certificate
|
|
405
|
+
--http-query-parameters HTTP_QUERY_PARAMETERS [HTTP_QUERY_PARAMETERS ...]
|
|
406
|
+
Set query parameters in HTTP requests to the remote host. (example:
|
|
407
|
+
"ref=branch")
|
|
404
408
|
--input INPUT Input file/directory (default: stdin)
|
|
405
|
-
--input-file-type {auto,openapi,
|
|
409
|
+
--input-file-type {auto,openapi,jsonschema,json,yaml,dict,csv,graphql}
|
|
406
410
|
Input file type (default: auto)
|
|
407
411
|
--output OUTPUT Output file (default: stdout)
|
|
408
412
|
--output-model-type {pydantic.BaseModel,pydantic_v2.BaseModel,dataclasses.dataclass,typing.TypedDict,msgspec.Struct}
|
|
409
|
-
|
|
410
|
-
|
|
413
|
+
Output model type (default: pydantic.BaseModel)
|
|
414
|
+
--url URL Input file URL. `--input` is ignored when `--url` is used
|
|
411
415
|
|
|
412
416
|
Typing customization:
|
|
413
417
|
--base-class BASE_CLASS
|
|
414
418
|
Base Class (default: pydantic.BaseModel)
|
|
415
419
|
--enum-field-as-literal {all,one}
|
|
416
|
-
Parse enum field as literal. all: all enum field type
|
|
417
|
-
|
|
418
|
-
has only one possible value
|
|
420
|
+
Parse enum field as literal. all: all enum field type are Literal.
|
|
421
|
+
one: field type is Literal when an enum has only one possible value
|
|
419
422
|
--field-constraints Use field constraints and not con* annotations
|
|
420
423
|
--set-default-enum-member
|
|
421
424
|
Set enum members as default values for enum field
|
|
422
425
|
--strict-types {str,bytes,int,float,bool} [{str,bytes,int,float,bool} ...]
|
|
423
426
|
Use strict types
|
|
424
|
-
--use-annotated Use typing.Annotated for Field(). Also, `--field-
|
|
425
|
-
|
|
427
|
+
--use-annotated Use typing.Annotated for Field(). Also, `--field-constraints` option
|
|
428
|
+
will be enabled.
|
|
426
429
|
--use-generic-container-types
|
|
427
|
-
Use generic container types for type hinting
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
collections.abc instead of typing
|
|
430
|
+
Use generic container types for type hinting (typing.Sequence,
|
|
431
|
+
typing.Mapping). If `--use-standard-collections` option is set, then
|
|
432
|
+
import from collections.abc instead of typing
|
|
431
433
|
--use-non-positive-negative-number-constrained-types
|
|
432
|
-
Use the Non{Positive,Negative}{FloatInt} types instead
|
|
433
|
-
|
|
434
|
+
Use the Non{Positive,Negative}{FloatInt} types instead of the
|
|
435
|
+
corresponding con* constrained types.
|
|
434
436
|
--use-one-literal-as-default
|
|
435
437
|
Use one literal as default value for one literal field
|
|
436
438
|
--use-standard-collections
|
|
437
439
|
Use standard collections for type hinting (list, dict)
|
|
438
|
-
--use-subclass-enum Define Enum class as subclass with field type when
|
|
439
|
-
|
|
440
|
+
--use-subclass-enum Define Enum class as subclass with field type when enum has type
|
|
441
|
+
(int, float, bytes, str)
|
|
440
442
|
--use-union-operator Use | operator for Union type (PEP 604).
|
|
441
443
|
--use-unique-items-as-set
|
|
442
|
-
define field type as `set` when the field attribute
|
|
443
|
-
|
|
444
|
+
define field type as `set` when the field attribute has
|
|
445
|
+
`uniqueItems`
|
|
444
446
|
|
|
445
447
|
Field customization:
|
|
446
448
|
--capitalise-enum-members, --capitalize-enum-members
|
|
@@ -450,61 +452,60 @@ Field customization:
|
|
|
450
452
|
--field-extra-keys FIELD_EXTRA_KEYS [FIELD_EXTRA_KEYS ...]
|
|
451
453
|
Add extra keys to field parameters
|
|
452
454
|
--field-extra-keys-without-x-prefix FIELD_EXTRA_KEYS_WITHOUT_X_PREFIX [FIELD_EXTRA_KEYS_WITHOUT_X_PREFIX ...]
|
|
453
|
-
Add extra keys with `x-` prefix to field parameters.
|
|
454
|
-
|
|
455
|
+
Add extra keys with `x-` prefix to field parameters. The extra keys
|
|
456
|
+
are stripped of the `x-` prefix.
|
|
455
457
|
--field-include-all-keys
|
|
456
458
|
Add all keys to field parameters
|
|
457
459
|
--force-optional Force optional for required fields
|
|
458
460
|
--original-field-name-delimiter ORIGINAL_FIELD_NAME_DELIMITER
|
|
459
|
-
Set delimiter to convert to snake case. This option
|
|
460
|
-
|
|
461
|
-
)
|
|
461
|
+
Set delimiter to convert to snake case. This option only can be used
|
|
462
|
+
with --snake-case-field (default: `_` )
|
|
462
463
|
--remove-special-field-name-prefix
|
|
463
|
-
Remove field name prefix if it has a special meaning
|
|
464
|
-
|
|
464
|
+
Remove field name prefix if it has a special meaning e.g.
|
|
465
|
+
underscores
|
|
465
466
|
--snake-case-field Change camel-case field name to snake-case
|
|
466
467
|
--special-field-name-prefix SPECIAL_FIELD_NAME_PREFIX
|
|
467
|
-
Set field name prefix when first character can''t be
|
|
468
|
-
|
|
468
|
+
Set field name prefix when first character can''t be used as Python
|
|
469
|
+
field name (default: `field`)
|
|
469
470
|
--strip-default-none Strip default None on fields
|
|
471
|
+
--union-mode {smart,left_to_right}
|
|
472
|
+
Union mode for only pydantic v2 field
|
|
470
473
|
--use-default Use default value even if a field is required
|
|
471
|
-
--use-default-kwarg Use `default=` instead of a positional argument for
|
|
472
|
-
|
|
474
|
+
--use-default-kwarg Use `default=` instead of a positional argument for Fields that have
|
|
475
|
+
default values.
|
|
473
476
|
--use-field-description
|
|
474
477
|
Use schema description to populate field docstring
|
|
475
|
-
--use-pendulum
|
|
476
|
-
Use pendulum instead of `datetime` for `date`,
|
|
477
|
-
`datetime`, and `time` data types
|
|
478
478
|
|
|
479
479
|
Model customization:
|
|
480
|
-
--allow-extra-fields Allow to pass extra fields, if this flag is not
|
|
481
|
-
|
|
480
|
+
--allow-extra-fields Allow to pass extra fields, if this flag is not passed, extra fields
|
|
481
|
+
are forbidden.
|
|
482
482
|
--allow-population-by-field-name
|
|
483
483
|
Allow population by field name
|
|
484
484
|
--class-name CLASS_NAME
|
|
485
485
|
Set class name of root model
|
|
486
486
|
--collapse-root-models
|
|
487
|
-
Models generated with a root-type field will be
|
|
488
|
-
|
|
487
|
+
Models generated with a root-type field will be merged into the
|
|
488
|
+
models using that root-type model
|
|
489
489
|
--disable-appending-item-suffix
|
|
490
|
-
Disable appending `Item` suffix to model name in an
|
|
491
|
-
array
|
|
490
|
+
Disable appending `Item` suffix to model name in an array
|
|
492
491
|
--disable-timestamp Disable timestamp on file headers
|
|
493
492
|
--enable-faux-immutability
|
|
494
493
|
Enable faux immutability
|
|
495
494
|
--enable-version-header
|
|
496
495
|
Enable package version on file headers
|
|
497
496
|
--keep-model-order Keep generated models'' order
|
|
498
|
-
--reuse-model Reuse models on the field when a module has the model
|
|
499
|
-
|
|
500
|
-
--target-python-version {3.6,3.7,3.8,3.9,3.10,3.11}
|
|
501
|
-
target python version (default: 3.
|
|
497
|
+
--reuse-model Reuse models on the field when a module has the model with the same
|
|
498
|
+
content
|
|
499
|
+
--target-python-version {3.6,3.7,3.8,3.9,3.10,3.11,3.12}
|
|
500
|
+
target python version (default: 3.8)
|
|
501
|
+
--treat-dot-as-module
|
|
502
|
+
treat dotted module names as modules
|
|
503
|
+
--use-exact-imports import exact types instead of modules, for example: "from .foo
|
|
504
|
+
import Bar" instead of "from . import foo" with "foo.Bar"
|
|
505
|
+
--use-pendulum use pendulum instead of datetime
|
|
502
506
|
--use-schema-description
|
|
503
507
|
Use schema description to populate class docstring
|
|
504
508
|
--use-title-as-name use titles as class names of models
|
|
505
|
-
--use-exact-imports Import exact types instead of modules, for example:
|
|
506
|
-
`from .foo import Bar` instead of
|
|
507
|
-
`from . import foo` with `foo.Bar`
|
|
508
509
|
|
|
509
510
|
Template customization:
|
|
510
511
|
--aliases ALIASES Alias mapping file
|
|
@@ -512,41 +513,38 @@ Template customization:
|
|
|
512
513
|
Custom file header
|
|
513
514
|
--custom-file-header-path CUSTOM_FILE_HEADER_PATH
|
|
514
515
|
Custom file header file path
|
|
516
|
+
--custom-formatters-kwargs CUSTOM_FORMATTERS_KWARGS
|
|
517
|
+
A file with kwargs for custom formatters.
|
|
515
518
|
--custom-template-dir CUSTOM_TEMPLATE_DIR
|
|
516
519
|
Custom template directory
|
|
517
|
-
--encoding ENCODING The encoding of input and output (default:
|
|
520
|
+
--encoding ENCODING The encoding of input and output (default: utf-8)
|
|
518
521
|
--extra-template-data EXTRA_TEMPLATE_DATA
|
|
519
522
|
Extra template data
|
|
520
|
-
--use-double-quotes Model generated with double quotes. Single quotes or
|
|
521
|
-
|
|
522
|
-
|
|
523
|
+
--use-double-quotes Model generated with double quotes. Single quotes or your black
|
|
524
|
+
config skip_string_normalization value will be used without this
|
|
525
|
+
option.
|
|
523
526
|
--wrap-string-literal
|
|
524
|
-
Wrap string literal by using black `experimental-
|
|
525
|
-
|
|
526
|
-
later)
|
|
527
|
-
--additional-imports Custom imports for output (delimited list input).
|
|
528
|
-
For example "datetime.date,datetime.datetime"
|
|
529
|
-
--custom-formatters List of modules with custom formatter (delimited list input).
|
|
530
|
-
--custom-formatters-kwargs A file with kwargs for custom formatters.
|
|
527
|
+
Wrap string literal by using black `experimental-string-processing`
|
|
528
|
+
option (require black 20.8b0 or later)
|
|
531
529
|
|
|
532
530
|
OpenAPI-only options:
|
|
533
531
|
--openapi-scopes {schemas,paths,tags,parameters} [{schemas,paths,tags,parameters} ...]
|
|
534
532
|
Scopes of OpenAPI model generation (default: schemas)
|
|
535
|
-
--strict-nullable Treat default field as a non-nullable field (Only
|
|
536
|
-
OpenAPI)
|
|
533
|
+
--strict-nullable Treat default field as a non-nullable field (Only OpenAPI)
|
|
537
534
|
--use-operation-id-as-name
|
|
538
535
|
use operation id of OpenAPI as class names of models
|
|
539
|
-
--validation Deprecated: Enable validation (Only OpenAPI). this
|
|
540
|
-
|
|
541
|
-
releases
|
|
536
|
+
--validation Deprecated: Enable validation (Only OpenAPI). this option is
|
|
537
|
+
deprecated. it will be removed in future releases
|
|
542
538
|
|
|
543
539
|
General options:
|
|
544
|
-
--debug show debug message (require "debug". `$ pip install 'datamodel-code-
|
|
540
|
+
--debug show debug message (require "debug". `$ pip install ''datamodel-code-
|
|
541
|
+
generator[debug]''`)
|
|
545
542
|
--disable-warnings disable warnings
|
|
546
543
|
--no-color disable colorized output
|
|
547
544
|
--version show version
|
|
548
545
|
-h, --help show this help message and exit
|
|
549
546
|
```
|
|
547
|
+
<!-- end command help -->
|
|
550
548
|
|
|
551
549
|
## Related projects
|
|
552
550
|
### fastapi-code-generator
|
{datamodel_code_generator-0.25.9.dist-info → datamodel_code_generator-0.26.0.dist-info}/RECORD
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
datamodel_code_generator/__init__.py,sha256=
|
|
2
|
-
datamodel_code_generator/__main__.py,sha256=
|
|
3
|
-
datamodel_code_generator/arguments.py,sha256=
|
|
4
|
-
datamodel_code_generator/format.py,sha256=
|
|
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
|
|
5
5
|
datamodel_code_generator/http.py,sha256=CwLVnXO4_W_fWKJsHnJp6Q_3GuF3qjCjeAe48Ihawrs,714
|
|
6
6
|
datamodel_code_generator/imports.py,sha256=EUUgdLMD_724Jhp50-hQy2C6uMSQISGbJKhUfH3iIbo,5595
|
|
7
7
|
datamodel_code_generator/model/__init__.py,sha256=A0CqnL87-lY_Te-n-99ya5v7h6l4jE6hOPP_itvcWOc,3091
|
|
@@ -15,11 +15,11 @@ 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=
|
|
19
|
-
datamodel_code_generator/model/pydantic_v2/__init__.py,sha256=
|
|
20
|
-
datamodel_code_generator/model/pydantic_v2/base_model.py,sha256=
|
|
18
|
+
datamodel_code_generator/model/pydantic/types.py,sha256=2ghckIyBX-QmFT1GAAjKuCLyD5hjpNqmRftOlgcS5Fo,13034
|
|
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
21
|
datamodel_code_generator/model/pydantic_v2/imports.py,sha256=Q6XC6iE5v4LJvQ2DOXDGFtR-FnGPsaZ56KiiTiF2bIE,191
|
|
22
|
-
datamodel_code_generator/model/pydantic_v2/root_model.py,sha256=
|
|
22
|
+
datamodel_code_generator/model/pydantic_v2/root_model.py,sha256=iApUz1uGe4hHV8RyOK8rGjaEJcnqTJZqo-0uSfyVMGc,884
|
|
23
23
|
datamodel_code_generator/model/pydantic_v2/types.py,sha256=6KAJXO_SGs5bc8GQScCpowgqjaSmrn9W9iewpWIHack,1440
|
|
24
24
|
datamodel_code_generator/model/rootmodel.py,sha256=8bW7emVQtDGe2iUAmqtlQb607LvTRL0TBSP66pIeNzY,202
|
|
25
25
|
datamodel_code_generator/model/scalar.py,sha256=d4vqDW9OcvPR1I0lrlss2wDprWbUt9kPv767VYZi_Ks,2521
|
|
@@ -35,26 +35,26 @@ datamodel_code_generator/model/template/pydantic/BaseModel.jinja2,sha256=sYZa-47
|
|
|
35
35
|
datamodel_code_generator/model/template/pydantic/BaseModel_root.jinja2,sha256=WDdTXYNTrkIw-B4OvPVxOaETTknLs0zdNuq_iDQ2Bcw,1000
|
|
36
36
|
datamodel_code_generator/model/template/pydantic/Config.jinja2,sha256=Ik028qdqQhDfEP207TCbwVv2b5Do1-nRNDPKzBHKzwM,135
|
|
37
37
|
datamodel_code_generator/model/template/pydantic/dataclass.jinja2,sha256=hM4OZTVhtOokqlPNSdh5drhBXfQLPvbyO88jipSPr5Y,629
|
|
38
|
-
datamodel_code_generator/model/template/pydantic_v2/BaseModel.jinja2,sha256=
|
|
38
|
+
datamodel_code_generator/model/template/pydantic_v2/BaseModel.jinja2,sha256=XdSCvA0hSdjkMtI9CA3M-2xBgieCOV-sWIfQvJPnJ4I,1119
|
|
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
42
|
datamodel_code_generator/model/typed_dict.py,sha256=pzUaKLaVDF5rfxAaR1m4FqnhR00eE6AIP30oGTj67fY,4717
|
|
43
|
-
datamodel_code_generator/model/types.py,sha256=
|
|
43
|
+
datamodel_code_generator/model/types.py,sha256=7YQqPc-_yf5LhrLomB4msyOB_1cn0kKxfDHmGfVvDmA,2953
|
|
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=
|
|
47
|
-
datamodel_code_generator/parser/graphql.py,sha256=
|
|
48
|
-
datamodel_code_generator/parser/jsonschema.py,sha256=
|
|
49
|
-
datamodel_code_generator/parser/openapi.py,sha256=
|
|
46
|
+
datamodel_code_generator/parser/base.py,sha256=L45svycaIX4XLMqaCl3yameLmusLXw0Exrve-1Xydb4,59825
|
|
47
|
+
datamodel_code_generator/parser/graphql.py,sha256=LmPQZuu7VYQ3JBD6RUCqDQNlSZuqIZSwFcbZouo-4qc,22037
|
|
48
|
+
datamodel_code_generator/parser/jsonschema.py,sha256=rVKSw5zg7MtQs-gTwhsmgHGJ5JyQGQqPhBzBTM-zdnI,70222
|
|
49
|
+
datamodel_code_generator/parser/openapi.py,sha256=mawqfJeOqDvkX1_63uqRhLC1EaYR8QkAyZ93MneeMK8,25930
|
|
50
50
|
datamodel_code_generator/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
|
-
datamodel_code_generator/pydantic_patch.py,sha256=
|
|
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=
|
|
54
|
-
datamodel_code_generator/util.py,sha256=
|
|
55
|
-
datamodel_code_generator/version.py,sha256=
|
|
56
|
-
datamodel_code_generator-0.
|
|
57
|
-
datamodel_code_generator-0.
|
|
58
|
-
datamodel_code_generator-0.
|
|
59
|
-
datamodel_code_generator-0.
|
|
60
|
-
datamodel_code_generator-0.
|
|
53
|
+
datamodel_code_generator/types.py,sha256=lVKp5TsW-8DK81jQMGUqEANr8DcI2kjdqA1VciITDAI,19631
|
|
54
|
+
datamodel_code_generator/util.py,sha256=OmYaVP0z0fGPnvmZQx63qmdMwFnMAIVHfTwSkExpoKk,2829
|
|
55
|
+
datamodel_code_generator/version.py,sha256=I58_7Ue2SKeM60Nu76Yg9NVQ2egVERIo4F3HJGgMRSo,24
|
|
56
|
+
datamodel_code_generator-0.26.0.dist-info/LICENSE,sha256=K54Lwc6_jduycsy8oFFjQEeSSuEiqvVIjCGIXOMnuTQ,1068
|
|
57
|
+
datamodel_code_generator-0.26.0.dist-info/METADATA,sha256=zmlwGEAR-LflJhbkg2a3hgIK-LrrDytfIUX15N9G9VA,24317
|
|
58
|
+
datamodel_code_generator-0.26.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
59
|
+
datamodel_code_generator-0.26.0.dist-info/entry_points.txt,sha256=bykbUWqOCiKfxJPGe8jpNqTqD1NG7uyRmozdnwzu7rk,76
|
|
60
|
+
datamodel_code_generator-0.26.0.dist-info/RECORD,,
|
{datamodel_code_generator-0.25.9.dist-info → datamodel_code_generator-0.26.0.dist-info}/LICENSE
RENAMED
|
File without changes
|
{datamodel_code_generator-0.25.9.dist-info → datamodel_code_generator-0.26.0.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|