@autorest/python 5.16.0 → 5.19.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 +79 -4
- package/README.md +30 -4
- package/autorest/__init__.py +1 -1
- package/autorest/codegen/__init__.py +55 -211
- package/autorest/codegen/models/__init__.py +116 -83
- package/autorest/codegen/models/base_builder.py +49 -88
- package/autorest/codegen/models/base_model.py +1 -1
- package/autorest/codegen/models/{base_schema.py → base_type.py} +61 -39
- package/autorest/codegen/models/client.py +165 -53
- package/autorest/codegen/models/code_model.py +122 -257
- package/autorest/codegen/models/combined_type.py +107 -0
- package/autorest/codegen/models/{constant_schema.py → constant_type.py} +49 -40
- package/autorest/codegen/models/credential_types.py +224 -0
- package/autorest/codegen/models/dictionary_type.py +131 -0
- package/autorest/codegen/models/enum_type.py +195 -0
- package/autorest/codegen/models/imports.py +80 -2
- package/autorest/codegen/models/list_type.py +149 -0
- package/autorest/codegen/models/lro_operation.py +79 -156
- package/autorest/codegen/models/lro_paging_operation.py +28 -11
- package/autorest/codegen/models/model_type.py +262 -0
- package/autorest/codegen/models/operation.py +331 -298
- package/autorest/codegen/models/operation_group.py +54 -91
- package/autorest/codegen/models/paging_operation.py +82 -123
- package/autorest/codegen/models/parameter.py +289 -396
- package/autorest/codegen/models/parameter_list.py +355 -360
- package/autorest/codegen/models/primitive_types.py +544 -0
- package/autorest/codegen/models/property.py +123 -139
- package/autorest/codegen/models/request_builder.py +130 -102
- package/autorest/codegen/models/request_builder_parameter.py +112 -100
- package/autorest/codegen/models/response.py +325 -0
- package/autorest/codegen/models/utils.py +12 -19
- package/autorest/codegen/serializers/__init__.py +55 -37
- package/autorest/codegen/serializers/builder_serializer.py +695 -1144
- package/autorest/codegen/serializers/client_serializer.py +92 -89
- package/autorest/codegen/serializers/general_serializer.py +15 -69
- package/autorest/codegen/serializers/import_serializer.py +7 -4
- package/autorest/codegen/serializers/metadata_serializer.py +15 -104
- package/autorest/codegen/serializers/model_base_serializer.py +49 -36
- package/autorest/codegen/serializers/model_generic_serializer.py +8 -6
- package/autorest/codegen/serializers/model_init_serializer.py +2 -4
- package/autorest/codegen/serializers/model_python3_serializer.py +22 -16
- package/autorest/codegen/serializers/operation_groups_serializer.py +7 -13
- package/autorest/codegen/serializers/parameter_serializer.py +174 -0
- package/autorest/codegen/serializers/request_builders_serializer.py +13 -30
- package/autorest/codegen/serializers/utils.py +0 -140
- package/autorest/codegen/templates/MANIFEST.in.jinja2 +1 -0
- package/autorest/codegen/templates/{service_client.py.jinja2 → client.py.jinja2} +10 -7
- package/autorest/codegen/templates/config.py.jinja2 +13 -13
- package/autorest/codegen/templates/enum.py.jinja2 +4 -4
- package/autorest/codegen/templates/enum_container.py.jinja2 +1 -1
- package/autorest/codegen/templates/init.py.jinja2 +2 -2
- package/autorest/codegen/templates/lro_operation.py.jinja2 +4 -1
- package/autorest/codegen/templates/lro_paging_operation.py.jinja2 +4 -1
- package/autorest/codegen/templates/metadata.json.jinja2 +33 -33
- package/autorest/codegen/templates/model.py.jinja2 +23 -24
- package/autorest/codegen/templates/model_container.py.jinja2 +2 -1
- package/autorest/codegen/templates/model_init.py.jinja2 +3 -5
- package/autorest/codegen/templates/operation.py.jinja2 +6 -8
- package/autorest/codegen/templates/operation_group.py.jinja2 +21 -8
- package/autorest/codegen/templates/operation_groups_container.py.jinja2 +2 -2
- package/autorest/codegen/templates/operation_tools.jinja2 +11 -3
- package/autorest/codegen/templates/paging_operation.py.jinja2 +2 -2
- package/autorest/codegen/templates/request_builder.py.jinja2 +10 -15
- package/autorest/codegen/templates/request_builders.py.jinja2 +1 -1
- package/autorest/codegen/templates/serialization.py.jinja2 +2006 -0
- package/autorest/codegen/templates/setup.py.jinja2 +13 -3
- package/autorest/codegen/templates/vendor.py.jinja2 +11 -1
- package/autorest/jsonrpc/server.py +15 -3
- package/autorest/m4reformatter/__init__.py +1126 -0
- package/autorest/multiapi/models/client.py +12 -2
- package/autorest/multiapi/models/code_model.py +1 -1
- package/autorest/multiapi/serializers/__init__.py +18 -4
- package/autorest/multiapi/templates/multiapi_config.py.jinja2 +3 -3
- package/autorest/multiapi/templates/multiapi_init.py.jinja2 +2 -2
- package/autorest/multiapi/templates/multiapi_operations_mixin.py.jinja2 +4 -4
- package/autorest/multiapi/templates/multiapi_service_client.py.jinja2 +9 -9
- package/autorest/postprocess/__init__.py +202 -0
- package/autorest/postprocess/get_all.py +19 -0
- package/autorest/postprocess/venvtools.py +73 -0
- package/autorest/preprocess/__init__.py +210 -0
- package/autorest/preprocess/helpers.py +54 -0
- package/autorest/{namer → preprocess}/python_mappings.py +21 -16
- package/package.json +2 -2
- package/autorest/codegen/models/credential_model.py +0 -55
- package/autorest/codegen/models/credential_schema.py +0 -95
- package/autorest/codegen/models/credential_schema_policy.py +0 -73
- package/autorest/codegen/models/dictionary_schema.py +0 -106
- package/autorest/codegen/models/enum_schema.py +0 -225
- package/autorest/codegen/models/list_schema.py +0 -135
- package/autorest/codegen/models/object_schema.py +0 -303
- package/autorest/codegen/models/primitive_schemas.py +0 -495
- package/autorest/codegen/models/request_builder_parameter_list.py +0 -249
- package/autorest/codegen/models/schema_request.py +0 -55
- package/autorest/codegen/models/schema_response.py +0 -141
- package/autorest/namer/__init__.py +0 -23
- package/autorest/namer/name_converter.py +0 -509
|
@@ -3,13 +3,15 @@
|
|
|
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 Dict, List, Optional, Any
|
|
6
|
+
from typing import Dict, List, Optional, Any, Union
|
|
7
7
|
from pathlib import Path
|
|
8
8
|
from jinja2 import PackageLoader, Environment, FileSystemLoader, StrictUndefined
|
|
9
9
|
from autorest.codegen.models.operation_group import OperationGroup
|
|
10
|
+
from autorest.codegen.models.request_builder import OverloadedRequestBuilder
|
|
10
11
|
|
|
11
12
|
from ...jsonrpc import AutorestAPI
|
|
12
|
-
from ..models import CodeModel, OperationGroup, RequestBuilder
|
|
13
|
+
from ..models import CodeModel, OperationGroup, RequestBuilder
|
|
14
|
+
from ..models import TokenCredentialType
|
|
13
15
|
from .enum_serializer import EnumSerializer
|
|
14
16
|
from .general_serializer import GeneralSerializer
|
|
15
17
|
from .model_generic_serializer import ModelGenericSerializer
|
|
@@ -18,11 +20,7 @@ from .model_python3_serializer import ModelPython3Serializer
|
|
|
18
20
|
from .operations_init_serializer import OperationsInitSerializer
|
|
19
21
|
from .operation_groups_serializer import OperationGroupsSerializer
|
|
20
22
|
from .metadata_serializer import MetadataSerializer
|
|
21
|
-
from .request_builders_serializer import
|
|
22
|
-
RequestBuildersPython3Serializer,
|
|
23
|
-
RequestBuildersGenericSerializer,
|
|
24
|
-
RequestBuildersSerializer,
|
|
25
|
-
)
|
|
23
|
+
from .request_builders_serializer import RequestBuildersSerializer
|
|
26
24
|
from .patch_serializer import PatchSerializer
|
|
27
25
|
|
|
28
26
|
__all__ = [
|
|
@@ -73,7 +71,7 @@ class JinjaSerializer:
|
|
|
73
71
|
self._keep_patch_file(namespace_path / Path("aio") / Path("_patch.py"), env)
|
|
74
72
|
|
|
75
73
|
if self.code_model.options["models_mode"] and (
|
|
76
|
-
self.code_model.
|
|
74
|
+
self.code_model.model_types or self.code_model.enums
|
|
77
75
|
):
|
|
78
76
|
self._keep_patch_file(
|
|
79
77
|
namespace_path / Path("models") / Path("_patch.py"), env
|
|
@@ -125,7 +123,7 @@ class JinjaSerializer:
|
|
|
125
123
|
)
|
|
126
124
|
|
|
127
125
|
if self.code_model.options["models_mode"] and (
|
|
128
|
-
self.code_model.
|
|
126
|
+
self.code_model.model_types or self.code_model.enums
|
|
129
127
|
):
|
|
130
128
|
self._serialize_and_write_models_folder(
|
|
131
129
|
env=env, namespace_path=namespace_path
|
|
@@ -155,14 +153,10 @@ class JinjaSerializer:
|
|
|
155
153
|
self._autorestapi.write_file(output_name, render_result)
|
|
156
154
|
|
|
157
155
|
def _prepare_params() -> Dict[Any, Any]:
|
|
158
|
-
package_parts =
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
TokenCredentialSchema,
|
|
163
|
-
)
|
|
164
|
-
except ValueError:
|
|
165
|
-
token_cred = False
|
|
156
|
+
package_parts = package_name.split("-")[:-1]
|
|
157
|
+
token_cred = isinstance(
|
|
158
|
+
getattr(self.code_model.credential, "type", None), TokenCredentialType
|
|
159
|
+
)
|
|
166
160
|
version = self.code_model.options["package_version"]
|
|
167
161
|
if any(x in version for x in ["a", "b", "rc"]) or version[0] == "0":
|
|
168
162
|
dev_status = "4 - Beta"
|
|
@@ -178,12 +172,19 @@ class JinjaSerializer:
|
|
|
178
172
|
for i in range(len(package_parts))
|
|
179
173
|
],
|
|
180
174
|
"dev_status": dev_status,
|
|
175
|
+
"client_name": self.code_model.client.name,
|
|
176
|
+
"namespace": self.code_model.namespace,
|
|
177
|
+
"code_model": self.code_model,
|
|
181
178
|
}
|
|
182
179
|
params.update(self.code_model.options)
|
|
183
180
|
params.update(self.code_model.package_dependency)
|
|
184
181
|
return params
|
|
185
182
|
|
|
186
|
-
|
|
183
|
+
package_name = (
|
|
184
|
+
self.code_model.options["package_name"]
|
|
185
|
+
or self.code_model.client.name.lower()
|
|
186
|
+
)
|
|
187
|
+
count = package_name.count("-") + 1
|
|
187
188
|
for _ in range(count):
|
|
188
189
|
out_path = out_path / Path("..")
|
|
189
190
|
|
|
@@ -222,7 +223,7 @@ class JinjaSerializer:
|
|
|
222
223
|
) -> None:
|
|
223
224
|
# Write the models folder
|
|
224
225
|
models_path = namespace_path / Path("models")
|
|
225
|
-
if self.code_model.
|
|
226
|
+
if self.code_model.model_types:
|
|
226
227
|
if not self.code_model.options["python3_only"]:
|
|
227
228
|
self._autorestapi.write_file(
|
|
228
229
|
models_path
|
|
@@ -254,45 +255,50 @@ class JinjaSerializer:
|
|
|
254
255
|
self, env: Environment, namespace_path: Path
|
|
255
256
|
) -> None:
|
|
256
257
|
rest_path = namespace_path / Path(self.code_model.rest_layer_name)
|
|
257
|
-
|
|
258
|
-
rb.operation_group_name for rb in self.code_model.request_builders
|
|
259
|
-
}
|
|
258
|
+
group_names = {rb.group_name for rb in self.code_model.request_builders}
|
|
260
259
|
|
|
261
|
-
for
|
|
260
|
+
for group_name in group_names:
|
|
262
261
|
request_builders = [
|
|
263
262
|
r
|
|
264
263
|
for r in self.code_model.request_builders
|
|
265
|
-
if r.
|
|
264
|
+
if r.group_name == group_name
|
|
266
265
|
]
|
|
267
266
|
self._serialize_and_write_single_rest_layer(
|
|
268
267
|
env, rest_path, request_builders
|
|
269
268
|
)
|
|
270
|
-
if not "" in
|
|
269
|
+
if not "" in group_names:
|
|
271
270
|
self._autorestapi.write_file(
|
|
272
271
|
rest_path / Path("__init__.py"),
|
|
273
272
|
self.code_model.options["license_header"],
|
|
274
273
|
)
|
|
275
274
|
|
|
276
275
|
def _serialize_and_write_single_rest_layer(
|
|
277
|
-
self,
|
|
276
|
+
self,
|
|
277
|
+
env: Environment,
|
|
278
|
+
rest_path: Path,
|
|
279
|
+
request_builders: List[Union[RequestBuilder, OverloadedRequestBuilder]],
|
|
278
280
|
) -> None:
|
|
279
|
-
|
|
280
|
-
output_path = (
|
|
281
|
-
rest_path / Path(builder_group_name) if builder_group_name else rest_path
|
|
282
|
-
)
|
|
281
|
+
group_name = request_builders[0].group_name
|
|
282
|
+
output_path = rest_path / Path(group_name) if group_name else rest_path
|
|
283
283
|
# write generic request builders file
|
|
284
284
|
self._autorestapi.write_file(
|
|
285
285
|
output_path / Path("_request_builders.py"),
|
|
286
|
-
|
|
287
|
-
code_model=self.code_model,
|
|
286
|
+
RequestBuildersSerializer(
|
|
287
|
+
code_model=self.code_model,
|
|
288
|
+
env=env,
|
|
289
|
+
request_builders=request_builders,
|
|
290
|
+
is_python3_file=False,
|
|
288
291
|
).serialize_request_builders(),
|
|
289
292
|
)
|
|
290
293
|
|
|
291
294
|
# write python3 request builders file
|
|
292
295
|
self._autorestapi.write_file(
|
|
293
296
|
output_path / Path("_request_builders_py3.py"),
|
|
294
|
-
|
|
295
|
-
code_model=self.code_model,
|
|
297
|
+
RequestBuildersSerializer(
|
|
298
|
+
code_model=self.code_model,
|
|
299
|
+
env=env,
|
|
300
|
+
request_builders=request_builders,
|
|
301
|
+
is_python3_file=True,
|
|
296
302
|
).serialize_request_builders(),
|
|
297
303
|
)
|
|
298
304
|
|
|
@@ -300,7 +306,10 @@ class JinjaSerializer:
|
|
|
300
306
|
self._autorestapi.write_file(
|
|
301
307
|
output_path / Path("__init__.py"),
|
|
302
308
|
RequestBuildersSerializer(
|
|
303
|
-
code_model=self.code_model,
|
|
309
|
+
code_model=self.code_model,
|
|
310
|
+
env=env,
|
|
311
|
+
request_builders=request_builders,
|
|
312
|
+
is_python3_file=True,
|
|
304
313
|
).serialize_init(),
|
|
305
314
|
)
|
|
306
315
|
|
|
@@ -451,7 +460,7 @@ class JinjaSerializer:
|
|
|
451
460
|
# Write the service client
|
|
452
461
|
if self.code_model.request_builders:
|
|
453
462
|
self._autorestapi.write_file(
|
|
454
|
-
namespace_path / Path(f"{self.code_model.
|
|
463
|
+
namespace_path / Path(f"{self.code_model.client.filename}.py"),
|
|
455
464
|
general_serializer.serialize_service_client_file(),
|
|
456
465
|
)
|
|
457
466
|
|
|
@@ -468,6 +477,15 @@ class JinjaSerializer:
|
|
|
468
477
|
namespace_path / Path("py.typed"), "# Marker file for PEP 561."
|
|
469
478
|
)
|
|
470
479
|
|
|
480
|
+
if (
|
|
481
|
+
not self.code_model.options["client_side_validation"]
|
|
482
|
+
and not self.code_model.options["multiapi"]
|
|
483
|
+
):
|
|
484
|
+
self._autorestapi.write_file(
|
|
485
|
+
namespace_path / Path("_serialization.py"),
|
|
486
|
+
general_serializer.serialize_serialization_file(),
|
|
487
|
+
)
|
|
488
|
+
|
|
471
489
|
# Write the config file
|
|
472
490
|
if self.code_model.request_builders:
|
|
473
491
|
self._autorestapi.write_file(
|
|
@@ -498,7 +516,7 @@ class JinjaSerializer:
|
|
|
498
516
|
# Write the service client
|
|
499
517
|
if self.code_model.request_builders:
|
|
500
518
|
self._autorestapi.write_file(
|
|
501
|
-
aio_path / Path(f"{self.code_model.
|
|
519
|
+
aio_path / Path(f"{self.code_model.client.filename}.py"),
|
|
502
520
|
aio_general_serializer.serialize_service_client_file(),
|
|
503
521
|
)
|
|
504
522
|
|