@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.
Files changed (144) hide show
  1. package/README.md +2 -27
  2. package/autorest/codegen.py +0 -1
  3. package/autorest/jsonrpc/server.py +0 -3
  4. package/generator/build/lib/pygen/__init__.py +7 -21
  5. package/generator/build/lib/pygen/codegen/__init__.py +4 -4
  6. package/generator/build/lib/pygen/codegen/models/__init__.py +2 -2
  7. package/generator/build/lib/pygen/codegen/models/base.py +9 -12
  8. package/generator/build/lib/pygen/codegen/models/base_builder.py +4 -6
  9. package/generator/build/lib/pygen/codegen/models/client.py +61 -102
  10. package/generator/build/lib/pygen/codegen/models/code_model.py +29 -29
  11. package/generator/build/lib/pygen/codegen/models/combined_type.py +7 -7
  12. package/generator/build/lib/pygen/codegen/models/constant_type.py +4 -11
  13. package/generator/build/lib/pygen/codegen/models/credential_types.py +9 -11
  14. package/generator/build/lib/pygen/codegen/models/dictionary_type.py +7 -8
  15. package/generator/build/lib/pygen/codegen/models/enum_type.py +7 -7
  16. package/generator/build/lib/pygen/codegen/models/imports.py +24 -29
  17. package/generator/build/lib/pygen/codegen/models/list_type.py +15 -14
  18. package/generator/build/lib/pygen/codegen/models/lro_operation.py +6 -6
  19. package/generator/build/lib/pygen/codegen/models/lro_paging_operation.py +2 -2
  20. package/generator/build/lib/pygen/codegen/models/model_type.py +11 -11
  21. package/generator/build/lib/pygen/codegen/models/operation.py +26 -56
  22. package/generator/build/lib/pygen/codegen/models/operation_group.py +11 -22
  23. package/generator/build/lib/pygen/codegen/models/paging_operation.py +15 -19
  24. package/generator/build/lib/pygen/codegen/models/parameter.py +12 -21
  25. package/generator/build/lib/pygen/codegen/models/parameter_list.py +37 -39
  26. package/generator/build/lib/pygen/codegen/models/primitive_types.py +24 -18
  27. package/generator/build/lib/pygen/codegen/models/property.py +10 -10
  28. package/generator/build/lib/pygen/codegen/models/request_builder.py +7 -8
  29. package/generator/build/lib/pygen/codegen/models/request_builder_parameter.py +3 -3
  30. package/generator/build/lib/pygen/codegen/models/response.py +15 -40
  31. package/generator/build/lib/pygen/codegen/models/utils.py +2 -2
  32. package/generator/build/lib/pygen/codegen/serializers/__init__.py +15 -40
  33. package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +101 -94
  34. package/generator/build/lib/pygen/codegen/serializers/client_serializer.py +22 -25
  35. package/generator/build/lib/pygen/codegen/serializers/enum_serializer.py +2 -2
  36. package/generator/build/lib/pygen/codegen/serializers/general_serializer.py +46 -60
  37. package/generator/build/lib/pygen/codegen/serializers/import_serializer.py +6 -7
  38. package/generator/build/lib/pygen/codegen/serializers/model_init_serializer.py +1 -2
  39. package/generator/build/lib/pygen/codegen/serializers/model_serializer.py +15 -17
  40. package/generator/build/lib/pygen/codegen/serializers/operation_groups_serializer.py +3 -3
  41. package/generator/build/lib/pygen/codegen/serializers/operations_init_serializer.py +5 -6
  42. package/generator/build/lib/pygen/codegen/serializers/parameter_serializer.py +28 -18
  43. package/generator/build/lib/pygen/codegen/serializers/patch_serializer.py +1 -2
  44. package/generator/build/lib/pygen/codegen/serializers/request_builders_serializer.py +1 -2
  45. package/generator/build/lib/pygen/codegen/serializers/sample_serializer.py +9 -14
  46. package/generator/build/lib/pygen/codegen/serializers/test_serializer.py +7 -7
  47. package/generator/build/lib/pygen/codegen/serializers/utils.py +2 -2
  48. package/generator/build/lib/pygen/codegen/templates/model_base.py.jinja2 +30 -24
  49. package/generator/build/lib/pygen/codegen/templates/model_dpg.py.jinja2 +1 -1
  50. package/generator/build/lib/pygen/codegen/templates/operation_group.py.jinja2 +1 -11
  51. package/generator/build/lib/pygen/codegen/templates/operations_folder_init.py.jinja2 +1 -1
  52. package/generator/build/lib/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +1 -1
  53. package/generator/build/lib/pygen/codegen/templates/packaging_templates/pyproject.toml.jinja2 +7 -0
  54. package/generator/build/lib/pygen/codegen/templates/patch.py.jinja2 +1 -1
  55. package/generator/build/lib/pygen/codegen/templates/serialization.py.jinja2 +11 -13
  56. package/generator/build/lib/pygen/codegen/templates/utils.py.jinja2 +6 -6
  57. package/generator/build/lib/pygen/preprocess/__init__.py +47 -30
  58. package/generator/build/lib/pygen/preprocess/helpers.py +2 -2
  59. package/generator/build/lib/pygen/utils.py +6 -6
  60. package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
  61. package/generator/pygen/__init__.py +7 -21
  62. package/generator/pygen/codegen/__init__.py +4 -4
  63. package/generator/pygen/codegen/models/__init__.py +2 -2
  64. package/generator/pygen/codegen/models/base.py +9 -12
  65. package/generator/pygen/codegen/models/base_builder.py +4 -6
  66. package/generator/pygen/codegen/models/client.py +61 -102
  67. package/generator/pygen/codegen/models/code_model.py +29 -29
  68. package/generator/pygen/codegen/models/combined_type.py +7 -7
  69. package/generator/pygen/codegen/models/constant_type.py +4 -11
  70. package/generator/pygen/codegen/models/credential_types.py +9 -11
  71. package/generator/pygen/codegen/models/dictionary_type.py +7 -8
  72. package/generator/pygen/codegen/models/enum_type.py +7 -7
  73. package/generator/pygen/codegen/models/imports.py +24 -29
  74. package/generator/pygen/codegen/models/list_type.py +15 -14
  75. package/generator/pygen/codegen/models/lro_operation.py +6 -6
  76. package/generator/pygen/codegen/models/lro_paging_operation.py +2 -2
  77. package/generator/pygen/codegen/models/model_type.py +11 -11
  78. package/generator/pygen/codegen/models/operation.py +26 -56
  79. package/generator/pygen/codegen/models/operation_group.py +11 -22
  80. package/generator/pygen/codegen/models/paging_operation.py +15 -19
  81. package/generator/pygen/codegen/models/parameter.py +12 -21
  82. package/generator/pygen/codegen/models/parameter_list.py +37 -39
  83. package/generator/pygen/codegen/models/primitive_types.py +24 -18
  84. package/generator/pygen/codegen/models/property.py +10 -10
  85. package/generator/pygen/codegen/models/request_builder.py +7 -8
  86. package/generator/pygen/codegen/models/request_builder_parameter.py +3 -3
  87. package/generator/pygen/codegen/models/response.py +15 -40
  88. package/generator/pygen/codegen/models/utils.py +2 -2
  89. package/generator/pygen/codegen/serializers/__init__.py +15 -40
  90. package/generator/pygen/codegen/serializers/builder_serializer.py +101 -94
  91. package/generator/pygen/codegen/serializers/client_serializer.py +22 -25
  92. package/generator/pygen/codegen/serializers/enum_serializer.py +2 -2
  93. package/generator/pygen/codegen/serializers/general_serializer.py +46 -60
  94. package/generator/pygen/codegen/serializers/import_serializer.py +6 -7
  95. package/generator/pygen/codegen/serializers/model_init_serializer.py +1 -2
  96. package/generator/pygen/codegen/serializers/model_serializer.py +15 -17
  97. package/generator/pygen/codegen/serializers/operation_groups_serializer.py +3 -3
  98. package/generator/pygen/codegen/serializers/operations_init_serializer.py +5 -6
  99. package/generator/pygen/codegen/serializers/parameter_serializer.py +28 -18
  100. package/generator/pygen/codegen/serializers/patch_serializer.py +1 -2
  101. package/generator/pygen/codegen/serializers/request_builders_serializer.py +1 -2
  102. package/generator/pygen/codegen/serializers/sample_serializer.py +9 -14
  103. package/generator/pygen/codegen/serializers/test_serializer.py +7 -7
  104. package/generator/pygen/codegen/serializers/utils.py +2 -2
  105. package/generator/pygen/codegen/templates/model_base.py.jinja2 +30 -24
  106. package/generator/pygen/codegen/templates/model_dpg.py.jinja2 +1 -1
  107. package/generator/pygen/codegen/templates/operation_group.py.jinja2 +1 -11
  108. package/generator/pygen/codegen/templates/operations_folder_init.py.jinja2 +1 -1
  109. package/generator/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +1 -1
  110. package/generator/pygen/codegen/templates/packaging_templates/pyproject.toml.jinja2 +7 -0
  111. package/generator/pygen/codegen/templates/patch.py.jinja2 +1 -1
  112. package/generator/pygen/codegen/templates/serialization.py.jinja2 +11 -13
  113. package/generator/pygen/codegen/templates/utils.py.jinja2 +6 -6
  114. package/generator/pygen/preprocess/__init__.py +47 -30
  115. package/generator/pygen/preprocess/helpers.py +2 -2
  116. package/generator/pygen/utils.py +6 -6
  117. package/generator/pygen.egg-info/SOURCES.txt +0 -2
  118. package/package.json +2 -2
  119. package/scripts/__pycache__/venvtools.cpython-310.pyc +0 -0
  120. package/autorest/multiapi/__init__.py +0 -185
  121. package/autorest/multiapi/models/__init__.py +0 -16
  122. package/autorest/multiapi/models/client.py +0 -68
  123. package/autorest/multiapi/models/code_model.py +0 -142
  124. package/autorest/multiapi/models/config.py +0 -24
  125. package/autorest/multiapi/models/constant_global_parameter.py +0 -11
  126. package/autorest/multiapi/models/global_parameter.py +0 -34
  127. package/autorest/multiapi/models/global_parameters.py +0 -53
  128. package/autorest/multiapi/models/imports.py +0 -181
  129. package/autorest/multiapi/models/mixin_operation.py +0 -38
  130. package/autorest/multiapi/models/operation_group.py +0 -29
  131. package/autorest/multiapi/models/operation_mixin_group.py +0 -89
  132. package/autorest/multiapi/serializers/__init__.py +0 -145
  133. package/autorest/multiapi/serializers/import_serializer.py +0 -181
  134. package/autorest/multiapi/templates/multiapi_config.py.jinja2 +0 -89
  135. package/autorest/multiapi/templates/multiapi_init.py.jinja2 +0 -22
  136. package/autorest/multiapi/templates/multiapi_models.py.jinja2 +0 -9
  137. package/autorest/multiapi/templates/multiapi_operations_mixin.py.jinja2 +0 -39
  138. package/autorest/multiapi/templates/multiapi_service_client.py.jinja2 +0 -163
  139. package/autorest/multiapi/templates/multiapi_version.py.jinja2 +0 -8
  140. package/autorest/multiapi/utils.py +0 -51
  141. package/generator/build/lib/pygen/codegen/serializers/metadata_serializer.py +0 -216
  142. package/generator/build/lib/pygen/codegen/templates/metadata.json.jinja2 +0 -167
  143. package/generator/pygen/codegen/serializers/metadata_serializer.py +0 -216
  144. 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 Dict, Optional, List, Any, TYPE_CHECKING, Union
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: Dict[str, Any],
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: Dict[str, Any], code_model: "CodeModel") -> "ResponseHeader":
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: Dict[str, Any],
49
+ yaml_data: dict[str, Any],
50
50
  code_model: "CodeModel",
