datamodel-code-generator 0.33.0__py3-none-any.whl → 0.34.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 +2 -1
- datamodel_code_generator/__main__.py +2 -0
- datamodel_code_generator/arguments.py +6 -0
- datamodel_code_generator/format.py +1 -1
- datamodel_code_generator/model/dataclass.py +10 -0
- datamodel_code_generator/model/typed_dict.py +10 -0
- datamodel_code_generator/parser/base.py +2 -1
- datamodel_code_generator/parser/jsonschema.py +1 -1
- {datamodel_code_generator-0.33.0.dist-info → datamodel_code_generator-0.34.0.dist-info}/METADATA +3 -7
- {datamodel_code_generator-0.33.0.dist-info → datamodel_code_generator-0.34.0.dist-info}/RECORD +13 -13
- {datamodel_code_generator-0.33.0.dist-info → datamodel_code_generator-0.34.0.dist-info}/WHEEL +0 -0
- {datamodel_code_generator-0.33.0.dist-info → datamodel_code_generator-0.34.0.dist-info}/entry_points.txt +0 -0
- {datamodel_code_generator-0.33.0.dist-info → datamodel_code_generator-0.34.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -289,6 +289,7 @@ def generate( # noqa: PLR0912, PLR0913, PLR0914, PLR0915
|
|
|
289
289
|
no_alias: bool = False,
|
|
290
290
|
formatters: list[Formatter] = DEFAULT_FORMATTERS,
|
|
291
291
|
parent_scoped_naming: bool = False,
|
|
292
|
+
disable_future_imports: bool = False,
|
|
292
293
|
) -> None:
|
|
293
294
|
remote_text_cache: DefaultPutDict[str, str] = DefaultPutDict()
|
|
294
295
|
if isinstance(input_, str):
|
|
@@ -499,7 +500,7 @@ def generate( # noqa: PLR0912, PLR0913, PLR0914, PLR0915
|
|
|
499
500
|
)
|
|
500
501
|
|
|
501
502
|
with chdir(output):
|
|
502
|
-
results = parser.parse()
|
|
503
|
+
results = parser.parse(disable_future_imports=disable_future_imports)
|
|
503
504
|
if not input_filename: # pragma: no cover
|
|
504
505
|
if isinstance(input_, str):
|
|
505
506
|
input_filename = "<stdin>"
|
|
@@ -362,6 +362,7 @@ class Config(BaseModel):
|
|
|
362
362
|
no_alias: bool = False
|
|
363
363
|
formatters: list[Formatter] = DEFAULT_FORMATTERS
|
|
364
364
|
parent_scoped_naming: bool = False
|
|
365
|
+
disable_future_imports: bool = False
|
|
365
366
|
|
|
366
367
|
def merge_args(self, args: Namespace) -> None:
|
|
367
368
|
set_args = {f: getattr(args, f) for f in self.get_fields() if getattr(args, f) is not None}
|
|
@@ -577,6 +578,7 @@ def main(args: Sequence[str] | None = None) -> Exit: # noqa: PLR0911, PLR0912,
|
|
|
577
578
|
no_alias=config.no_alias,
|
|
578
579
|
formatters=config.formatters,
|
|
579
580
|
parent_scoped_naming=config.parent_scoped_naming,
|
|
581
|
+
disable_future_imports=config.disable_future_imports,
|
|
580
582
|
)
|
|
581
583
|
except InvalidClassNameError as e:
|
|
582
584
|
print(f"{e} You have to set `--class-name` option", file=sys.stderr) # noqa: T201
|
|
@@ -305,6 +305,12 @@ typing_options.add_argument(
|
|
|
305
305
|
action="store_true",
|
|
306
306
|
default=None,
|
|
307
307
|
)
|
|
308
|
+
typing_options.add_argument(
|
|
309
|
+
"--disable-future-imports",
|
|
310
|
+
help="Disable __future__ imports",
|
|
311
|
+
action="store_true",
|
|
312
|
+
default=None,
|
|
313
|
+
)
|
|
308
314
|
|
|
309
315
|
# ======================================================================================
|
|
310
316
|
# Customization options for generated model fields
|
|
@@ -178,7 +178,7 @@ class CodeFormatter:
|
|
|
178
178
|
import_ = import_module(custom_formatter_import)
|
|
179
179
|
|
|
180
180
|
if not hasattr(import_, "CodeFormatter"):
|
|
181
|
-
msg = f"Custom formatter module `{import_.__name__}` must contains object with name
|
|
181
|
+
msg = f"Custom formatter module `{import_.__name__}` must contains object with name CodeFormatter"
|
|
182
182
|
raise NameError(msg)
|
|
183
183
|
|
|
184
184
|
formatter_class = import_.__getattribute__("CodeFormatter") # noqa: PLC2801
|
|
@@ -87,6 +87,16 @@ class DataModelField(DataModelFieldBase):
|
|
|
87
87
|
}
|
|
88
88
|
constraints: Optional[Constraints] = None # noqa: UP045
|
|
89
89
|
|
|
90
|
+
def process_const(self) -> None:
|
|
91
|
+
if "const" not in self.extras:
|
|
92
|
+
return
|
|
93
|
+
self.const = True
|
|
94
|
+
self.nullable = False
|
|
95
|
+
const = self.extras["const"]
|
|
96
|
+
self.data_type = self.data_type.__class__(literals=[const])
|
|
97
|
+
if not self.default:
|
|
98
|
+
self.default = const
|
|
99
|
+
|
|
90
100
|
@property
|
|
91
101
|
def imports(self) -> tuple[Import, ...]:
|
|
92
102
|
field = self.field
|
|
@@ -114,6 +114,16 @@ class TypedDict(DataModel):
|
|
|
114
114
|
class DataModelField(DataModelFieldBase):
|
|
115
115
|
DEFAULT_IMPORTS: ClassVar[tuple[Import, ...]] = (IMPORT_NOT_REQUIRED,)
|
|
116
116
|
|
|
117
|
+
def process_const(self) -> None:
|
|
118
|
+
if "const" not in self.extras:
|
|
119
|
+
return
|
|
120
|
+
self.const = True
|
|
121
|
+
self.nullable = False
|
|
122
|
+
const = self.extras["const"]
|
|
123
|
+
self.data_type = self.data_type.__class__(literals=[const])
|
|
124
|
+
if not self.default:
|
|
125
|
+
self.default = const
|
|
126
|
+
|
|
117
127
|
@property
|
|
118
128
|
def key(self) -> str:
|
|
119
129
|
return (self.original_name or self.name or "").translate( # pragma: no cover
|
|
@@ -1246,10 +1246,11 @@ class Parser(ABC):
|
|
|
1246
1246
|
with_import: bool | None = True, # noqa: FBT001, FBT002
|
|
1247
1247
|
format_: bool | None = True, # noqa: FBT001, FBT002
|
|
1248
1248
|
settings_path: Path | None = None,
|
|
1249
|
+
disable_future_imports: bool = False, # noqa: FBT001, FBT002
|
|
1249
1250
|
) -> str | dict[tuple[str, ...], Result]:
|
|
1250
1251
|
self.parse_raw()
|
|
1251
1252
|
|
|
1252
|
-
if with_import:
|
|
1253
|
+
if with_import and not disable_future_imports:
|
|
1253
1254
|
self.imports.append(IMPORT_ANNOTATIONS)
|
|
1254
1255
|
|
|
1255
1256
|
if format_:
|
{datamodel_code_generator-0.33.0.dist-info → datamodel_code_generator-0.34.0.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: datamodel-code-generator
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.34.0
|
|
4
4
|
Summary: Datamodel Code Generator
|
|
5
5
|
Project-URL: Homepage, https://github.com/koxudaxi/datamodel-code-generator
|
|
6
6
|
Project-URL: Source, https://github.com/koxudaxi/datamodel-code-generator
|
|
@@ -313,12 +313,6 @@ class Apis(BaseModel):
|
|
|
313
313
|
<p>Astral</p>
|
|
314
314
|
</a>
|
|
315
315
|
</td>
|
|
316
|
-
<td valign="top" align="center">
|
|
317
|
-
<a href="https://github.com/DataDog">
|
|
318
|
-
<img src="https://avatars.githubusercontent.com/u/365230?s=200&v=4" alt="Datadog, Inc. Logo" style="width: 100px;">
|
|
319
|
-
<p>Datadog, Inc.</p>
|
|
320
|
-
</a>
|
|
321
|
-
</td>
|
|
322
316
|
</tr>
|
|
323
317
|
</table>
|
|
324
318
|
|
|
@@ -426,6 +420,8 @@ Options:
|
|
|
426
420
|
Typing customization:
|
|
427
421
|
--base-class BASE_CLASS
|
|
428
422
|
Base Class (default: pydantic.BaseModel)
|
|
423
|
+
--disable-future-imports
|
|
424
|
+
Disable __future__ imports
|
|
429
425
|
--enum-field-as-literal {all,one}
|
|
430
426
|
Parse enum field as literal. all: all enum field type are Literal.
|
|
431
427
|
one: field type is Literal when an enum has only one possible value
|
{datamodel_code_generator-0.33.0.dist-info → datamodel_code_generator-0.34.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=fDwU8afS8W-Z8UQeV7-xvAYCpuzlrMgRDv-TXJ4Wowg,21330
|
|
2
|
+
datamodel_code_generator/__main__.py,sha256=EaL4uRLqNLnhajYaXtJ5w3viPnhg6kJZmACso3Bu_tw,25556
|
|
3
|
+
datamodel_code_generator/arguments.py,sha256=qWpWeLHTC1yp8JtVMFFjMf4DKJAWZivhLLbESW8ivQo,17923
|
|
4
|
+
datamodel_code_generator/format.py,sha256=mhHcPrxc1n3j4IuIUGz67kU3gSWI9nQNlMkkPCNJ888,8938
|
|
5
5
|
datamodel_code_generator/http.py,sha256=LE94GC7I9D8lWIg_YAGWedfy0XNxOXTmiYKuNMTwouo,887
|
|
6
6
|
datamodel_code_generator/imports.py,sha256=Nq83WbEGCegntg3WX4VbKfzAIs84alZ7IrYyNPrlUbc,5517
|
|
7
7
|
datamodel_code_generator/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -11,13 +11,13 @@ datamodel_code_generator/types.py,sha256=Ofr3QpcJ1E-7ZqJkAglW55zx3YpapN6MapUWoyn
|
|
|
11
11
|
datamodel_code_generator/util.py,sha256=mi5jwvMNjzIS_EuL4jikcO3WPViBK_oQRAw99db0T48,4465
|
|
12
12
|
datamodel_code_generator/model/__init__.py,sha256=qbldMWjMiDhOphB6n75k3v42SLU17OlCuJQeTPOvgts,3356
|
|
13
13
|
datamodel_code_generator/model/base.py,sha256=KaotBuXbid4KMYglaxDBd5rJKaFwI2WoForNKrb57sc,15431
|
|
14
|
-
datamodel_code_generator/model/dataclass.py,sha256=
|
|
14
|
+
datamodel_code_generator/model/dataclass.py,sha256=9invYioBJElOh2097lCg9mqhs95u5gidvjXHECksfuc,6628
|
|
15
15
|
datamodel_code_generator/model/enum.py,sha256=yriQslY1hag_Qk-Xv3vl_LkPnbmMZ3iRTAGiiyMN0Io,4003
|
|
16
16
|
datamodel_code_generator/model/imports.py,sha256=PTc09UzIBSsa5yAPoieb6hCGIohU2T1Y7igNy_pYarg,820
|
|
17
17
|
datamodel_code_generator/model/msgspec.py,sha256=gTb9H9Dc13nXOYJDYPGO889Y5A4zBKKJOdpzrXz09JU,11830
|
|
18
18
|
datamodel_code_generator/model/rootmodel.py,sha256=pY8G2SPjkafzfJ1L9P5sNdp8qe45UclpUYN86guRB3M,202
|
|
19
19
|
datamodel_code_generator/model/scalar.py,sha256=xfONEK30eYJ2mSL9PK9zXqEG5-xApYMI_gmKOn5qhK4,2664
|
|
20
|
-
datamodel_code_generator/model/typed_dict.py,sha256=
|
|
20
|
+
datamodel_code_generator/model/typed_dict.py,sha256=rkq7IfBIQhJUN1_YeR_AXYQKja8S5yFlCVE-Iq96lkE,5004
|
|
21
21
|
datamodel_code_generator/model/types.py,sha256=kGnQ7SpjyovXYKwCCIPmAi3gr1HOCqiu7C9k-PnMuo0,3487
|
|
22
22
|
datamodel_code_generator/model/union.py,sha256=zwq1ayGFW3KbI4SxPCcdZcrM7X4Px25IdujDedtwgOw,1929
|
|
23
23
|
datamodel_code_generator/model/pydantic/__init__.py,sha256=ggJNv7_6Vv-BgY50O-0Pa6IHGavkxGAjSa9lLEmFOnE,1149
|
|
@@ -48,12 +48,12 @@ datamodel_code_generator/model/template/pydantic_v2/BaseModel.jinja2,sha256=i1Wg
|
|
|
48
48
|
datamodel_code_generator/model/template/pydantic_v2/ConfigDict.jinja2,sha256=xHvBYrh__32O1xRCSl6_u5zbyYIjB8a5k8fZiTo0spY,149
|
|
49
49
|
datamodel_code_generator/model/template/pydantic_v2/RootModel.jinja2,sha256=XQBlML7Hm5hN6_AExENNvVc_yxNWijcIfTTbbmegCpE,1223
|
|
50
50
|
datamodel_code_generator/parser/__init__.py,sha256=3XtFcDPocaetfjmWFqj_CubqNCDipb7vXZHsYKdJXXU,851
|
|
51
|
-
datamodel_code_generator/parser/base.py,sha256=
|
|
51
|
+
datamodel_code_generator/parser/base.py,sha256=lwmy7aCi-BH78DARDa657i5_wURHvmWcnFkkoKVnyhY,63503
|
|
52
52
|
datamodel_code_generator/parser/graphql.py,sha256=x5Jge8xZiaup9jMhX6jVKncme_D5FmSoEWmXIKtguVo,23384
|
|
53
|
-
datamodel_code_generator/parser/jsonschema.py,sha256=
|
|
53
|
+
datamodel_code_generator/parser/jsonschema.py,sha256=TGxKrJRxPYEAP8uiFIKrkgH3Vj3HCTQ6csIDGvJorng,72513
|
|
54
54
|
datamodel_code_generator/parser/openapi.py,sha256=puBXUaq4zXDl7wj-VsZmmmt_D672RfS6qY9WID0VRPw,28603
|
|
55
|
-
datamodel_code_generator-0.
|
|
56
|
-
datamodel_code_generator-0.
|
|
57
|
-
datamodel_code_generator-0.
|
|
58
|
-
datamodel_code_generator-0.
|
|
59
|
-
datamodel_code_generator-0.
|
|
55
|
+
datamodel_code_generator-0.34.0.dist-info/METADATA,sha256=_omboMSmg84vGvx85QpCFHiAChNpxe-PEzQOgS_oP-4,26091
|
|
56
|
+
datamodel_code_generator-0.34.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
57
|
+
datamodel_code_generator-0.34.0.dist-info/entry_points.txt,sha256=cJVcHiEViQMANaoM5C1xR5hzmyCqH6hHHMpV8W00in8,77
|
|
58
|
+
datamodel_code_generator-0.34.0.dist-info/licenses/LICENSE,sha256=K54Lwc6_jduycsy8oFFjQEeSSuEiqvVIjCGIXOMnuTQ,1068
|
|
59
|
+
datamodel_code_generator-0.34.0.dist-info/RECORD,,
|
{datamodel_code_generator-0.33.0.dist-info → datamodel_code_generator-0.34.0.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|