@autorest/python 6.38.2 → 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 +7 -21
- 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 +15 -40
- package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +101 -94
- 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 +46 -60
- 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/dev_requirements.txt.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/packaging_templates/pyproject.toml.jinja2 +7 -0
- 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 +7 -21
- 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 +15 -40
- package/generator/pygen/codegen/serializers/builder_serializer.py +101 -94
- 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 +46 -60
- 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/dev_requirements.txt.jinja2 +1 -1
- package/generator/pygen/codegen/templates/packaging_templates/pyproject.toml.jinja2 +7 -0
- 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
|
@@ -3,7 +3,7 @@
|
|
|
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
|
|
6
|
+
from typing import Optional, Any, TYPE_CHECKING, Union
|
|
7
7
|
|
|
8
8
|
from .base import BaseModel
|
|
9
9
|
from .base import BaseType
|
|
@@ -21,7 +21,7 @@ if TYPE_CHECKING:
|
|
|
21
21
|
class ResponseHeader(BaseModel):
|
|
22
22
|
def __init__(
|
|
23
23
|
self,
|
|
24
|
-
yaml_data:
|
|
24
|
+
yaml_data: dict[str, Any],
|
|
25
25
|
code_model: "CodeModel",
|
|
26
26
|
type: BaseType,
|
|
27
27
|
) -> None:
|
|
@@ -33,7 +33,7 @@ class ResponseHeader(BaseModel):
|
|
|
33
33
|
return self.type.serialization_type(**kwargs)
|
|
34
34
|
|
|
35
35
|
@classmethod
|
|
36
|
-
def from_yaml(cls, yaml_data:
|
|
36
|
+
def from_yaml(cls, yaml_data: dict[str, Any], code_model: "CodeModel") -> "ResponseHeader":
|
|
37
37
|
from . import build_type
|
|
38
38
|
|
|
39
39
|
return cls(
|
|
@@ -46,14 +46,14 @@ class ResponseHeader(BaseModel):
|
|
|
46
46
|
class Response(BaseModel):
|
|
47
47
|
def __init__(
|
|
48
48
|
self,
|
|
49
|
-
yaml_data:
|
|
49
|
+
yaml_data: dict[str, Any],
|
|
50
50
|
code_model: "CodeModel",
|
|
51
51
|
*,
|
|
52
|
-
headers: Optional[
|
|
52
|
+
headers: Optional[list[ResponseHeader]] = None,
|
|
53
53
|
type: Optional[BaseType] = None,
|
|
54
54
|
) -> None:
|
|
55
55
|
super().__init__(yaml_data=yaml_data, code_model=code_model)
|
|
56
|
-
self.status_codes:
|
|
56
|
+
self.status_codes: list[Union[int, str, list[int]]] = yaml_data["statusCodes"]
|
|
57
57
|
self.headers = headers or []
|
|
58
58
|
self.type = type
|
|
59
59
|
self.nullable = yaml_data.get("nullable")
|
|
@@ -66,7 +66,7 @@ class Response(BaseModel):
|
|
|
66
66
|
return "".join([f'.get("{field}", {{}})' for field in field.split(".")])
|
|
67
67
|
return ""
|
|
68
68
|
|
|
69
|
-
def get_polymorphic_subtypes(self, polymorphic_subtypes:
|
|
69
|
+
def get_polymorphic_subtypes(self, polymorphic_subtypes: list["ModelType"]) -> None:
|
|
70
70
|
if self.type:
|
|
71
71
|
self.type.get_polymorphic_subtypes(polymorphic_subtypes)
|
|
72
72
|
|
|
@@ -111,7 +111,7 @@ class Response(BaseModel):
|
|
|
111
111
|
return f"{self.type.docstring_type(**kwargs)} or None"
|
|
112
112
|
return self.type.docstring_type(**kwargs) if self.type else "None"
|
|
113
113
|
|
|
114
|
-
def
|
|
114
|
+
def imports(self, **kwargs: Any) -> FileImport:
|
|
115
115
|
file_import = FileImport(self.code_model)
|
|
116
116
|
if self.type:
|
|
117
117
|
file_import.merge(self.type.imports(**kwargs))
|
|
@@ -127,12 +127,6 @@ class Response(BaseModel):
|
|
|
127
127
|
)
|
|
128
128
|
return file_import
|
|
129
129
|
|
|
130
|
-
def imports(self, **kwargs: Any) -> FileImport:
|
|
131
|
-
return self._imports_shared(**kwargs)
|
|
132
|
-
|
|
133
|
-
def imports_for_multiapi(self, **kwargs: Any) -> FileImport:
|
|
134
|
-
return self._imports_shared(**kwargs)
|
|
135
|
-
|
|
136
130
|
def _get_import_type(self, input_path: str) -> ImportType:
|
|
137
131
|
# helper function to return imports for responses based off
|
|
138
132
|
# of whether we're importing from the core library, or users
|
|
@@ -140,7 +134,7 @@ class Response(BaseModel):
|
|
|
140
134
|
return ImportType.SDKCORE if self.code_model.core_library.split(".")[0] in input_path else ImportType.THIRDPARTY
|
|
141
135
|
|
|
142
136
|
@classmethod
|
|
143
|
-
def from_yaml(cls, yaml_data:
|
|
137
|
+
def from_yaml(cls, yaml_data: dict[str, Any], code_model: "CodeModel") -> "Response":
|
|
144
138
|
type = code_model.lookup_type(id(yaml_data["type"])) if yaml_data.get("type") else None
|
|
145
139
|
# use ByteIteratorType if we are returning a binary type
|
|
146
140
|
default_content_type = yaml_data.get("defaultContentType", "application/json")
|
|
@@ -170,7 +164,7 @@ class PagingResponse(Response):
|
|
|
170
164
|
or f"{self.code_model.core_library}.{default_paging_submodule}.AsyncItemPaged"
|
|
171
165
|
)
|
|
172
166
|
|
|
173
|
-
def get_polymorphic_subtypes(self, polymorphic_subtypes:
|
|
167
|
+
def get_polymorphic_subtypes(self, polymorphic_subtypes: list["ModelType"]) -> None:
|
|
174
168
|
return self.item_type.get_polymorphic_subtypes(polymorphic_subtypes)
|
|
175
169
|
|
|
176
170
|
def get_json_template_representation(self) -> Any:
|
|
@@ -198,17 +192,13 @@ class PagingResponse(Response):
|
|
|
198
192
|
def docstring_type(self, **kwargs: Any) -> str:
|
|
199
193
|
return f"~{self.get_pager_path(kwargs['async_mode'])}[{self.item_type.docstring_type(**kwargs)}]"
|
|
200
194
|
|
|
201
|
-
def
|
|
202
|
-
file_import = super().
|
|
195
|
+
def imports(self, **kwargs: Any) -> FileImport:
|
|
196
|
+
file_import = super().imports(**kwargs)
|
|
203
197
|
async_mode = kwargs.get("async_mode", False)
|
|
204
198
|
pager = self.get_pager(async_mode)
|
|
205
199
|
pager_path = self.get_pager_import_path(async_mode)
|
|
206
200
|
|
|
207
201
|
file_import.add_submodule_import(pager_path, pager, self._get_import_type(pager_path))
|
|
208
|
-
return file_import
|
|
209
|
-
|
|
210
|
-
def imports(self, **kwargs: Any) -> FileImport:
|
|
211
|
-
file_import = self._imports_shared(**kwargs)
|
|
212
202
|
async_mode = kwargs.get("async_mode")
|
|
213
203
|
if async_mode:
|
|
214
204
|
file_import.add_submodule_import(
|
|
@@ -219,9 +209,6 @@ class PagingResponse(Response):
|
|
|
219
209
|
|
|
220
210
|
return file_import
|
|
221
211
|
|
|
222
|
-
def imports_for_multiapi(self, **kwargs: Any) -> FileImport:
|
|
223
|
-
return self._imports_shared(**kwargs)
|
|
224
|
-
|
|
225
212
|
|
|
226
213
|
class LROResponse(Response):
|
|
227
214
|
def get_poller_path(self, async_mode: bool) -> str:
|
|
@@ -270,16 +257,12 @@ class LROResponse(Response):
|
|
|
270
257
|
base_description += "either "
|
|
271
258
|
return base_description + super_text
|
|
272
259
|
|
|
273
|
-
def
|
|
274
|
-
file_import = super().
|
|
260
|
+
def imports(self, **kwargs: Any) -> FileImport:
|
|
261
|
+
file_import = super().imports(**kwargs)
|
|
275
262
|
async_mode = kwargs["async_mode"]
|
|
276
263
|
poller_import_path = ".".join(self.get_poller_path(async_mode).split(".")[:-1])
|
|
277
264
|
poller = self.get_poller(async_mode)
|
|
278
265
|
file_import.add_submodule_import(poller_import_path, poller, self._get_import_type(poller_import_path))
|
|
279
|
-
return file_import
|
|
280
|
-
|
|
281
|
-
def imports(self, **kwargs: Any) -> FileImport:
|
|
282
|
-
file_import = self._imports_shared(**kwargs)
|
|
283
266
|
async_mode = kwargs["async_mode"]
|
|
284
267
|
|
|
285
268
|
default_polling_method_import_path = ".".join(self.get_polling_method_path(async_mode).split(".")[:-1])
|
|
@@ -306,9 +289,6 @@ class LROResponse(Response):
|
|
|
306
289
|
)
|
|
307
290
|
return file_import
|
|
308
291
|
|
|
309
|
-
def imports_for_multiapi(self, **kwargs: Any) -> FileImport:
|
|
310
|
-
return self._imports_shared(**kwargs)
|
|
311
|
-
|
|
312
292
|
|
|
313
293
|
class LROPagingResponse(LROResponse, PagingResponse):
|
|
314
294
|
def type_annotation(self, **kwargs: Any) -> str:
|
|
@@ -325,18 +305,13 @@ class LROPagingResponse(LROResponse, PagingResponse):
|
|
|
325
305
|
base_description += "either "
|
|
326
306
|
return base_description + Response.docstring_text(self)
|
|
327
307
|
|
|
328
|
-
def imports_for_multiapi(self, **kwargs: Any) -> FileImport:
|
|
329
|
-
file_import = LROResponse.imports_for_multiapi(self, **kwargs)
|
|
330
|
-
file_import.merge(PagingResponse.imports_for_multiapi(self, **kwargs))
|
|
331
|
-
return file_import
|
|
332
|
-
|
|
333
308
|
def imports(self, **kwargs: Any) -> FileImport:
|
|
334
309
|
file_import = LROResponse.imports(self, **kwargs)
|
|
335
310
|
file_import.merge(PagingResponse.imports(self, **kwargs))
|
|
336
311
|
return file_import
|
|
337
312
|
|
|
338
313
|
|
|
339
|
-
def get_response(yaml_data:
|
|
314
|
+
def get_response(yaml_data: dict[str, Any], code_model: "CodeModel") -> Response:
|
|
340
315
|
if yaml_data["discriminator"] == "lropaging":
|
|
341
316
|
return LROPagingResponse.from_yaml(yaml_data, code_model)
|
|
342
317
|
if yaml_data["discriminator"] == "lro":
|
|
@@ -3,12 +3,12 @@
|
|
|
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 TypeVar
|
|
6
|
+
from typing import TypeVar
|
|
7
7
|
|
|
8
8
|
from enum import Enum
|
|
9
9
|
|
|
10
10
|
T = TypeVar("T")
|
|
11
|
-
OrderedSet =
|
|
11
|
+
OrderedSet = dict[T, None]
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
def add_to_description(description: str, entry: str) -> str:
|
|
@@ -7,7 +7,7 @@ import logging
|
|
|
7
7
|
import json
|
|
8
8
|
from collections import namedtuple
|
|
9
9
|
import re
|
|
10
|
-
from typing import
|
|
10
|
+
from typing import Any, Optional, Union
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
from packaging.version import parse as parse_version
|
|
13
13
|
from jinja2 import PackageLoader, Environment, FileSystemLoader, StrictUndefined
|
|
@@ -28,7 +28,6 @@ from .model_init_serializer import ModelInitSerializer
|
|
|
28
28
|
from .model_serializer import DpgModelSerializer, MsrestModelSerializer
|
|
29
29
|
from .operations_init_serializer import OperationsInitSerializer
|
|
30
30
|
from .operation_groups_serializer import OperationGroupsSerializer
|
|
31
|
-
from .metadata_serializer import MetadataSerializer
|
|
32
31
|
from .request_builders_serializer import RequestBuildersSerializer
|
|
33
32
|
from .patch_serializer import PatchSerializer
|
|
34
33
|
from .sample_serializer import SampleSerializer
|
|
@@ -99,7 +98,7 @@ class JinjaSerializer(ReaderAndWriter):
|
|
|
99
98
|
return self.code_model.options["show-operations"] and bool(self.code_model.has_operations)
|
|
100
99
|
|
|
101
100
|
@property
|
|
102
|
-
def serialize_loop(self) ->
|
|
101
|
+
def serialize_loop(self) -> list[AsyncInfo]:
|
|
103
102
|
sync_loop = AsyncInfo(async_mode=False, async_path="")
|
|
104
103
|
async_loop = AsyncInfo(async_mode=True, async_path="aio/")
|
|
105
104
|
return [sync_loop, async_loop] if self.has_aio_folder else [sync_loop]
|
|
@@ -149,10 +148,7 @@ class JinjaSerializer(ReaderAndWriter):
|
|
|
149
148
|
self._serialize_and_write_package_files()
|
|
150
149
|
|
|
151
150
|
# write apiview-properties.json
|
|
152
|
-
if (
|
|
153
|
-
self.code_model.options.get("emit-cross-language-definition-file")
|
|
154
|
-
and not self.code_model.options["multiapi"]
|
|
155
|
-
):
|
|
151
|
+
if self.code_model.options.get("emit-cross-language-definition-file"):
|
|
156
152
|
self.write_file(
|
|
157
153
|
self._root_of_sdk / Path("apiview-properties.json"),
|
|
158
154
|
general_serializer.serialize_cross_language_definition_file(),
|
|
@@ -208,8 +204,6 @@ class JinjaSerializer(ReaderAndWriter):
|
|
|
208
204
|
self._serialize_and_write_operations_folder(
|
|
209
205
|
client_namespace_type.operation_groups, env=env, namespace=client_namespace
|
|
210
206
|
)
|
|
211
|
-
if self.code_model.options["multiapi"]:
|
|
212
|
-
self._serialize_and_write_metadata(env=env, namespace=client_namespace)
|
|
213
207
|
|
|
214
208
|
# if there are only operations under this namespace, we need to add general __init__.py into `aio` folder
|
|
215
209
|
# to make sure all generated files could be packed into .zip/.whl/.tgz package
|
|
@@ -256,15 +250,15 @@ class JinjaSerializer(ReaderAndWriter):
|
|
|
256
250
|
if not self.code_model.is_azure_flavor and template_name == "dev_requirements.txt.jinja2":
|
|
257
251
|
continue
|
|
258
252
|
file = template_name.replace(".jinja2", "")
|
|
259
|
-
|
|
260
|
-
if not self.read_file(
|
|
253
|
+
output_file = root_of_sdk / file
|
|
254
|
+
if not self.read_file(output_file) or file in _REGENERATE_FILES:
|
|
261
255
|
if self.keep_version_file and file == "setup.py" and not self.code_model.options["azure-arm"]:
|
|
262
256
|
# don't regenerate setup.py file if the version file is more up to date for data-plane
|
|
263
257
|
continue
|
|
264
|
-
|
|
258
|
+
file_content = self.read_file(output_file) if file == "pyproject.toml" else ""
|
|
265
259
|
self.write_file(
|
|
266
|
-
|
|
267
|
-
serializer.serialize_package_file(template_name,
|
|
260
|
+
output_file,
|
|
261
|
+
serializer.serialize_package_file(template_name, file_content, **params),
|
|
268
262
|
)
|
|
269
263
|
|
|
270
264
|
def _keep_patch_file(self, path_file: Path, env: Environment):
|
|
@@ -277,7 +271,7 @@ class JinjaSerializer(ReaderAndWriter):
|
|
|
277
271
|
)
|
|
278
272
|
|
|
279
273
|
def _serialize_and_write_models_folder(
|
|
280
|
-
self, env: Environment, namespace: str, models:
|
|
274
|
+
self, env: Environment, namespace: str, models: list[ModelType], enums: list[EnumType]
|
|
281
275
|
) -> None:
|
|
282
276
|
# Write the models folder
|
|
283
277
|
models_path = self.code_model.get_generation_dir(namespace) / "models"
|
|
@@ -320,7 +314,7 @@ class JinjaSerializer(ReaderAndWriter):
|
|
|
320
314
|
self,
|
|
321
315
|
env: Environment,
|
|
322
316
|
rest_path: Path,
|
|
323
|
-
request_builders:
|
|
317
|
+
request_builders: list[Union[RequestBuilder, OverloadedRequestBuilder]],
|
|
324
318
|
) -> None:
|
|
325
319
|
group_name = request_builders[0].group_name
|
|
326
320
|
output_path = rest_path / Path(group_name) if group_name else rest_path
|
|
@@ -345,7 +339,7 @@ class JinjaSerializer(ReaderAndWriter):
|
|
|
345
339
|
)
|
|
346
340
|
|
|
347
341
|
def _serialize_and_write_operations_folder(
|
|
348
|
-
self, operation_groups:
|
|
342
|
+
self, operation_groups: list[OperationGroup], env: Environment, namespace: str
|
|
349
343
|
) -> None:
|
|
350
344
|
operations_folder_name = self.code_model.operations_folder_name(namespace)
|
|
351
345
|
generation_path = self.code_model.get_generation_dir(namespace)
|
|
@@ -414,7 +408,7 @@ class JinjaSerializer(ReaderAndWriter):
|
|
|
414
408
|
def _serialize_client_and_config_files(
|
|
415
409
|
self,
|
|
416
410
|
namespace: str,
|
|
417
|
-
clients:
|
|
411
|
+
clients: list[Client],
|
|
418
412
|
env: Environment,
|
|
419
413
|
) -> None:
|
|
420
414
|
generation_path = self.code_model.get_generation_dir(namespace)
|
|
@@ -491,11 +485,7 @@ class JinjaSerializer(ReaderAndWriter):
|
|
|
491
485
|
|
|
492
486
|
# write the empty py.typed file
|
|
493
487
|
pytyped_value = "# Marker file for PEP 561."
|
|
494
|
-
|
|
495
|
-
if self.code_model.options["multiapi"]:
|
|
496
|
-
self.write_file(self.code_model.get_generation_dir(namespace) / Path("py.typed"), pytyped_value)
|
|
497
|
-
else:
|
|
498
|
-
self.write_file(root_dir / Path("py.typed"), pytyped_value)
|
|
488
|
+
self.write_file(root_dir / Path("py.typed"), pytyped_value)
|
|
499
489
|
|
|
500
490
|
# write _validation.py
|
|
501
491
|
if any(og for client in self.code_model.clients for og in client.operation_groups if og.need_validation):
|
|
@@ -511,22 +501,16 @@ class JinjaSerializer(ReaderAndWriter):
|
|
|
511
501
|
TypesSerializer(code_model=self.code_model, env=env).serialize(),
|
|
512
502
|
)
|
|
513
503
|
|
|
514
|
-
def _serialize_and_write_metadata(self, env: Environment, namespace: str) -> None:
|
|
515
|
-
metadata_serializer = MetadataSerializer(self.code_model, env)
|
|
516
|
-
self.write_file(
|
|
517
|
-
self.code_model.get_generation_dir(namespace) / Path("_metadata.json"), metadata_serializer.serialize()
|
|
518
|
-
)
|
|
519
|
-
|
|
520
504
|
# pylint: disable=line-too-long
|
|
521
505
|
@property
|
|
522
506
|
def sample_additional_folder(self) -> Path:
|
|
523
507
|
# For special package, we need to additional folder when generate samples.
|
|
524
|
-
# For example, azure-mgmt-resource is combined by multiple modules, and each module is
|
|
508
|
+
# For example, azure-mgmt-resource is combined by multiple modules, and each module is a package.
|
|
525
509
|
# one of namespace is "azure.mgmt.resource.resources.v2020_01_01", then additional folder is "resources"
|
|
526
510
|
# so that we could avoid conflict when generate samples.
|
|
527
511
|
# python config: https://github.com/Azure/azure-rest-api-specs/blob/main/specification/resources/resource-manager/readme.python.md
|
|
528
512
|
# generated SDK: https://github.com/Azure/azure-sdk-for-python/tree/main/sdk/resources/azure-mgmt-resource/generated_samples
|
|
529
|
-
namespace_config = get_namespace_config(self.code_model.namespace
|
|
513
|
+
namespace_config = get_namespace_config(self.code_model.namespace)
|
|
530
514
|
num_of_namespace = namespace_config.count(".") + 1
|
|
531
515
|
num_of_package_namespace = (
|
|
532
516
|
get_namespace_from_package_name(self.code_model.options.get("package-name", "")).count(".") + 1
|
|
@@ -540,11 +524,6 @@ class JinjaSerializer(ReaderAndWriter):
|
|
|
540
524
|
for client in self.code_model.clients:
|
|
541
525
|
for op_group in client.operation_groups:
|
|
542
526
|
for operation in op_group.operations:
|
|
543
|
-
if (
|
|
544
|
-
self.code_model.options["multiapi"]
|
|
545
|
-
and operation.api_versions[0] != self.code_model.options["default-api-version"]
|
|
546
|
-
):
|
|
547
|
-
continue
|
|
548
527
|
samples = operation.yaml_data.get("samples")
|
|
549
528
|
if not samples or operation.name.startswith("_"):
|
|
550
529
|
continue
|
|
@@ -584,10 +563,6 @@ class JinjaSerializer(ReaderAndWriter):
|
|
|
584
563
|
|
|
585
564
|
for client in self.code_model.clients:
|
|
586
565
|
for og in client.operation_groups:
|
|
587
|
-
if self.code_model.options["multiapi"] and any(
|
|
588
|
-
o.api_versions[0] != self.code_model.options["default-api-version"] for o in og.operations
|
|
589
|
-
):
|
|
590
|
-
continue
|
|
591
566
|
test_serializer = TestSerializer(self.code_model, env, client=client, operation_group=og)
|
|
592
567
|
for async_mode in (True, False):
|
|
593
568
|
try:
|