@autorest/python 6.38.1 → 6.39.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/README.md +2 -27
- package/autorest/codegen.py +0 -1
- package/autorest/jsonrpc/server.py +0 -3
- package/generator/build/lib/pygen/__init__.py +14 -23
- package/generator/build/lib/pygen/codegen/__init__.py +4 -4
- package/generator/build/lib/pygen/codegen/models/__init__.py +2 -2
- package/generator/build/lib/pygen/codegen/models/base.py +9 -12
- package/generator/build/lib/pygen/codegen/models/base_builder.py +4 -6
- package/generator/build/lib/pygen/codegen/models/client.py +61 -102
- package/generator/build/lib/pygen/codegen/models/code_model.py +29 -29
- package/generator/build/lib/pygen/codegen/models/combined_type.py +7 -7
- package/generator/build/lib/pygen/codegen/models/constant_type.py +4 -11
- package/generator/build/lib/pygen/codegen/models/credential_types.py +9 -11
- package/generator/build/lib/pygen/codegen/models/dictionary_type.py +7 -8
- package/generator/build/lib/pygen/codegen/models/enum_type.py +7 -7
- package/generator/build/lib/pygen/codegen/models/imports.py +24 -29
- package/generator/build/lib/pygen/codegen/models/list_type.py +15 -14
- package/generator/build/lib/pygen/codegen/models/lro_operation.py +6 -6
- package/generator/build/lib/pygen/codegen/models/lro_paging_operation.py +2 -2
- package/generator/build/lib/pygen/codegen/models/model_type.py +11 -11
- package/generator/build/lib/pygen/codegen/models/operation.py +26 -56
- package/generator/build/lib/pygen/codegen/models/operation_group.py +11 -22
- package/generator/build/lib/pygen/codegen/models/paging_operation.py +15 -19
- package/generator/build/lib/pygen/codegen/models/parameter.py +12 -21
- package/generator/build/lib/pygen/codegen/models/parameter_list.py +37 -39
- package/generator/build/lib/pygen/codegen/models/primitive_types.py +24 -18
- package/generator/build/lib/pygen/codegen/models/property.py +10 -10
- package/generator/build/lib/pygen/codegen/models/request_builder.py +7 -8
- package/generator/build/lib/pygen/codegen/models/request_builder_parameter.py +3 -3
- package/generator/build/lib/pygen/codegen/models/response.py +15 -40
- package/generator/build/lib/pygen/codegen/models/utils.py +2 -2
- package/generator/build/lib/pygen/codegen/serializers/__init__.py +26 -42
- package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +103 -100
- package/generator/build/lib/pygen/codegen/serializers/client_serializer.py +22 -25
- package/generator/build/lib/pygen/codegen/serializers/enum_serializer.py +2 -2
- package/generator/build/lib/pygen/codegen/serializers/general_serializer.py +49 -61
- package/generator/build/lib/pygen/codegen/serializers/import_serializer.py +6 -7
- package/generator/build/lib/pygen/codegen/serializers/model_init_serializer.py +1 -2
- package/generator/build/lib/pygen/codegen/serializers/model_serializer.py +15 -17
- package/generator/build/lib/pygen/codegen/serializers/operation_groups_serializer.py +3 -3
- package/generator/build/lib/pygen/codegen/serializers/operations_init_serializer.py +5 -6
- package/generator/build/lib/pygen/codegen/serializers/parameter_serializer.py +28 -18
- package/generator/build/lib/pygen/codegen/serializers/patch_serializer.py +1 -2
- package/generator/build/lib/pygen/codegen/serializers/request_builders_serializer.py +1 -2
- package/generator/build/lib/pygen/codegen/serializers/sample_serializer.py +9 -14
- package/generator/build/lib/pygen/codegen/serializers/test_serializer.py +7 -7
- package/generator/build/lib/pygen/codegen/serializers/utils.py +2 -2
- package/generator/build/lib/pygen/codegen/templates/model_base.py.jinja2 +30 -24
- package/generator/build/lib/pygen/codegen/templates/model_dpg.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/operation_group.py.jinja2 +1 -11
- package/generator/build/lib/pygen/codegen/templates/operations_folder_init.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/packaging_templates/CHANGELOG.md.jinja2 +2 -1
- package/generator/build/lib/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/packaging_templates/pyproject.toml.jinja2 +13 -2
- package/generator/build/lib/pygen/codegen/templates/patch.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/serialization.py.jinja2 +11 -13
- package/generator/build/lib/pygen/codegen/templates/utils.py.jinja2 +6 -6
- package/generator/build/lib/pygen/preprocess/__init__.py +47 -30
- package/generator/build/lib/pygen/preprocess/helpers.py +2 -2
- package/generator/build/lib/pygen/utils.py +6 -6
- package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
- package/generator/pygen/__init__.py +14 -23
- package/generator/pygen/codegen/__init__.py +4 -4
- package/generator/pygen/codegen/models/__init__.py +2 -2
- package/generator/pygen/codegen/models/base.py +9 -12
- package/generator/pygen/codegen/models/base_builder.py +4 -6
- package/generator/pygen/codegen/models/client.py +61 -102
- package/generator/pygen/codegen/models/code_model.py +29 -29
- package/generator/pygen/codegen/models/combined_type.py +7 -7
- package/generator/pygen/codegen/models/constant_type.py +4 -11
- package/generator/pygen/codegen/models/credential_types.py +9 -11
- package/generator/pygen/codegen/models/dictionary_type.py +7 -8
- package/generator/pygen/codegen/models/enum_type.py +7 -7
- package/generator/pygen/codegen/models/imports.py +24 -29
- package/generator/pygen/codegen/models/list_type.py +15 -14
- package/generator/pygen/codegen/models/lro_operation.py +6 -6
- package/generator/pygen/codegen/models/lro_paging_operation.py +2 -2
- package/generator/pygen/codegen/models/model_type.py +11 -11
- package/generator/pygen/codegen/models/operation.py +26 -56
- package/generator/pygen/codegen/models/operation_group.py +11 -22
- package/generator/pygen/codegen/models/paging_operation.py +15 -19
- package/generator/pygen/codegen/models/parameter.py +12 -21
- package/generator/pygen/codegen/models/parameter_list.py +37 -39
- package/generator/pygen/codegen/models/primitive_types.py +24 -18
- package/generator/pygen/codegen/models/property.py +10 -10
- package/generator/pygen/codegen/models/request_builder.py +7 -8
- package/generator/pygen/codegen/models/request_builder_parameter.py +3 -3
- package/generator/pygen/codegen/models/response.py +15 -40
- package/generator/pygen/codegen/models/utils.py +2 -2
- package/generator/pygen/codegen/serializers/__init__.py +26 -42
- package/generator/pygen/codegen/serializers/builder_serializer.py +103 -100
- package/generator/pygen/codegen/serializers/client_serializer.py +22 -25
- package/generator/pygen/codegen/serializers/enum_serializer.py +2 -2
- package/generator/pygen/codegen/serializers/general_serializer.py +49 -61
- package/generator/pygen/codegen/serializers/import_serializer.py +6 -7
- package/generator/pygen/codegen/serializers/model_init_serializer.py +1 -2
- package/generator/pygen/codegen/serializers/model_serializer.py +15 -17
- package/generator/pygen/codegen/serializers/operation_groups_serializer.py +3 -3
- package/generator/pygen/codegen/serializers/operations_init_serializer.py +5 -6
- package/generator/pygen/codegen/serializers/parameter_serializer.py +28 -18
- package/generator/pygen/codegen/serializers/patch_serializer.py +1 -2
- package/generator/pygen/codegen/serializers/request_builders_serializer.py +1 -2
- package/generator/pygen/codegen/serializers/sample_serializer.py +9 -14
- package/generator/pygen/codegen/serializers/test_serializer.py +7 -7
- package/generator/pygen/codegen/serializers/utils.py +2 -2
- package/generator/pygen/codegen/templates/model_base.py.jinja2 +30 -24
- package/generator/pygen/codegen/templates/model_dpg.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/operation_group.py.jinja2 +1 -11
- package/generator/pygen/codegen/templates/operations_folder_init.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/packaging_templates/CHANGELOG.md.jinja2 +2 -1
- package/generator/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +1 -1
- package/generator/pygen/codegen/templates/packaging_templates/pyproject.toml.jinja2 +13 -2
- package/generator/pygen/codegen/templates/patch.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/serialization.py.jinja2 +11 -13
- package/generator/pygen/codegen/templates/utils.py.jinja2 +6 -6
- package/generator/pygen/preprocess/__init__.py +47 -30
- package/generator/pygen/preprocess/helpers.py +2 -2
- package/generator/pygen/utils.py +6 -6
- package/generator/pygen.egg-info/SOURCES.txt +0 -2
- package/package.json +2 -2
- package/scripts/__pycache__/venvtools.cpython-310.pyc +0 -0
- package/autorest/multiapi/__init__.py +0 -185
- package/autorest/multiapi/models/__init__.py +0 -16
- package/autorest/multiapi/models/client.py +0 -68
- package/autorest/multiapi/models/code_model.py +0 -142
- package/autorest/multiapi/models/config.py +0 -24
- package/autorest/multiapi/models/constant_global_parameter.py +0 -11
- package/autorest/multiapi/models/global_parameter.py +0 -34
- package/autorest/multiapi/models/global_parameters.py +0 -53
- package/autorest/multiapi/models/imports.py +0 -181
- package/autorest/multiapi/models/mixin_operation.py +0 -38
- package/autorest/multiapi/models/operation_group.py +0 -29
- package/autorest/multiapi/models/operation_mixin_group.py +0 -89
- package/autorest/multiapi/serializers/__init__.py +0 -145
- package/autorest/multiapi/serializers/import_serializer.py +0 -181
- package/autorest/multiapi/templates/multiapi_config.py.jinja2 +0 -89
- package/autorest/multiapi/templates/multiapi_init.py.jinja2 +0 -22
- package/autorest/multiapi/templates/multiapi_models.py.jinja2 +0 -9
- package/autorest/multiapi/templates/multiapi_operations_mixin.py.jinja2 +0 -39
- package/autorest/multiapi/templates/multiapi_service_client.py.jinja2 +0 -163
- package/autorest/multiapi/templates/multiapi_version.py.jinja2 +0 -8
- package/autorest/multiapi/utils.py +0 -51
- package/generator/build/lib/pygen/codegen/serializers/metadata_serializer.py +0 -216
- package/generator/build/lib/pygen/codegen/templates/metadata.json.jinja2 +0 -167
- package/generator/pygen/codegen/serializers/metadata_serializer.py +0 -216
- package/generator/pygen/codegen/templates/metadata.json.jinja2 +0 -167
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
# -------------------------------------------------------------------------
|
|
2
|
-
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
-
# license information.
|
|
5
|
-
# --------------------------------------------------------------------------
|
|
6
|
-
from pathlib import Path
|
|
7
|
-
from typing import Any, Optional, Union, List
|
|
8
|
-
from jinja2 import PackageLoader, Environment
|
|
9
|
-
from pygen import ReaderAndWriter
|
|
10
|
-
from pygen.utils import build_policies
|
|
11
|
-
|
|
12
|
-
from .import_serializer import FileImportSerializer
|
|
13
|
-
|
|
14
|
-
from ...jsonrpc import AutorestAPI
|
|
15
|
-
from ..models import CodeModel, GlobalParameter
|
|
16
|
-
from ... import ReaderAndWriterAutorest
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
__all__ = [
|
|
20
|
-
"MultiAPISerializer",
|
|
21
|
-
]
|
|
22
|
-
|
|
23
|
-
_FILE_TO_TEMPLATE = {
|
|
24
|
-
"init": "multiapi_init.py.jinja2",
|
|
25
|
-
"client": "multiapi_service_client.py.jinja2",
|
|
26
|
-
"config": "multiapi_config.py.jinja2",
|
|
27
|
-
"models": "multiapi_models.py.jinja2",
|
|
28
|
-
"operations_mixin": "multiapi_operations_mixin.py.jinja2",
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def _method_signature_helper(parameters: List[GlobalParameter], async_mode: bool) -> List[str]:
|
|
33
|
-
return [p.signature(async_mode) for p in sorted(parameters, key=lambda p: p.required, reverse=True)]
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def _get_file_path(filename: str, async_mode: bool) -> Path:
|
|
37
|
-
filename += ".py"
|
|
38
|
-
if async_mode:
|
|
39
|
-
return Path("aio") / filename
|
|
40
|
-
return Path(filename)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
class MultiAPISerializer(ReaderAndWriter): # pylint: disable=abstract-method
|
|
44
|
-
def __init__(self, **kwargs: Any) -> None:
|
|
45
|
-
super().__init__(**kwargs)
|
|
46
|
-
self.env = Environment(
|
|
47
|
-
loader=PackageLoader("autorest.multiapi", "templates"),
|
|
48
|
-
keep_trailing_newline=True,
|
|
49
|
-
line_statement_prefix="##",
|
|
50
|
-
line_comment_prefix="###",
|
|
51
|
-
trim_blocks=True,
|
|
52
|
-
lstrip_blocks=True,
|
|
53
|
-
)
|
|
54
|
-
|
|
55
|
-
def _serialize_helper(self, code_model: CodeModel, async_mode: bool) -> None:
|
|
56
|
-
def _render_template(file: str, **kwargs: Any) -> str:
|
|
57
|
-
template = self.env.get_template(_FILE_TO_TEMPLATE[file])
|
|
58
|
-
all_params = (
|
|
59
|
-
code_model.global_parameters.parameters
|
|
60
|
-
+ code_model.global_parameters.service_client_specific_global_parameters
|
|
61
|
-
)
|
|
62
|
-
positional_params = [p for p in all_params if p.method_location == "positional"]
|
|
63
|
-
keyword_only_params = [p for p in all_params if p.method_location == "keywordOnly"]
|
|
64
|
-
return template.render(
|
|
65
|
-
code_model=code_model,
|
|
66
|
-
async_mode=async_mode,
|
|
67
|
-
positional_params=_method_signature_helper(positional_params, async_mode),
|
|
68
|
-
keyword_only_params=_method_signature_helper(keyword_only_params, async_mode),
|
|
69
|
-
**kwargs
|
|
70
|
-
)
|
|
71
|
-
|
|
72
|
-
# serialize init file
|
|
73
|
-
self.write_file(_get_file_path("__init__", async_mode), _render_template("init"))
|
|
74
|
-
|
|
75
|
-
# serialize service client file
|
|
76
|
-
imports = FileImportSerializer(code_model.client.imports(async_mode))
|
|
77
|
-
config_policies = build_policies(code_model.azure_arm, async_mode, is_azure_flavor=True)
|
|
78
|
-
self.write_file(
|
|
79
|
-
_get_file_path(code_model.client.filename, async_mode),
|
|
80
|
-
_render_template("client", imports=imports, config_policies=config_policies),
|
|
81
|
-
)
|
|
82
|
-
|
|
83
|
-
# serialize config file
|
|
84
|
-
imports = FileImportSerializer(code_model.config.imports(async_mode))
|
|
85
|
-
self.write_file(
|
|
86
|
-
_get_file_path("_configuration", async_mode),
|
|
87
|
-
_render_template("config", imports=imports),
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
# serialize mixins
|
|
91
|
-
if code_model.operation_mixin_group.mixin_operations:
|
|
92
|
-
imports = FileImportSerializer(
|
|
93
|
-
code_model.operation_mixin_group.imports(async_mode),
|
|
94
|
-
code_model.operation_mixin_group.typing_definitions(async_mode),
|
|
95
|
-
)
|
|
96
|
-
self.write_file(
|
|
97
|
-
_get_file_path("_operations_mixin", async_mode),
|
|
98
|
-
_render_template("operations_mixin", imports=imports),
|
|
99
|
-
)
|
|
100
|
-
|
|
101
|
-
# serialize models
|
|
102
|
-
self.write_file(Path("models.py"), _render_template("models"))
|
|
103
|
-
|
|
104
|
-
def _serialize_version_file(self) -> None:
|
|
105
|
-
if self.read_file("_version.py"):
|
|
106
|
-
self.write_file("_version.py", self.read_file("_version.py"))
|
|
107
|
-
elif self.read_file("version.py"):
|
|
108
|
-
self.write_file("_version.py", self.read_file("version.py"))
|
|
109
|
-
else:
|
|
110
|
-
template = self.env.get_template("multiapi_version.py.jinja2")
|
|
111
|
-
self.write_file(Path("_version.py"), template.render())
|
|
112
|
-
|
|
113
|
-
def serialize(self, code_model: CodeModel, no_async: Optional[bool]) -> None:
|
|
114
|
-
self._serialize_helper(code_model, async_mode=False)
|
|
115
|
-
if not no_async:
|
|
116
|
-
self._serialize_helper(code_model, async_mode=True)
|
|
117
|
-
|
|
118
|
-
self._serialize_version_file()
|
|
119
|
-
|
|
120
|
-
# don't erase patch file
|
|
121
|
-
if self.read_file("_patch.py"):
|
|
122
|
-
self.write_file("_patch.py", self.read_file("_patch.py"))
|
|
123
|
-
|
|
124
|
-
self.write_file(Path("py.typed"), "# Marker file for PEP 561.")
|
|
125
|
-
|
|
126
|
-
if not code_model.client.client_side_validation:
|
|
127
|
-
codegen_env = Environment(
|
|
128
|
-
loader=PackageLoader("pygen.codegen", "templates"),
|
|
129
|
-
keep_trailing_newline=True,
|
|
130
|
-
line_statement_prefix="##",
|
|
131
|
-
line_comment_prefix="###",
|
|
132
|
-
trim_blocks=True,
|
|
133
|
-
lstrip_blocks=True,
|
|
134
|
-
)
|
|
135
|
-
self.write_file(
|
|
136
|
-
Path("_serialization.py"),
|
|
137
|
-
codegen_env.get_template("serialization.py.jinja2").render(
|
|
138
|
-
code_model=code_model,
|
|
139
|
-
),
|
|
140
|
-
)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
class MultiAPISerializerAutorest(MultiAPISerializer, ReaderAndWriterAutorest):
|
|
144
|
-
def __init__(self, autorestapi: AutorestAPI, *, output_folder: Union[str, Path]) -> None:
|
|
145
|
-
super().__init__(autorestapi=autorestapi, output_folder=output_folder)
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
# -------------------------------------------------------------------------
|
|
2
|
-
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
-
# license information.
|
|
5
|
-
# --------------------------------------------------------------------------
|
|
6
|
-
from copy import deepcopy
|
|
7
|
-
from typing import Dict, Set, Optional, List, Tuple, Union
|
|
8
|
-
from ..models import ImportType, FileImport, TypingSection
|
|
9
|
-
from ..utils import convert_list_to_tuple
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
def _serialize_package(
|
|
13
|
-
package_name: str,
|
|
14
|
-
module_list: Set[
|
|
15
|
-
Optional[
|
|
16
|
-
Union[
|
|
17
|
-
str,
|
|
18
|
-
Tuple[
|
|
19
|
-
str,
|
|
20
|
-
str,
|
|
21
|
-
],
|
|
22
|
-
Tuple[
|
|
23
|
-
str,
|
|
24
|
-
Optional[str],
|
|
25
|
-
Tuple[Tuple[Tuple[int, int], str, Optional[str]]],
|
|
26
|
-
],
|
|
27
|
-
]
|
|
28
|
-
]
|
|
29
|
-
],
|
|
30
|
-
delimiter: str,
|
|
31
|
-
) -> str:
|
|
32
|
-
buffer = []
|
|
33
|
-
|
|
34
|
-
versioned_modules = set()
|
|
35
|
-
normal_modules = set()
|
|
36
|
-
for m in module_list:
|
|
37
|
-
if m and isinstance(m, (tuple, list)) and len(m) > 2:
|
|
38
|
-
versioned_modules.add(convert_list_to_tuple(m))
|
|
39
|
-
else:
|
|
40
|
-
normal_modules.add(m)
|
|
41
|
-
if None in normal_modules:
|
|
42
|
-
buffer.append(f"import {package_name}")
|
|
43
|
-
if normal_modules != {None} and len(normal_modules) > 0:
|
|
44
|
-
buffer.append(
|
|
45
|
-
"from {} import {}".format(
|
|
46
|
-
package_name,
|
|
47
|
-
", ".join(
|
|
48
|
-
sorted(
|
|
49
|
-
[
|
|
50
|
-
mod if isinstance(mod, str) else f"{mod[0]} as {mod[1]}"
|
|
51
|
-
for mod in normal_modules
|
|
52
|
-
if mod is not None
|
|
53
|
-
]
|
|
54
|
-
)
|
|
55
|
-
),
|
|
56
|
-
)
|
|
57
|
-
)
|
|
58
|
-
for submodule_name, alias, version_modules in versioned_modules:
|
|
59
|
-
for n, (version, module_name, comment) in enumerate(version_modules):
|
|
60
|
-
buffer.append("{} sys.version_info >= {}:".format("if" if n == 0 else "elif", version))
|
|
61
|
-
buffer.append(
|
|
62
|
-
f" from {module_name} import {submodule_name}{f' as {alias}' if alias else ''}"
|
|
63
|
-
f"{f' # {comment}' if comment else ''}"
|
|
64
|
-
)
|
|
65
|
-
buffer.append("else:")
|
|
66
|
-
buffer.append(
|
|
67
|
-
f" from {package_name} import {submodule_name}{f' as {alias}' if alias else ''}"
|
|
68
|
-
" # type: ignore # pylint: disable=ungrouped-imports"
|
|
69
|
-
)
|
|
70
|
-
return delimiter.join(buffer)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
def _serialize_type(
|
|
74
|
-
import_type_dict: Dict[
|
|
75
|
-
str,
|
|
76
|
-
Set[
|
|
77
|
-
Optional[
|
|
78
|
-
Union[
|
|
79
|
-
str,
|
|
80
|
-
Tuple[
|
|
81
|
-
str,
|
|
82
|
-
str,
|
|
83
|
-
],
|
|
84
|
-
Tuple[
|
|
85
|
-
str,
|
|
86
|
-
Optional[str],
|
|
87
|
-
Tuple[Tuple[Tuple[int, int], str, Optional[str]]],
|
|
88
|
-
],
|
|
89
|
-
]
|
|
90
|
-
]
|
|
91
|
-
],
|
|
92
|
-
],
|
|
93
|
-
delimiter: str,
|
|
94
|
-
) -> str:
|
|
95
|
-
"""Serialize a given import type."""
|
|
96
|
-
import_list = []
|
|
97
|
-
for package_name in sorted(list(import_type_dict.keys())):
|
|
98
|
-
module_list = import_type_dict[package_name]
|
|
99
|
-
import_list.append(_serialize_package(package_name, module_list, delimiter))
|
|
100
|
-
return delimiter.join(import_list)
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
def _get_import_clauses(
|
|
104
|
-
imports: Dict[
|
|
105
|
-
ImportType,
|
|
106
|
-
Dict[
|
|
107
|
-
str,
|
|
108
|
-
Set[
|
|
109
|
-
Optional[
|
|
110
|
-
Union[
|
|
111
|
-
str,
|
|
112
|
-
Tuple[
|
|
113
|
-
str,
|
|
114
|
-
str,
|
|
115
|
-
],
|
|
116
|
-
Tuple[
|
|
117
|
-
str,
|
|
118
|
-
Optional[str],
|
|
119
|
-
Tuple[Tuple[Tuple[int, int], str, Optional[str]]],
|
|
120
|
-
],
|
|
121
|
-
]
|
|
122
|
-
]
|
|
123
|
-
],
|
|
124
|
-
],
|
|
125
|
-
],
|
|
126
|
-
delimiter: str,
|
|
127
|
-
) -> List[str]:
|
|
128
|
-
import_clause = []
|
|
129
|
-
for import_type in ImportType:
|
|
130
|
-
if import_type in imports:
|
|
131
|
-
import_clause.append(_serialize_type(imports[import_type], delimiter))
|
|
132
|
-
return import_clause
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
class FileImportSerializer:
|
|
136
|
-
def __init__(self, file_import: FileImport, typing_definitions: str = "") -> None:
|
|
137
|
-
self._file_import = file_import
|
|
138
|
-
self._typing_definitions = typing_definitions
|
|
139
|
-
|
|
140
|
-
def _switch_typing_section_key(self, new_key: TypingSection):
|
|
141
|
-
switched_dictionary = {}
|
|
142
|
-
switched_dictionary[new_key] = self._file_import.imports[TypingSection.CONDITIONAL]
|
|
143
|
-
return switched_dictionary
|
|
144
|
-
|
|
145
|
-
def _get_imports_dict(self, baseline_typing_section: TypingSection, add_conditional_typing: bool):
|
|
146
|
-
# If this is a python 3 file, our regular imports include the CONDITIONAL category
|
|
147
|
-
# If this is not a python 3 file, our typing imports include the CONDITIONAL category
|
|
148
|
-
file_import_copy = deepcopy(self._file_import)
|
|
149
|
-
if add_conditional_typing and self._file_import.imports.get(TypingSection.CONDITIONAL):
|
|
150
|
-
# we switch the TypingSection key for the CONDITIONAL typing imports so we can merge
|
|
151
|
-
# the imports together
|
|
152
|
-
switched_imports_dictionary = self._switch_typing_section_key(baseline_typing_section)
|
|
153
|
-
switched_imports = FileImport(switched_imports_dictionary)
|
|
154
|
-
file_import_copy.merge(switched_imports)
|
|
155
|
-
return file_import_copy.imports.get(baseline_typing_section, {})
|
|
156
|
-
|
|
157
|
-
def _add_type_checking_import(self):
|
|
158
|
-
if self._file_import.imports.get(TypingSection.TYPING):
|
|
159
|
-
self._file_import.add_submodule_import("typing", "TYPE_CHECKING", ImportType.STDLIB)
|
|
160
|
-
|
|
161
|
-
def __str__(self) -> str:
|
|
162
|
-
self._add_type_checking_import()
|
|
163
|
-
regular_imports = ""
|
|
164
|
-
regular_imports_dict = self._get_imports_dict(
|
|
165
|
-
baseline_typing_section=TypingSection.REGULAR,
|
|
166
|
-
add_conditional_typing=True,
|
|
167
|
-
)
|
|
168
|
-
|
|
169
|
-
if regular_imports_dict:
|
|
170
|
-
regular_imports = "\n\n".join(_get_import_clauses(regular_imports_dict, "\n"))
|
|
171
|
-
|
|
172
|
-
typing_imports = ""
|
|
173
|
-
typing_imports_dict = self._get_imports_dict(
|
|
174
|
-
baseline_typing_section=TypingSection.TYPING,
|
|
175
|
-
add_conditional_typing=False,
|
|
176
|
-
)
|
|
177
|
-
if typing_imports_dict:
|
|
178
|
-
typing_imports += "\n\nif TYPE_CHECKING:\n # pylint: disable=unused-import,ungrouped-imports\n "
|
|
179
|
-
typing_imports += "\n\n ".join(_get_import_clauses(typing_imports_dict, "\n "))
|
|
180
|
-
|
|
181
|
-
return regular_imports + typing_imports + self._typing_definitions
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
{% macro method_signature() %}
|
|
2
|
-
def __init__(
|
|
3
|
-
self,
|
|
4
|
-
{% for parameter in code_model.global_parameters.parameters %}
|
|
5
|
-
{% if parameter.required %}
|
|
6
|
-
{{ parameter.signature(async_mode) }}
|
|
7
|
-
{% endif %}
|
|
8
|
-
{% endfor %}
|
|
9
|
-
{% for parameter in code_model.global_parameters.parameters %}
|
|
10
|
-
{% if not parameter.required %}
|
|
11
|
-
{{ parameter.signature(async_mode) }}
|
|
12
|
-
{% endif %}
|
|
13
|
-
{% endfor %}
|
|
14
|
-
**kwargs: Any
|
|
15
|
-
){{" -> None" if async_mode else "" }}:{% endmacro %}
|
|
16
|
-
{% set version_import = ".._version" if async_mode else "._version" %}
|
|
17
|
-
{% set async_prefix = "Async" if async_mode else "" %}
|
|
18
|
-
{# actual template starts here #}
|
|
19
|
-
# coding=utf-8
|
|
20
|
-
# --------------------------------------------------------------------------
|
|
21
|
-
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
22
|
-
# Licensed under the MIT License. See License.txt in the project root for
|
|
23
|
-
# license information.
|
|
24
|
-
#
|
|
25
|
-
# Code generated by Microsoft (R) AutoRest Code Generator.
|
|
26
|
-
# Changes may cause incorrect behavior and will be lost if the code is
|
|
27
|
-
# regenerated.
|
|
28
|
-
# --------------------------------------------------------------------------
|
|
29
|
-
{{ imports }}
|
|
30
|
-
|
|
31
|
-
class {{ code_model.client.name }}Configuration:
|
|
32
|
-
"""Configuration for {{ code_model.client.name }}.
|
|
33
|
-
|
|
34
|
-
Note that all parameters used to create this instance are saved as instance
|
|
35
|
-
attributes.
|
|
36
|
-
{% if code_model.global_parameters.parameters %}
|
|
37
|
-
|
|
38
|
-
{% endif %}
|
|
39
|
-
{% for parameter in code_model.global_parameters.parameters %}
|
|
40
|
-
:param {{ parameter.name }}: {{ parameter.description(async_mode) }}
|
|
41
|
-
:type {{ parameter.name }}: {{ parameter.docstring_type(async_mode) }}
|
|
42
|
-
{% endfor %}
|
|
43
|
-
"""
|
|
44
|
-
|
|
45
|
-
{{ method_signature()|indent }}
|
|
46
|
-
{% for parameter in code_model.global_parameters.parameters %}
|
|
47
|
-
{% if parameter.required %}
|
|
48
|
-
if {{ parameter.name }} is None:
|
|
49
|
-
raise ValueError("Parameter '{{ parameter.name }}' must not be None.")
|
|
50
|
-
{% endif %}
|
|
51
|
-
{% endfor %}
|
|
52
|
-
|
|
53
|
-
{% for parameter in code_model.global_parameters.parameters %}
|
|
54
|
-
self.{{ parameter.name }} = {{ parameter.name }}
|
|
55
|
-
{% endfor %}
|
|
56
|
-
{% if code_model.global_parameters.constant_parameters %}
|
|
57
|
-
{% for constant_parameter in code_model.global_parameters.constant_parameters %}
|
|
58
|
-
self.{{ constant_parameter.name }} = {{ constant_parameter.value }}
|
|
59
|
-
{% endfor %}
|
|
60
|
-
{% endif %}
|
|
61
|
-
{% if code_model.config.credential_scopes is not none %}
|
|
62
|
-
self.credential_scopes = kwargs.pop('credential_scopes', {{ code_model.config.credential_scopes }})
|
|
63
|
-
{% endif %}
|
|
64
|
-
kwargs.setdefault('sdk_moniker', '{{ code_model.package_name|lower }}/{}'.format(VERSION))
|
|
65
|
-
self.polling_interval = kwargs.get("polling_interval", 30)
|
|
66
|
-
self._configure(**kwargs)
|
|
67
|
-
|
|
68
|
-
def _configure(
|
|
69
|
-
self,
|
|
70
|
-
**kwargs: Any
|
|
71
|
-
){{ " -> None" if async_mode else "" }}:
|
|
72
|
-
self.user_agent_policy = kwargs.get('user_agent_policy') or policies.UserAgentPolicy(**kwargs)
|
|
73
|
-
self.headers_policy = kwargs.get('headers_policy') or policies.HeadersPolicy(**kwargs)
|
|
74
|
-
self.proxy_policy = kwargs.get('proxy_policy') or policies.ProxyPolicy(**kwargs)
|
|
75
|
-
self.logging_policy = kwargs.get('logging_policy') or policies.NetworkTraceLoggingPolicy(**kwargs)
|
|
76
|
-
self.http_logging_policy = kwargs.get('http_logging_policy') or {{ "ARM" if code_model.azure_arm else "policies." }}HttpLoggingPolicy(**kwargs)
|
|
77
|
-
self.retry_policy = kwargs.get('retry_policy') or policies.{{ async_prefix }}RetryPolicy(**kwargs)
|
|
78
|
-
self.custom_hook_policy = kwargs.get('custom_hook_policy') or policies.CustomHookPolicy(**kwargs)
|
|
79
|
-
self.redirect_policy = kwargs.get('redirect_policy') or policies.{{ async_prefix }}RedirectPolicy(**kwargs)
|
|
80
|
-
self.authentication_policy = kwargs.get('authentication_policy')
|
|
81
|
-
{% if code_model.config.credential %}
|
|
82
|
-
{# only adding this if credential_scopes is not passed during code generation #}
|
|
83
|
-
{% if code_model.config.credential_scopes is not none and code_model.config.credential_scopes|length == 0 %}
|
|
84
|
-
if not self.credential_scopes and not self.authentication_policy:
|
|
85
|
-
raise ValueError("You must provide either credential_scopes or authentication_policy as kwargs")
|
|
86
|
-
{% endif %}
|
|
87
|
-
if self.credential and not self.authentication_policy:
|
|
88
|
-
self.authentication_policy = {{ code_model.config.credential_call(async_mode) }}
|
|
89
|
-
{% endif %}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# coding=utf-8
|
|
2
|
-
# --------------------------------------------------------------------------
|
|
3
|
-
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
-
# Licensed under the MIT License. See License.txt in the project root for license information.
|
|
5
|
-
# Code generated by Microsoft (R) AutoRest Code Generator.
|
|
6
|
-
# Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
|
7
|
-
# --------------------------------------------------------------------------
|
|
8
|
-
|
|
9
|
-
from .{{ code_model.client.filename }} import {{ code_model.client.name }}
|
|
10
|
-
__all__ = ['{{ code_model.client.name }}']
|
|
11
|
-
{% if not async_mode %}
|
|
12
|
-
|
|
13
|
-
try:
|
|
14
|
-
from ._patch import patch_sdk # type: ignore
|
|
15
|
-
patch_sdk()
|
|
16
|
-
except ImportError:
|
|
17
|
-
pass
|
|
18
|
-
|
|
19
|
-
from ._version import VERSION
|
|
20
|
-
|
|
21
|
-
__version__ = VERSION
|
|
22
|
-
{% endif %}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
# coding=utf-8
|
|
2
|
-
# --------------------------------------------------------------------------
|
|
3
|
-
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
-
# Licensed under the MIT License. See License.txt in the project root for
|
|
5
|
-
# license information.
|
|
6
|
-
# --------------------------------------------------------------------------
|
|
7
|
-
{% for mod_api_version in code_model.default_models %}
|
|
8
|
-
from .{{ mod_api_version }}.models import *
|
|
9
|
-
{% endfor %}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# coding=utf-8
|
|
2
|
-
# --------------------------------------------------------------------------
|
|
3
|
-
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
-
# Licensed under the MIT License. See License.txt in the project root for
|
|
5
|
-
# license information.
|
|
6
|
-
#
|
|
7
|
-
# Code generated by Microsoft (R) AutoRest Code Generator.
|
|
8
|
-
# Changes may cause incorrect behavior and will be lost if the code is
|
|
9
|
-
# regenerated.
|
|
10
|
-
# --------------------------------------------------------------------------
|
|
11
|
-
from {{ ".." if async_mode else "." }}_serialization import Serializer, Deserializer
|
|
12
|
-
{% if imports %}
|
|
13
|
-
{{ imports }}
|
|
14
|
-
{% endif %}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class {{ code_model.client.name }}OperationsMixin(object):
|
|
18
|
-
{% for mixin_operation in code_model.operation_mixin_group.mixin_operations %}
|
|
19
|
-
|
|
20
|
-
{{ mixin_operation.signature(async_mode) | indent }} {{ mixin_operation.description(async_mode) | indent(8) }}
|
|
21
|
-
api_version = self._get_api_version('{{ mixin_operation.name }}')
|
|
22
|
-
{% for api in mixin_operation.available_apis|sort %}
|
|
23
|
-
{% set if_statement = "if" if loop.first else "elif" %}
|
|
24
|
-
{{ if_statement }} api_version == '{{ code_model.mod_to_api_version[api] }}':
|
|
25
|
-
from {{ ".." if async_mode else "." }}{{ api }}{{ ".aio" if async_mode else "" }}.operations import {{ code_model.client.name }}OperationsMixin as OperationClass
|
|
26
|
-
{% endfor %}
|
|
27
|
-
else:
|
|
28
|
-
raise ValueError("API version {} does not have operation '{{ mixin_operation.name }}'".format(api_version))
|
|
29
|
-
mixin_instance = OperationClass()
|
|
30
|
-
mixin_instance._client = self._client
|
|
31
|
-
mixin_instance._config = self._config
|
|
32
|
-
mixin_instance._config.api_version = api_version
|
|
33
|
-
mixin_instance._serialize = Serializer(self._models_dict(api_version))
|
|
34
|
-
{% if not code_model.client.client_side_validation %}
|
|
35
|
-
mixin_instance._serialize.client_side_validation = False
|
|
36
|
-
{% endif %}
|
|
37
|
-
mixin_instance._deserialize = Deserializer(self._models_dict(api_version))
|
|
38
|
-
return {{ "await " if mixin_operation.coroutine(async_mode) }}mixin_instance.{{ mixin_operation.name }}({{ mixin_operation.call(async_mode) }})
|
|
39
|
-
{% endfor %}
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
{% macro method_signature() %}
|
|
2
|
-
def __init__(
|
|
3
|
-
self,
|
|
4
|
-
{% for pos in positional_params %}
|
|
5
|
-
{{ pos }}
|
|
6
|
-
{% endfor %}
|
|
7
|
-
{% if keyword_only_params %}
|
|
8
|
-
*,
|
|
9
|
-
{% endif %}
|
|
10
|
-
{% for ko in keyword_only_params %}
|
|
11
|
-
{{ ko }}
|
|
12
|
-
{% endfor %}
|
|
13
|
-
**kwargs: Any
|
|
14
|
-
){{" -> None" if async_mode else "" }}:{% endmacro %}
|
|
15
|
-
{# actual template starts here #}
|
|
16
|
-
{% set relative_path = ".." if async_mode else "." %}
|
|
17
|
-
{% set def = "async def" if async_mode else "def" %}
|
|
18
|
-
{% set async_prefix = "Async" if async_mode else "" %}
|
|
19
|
-
{% set a_prefix = "a" if async_mode else "" %}
|
|
20
|
-
{% set await = "await " if async_mode else "" %}
|
|
21
|
-
{% set credential_scopes = "credential_scopes=credential_scopes, " if code_model.config.credential_scopes is not none and code_model.azure_arm else "" %}
|
|
22
|
-
# coding=utf-8
|
|
23
|
-
# --------------------------------------------------------------------------
|
|
24
|
-
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
25
|
-
# Licensed under the MIT License. See License.txt in the project root for
|
|
26
|
-
# license information.
|
|
27
|
-
#
|
|
28
|
-
# Code generated by Microsoft (R) AutoRest Code Generator.
|
|
29
|
-
# Changes may cause incorrect behavior and will be lost if the code is
|
|
30
|
-
# regenerated.
|
|
31
|
-
# --------------------------------------------------------------------------
|
|
32
|
-
|
|
33
|
-
{{ imports }}
|
|
34
|
-
|
|
35
|
-
class _SDKClient(object):
|
|
36
|
-
def __init__(self, *args, **kwargs):
|
|
37
|
-
"""This is a fake class to support current implementation of MultiApiClientMixin."
|
|
38
|
-
Will be removed in final version of multiapi azure-core based client
|
|
39
|
-
"""
|
|
40
|
-
pass
|
|
41
|
-
|
|
42
|
-
class {{ code_model.client.name }}({% if code_model.operation_mixin_group.mixin_operations %}{{ code_model.client.name }}OperationsMixin, {% endif %}MultiApiClientMixin, _SDKClient):
|
|
43
|
-
"""{{ code_model.client.description }}
|
|
44
|
-
|
|
45
|
-
This ready contains multiple API versions, to help you deal with all of the Azure clouds
|
|
46
|
-
(Azure Stack, Azure Government, Azure China, etc.).
|
|
47
|
-
By default, it uses the latest API version available on public Azure.
|
|
48
|
-
For production, you should stick to a particular api-version and/or profile.
|
|
49
|
-
The profile sets a mapping between an operation group and its API version.
|
|
50
|
-
The api-version parameter sets the default API version if the operation
|
|
51
|
-
group is not described in the profile.
|
|
52
|
-
{% if code_model.global_parameters.parameters %}
|
|
53
|
-
|
|
54
|
-
{% endif %}
|
|
55
|
-
{% for parameter in code_model.global_parameters.parameters %}
|
|
56
|
-
:param {{ parameter.name }}: {{ parameter.description(async_mode) }}
|
|
57
|
-
:type {{ parameter.name }}: {{ parameter.docstring_type(async_mode) }}
|
|
58
|
-
{% endfor %}
|
|
59
|
-
{% for parameter in code_model.global_parameters.service_client_specific_global_parameters %}
|
|
60
|
-
:param {{ parameter.name }}: {{ parameter.description(async_mode) }}
|
|
61
|
-
:type {{ parameter.name }}: {{ parameter.docstring_type(async_mode) }}
|
|
62
|
-
{% endfor %}
|
|
63
|
-
{% if code_model.client.has_public_lro_operations %}
|
|
64
|
-
:keyword int polling_interval: Default waiting time between two polls for LRO operations if no Retry-After header is present.
|
|
65
|
-
{% endif %}
|
|
66
|
-
"""
|
|
67
|
-
|
|
68
|
-
DEFAULT_API_VERSION = '{{ code_model.mod_to_api_version[code_model.default_api_version] }}'
|
|
69
|
-
_PROFILE_TAG = "{{ code_model.module_name }}.{{ code_model.client.name }}"
|
|
70
|
-
LATEST_PROFILE = ProfileDefinition({
|
|
71
|
-
_PROFILE_TAG: {
|
|
72
|
-
None: DEFAULT_API_VERSION,
|
|
73
|
-
{% for rt_name, api_version in code_model.last_rt_list|dictsort %}
|
|
74
|
-
'{{ rt_name }}': '{{ code_model.mod_to_api_version[api_version] }}',
|
|
75
|
-
{% endfor %}
|
|
76
|
-
}},
|
|
77
|
-
_PROFILE_TAG + " latest"
|
|
78
|
-
)
|
|
79
|
-
|
|
80
|
-
{{ method_signature()|indent }}
|
|
81
|
-
{% if not code_model.azure_arm %}
|
|
82
|
-
{% if not code_model.client.host_value %}
|
|
83
|
-
{% for parameterized_host_template, api_versions in code_model.client.parameterized_host_template_to_api_version|dictsort %}
|
|
84
|
-
{% set if_statement = "if" if loop.first else "elif" %}
|
|
85
|
-
{{ if_statement ~ " api_version == '" ~ api_versions|join("' or api_version == '") ~ "'" }}:
|
|
86
|
-
base_url = {{ parameterized_host_template }}
|
|
87
|
-
{% endfor %}
|
|
88
|
-
else:
|
|
89
|
-
raise ValueError("API version {} is not available".format(api_version))
|
|
90
|
-
{% endif %}
|
|
91
|
-
{% endif %}
|
|
92
|
-
if api_version:
|
|
93
|
-
kwargs.setdefault('api_version', api_version)
|
|
94
|
-
{% if credential_scopes %}
|
|
95
|
-
_cloud = kwargs.pop("cloud_setting", None) or settings.current.azure_cloud # type: ignore
|
|
96
|
-
_endpoints = get_arm_endpoints(_cloud)
|
|
97
|
-
if not base_url:
|
|
98
|
-
base_url = _endpoints["resource_manager"]
|
|
99
|
-
credential_scopes = kwargs.pop("credential_scopes", _endpoints["credential_scopes"])
|
|
100
|
-
{% endif %}
|
|
101
|
-
self._config = {{ code_model.client.name }}Configuration({{ code_model.global_parameters.call }}{{ ", " if code_model.global_parameters.call }}{{ credential_scopes }}**kwargs)
|
|
102
|
-
_policies = kwargs.pop("policies", None)
|
|
103
|
-
if _policies is None:
|
|
104
|
-
_policies = [
|
|
105
|
-
{% for p in config_policies %}
|
|
106
|
-
{{ p }},
|
|
107
|
-
{% endfor %}
|
|
108
|
-
]
|
|
109
|
-
{% set host_variable_name = "cast(str, " + code_model.host_variable_name + ")" if credential_scopes else code_model.host_variable_name %}
|
|
110
|
-
self._client: {{ async_prefix }}{{ code_model.client.pipeline_client }} = {{ async_prefix }}{{ code_model.client.pipeline_client }}(base_url={{ host_variable_name }}, policies=_policies, **kwargs)
|
|
111
|
-
super({{ code_model.client.name }}, self).__init__(
|
|
112
|
-
api_version=api_version,
|
|
113
|
-
profile=profile
|
|
114
|
-
)
|
|
115
|
-
|
|
116
|
-
@classmethod
|
|
117
|
-
def _models_dict(cls, api_version):
|
|
118
|
-
return {k: v for k, v in cls.models(api_version).__dict__.items() if isinstance(v, type)}
|
|
119
|
-
|
|
120
|
-
@classmethod
|
|
121
|
-
def models(cls, api_version=DEFAULT_API_VERSION):
|
|
122
|
-
"""Module depends on the API version:
|
|
123
|
-
|
|
124
|
-
{% for mod_api_version, api_version in code_model.mod_to_api_version|dictsort %}
|
|
125
|
-
* {{ api_version }}: :mod:`{{ mod_api_version }}.models<{{ code_model.module_name }}.{{ mod_api_version }}.models>`
|
|
126
|
-
{% endfor %}
|
|
127
|
-
"""
|
|
128
|
-
{% for mod_api_version, api_version in code_model.mod_to_api_version|dictsort %}
|
|
129
|
-
{% set if_statement = "if" if loop.first else "elif" %}
|
|
130
|
-
{{if_statement }} api_version == '{{ api_version }}':
|
|
131
|
-
from {{ relative_path }}{{ mod_api_version }} import models
|
|
132
|
-
return models
|
|
133
|
-
{% endfor %}
|
|
134
|
-
raise ValueError("API version {} is not available".format(api_version))
|
|
135
|
-
{% for operation_group in code_model.operation_groups %}
|
|
136
|
-
|
|
137
|
-
@property
|
|
138
|
-
def {{ operation_group.name }}(self):
|
|
139
|
-
"""Instance depends on the API version:
|
|
140
|
-
|
|
141
|
-
{% for api in operation_group.available_apis | sort %}
|
|
142
|
-
* {{ code_model.mod_to_api_version[api] }}: :class:`{{ operation_group.class_name(api) }}<{{ code_model.module_name }}.{{ api }}{{ ".aio" if async_mode else "" }}.operations.{{ operation_group.class_name(api) }}>`
|
|
143
|
-
{% endfor %}
|
|
144
|
-
"""
|
|
145
|
-
api_version = self._get_api_version('{{ operation_group.name }}')
|
|
146
|
-
{% for api in operation_group.available_apis | sort %}
|
|
147
|
-
{% set if_statement = "if" if loop.first else "elif" %}
|
|
148
|
-
{{ if_statement }} api_version == '{{ code_model.mod_to_api_version[api] }}':
|
|
149
|
-
from {{ relative_path }}{{ api }}.{{ "aio." if async_mode else "" }}operations import {{ operation_group.class_name(api) }} as OperationClass
|
|
150
|
-
{% endfor %}
|
|
151
|
-
else:
|
|
152
|
-
raise ValueError("API version {} does not have operation group '{{ operation_group.name }}'".format(api_version))
|
|
153
|
-
self._config.api_version = api_version
|
|
154
|
-
return OperationClass(self._client, self._config, Serializer(self._models_dict(api_version)), Deserializer(self._models_dict(api_version)), api_version)
|
|
155
|
-
{% endfor %}
|
|
156
|
-
|
|
157
|
-
{{ def }} close(self):
|
|
158
|
-
{{ await }}self._client.close()
|
|
159
|
-
{{ def }} __{{ a_prefix }}enter__(self):
|
|
160
|
-
{{ await }}self._client.__{{ a_prefix }}enter__()
|
|
161
|
-
return self
|
|
162
|
-
{{ def }} __{{ a_prefix }}exit__(self, *exc_details):
|
|
163
|
-
{{ await }}self._client.__{{ a_prefix }}exit__(*exc_details)
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
# coding=utf-8
|
|
2
|
-
# --------------------------------------------------------------------------
|
|
3
|
-
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
-
# Licensed under the MIT License. See License.txt in the project root for
|
|
5
|
-
# license information.
|
|
6
|
-
# --------------------------------------------------------------------------
|
|
7
|
-
|
|
8
|
-
VERSION = "0.1.0"
|