@autorest/python 5.11.1 → 5.12.2
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.
- package/ChangeLog.md +68 -0
- package/autorest/codegen/__init__.py +5 -5
- package/autorest/codegen/models/__init__.py +3 -23
- package/autorest/codegen/models/base_builder.py +2 -5
- package/autorest/codegen/models/client.py +2 -2
- package/autorest/codegen/models/code_model.py +5 -1
- package/autorest/codegen/models/operation_group.py +5 -3
- package/autorest/codegen/models/parameter.py +4 -3
- package/autorest/codegen/models/parameter_list.py +32 -27
- package/autorest/codegen/models/request_builder.py +5 -1
- package/autorest/codegen/models/request_builder_parameter.py +4 -3
- package/autorest/codegen/models/request_builder_parameter_list.py +18 -11
- package/autorest/codegen/models/rest.py +3 -2
- package/autorest/codegen/models/utils.py +8 -0
- package/autorest/codegen/serializers/__init__.py +48 -48
- package/autorest/codegen/serializers/builder_serializer.py +150 -146
- package/autorest/codegen/serializers/client_serializer.py +37 -9
- package/autorest/codegen/serializers/general_serializer.py +7 -5
- package/autorest/codegen/serializers/import_serializer.py +6 -6
- package/autorest/codegen/serializers/metadata_serializer.py +2 -2
- package/autorest/codegen/serializers/model_base_serializer.py +3 -3
- package/autorest/codegen/serializers/model_generic_serializer.py +1 -1
- package/autorest/codegen/serializers/model_python3_serializer.py +1 -1
- package/autorest/codegen/serializers/{operation_group_serializer.py → operation_groups_serializer.py} +27 -29
- package/autorest/codegen/serializers/operations_init_serializer.py +34 -2
- package/autorest/codegen/serializers/patch_serializer.py +15 -0
- package/autorest/codegen/serializers/rest_serializer.py +9 -4
- package/autorest/codegen/serializers/utils.py +2 -2
- package/autorest/codegen/templates/config.py.jinja2 +1 -11
- package/autorest/codegen/templates/init.py.jinja2 +4 -5
- package/autorest/codegen/templates/metadata.json.jinja2 +2 -2
- package/autorest/codegen/templates/model_init.py.jinja2 +1 -1
- package/autorest/codegen/templates/{operations_class.py.jinja2 → operation_group.py.jinja2} +2 -0
- package/autorest/codegen/templates/operation_groups_container.py.jinja2 +26 -0
- package/autorest/codegen/templates/operation_tools.jinja2 +7 -0
- package/autorest/codegen/templates/operations_folder_init.py.jinja2 +13 -0
- package/autorest/codegen/templates/patch.py.jinja2 +31 -0
- package/autorest/codegen/templates/request_builder.py.jinja2 +7 -2
- package/autorest/codegen/templates/request_builders.py.jinja2 +3 -3
- package/autorest/codegen/templates/setup.py.jinja2 +1 -1
- package/autorest/multiapi/serializers/__init__.py +3 -3
- package/autorest/multiapi/serializers/import_serializer.py +5 -5
- package/autorest/namer/name_converter.py +3 -1
- package/install.py +1 -0
- package/package.json +4 -3
- package/requirements.txt +14 -0
- package/setup.py +1 -0
- package/autorest/codegen/templates/operations_class_mixin.py.jinja2 +0 -16
- package/autorest/codegen/templates/operations_container.py.jinja2 +0 -39
- package/autorest/codegen/templates/operations_container_init.py.jinja2 +0 -24
- package/autorest/codegen/templates/operations_container_mixin.py.jinja2 +0 -20
- package/autorest/codegen/templates/operations_init.py.jinja2 +0 -26
|
@@ -3,29 +3,32 @@
|
|
|
3
3
|
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
4
|
# license information.
|
|
5
5
|
# --------------------------------------------------------------------------
|
|
6
|
-
from typing import List
|
|
6
|
+
from typing import List, Optional
|
|
7
7
|
from pathlib import Path
|
|
8
8
|
from jinja2 import PackageLoader, Environment
|
|
9
9
|
from autorest.codegen.models.operation_group import OperationGroup
|
|
10
10
|
|
|
11
11
|
from ...jsonrpc import AutorestAPI
|
|
12
|
-
from ..models import
|
|
13
|
-
|
|
12
|
+
from ..models import (
|
|
13
|
+
CodeModel,
|
|
14
|
+
OperationGroup,
|
|
15
|
+
RequestBuilder,
|
|
16
|
+
)
|
|
14
17
|
from .enum_serializer import EnumSerializer
|
|
15
18
|
from .general_serializer import GeneralSerializer
|
|
16
19
|
from .model_generic_serializer import ModelGenericSerializer
|
|
17
20
|
from .model_init_serializer import ModelInitSerializer
|
|
18
21
|
from .model_python3_serializer import ModelPython3Serializer
|
|
19
22
|
from .operations_init_serializer import OperationsInitSerializer
|
|
20
|
-
from .
|
|
23
|
+
from .operation_groups_serializer import OperationGroupsSerializer
|
|
21
24
|
from .metadata_serializer import MetadataSerializer
|
|
22
25
|
from .rest_serializer import RestPython3Serializer, RestGenericSerializer, RestSerializer
|
|
26
|
+
from .patch_serializer import PatchSerializer
|
|
23
27
|
|
|
24
28
|
__all__ = [
|
|
25
29
|
"JinjaSerializer",
|
|
26
30
|
]
|
|
27
31
|
|
|
28
|
-
|
|
29
32
|
class JinjaSerializer:
|
|
30
33
|
def __init__(self, autorestapi: AutorestAPI) -> None:
|
|
31
34
|
self._autorestapi = autorestapi
|
|
@@ -45,8 +48,8 @@ class JinjaSerializer:
|
|
|
45
48
|
)
|
|
46
49
|
|
|
47
50
|
# if there was a patch file before, we keep it
|
|
48
|
-
self._keep_patch_file(namespace_path / Path("_patch.py"))
|
|
49
|
-
self._keep_patch_file(namespace_path / Path("aio") / Path("_patch.py"))
|
|
51
|
+
self._keep_patch_file(namespace_path / Path("_patch.py"), env)
|
|
52
|
+
self._keep_patch_file(namespace_path / Path("aio") / Path("_patch.py"), env)
|
|
50
53
|
|
|
51
54
|
self._serialize_and_write_top_level_folder(code_model=code_model, env=env, namespace_path=namespace_path)
|
|
52
55
|
|
|
@@ -70,16 +73,18 @@ class JinjaSerializer:
|
|
|
70
73
|
|
|
71
74
|
|
|
72
75
|
|
|
73
|
-
def _keep_patch_file(self, path_file: Path):
|
|
76
|
+
def _keep_patch_file(self, path_file: Path, env: Environment):
|
|
74
77
|
if self._autorestapi.read_file(path_file):
|
|
75
78
|
self._autorestapi.write_file(path_file, self._autorestapi.read_file(path_file))
|
|
79
|
+
else:
|
|
80
|
+
self._autorestapi.write_file(path_file, PatchSerializer(env=env).serialize())
|
|
76
81
|
|
|
77
82
|
|
|
78
83
|
def _serialize_and_write_models_folder(self, code_model: CodeModel, env: Environment, namespace_path: Path) -> None:
|
|
79
84
|
# Write the models folder
|
|
80
85
|
models_path = namespace_path / Path("models")
|
|
81
86
|
if code_model.schemas:
|
|
82
|
-
if not code_model.options['
|
|
87
|
+
if not code_model.options['python3_only']:
|
|
83
88
|
self._autorestapi.write_file(
|
|
84
89
|
models_path / Path("_models.py"), ModelGenericSerializer(code_model=code_model, env=env).serialize()
|
|
85
90
|
)
|
|
@@ -144,36 +149,49 @@ class JinjaSerializer:
|
|
|
144
149
|
).serialize_init()
|
|
145
150
|
)
|
|
146
151
|
|
|
147
|
-
def
|
|
152
|
+
def _serialize_and_write_operations_file(
|
|
148
153
|
self,
|
|
149
154
|
code_model: CodeModel,
|
|
150
155
|
env: Environment,
|
|
151
156
|
namespace_path: Path,
|
|
152
|
-
|
|
153
|
-
filename: str
|
|
157
|
+
operation_group: Optional[OperationGroup] = None
|
|
154
158
|
) -> None:
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
159
|
+
filename = operation_group.filename if operation_group else "_operations"
|
|
160
|
+
# write first sync file
|
|
161
|
+
operation_group_serializer = OperationGroupsSerializer(
|
|
162
|
+
code_model=code_model,
|
|
163
|
+
env=env,
|
|
164
|
+
async_mode=False,
|
|
165
|
+
is_python3_file=code_model.options['python3_only'],
|
|
166
|
+
operation_group=operation_group
|
|
167
|
+
)
|
|
168
|
+
self._autorestapi.write_file(
|
|
169
|
+
namespace_path / Path(code_model.operations_folder_name) / Path(f"{filename}.py"),
|
|
170
|
+
operation_group_serializer.serialize(),
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
if not code_model.options['python3_only'] and code_model.options["add_python3_operation_files"]:
|
|
174
|
+
# write typed second file if not python 3 only
|
|
175
|
+
operation_group_serializer = OperationGroupsSerializer(
|
|
158
176
|
code_model=code_model,
|
|
159
177
|
env=env,
|
|
160
|
-
operation_groups=operation_groups,
|
|
161
178
|
async_mode=False,
|
|
162
|
-
|
|
179
|
+
is_python3_file=True,
|
|
180
|
+
|
|
163
181
|
)
|
|
164
182
|
self._autorestapi.write_file(
|
|
165
|
-
namespace_path / Path(code_model.operations_folder_name) / Path(f"{filename}.py"),
|
|
183
|
+
namespace_path / Path(code_model.operations_folder_name) / Path(f"{filename}_py3.py"),
|
|
166
184
|
operation_group_serializer.serialize(),
|
|
167
185
|
)
|
|
168
186
|
|
|
169
187
|
if not code_model.options["no_async"]:
|
|
170
188
|
# write async operation group and operation files
|
|
171
|
-
operation_group_async_serializer =
|
|
189
|
+
operation_group_async_serializer = OperationGroupsSerializer(
|
|
172
190
|
code_model=code_model,
|
|
173
191
|
env=env,
|
|
174
|
-
operation_groups=operation_groups,
|
|
175
192
|
async_mode=True,
|
|
176
|
-
|
|
193
|
+
is_python3_file=True,
|
|
194
|
+
operation_group=operation_group
|
|
177
195
|
)
|
|
178
196
|
self._autorestapi.write_file(
|
|
179
197
|
(
|
|
@@ -185,20 +203,6 @@ class JinjaSerializer:
|
|
|
185
203
|
operation_group_async_serializer.serialize(),
|
|
186
204
|
)
|
|
187
205
|
|
|
188
|
-
if code_model.options["add_python_3_operation_files"]:
|
|
189
|
-
# write typed sync operation files
|
|
190
|
-
operation_group_serializer = OperationGroupSerializer(
|
|
191
|
-
code_model=code_model,
|
|
192
|
-
env=env,
|
|
193
|
-
operation_groups=operation_groups,
|
|
194
|
-
async_mode=False,
|
|
195
|
-
is_python_3_file=True,
|
|
196
|
-
)
|
|
197
|
-
self._autorestapi.write_file(
|
|
198
|
-
namespace_path / Path(code_model.operations_folder_name) / Path(f"{filename}_py3.py"),
|
|
199
|
-
operation_group_serializer.serialize(),
|
|
200
|
-
)
|
|
201
|
-
|
|
202
206
|
def _serialize_and_write_operations_folder(
|
|
203
207
|
self, code_model: CodeModel, env: Environment, namespace_path: Path
|
|
204
208
|
) -> None:
|
|
@@ -217,24 +221,20 @@ class JinjaSerializer:
|
|
|
217
221
|
operations_async_init_serializer.serialize(),
|
|
218
222
|
)
|
|
219
223
|
|
|
220
|
-
if
|
|
224
|
+
if code_model.options["combine_operation_files"]:
|
|
225
|
+
self._serialize_and_write_operations_file(
|
|
226
|
+
code_model=code_model,
|
|
227
|
+
env=env,
|
|
228
|
+
namespace_path=namespace_path,
|
|
229
|
+
)
|
|
230
|
+
else:
|
|
221
231
|
for operation_group in code_model.operation_groups:
|
|
222
|
-
self.
|
|
232
|
+
self._serialize_and_write_operations_file(
|
|
223
233
|
code_model=code_model,
|
|
224
234
|
env=env,
|
|
225
235
|
namespace_path=namespace_path,
|
|
226
|
-
|
|
227
|
-
filename=operation_group.filename
|
|
236
|
+
operation_group=operation_group,
|
|
228
237
|
)
|
|
229
|
-
else:
|
|
230
|
-
self._serialize_and_write_operations_folder_process(
|
|
231
|
-
code_model=code_model,
|
|
232
|
-
env=env,
|
|
233
|
-
namespace_path=namespace_path,
|
|
234
|
-
operation_groups=code_model.operation_groups,
|
|
235
|
-
filename="_operations"
|
|
236
|
-
)
|
|
237
|
-
|
|
238
238
|
|
|
239
239
|
def _serialize_and_write_version_file(
|
|
240
240
|
self, code_model: CodeModel, namespace_path: Path, general_serializer: GeneralSerializer
|