@autorest/python 5.15.0 → 5.16.0
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 +20 -0
- package/autorest/__init__.py +1 -2
- package/autorest/black/__init__.py +12 -5
- package/autorest/codegen/__init__.py +145 -73
- package/autorest/codegen/models/__init__.py +29 -18
- package/autorest/codegen/models/base_builder.py +48 -11
- package/autorest/codegen/models/base_model.py +6 -4
- package/autorest/codegen/models/base_schema.py +19 -18
- package/autorest/codegen/models/client.py +65 -21
- package/autorest/codegen/models/code_model.py +107 -61
- package/autorest/codegen/models/constant_schema.py +25 -13
- package/autorest/codegen/models/credential_model.py +23 -15
- package/autorest/codegen/models/credential_schema.py +18 -14
- package/autorest/codegen/models/credential_schema_policy.py +11 -15
- package/autorest/codegen/models/dictionary_schema.py +20 -17
- package/autorest/codegen/models/enum_schema.py +35 -25
- package/autorest/codegen/models/imports.py +70 -41
- package/autorest/codegen/models/list_schema.py +25 -13
- package/autorest/codegen/models/lro_operation.py +58 -22
- package/autorest/codegen/models/lro_paging_operation.py +2 -3
- package/autorest/codegen/models/object_schema.py +99 -49
- package/autorest/codegen/models/operation.py +236 -117
- package/autorest/codegen/models/operation_group.py +64 -34
- package/autorest/codegen/models/paging_operation.py +45 -18
- package/autorest/codegen/models/parameter.py +151 -83
- package/autorest/codegen/models/parameter_list.py +183 -162
- package/autorest/codegen/models/primitive_schemas.py +84 -55
- package/autorest/codegen/models/property.py +44 -26
- package/autorest/codegen/models/request_builder.py +65 -30
- package/autorest/codegen/models/request_builder_parameter.py +47 -23
- package/autorest/codegen/models/request_builder_parameter_list.py +77 -108
- package/autorest/codegen/models/schema_request.py +16 -6
- package/autorest/codegen/models/schema_response.py +18 -13
- package/autorest/codegen/models/utils.py +5 -2
- package/autorest/codegen/serializers/__init__.py +182 -91
- package/autorest/codegen/serializers/builder_serializer.py +667 -331
- package/autorest/codegen/serializers/client_serializer.py +98 -37
- package/autorest/codegen/serializers/general_serializer.py +61 -26
- package/autorest/codegen/serializers/import_serializer.py +93 -31
- package/autorest/codegen/serializers/metadata_serializer.py +73 -24
- package/autorest/codegen/serializers/model_base_serializer.py +35 -15
- package/autorest/codegen/serializers/model_generic_serializer.py +1 -4
- package/autorest/codegen/serializers/model_init_serializer.py +5 -1
- package/autorest/codegen/serializers/model_python3_serializer.py +7 -6
- package/autorest/codegen/serializers/operation_groups_serializer.py +20 -9
- package/autorest/codegen/serializers/operations_init_serializer.py +23 -11
- package/autorest/codegen/serializers/patch_serializer.py +4 -1
- package/autorest/codegen/serializers/{rest_serializer.py → request_builders_serializer.py} +29 -12
- package/autorest/codegen/serializers/utils.py +35 -21
- package/autorest/codegen/templates/init.py.jinja2 +2 -2
- package/autorest/codegen/templates/lro_operation.py.jinja2 +5 -7
- package/autorest/codegen/templates/lro_paging_operation.py.jinja2 +5 -7
- package/autorest/codegen/templates/metadata.json.jinja2 +7 -6
- package/autorest/codegen/templates/operation.py.jinja2 +7 -9
- package/autorest/codegen/templates/operation_group.py.jinja2 +2 -8
- package/autorest/codegen/templates/operation_groups_container.py.jinja2 +1 -1
- package/autorest/codegen/templates/paging_operation.py.jinja2 +7 -8
- package/autorest/codegen/templates/request_builder.py.jinja2 +18 -11
- package/autorest/jsonrpc/__init__.py +7 -12
- package/autorest/jsonrpc/localapi.py +4 -3
- package/autorest/jsonrpc/server.py +13 -6
- package/autorest/jsonrpc/stdstream.py +13 -6
- package/autorest/m2r/__init__.py +5 -8
- package/autorest/multiapi/__init__.py +24 -14
- package/autorest/multiapi/models/client.py +21 -11
- package/autorest/multiapi/models/code_model.py +23 -10
- package/autorest/multiapi/models/config.py +4 -1
- package/autorest/multiapi/models/constant_global_parameter.py +1 -0
- package/autorest/multiapi/models/global_parameter.py +2 -1
- package/autorest/multiapi/models/global_parameters.py +14 -8
- package/autorest/multiapi/models/imports.py +24 -17
- package/autorest/multiapi/models/mixin_operation.py +5 -5
- package/autorest/multiapi/models/operation_group.py +2 -1
- package/autorest/multiapi/models/operation_mixin_group.py +21 -10
- package/autorest/multiapi/serializers/__init__.py +18 -23
- package/autorest/multiapi/serializers/import_serializer.py +47 -17
- package/autorest/multiapi/serializers/multiapi_serializer.py +17 -17
- package/autorest/multiapi/templates/multiapi_operations_mixin.py.jinja2 +1 -1
- package/autorest/multiapi/utils.py +3 -3
- package/autorest/namer/__init__.py +2 -4
- package/autorest/namer/name_converter.py +200 -103
- package/autorest/namer/python_mappings.py +10 -22
- package/package.json +2 -2
- package/run-python3.js +2 -3
- package/venvtools.py +1 -1
- package/autorest/codegen/models/rest.py +0 -42
|
@@ -9,12 +9,7 @@ from jinja2 import PackageLoader, Environment, FileSystemLoader, StrictUndefined
|
|
|
9
9
|
from autorest.codegen.models.operation_group import OperationGroup
|
|
10
10
|
|
|
11
11
|
from ...jsonrpc import AutorestAPI
|
|
12
|
-
from ..models import
|
|
13
|
-
CodeModel,
|
|
14
|
-
OperationGroup,
|
|
15
|
-
RequestBuilder,
|
|
16
|
-
TokenCredentialSchema
|
|
17
|
-
)
|
|
12
|
+
from ..models import CodeModel, OperationGroup, RequestBuilder, TokenCredentialSchema
|
|
18
13
|
from .enum_serializer import EnumSerializer
|
|
19
14
|
from .general_serializer import GeneralSerializer
|
|
20
15
|
from .model_generic_serializer import ModelGenericSerializer
|
|
@@ -23,7 +18,11 @@ from .model_python3_serializer import ModelPython3Serializer
|
|
|
23
18
|
from .operations_init_serializer import OperationsInitSerializer
|
|
24
19
|
from .operation_groups_serializer import OperationGroupsSerializer
|
|
25
20
|
from .metadata_serializer import MetadataSerializer
|
|
26
|
-
from .
|
|
21
|
+
from .request_builders_serializer import (
|
|
22
|
+
RequestBuildersPython3Serializer,
|
|
23
|
+
RequestBuildersGenericSerializer,
|
|
24
|
+
RequestBuildersSerializer,
|
|
25
|
+
)
|
|
27
26
|
from .patch_serializer import PatchSerializer
|
|
28
27
|
|
|
29
28
|
__all__ = [
|
|
@@ -39,10 +38,8 @@ _PACKAGE_FILES = [
|
|
|
39
38
|
"setup.py.jinja2",
|
|
40
39
|
]
|
|
41
40
|
|
|
42
|
-
_REGENERATE_FILES = {
|
|
43
|
-
|
|
44
|
-
"MANIFEST.in"
|
|
45
|
-
}
|
|
41
|
+
_REGENERATE_FILES = {"setup.py", "MANIFEST.in"}
|
|
42
|
+
|
|
46
43
|
|
|
47
44
|
class JinjaSerializer:
|
|
48
45
|
def __init__(self, autorestapi: AutorestAPI, code_model: CodeModel) -> None:
|
|
@@ -51,7 +48,9 @@ class JinjaSerializer:
|
|
|
51
48
|
|
|
52
49
|
@property
|
|
53
50
|
def has_aio_folder(self) -> bool:
|
|
54
|
-
return not self.code_model.options["no_async"] and bool(
|
|
51
|
+
return not self.code_model.options["no_async"] and bool(
|
|
52
|
+
self.code_model.request_builders
|
|
53
|
+
)
|
|
55
54
|
|
|
56
55
|
def serialize(self) -> None:
|
|
57
56
|
env = Environment(
|
|
@@ -73,53 +72,84 @@ class JinjaSerializer:
|
|
|
73
72
|
if self.has_aio_folder:
|
|
74
73
|
self._keep_patch_file(namespace_path / Path("aio") / Path("_patch.py"), env)
|
|
75
74
|
|
|
76
|
-
if self.code_model.options["models_mode"] and (
|
|
77
|
-
self.
|
|
78
|
-
|
|
75
|
+
if self.code_model.options["models_mode"] and (
|
|
76
|
+
self.code_model.schemas or self.code_model.enums
|
|
77
|
+
):
|
|
78
|
+
self._keep_patch_file(
|
|
79
|
+
namespace_path / Path("models") / Path("_patch.py"), env
|
|
80
|
+
)
|
|
81
|
+
if (
|
|
82
|
+
self.code_model.options["show_operations"]
|
|
83
|
+
and self.code_model.operation_groups
|
|
84
|
+
):
|
|
79
85
|
self._keep_patch_file(
|
|
80
|
-
namespace_path
|
|
86
|
+
namespace_path
|
|
87
|
+
/ Path(self.code_model.operations_folder_name)
|
|
88
|
+
/ Path("_patch.py"),
|
|
89
|
+
env,
|
|
81
90
|
)
|
|
82
91
|
if self.has_aio_folder:
|
|
83
92
|
self._keep_patch_file(
|
|
84
|
-
namespace_path
|
|
93
|
+
namespace_path
|
|
94
|
+
/ Path("aio")
|
|
95
|
+
/ Path(self.code_model.operations_folder_name)
|
|
96
|
+
/ Path("_patch.py"),
|
|
97
|
+
env,
|
|
85
98
|
)
|
|
86
99
|
|
|
87
|
-
self._serialize_and_write_top_level_folder(
|
|
100
|
+
self._serialize_and_write_top_level_folder(
|
|
101
|
+
env=env, namespace_path=namespace_path
|
|
102
|
+
)
|
|
88
103
|
|
|
89
|
-
if self.code_model.
|
|
104
|
+
if self.code_model.request_builders:
|
|
90
105
|
if self.code_model.options["builders_visibility"] != "embedded":
|
|
91
|
-
self._serialize_and_write_rest_layer(
|
|
106
|
+
self._serialize_and_write_rest_layer(
|
|
107
|
+
env=env, namespace_path=namespace_path
|
|
108
|
+
)
|
|
92
109
|
if self.has_aio_folder:
|
|
93
110
|
self._serialize_and_write_aio_top_level_folder(
|
|
94
|
-
env=env,
|
|
111
|
+
env=env,
|
|
112
|
+
namespace_path=namespace_path,
|
|
95
113
|
)
|
|
96
114
|
|
|
97
|
-
if
|
|
98
|
-
self.
|
|
115
|
+
if (
|
|
116
|
+
self.code_model.options["show_operations"]
|
|
117
|
+
and self.code_model.operation_groups
|
|
118
|
+
):
|
|
119
|
+
self._serialize_and_write_operations_folder(
|
|
120
|
+
env=env, namespace_path=namespace_path
|
|
121
|
+
)
|
|
99
122
|
if self.code_model.options["multiapi"]:
|
|
100
123
|
self._serialize_and_write_metadata(
|
|
101
124
|
env=env, namespace_path=namespace_path
|
|
102
125
|
)
|
|
103
126
|
|
|
104
|
-
if self.code_model.options["models_mode"] and (
|
|
105
|
-
self.
|
|
127
|
+
if self.code_model.options["models_mode"] and (
|
|
128
|
+
self.code_model.schemas or self.code_model.enums
|
|
129
|
+
):
|
|
130
|
+
self._serialize_and_write_models_folder(
|
|
131
|
+
env=env, namespace_path=namespace_path
|
|
132
|
+
)
|
|
106
133
|
if not self.code_model.options["models_mode"]:
|
|
107
134
|
# keep models file if users ended up just writing a models file
|
|
108
135
|
if self._autorestapi.read_file(namespace_path / Path("models.py")):
|
|
109
136
|
self._autorestapi.write_file(
|
|
110
|
-
namespace_path / Path("models.py"),
|
|
137
|
+
namespace_path / Path("models.py"),
|
|
138
|
+
self._autorestapi.read_file(namespace_path / Path("models.py")),
|
|
111
139
|
)
|
|
112
140
|
|
|
113
141
|
if self.code_model.options["package_mode"]:
|
|
114
142
|
self._serialize_and_write_package_files(out_path=namespace_path)
|
|
115
143
|
|
|
116
|
-
|
|
117
144
|
def _serialize_and_write_package_files(self, out_path: Path) -> None:
|
|
118
145
|
def _serialize_and_write_package_files_proc(**kwargs: Any):
|
|
119
146
|
for template_name in package_files:
|
|
120
147
|
file = template_name.replace(".jinja2", "")
|
|
121
148
|
output_name = out_path / file
|
|
122
|
-
if
|
|
149
|
+
if (
|
|
150
|
+
not self._autorestapi.read_file(output_name)
|
|
151
|
+
or file in _REGENERATE_FILES
|
|
152
|
+
):
|
|
123
153
|
template = env.get_template(template_name)
|
|
124
154
|
render_result = template.render(**kwargs)
|
|
125
155
|
self._autorestapi.write_file(output_name, render_result)
|
|
@@ -129,20 +159,25 @@ class JinjaSerializer:
|
|
|
129
159
|
try:
|
|
130
160
|
token_cred = isinstance(
|
|
131
161
|
self.code_model.credential_model.credential_schema_policy.credential,
|
|
132
|
-
TokenCredentialSchema
|
|
162
|
+
TokenCredentialSchema,
|
|
133
163
|
)
|
|
134
164
|
except ValueError:
|
|
135
165
|
token_cred = False
|
|
136
166
|
version = self.code_model.options["package_version"]
|
|
137
|
-
if any(x in version for x in ["a", "b", "rc"]) or version[0] ==
|
|
167
|
+
if any(x in version for x in ["a", "b", "rc"]) or version[0] == "0":
|
|
138
168
|
dev_status = "4 - Beta"
|
|
139
169
|
else:
|
|
140
170
|
dev_status = "5 - Production/Stable"
|
|
141
171
|
params = {
|
|
142
172
|
"token_credential": token_cred,
|
|
143
|
-
"pkgutil_names": [
|
|
144
|
-
|
|
145
|
-
|
|
173
|
+
"pkgutil_names": [
|
|
174
|
+
".".join(package_parts[: i + 1]) for i in range(len(package_parts))
|
|
175
|
+
],
|
|
176
|
+
"init_names": [
|
|
177
|
+
"/".join(package_parts[: i + 1]) + "/__init__.py"
|
|
178
|
+
for i in range(len(package_parts))
|
|
179
|
+
],
|
|
180
|
+
"dev_status": dev_status,
|
|
146
181
|
}
|
|
147
182
|
params.update(self.code_model.options)
|
|
148
183
|
params.update(self.code_model.package_dependency)
|
|
@@ -155,38 +190,55 @@ class JinjaSerializer:
|
|
|
155
190
|
if self.code_model.options["package_mode"] in ("dataplane", "mgmtplane"):
|
|
156
191
|
env = Environment(
|
|
157
192
|
loader=PackageLoader("autorest.codegen", "templates"),
|
|
158
|
-
undefined=StrictUndefined
|
|
193
|
+
undefined=StrictUndefined,
|
|
194
|
+
)
|
|
159
195
|
package_files = _PACKAGE_FILES
|
|
160
196
|
_serialize_and_write_package_files_proc(**_prepare_params())
|
|
161
197
|
elif Path(self.code_model.options["package_mode"]).exists():
|
|
162
198
|
env = Environment(
|
|
163
|
-
loader=FileSystemLoader(
|
|
199
|
+
loader=FileSystemLoader(
|
|
200
|
+
str(Path(self.code_model.options["package_mode"]))
|
|
201
|
+
),
|
|
164
202
|
keep_trailing_newline=True,
|
|
165
|
-
undefined=StrictUndefined
|
|
203
|
+
undefined=StrictUndefined,
|
|
166
204
|
)
|
|
167
205
|
package_files = env.list_templates()
|
|
168
206
|
params = self.code_model.options["package_configuration"] or {}
|
|
169
207
|
_serialize_and_write_package_files_proc(**params)
|
|
170
208
|
|
|
171
|
-
|
|
172
209
|
def _keep_patch_file(self, path_file: Path, env: Environment):
|
|
173
210
|
if self._autorestapi.read_file(path_file):
|
|
174
|
-
self._autorestapi.write_file(
|
|
211
|
+
self._autorestapi.write_file(
|
|
212
|
+
path_file, self._autorestapi.read_file(path_file)
|
|
213
|
+
)
|
|
175
214
|
else:
|
|
176
|
-
self._autorestapi.write_file(
|
|
215
|
+
self._autorestapi.write_file(
|
|
216
|
+
path_file,
|
|
217
|
+
PatchSerializer(env=env, code_model=self.code_model).serialize(),
|
|
218
|
+
)
|
|
177
219
|
|
|
178
|
-
def _serialize_and_write_models_folder(
|
|
220
|
+
def _serialize_and_write_models_folder(
|
|
221
|
+
self, env: Environment, namespace_path: Path
|
|
222
|
+
) -> None:
|
|
179
223
|
# Write the models folder
|
|
180
224
|
models_path = namespace_path / Path("models")
|
|
181
225
|
if self.code_model.schemas:
|
|
182
|
-
if not self.code_model.options[
|
|
226
|
+
if not self.code_model.options["python3_only"]:
|
|
183
227
|
self._autorestapi.write_file(
|
|
184
|
-
models_path
|
|
185
|
-
|
|
228
|
+
models_path
|
|
229
|
+
/ Path(
|
|
230
|
+
f"{self.code_model.get_models_filename(is_python3_file=False)}.py"
|
|
231
|
+
),
|
|
232
|
+
ModelGenericSerializer(
|
|
233
|
+
code_model=self.code_model, env=env
|
|
234
|
+
).serialize(),
|
|
186
235
|
)
|
|
187
236
|
self._autorestapi.write_file(
|
|
188
|
-
models_path
|
|
189
|
-
|
|
237
|
+
models_path
|
|
238
|
+
/ Path(
|
|
239
|
+
f"{self.code_model.get_models_filename(is_python3_file=True)}.py"
|
|
240
|
+
),
|
|
241
|
+
ModelPython3Serializer(code_model=self.code_model, env=env).serialize(),
|
|
190
242
|
)
|
|
191
243
|
if self.code_model.enums:
|
|
192
244
|
self._autorestapi.write_file(
|
|
@@ -194,7 +246,8 @@ class JinjaSerializer:
|
|
|
194
246
|
EnumSerializer(code_model=self.code_model, env=env).serialize(),
|
|
195
247
|
)
|
|
196
248
|
self._autorestapi.write_file(
|
|
197
|
-
models_path / Path("__init__.py"),
|
|
249
|
+
models_path / Path("__init__.py"),
|
|
250
|
+
ModelInitSerializer(code_model=self.code_model, env=env).serialize(),
|
|
198
251
|
)
|
|
199
252
|
|
|
200
253
|
def _serialize_and_write_rest_layer(
|
|
@@ -202,55 +255,60 @@ class JinjaSerializer:
|
|
|
202
255
|
) -> None:
|
|
203
256
|
rest_path = namespace_path / Path(self.code_model.rest_layer_name)
|
|
204
257
|
operation_group_names = {
|
|
205
|
-
rb.operation_group_name for rb in self.code_model.
|
|
258
|
+
rb.operation_group_name for rb in self.code_model.request_builders
|
|
206
259
|
}
|
|
207
260
|
|
|
208
261
|
for operation_group_name in operation_group_names:
|
|
209
262
|
request_builders = [
|
|
210
|
-
r
|
|
263
|
+
r
|
|
264
|
+
for r in self.code_model.request_builders
|
|
265
|
+
if r.operation_group_name == operation_group_name
|
|
211
266
|
]
|
|
212
267
|
self._serialize_and_write_single_rest_layer(
|
|
213
268
|
env, rest_path, request_builders
|
|
214
269
|
)
|
|
215
270
|
if not "" in operation_group_names:
|
|
216
271
|
self._autorestapi.write_file(
|
|
217
|
-
rest_path / Path("__init__.py"),
|
|
272
|
+
rest_path / Path("__init__.py"),
|
|
273
|
+
self.code_model.options["license_header"],
|
|
218
274
|
)
|
|
219
275
|
|
|
220
|
-
|
|
221
276
|
def _serialize_and_write_single_rest_layer(
|
|
222
277
|
self, env: Environment, rest_path: Path, request_builders: List[RequestBuilder]
|
|
223
278
|
) -> None:
|
|
224
279
|
builder_group_name = request_builders[0].builder_group_name
|
|
225
|
-
output_path =
|
|
280
|
+
output_path = (
|
|
281
|
+
rest_path / Path(builder_group_name) if builder_group_name else rest_path
|
|
282
|
+
)
|
|
226
283
|
# write generic request builders file
|
|
227
284
|
self._autorestapi.write_file(
|
|
228
285
|
output_path / Path("_request_builders.py"),
|
|
229
|
-
|
|
286
|
+
RequestBuildersGenericSerializer(
|
|
230
287
|
code_model=self.code_model, env=env, request_builders=request_builders
|
|
231
|
-
).serialize_request_builders()
|
|
288
|
+
).serialize_request_builders(),
|
|
232
289
|
)
|
|
233
290
|
|
|
234
291
|
# write python3 request builders file
|
|
235
292
|
self._autorestapi.write_file(
|
|
236
293
|
output_path / Path("_request_builders_py3.py"),
|
|
237
|
-
|
|
294
|
+
RequestBuildersPython3Serializer(
|
|
238
295
|
code_model=self.code_model, env=env, request_builders=request_builders
|
|
239
|
-
).serialize_request_builders()
|
|
296
|
+
).serialize_request_builders(),
|
|
240
297
|
)
|
|
241
298
|
|
|
242
299
|
# write rest init file
|
|
243
300
|
self._autorestapi.write_file(
|
|
244
|
-
output_path / Path("__init__.py"),
|
|
301
|
+
output_path / Path("__init__.py"),
|
|
302
|
+
RequestBuildersSerializer(
|
|
245
303
|
code_model=self.code_model, env=env, request_builders=request_builders
|
|
246
|
-
).serialize_init()
|
|
304
|
+
).serialize_init(),
|
|
247
305
|
)
|
|
248
306
|
|
|
249
307
|
def _serialize_and_write_operations_file(
|
|
250
308
|
self,
|
|
251
309
|
env: Environment,
|
|
252
310
|
namespace_path: Path,
|
|
253
|
-
operation_group: Optional[OperationGroup] = None
|
|
311
|
+
operation_group: Optional[OperationGroup] = None,
|
|
254
312
|
) -> None:
|
|
255
313
|
filename = operation_group.filename if operation_group else "_operations"
|
|
256
314
|
# write first sync file
|
|
@@ -258,25 +316,31 @@ class JinjaSerializer:
|
|
|
258
316
|
code_model=self.code_model,
|
|
259
317
|
env=env,
|
|
260
318
|
async_mode=False,
|
|
261
|
-
is_python3_file=self.code_model.options[
|
|
262
|
-
operation_group=operation_group
|
|
319
|
+
is_python3_file=self.code_model.options["python3_only"],
|
|
320
|
+
operation_group=operation_group,
|
|
263
321
|
)
|
|
264
322
|
self._autorestapi.write_file(
|
|
265
|
-
namespace_path
|
|
323
|
+
namespace_path
|
|
324
|
+
/ Path(self.code_model.operations_folder_name)
|
|
325
|
+
/ Path(f"{filename}.py"),
|
|
266
326
|
operation_group_serializer.serialize(),
|
|
267
327
|
)
|
|
268
328
|
|
|
269
|
-
if
|
|
329
|
+
if (
|
|
330
|
+
not self.code_model.options["python3_only"]
|
|
331
|
+
and self.code_model.options["add_python3_operation_files"]
|
|
332
|
+
):
|
|
270
333
|
# write typed second file if not python 3 only
|
|
271
334
|
operation_group_serializer = OperationGroupsSerializer(
|
|
272
335
|
code_model=self.code_model,
|
|
273
336
|
env=env,
|
|
274
337
|
async_mode=False,
|
|
275
338
|
is_python3_file=True,
|
|
276
|
-
|
|
277
339
|
)
|
|
278
340
|
self._autorestapi.write_file(
|
|
279
|
-
namespace_path
|
|
341
|
+
namespace_path
|
|
342
|
+
/ Path(self.code_model.operations_folder_name)
|
|
343
|
+
/ Path(f"{filename}_py3.py"),
|
|
280
344
|
operation_group_serializer.serialize(),
|
|
281
345
|
)
|
|
282
346
|
|
|
@@ -287,7 +351,7 @@ class JinjaSerializer:
|
|
|
287
351
|
env=env,
|
|
288
352
|
async_mode=True,
|
|
289
353
|
is_python3_file=True,
|
|
290
|
-
operation_group=operation_group
|
|
354
|
+
operation_group=operation_group,
|
|
291
355
|
)
|
|
292
356
|
self._autorestapi.write_file(
|
|
293
357
|
(
|
|
@@ -303,9 +367,13 @@ class JinjaSerializer:
|
|
|
303
367
|
self, env: Environment, namespace_path: Path
|
|
304
368
|
) -> None:
|
|
305
369
|
# write sync operations init file
|
|
306
|
-
operations_init_serializer = OperationsInitSerializer(
|
|
370
|
+
operations_init_serializer = OperationsInitSerializer(
|
|
371
|
+
code_model=self.code_model, env=env, async_mode=False
|
|
372
|
+
)
|
|
307
373
|
self._autorestapi.write_file(
|
|
308
|
-
namespace_path
|
|
374
|
+
namespace_path
|
|
375
|
+
/ Path(self.code_model.operations_folder_name)
|
|
376
|
+
/ Path("__init__.py"),
|
|
309
377
|
operations_init_serializer.serialize(),
|
|
310
378
|
)
|
|
311
379
|
|
|
@@ -315,7 +383,10 @@ class JinjaSerializer:
|
|
|
315
383
|
code_model=self.code_model, env=env, async_mode=True
|
|
316
384
|
)
|
|
317
385
|
self._autorestapi.write_file(
|
|
318
|
-
namespace_path
|
|
386
|
+
namespace_path
|
|
387
|
+
/ Path("aio")
|
|
388
|
+
/ Path(self.code_model.operations_folder_name)
|
|
389
|
+
/ Path("__init__.py"),
|
|
319
390
|
operations_async_init_serializer.serialize(),
|
|
320
391
|
)
|
|
321
392
|
|
|
@@ -336,80 +407,96 @@ class JinjaSerializer:
|
|
|
336
407
|
self, namespace_path: Path, general_serializer: GeneralSerializer
|
|
337
408
|
):
|
|
338
409
|
def _read_version_file(original_version_file_name: str) -> str:
|
|
339
|
-
return self._autorestapi.read_file(
|
|
410
|
+
return self._autorestapi.read_file(
|
|
411
|
+
namespace_path / original_version_file_name
|
|
412
|
+
)
|
|
340
413
|
|
|
341
414
|
def _write_version_file(original_version_file_name: str) -> None:
|
|
342
415
|
self._autorestapi.write_file(
|
|
343
416
|
namespace_path / Path("_version.py"),
|
|
344
|
-
_read_version_file(original_version_file_name)
|
|
417
|
+
_read_version_file(original_version_file_name),
|
|
345
418
|
)
|
|
346
|
-
|
|
419
|
+
|
|
420
|
+
keep_version_file = self.code_model.options["keep_version_file"]
|
|
347
421
|
if keep_version_file and _read_version_file("_version.py"):
|
|
348
422
|
_write_version_file(original_version_file_name="_version.py")
|
|
349
423
|
elif keep_version_file and _read_version_file("version.py"):
|
|
350
424
|
_write_version_file(original_version_file_name="version.py")
|
|
351
|
-
elif self.code_model.options[
|
|
425
|
+
elif self.code_model.options["package_version"]:
|
|
352
426
|
self._autorestapi.write_file(
|
|
353
427
|
namespace_path / Path("_version.py"),
|
|
354
|
-
general_serializer.serialize_version_file()
|
|
428
|
+
general_serializer.serialize_version_file(),
|
|
355
429
|
)
|
|
356
430
|
|
|
357
431
|
def _serialize_and_write_top_level_folder(
|
|
358
432
|
self, env: Environment, namespace_path: Path
|
|
359
433
|
) -> None:
|
|
360
|
-
general_serializer = GeneralSerializer(
|
|
434
|
+
general_serializer = GeneralSerializer(
|
|
435
|
+
code_model=self.code_model, env=env, async_mode=False
|
|
436
|
+
)
|
|
361
437
|
|
|
362
438
|
self._autorestapi.write_file(
|
|
363
|
-
namespace_path / Path("__init__.py"),
|
|
439
|
+
namespace_path / Path("__init__.py"),
|
|
440
|
+
general_serializer.serialize_init_file(),
|
|
364
441
|
)
|
|
365
442
|
p = namespace_path.parent
|
|
366
443
|
while p != Path("."):
|
|
367
444
|
# write pkgutil init file
|
|
368
445
|
self._autorestapi.write_file(
|
|
369
|
-
p / Path("__init__.py"),
|
|
446
|
+
p / Path("__init__.py"),
|
|
447
|
+
general_serializer.serialize_pkgutil_init_file(),
|
|
370
448
|
)
|
|
371
449
|
p = p.parent
|
|
372
450
|
|
|
373
451
|
# Write the service client
|
|
374
|
-
if self.code_model.
|
|
452
|
+
if self.code_model.request_builders:
|
|
375
453
|
self._autorestapi.write_file(
|
|
376
454
|
namespace_path / Path(f"{self.code_model.service_client.filename}.py"),
|
|
377
|
-
general_serializer.serialize_service_client_file()
|
|
455
|
+
general_serializer.serialize_service_client_file(),
|
|
378
456
|
)
|
|
379
457
|
|
|
380
458
|
if self.code_model.need_vendored_code(async_mode=False):
|
|
381
459
|
self._autorestapi.write_file(
|
|
382
460
|
namespace_path / Path("_vendor.py"),
|
|
383
|
-
general_serializer.serialize_vendor_file()
|
|
461
|
+
general_serializer.serialize_vendor_file(),
|
|
384
462
|
)
|
|
385
463
|
|
|
386
464
|
self._serialize_and_write_version_file(namespace_path, general_serializer)
|
|
387
465
|
|
|
388
466
|
# write the empty py.typed file
|
|
389
|
-
self._autorestapi.write_file(
|
|
467
|
+
self._autorestapi.write_file(
|
|
468
|
+
namespace_path / Path("py.typed"), "# Marker file for PEP 561."
|
|
469
|
+
)
|
|
390
470
|
|
|
391
471
|
# Write the config file
|
|
392
|
-
if self.code_model.
|
|
472
|
+
if self.code_model.request_builders:
|
|
393
473
|
self._autorestapi.write_file(
|
|
394
|
-
namespace_path / Path("_configuration.py"),
|
|
474
|
+
namespace_path / Path("_configuration.py"),
|
|
475
|
+
general_serializer.serialize_config_file(),
|
|
395
476
|
)
|
|
396
477
|
|
|
397
478
|
# Write the setup file
|
|
398
479
|
if self.code_model.options["basic_setup_py"]:
|
|
399
|
-
self._autorestapi.write_file(
|
|
480
|
+
self._autorestapi.write_file(
|
|
481
|
+
Path("setup.py"), general_serializer.serialize_setup_file()
|
|
482
|
+
)
|
|
400
483
|
|
|
401
484
|
def _serialize_and_write_aio_top_level_folder(
|
|
402
485
|
self, env: Environment, namespace_path: Path
|
|
403
486
|
) -> None:
|
|
404
|
-
aio_general_serializer = GeneralSerializer(
|
|
487
|
+
aio_general_serializer = GeneralSerializer(
|
|
488
|
+
code_model=self.code_model, env=env, async_mode=True
|
|
489
|
+
)
|
|
405
490
|
|
|
406
491
|
aio_path = namespace_path / Path("aio")
|
|
407
492
|
|
|
408
493
|
# Write the __init__ file
|
|
409
|
-
self._autorestapi.write_file(
|
|
494
|
+
self._autorestapi.write_file(
|
|
495
|
+
aio_path / Path("__init__.py"), aio_general_serializer.serialize_init_file()
|
|
496
|
+
)
|
|
410
497
|
|
|
411
498
|
# Write the service client
|
|
412
|
-
if self.code_model.
|
|
499
|
+
if self.code_model.request_builders:
|
|
413
500
|
self._autorestapi.write_file(
|
|
414
501
|
aio_path / Path(f"{self.code_model.service_client.filename}.py"),
|
|
415
502
|
aio_general_serializer.serialize_service_client_file(),
|
|
@@ -417,15 +504,19 @@ class JinjaSerializer:
|
|
|
417
504
|
|
|
418
505
|
# Write the config file
|
|
419
506
|
self._autorestapi.write_file(
|
|
420
|
-
aio_path / Path("_configuration.py"),
|
|
507
|
+
aio_path / Path("_configuration.py"),
|
|
508
|
+
aio_general_serializer.serialize_config_file(),
|
|
421
509
|
)
|
|
422
510
|
if self.code_model.need_vendored_code(async_mode=True):
|
|
423
511
|
self._autorestapi.write_file(
|
|
424
512
|
aio_path / Path("_vendor.py"),
|
|
425
|
-
aio_general_serializer.serialize_vendor_file()
|
|
513
|
+
aio_general_serializer.serialize_vendor_file(),
|
|
426
514
|
)
|
|
427
515
|
|
|
428
|
-
|
|
429
|
-
|
|
516
|
+
def _serialize_and_write_metadata(
|
|
517
|
+
self, env: Environment, namespace_path: Path
|
|
518
|
+
) -> None:
|
|
430
519
|
metadata_serializer = MetadataSerializer(self.code_model, env)
|
|
431
|
-
self._autorestapi.write_file(
|
|
520
|
+
self._autorestapi.write_file(
|
|
521
|
+
namespace_path / Path("_metadata.json"), metadata_serializer.serialize()
|
|
522
|
+
)
|