51
51
  *,
52
- headers: Optional[List[ResponseHeader]] = None,
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: List[Union[int, str, List[int]]] = yaml_data["statusCodes"]
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: List["ModelType"]) -> None:
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 _imports_shared(self, **kwargs: Any) -> FileImport:
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: Dict[str, Any], code_model: "CodeModel") -> "Response":
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: List["ModelType"]) -> None:
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 _imports_shared(self, **kwargs: Any) -> FileImport:
202
- file_import = super()._imports_shared(**kwargs)
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 _imports_shared(self, **kwargs: Any) -> FileImport:
274
- file_import = super()._imports_shared(**kwargs)
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: Dict[str, Any], code_model: "CodeModel") -> Response:
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, Dict
6
+ from typing import TypeVar
7
7
 
8
8
  from enum import Enum
9
9
 
10
10
  T = TypeVar("T")
11
- OrderedSet = Dict[T, None]
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 List, Any, Union, Optional
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) -> List[AsyncInfo]:
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
- output_name = root_of_sdk / file
260
- if not self.read_file(output_name) or file in _REGENERATE_FILES:
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
- file_path = self.get_output_folder() / Path(output_name)
258
+ file_content = self.read_file(output_file) if file == "pyproject.toml" else ""
265
259
  self.write_file(
266
- output_name,
267
- serializer.serialize_package_file(template_name, file_path, **params),
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: List[ModelType], enums: List[EnumType]
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: List[Union[RequestBuilder, OverloadedRequestBuilder]],
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: List[OperationGroup], env: Environment, namespace: str
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: List[Client],
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
- # TODO: remove this when we remove legacy multiapi generation
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 multiapi package.
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, self.code_model.options["multiapi"])
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: