@typespec/http-client-python 0.15.2 → 0.16.1-dev.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/dist/emitter/code-model.d.ts.map +1 -1
- package/dist/emitter/code-model.js +8 -1
- package/dist/emitter/code-model.js.map +1 -1
- package/dist/emitter/emitter.d.ts.map +1 -1
- package/dist/emitter/emitter.js +5 -4
- package/dist/emitter/emitter.js.map +1 -1
- package/dist/emitter/http.d.ts +5 -0
- package/dist/emitter/http.d.ts.map +1 -1
- package/dist/emitter/http.js +20 -1
- package/dist/emitter/http.js.map +1 -1
- package/emitter/src/code-model.ts +12 -0
- package/emitter/src/emitter.ts +5 -4
- package/emitter/src/http.ts +23 -1
- package/emitter/temp/tsconfig.tsbuildinfo +1 -1
- package/eng/scripts/ci/regenerate.ts +5 -6
- package/eng/scripts/ci/util.py +1 -1
- package/eng/scripts/setup/__pycache__/package_manager.cpython-39.pyc +0 -0
- package/eng/scripts/setup/__pycache__/venvtools.cpython-39.pyc +0 -0
- package/eng/scripts/setup/install.py +21 -11
- package/eng/scripts/setup/install.ts +29 -4
- package/eng/scripts/setup/run-python3.ts +1 -1
- package/eng/scripts/setup/system-requirements.ts +13 -5
- package/generator/build/lib/pygen/__init__.py +7 -21
- package/generator/build/lib/pygen/black.py +2 -2
- 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 +33 -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 +11 -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 +22 -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 +36 -29
- package/generator/build/lib/pygen/codegen/serializers/operation_groups_serializer.py +8 -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 +8 -1
- 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/black.py +2 -2
- 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 +33 -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 +11 -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 +22 -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 +36 -29
- package/generator/pygen/codegen/serializers/operation_groups_serializer.py +8 -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 +8 -1
- 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/generator/test/azure/mock_api_tests/asynctests/test_azure_arm_operationtemplates_async.py +79 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_azure_client_generator_core_hierrarchy_building_async.py +53 -0
- package/generator/test/azure/mock_api_tests/asynctests/test_client_naming_async.py +4 -4
- package/generator/test/azure/mock_api_tests/asynctests/test_client_naming_enum_conflict_async.py +37 -0
- package/generator/test/azure/mock_api_tests/conftest.py +2 -2
- package/generator/test/azure/mock_api_tests/test_azure_arm_operationtemplates.py +72 -0
- package/generator/test/azure/mock_api_tests/test_azure_client_generator_core_hierrarchy_building.py +45 -0
- package/generator/test/azure/mock_api_tests/test_client_naming.py +3 -3
- package/generator/test/azure/mock_api_tests/test_client_naming_enum_conflict.py +35 -0
- package/generator/test/azure/requirements.txt +2 -0
- package/generator/test/unbranded/mock_api_tests/conftest.py +1 -2
- package/generator/test/unittests/test_model_base_serialization.py +135 -92
- package/generator/test/unittests/test_model_base_xml_serialization.py +19 -23
- package/package.json +8 -8
- 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 Any, Optional, Union, TYPE_CHECKING, cast, TypeVar
|
|
7
7
|
|
|
8
8
|
from .operation import Operation, OperationBase
|
|
9
9
|
from .response import PagingResponse, LROPagingResponse, Response
|
|
@@ -28,16 +28,16 @@ PagingResponseType = TypeVar("PagingResponseType", bound=Union[PagingResponse, L
|
|
|
28
28
|
class PagingOperationBase(OperationBase[PagingResponseType]):
|
|
29
29
|
def __init__(
|
|
30
30
|
self,
|
|
31
|
-
yaml_data:
|
|
31
|
+
yaml_data: dict[str, Any],
|
|
32
32
|
code_model: "CodeModel",
|
|
33
33
|
client: "Client",
|
|
34
34
|
name: str,
|
|
35
35
|
request_builder: RequestBuilder,
|
|
36
36
|
parameters: ParameterList,
|
|
37
|
-
responses:
|
|
38
|
-
exceptions:
|
|
37
|
+
responses: list[PagingResponseType],
|
|
38
|
+
exceptions: list[Response],
|
|
39
39
|
*,
|
|
40
|
-
overloads: Optional[
|
|
40
|
+
overloads: Optional[list[Operation]] = None,
|
|
41
41
|
override_success_response_to_200: bool = False,
|
|
42
42
|
) -> None:
|
|
43
43
|
super().__init__(
|
|
@@ -59,8 +59,8 @@ class PagingOperationBase(OperationBase[PagingResponseType]):
|
|
|
59
59
|
self.override_success_response_to_200 = override_success_response_to_200
|
|
60
60
|
self.pager_sync: str = yaml_data.get("pagerSync") or f"{self.code_model.core_library}.paging.ItemPaged"
|
|
61
61
|
self.pager_async: str = yaml_data.get("pagerAsync") or f"{self.code_model.core_library}.paging.AsyncItemPaged"
|
|
62
|
-
self.continuation_token:
|
|
63
|
-
self.next_link_reinjected_parameters:
|
|
62
|
+
self.continuation_token: dict[str, Any] = yaml_data.get("continuationToken", {})
|
|
63
|
+
self.next_link_reinjected_parameters: list[Parameter] = [
|
|
64
64
|
Parameter.from_yaml(p, code_model) for p in yaml_data.get("nextLinkReInjectedParameters", [])
|
|
65
65
|
]
|
|
66
66
|
|
|
@@ -119,8 +119,14 @@ class PagingOperationBase(OperationBase[PagingResponseType]):
|
|
|
119
119
|
def cls_type_annotation(self, *, async_mode: bool, **kwargs: Any) -> str:
|
|
120
120
|
return f"ClsType[{Response.type_annotation(self.responses[0], async_mode=async_mode, **kwargs)}]"
|
|
121
121
|
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
@property
|
|
123
|
+
def has_optional_return_type(self) -> bool:
|
|
124
|
+
return False
|
|
125
|
+
|
|
126
|
+
def imports(self, async_mode: bool, **kwargs: Any) -> FileImport:
|
|
127
|
+
if self.abstract:
|
|
128
|
+
return FileImport(self.code_model)
|
|
129
|
+
file_import = super().imports(async_mode, **kwargs)
|
|
124
130
|
if async_mode:
|
|
125
131
|
default_paging_submodule = f"{'async_' if self.code_model.is_azure_flavor else ''}paging"
|
|
126
132
|
file_import.add_submodule_import(
|
|
@@ -139,16 +145,6 @@ class PagingOperationBase(OperationBase[PagingResponseType]):
|
|
|
139
145
|
and not async_mode
|
|
140
146
|
):
|
|
141
147
|
file_import.merge(self.next_request_builder.imports(**kwargs))
|
|
142
|
-
return file_import
|
|
143
|
-
|
|
144
|
-
@property
|
|
145
|
-
def has_optional_return_type(self) -> bool:
|
|
146
|
-
return False
|
|
147
|
-
|
|
148
|
-
def imports(self, async_mode: bool, **kwargs: Any) -> FileImport:
|
|
149
|
-
if self.abstract:
|
|
150
|
-
return FileImport(self.code_model)
|
|
151
|
-
file_import = self._imports_shared(async_mode, **kwargs)
|
|
152
148
|
file_import.merge(super().imports(async_mode, **kwargs))
|
|
153
149
|
serialize_namespace = kwargs.get("serialize_namespace", self.code_model.namespace)
|
|
154
150
|
if self.code_model.options["tracing"] and self.want_tracing:
|
|
@@ -7,10 +7,8 @@ import abc
|
|
|
7
7
|
from enum import Enum
|
|
8
8
|
|
|
9
9
|
from typing import (
|
|
10
|
-
Dict,
|
|
11
10
|
Any,
|
|
12
11
|
TYPE_CHECKING,
|
|
13
|
-
List,
|
|
14
12
|
Optional,
|
|
15
13
|
TypeVar,
|
|
16
14
|
Union,
|
|
@@ -35,6 +33,7 @@ class ParameterLocation(str, Enum):
|
|
|
35
33
|
ENDPOINT_PATH = "endpointPath"
|
|
36
34
|
QUERY = "query"
|
|
37
35
|
BODY = "body"
|
|
36
|
+
KEYWORD = "keyword"
|
|
38
37
|
OTHER = "other"
|
|
39
38
|
|
|
40
39
|
|
|
@@ -56,7 +55,7 @@ class _ParameterBase(BaseModel, abc.ABC): # pylint: disable=too-many-instance-a
|
|
|
56
55
|
|
|
57
56
|
def __init__(
|
|
58
57
|
self,
|
|
59
|
-
yaml_data:
|
|
58
|
+
yaml_data: dict[str, Any],
|
|
60
59
|
code_model: "CodeModel",
|
|
61
60
|
type: BaseType,
|
|
62
61
|
) -> None:
|
|
@@ -75,13 +74,13 @@ class _ParameterBase(BaseModel, abc.ABC): # pylint: disable=too-many-instance-a
|
|
|
75
74
|
self.grouped_by: Optional[str] = self.yaml_data.get("groupedBy")
|
|
76
75
|
# property matching property name to parameter name for grouping params
|
|
77
76
|
# and flattened body params
|
|
78
|
-
self.property_to_parameter_name: Optional[
|
|
77
|
+
self.property_to_parameter_name: Optional[dict[str, str]] = self.yaml_data.get("propertyToParameterName")
|
|
79
78
|
self.flattened: bool = self.yaml_data.get("flattened", False)
|
|
80
79
|
self.in_flattened_body: bool = self.yaml_data.get("inFlattenedBody", False)
|
|
81
80
|
self.grouper: bool = self.yaml_data.get("grouper", False)
|
|
82
81
|
self.check_client_input: bool = self.yaml_data.get("checkClientInput", False)
|
|
83
82
|
self.added_on: Optional[str] = self.yaml_data.get("addedOn")
|
|
84
|
-
self.api_versions: Optional[
|
|
83
|
+
self.api_versions: Optional[list[str]] = self.yaml_data.get("apiVersions", [])
|
|
85
84
|
self.is_api_version: bool = self.yaml_data.get("isApiVersion", False)
|
|
86
85
|
self.in_overload: bool = self.yaml_data.get("inOverload", False)
|
|
87
86
|
self.default_to_unset_sentinel: bool = self.yaml_data.get("defaultToUnsetSentinel", False)
|
|
@@ -160,7 +159,7 @@ class _ParameterBase(BaseModel, abc.ABC): # pylint: disable=too-many-instance-a
|
|
|
160
159
|
def serialization_type(self, **kwargs: Any) -> str:
|
|
161
160
|
return self.type.serialization_type(**kwargs)
|
|
162
161
|
|
|
163
|
-
def
|
|
162
|
+
def imports(self, async_mode: bool, **kwargs: Any) -> FileImport:
|
|
164
163
|
file_import = FileImport(self.code_model)
|
|
165
164
|
if self.optional and self.client_default_value is None:
|
|
166
165
|
file_import.add_submodule_import("typing", "Optional", ImportType.STDLIB)
|
|
@@ -178,10 +177,6 @@ class _ParameterBase(BaseModel, abc.ABC): # pylint: disable=too-many-instance-a
|
|
|
178
177
|
ImportType.LOCAL,
|
|
179
178
|
TypingSection.TYPING,
|
|
180
179
|
)
|
|
181
|
-
return file_import
|
|
182
|
-
|
|
183
|
-
def imports(self, async_mode: bool, **kwargs: Any) -> FileImport:
|
|
184
|
-
file_import = self._imports_shared(async_mode, **kwargs)
|
|
185
180
|
# special logic for api-version parameter
|
|
186
181
|
if not self.is_api_version:
|
|
187
182
|
file_import.merge(self.type.imports(async_mode=async_mode, **kwargs))
|
|
@@ -193,11 +188,6 @@ class _ParameterBase(BaseModel, abc.ABC): # pylint: disable=too-many-instance-a
|
|
|
193
188
|
)
|
|
194
189
|
return file_import
|
|
195
190
|
|
|
196
|
-
def imports_for_multiapi(self, async_mode: bool, **kwargs: Any) -> FileImport:
|
|
197
|
-
file_import = self._imports_shared(async_mode, **kwargs)
|
|
198
|
-
file_import.merge(self.type.imports_for_multiapi(async_mode=async_mode, **kwargs))
|
|
199
|
-
return file_import
|
|
200
|
-
|
|
201
191
|
@property
|
|
202
192
|
def method_location(self) -> ParameterMethodLocation:
|
|
203
193
|
raise NotImplementedError("Please implement in children")
|
|
@@ -227,7 +217,7 @@ class BodyParameter(_ParameterBase):
|
|
|
227
217
|
"""Body parameter."""
|
|
228
218
|
|
|
229
219
|
@property
|
|
230
|
-
def entries(self) ->
|
|
220
|
+
def entries(self) -> list["BodyParameter"]:
|
|
231
221
|
return [BodyParameter.from_yaml(e, self.code_model) for e in self.yaml_data.get("entries", [])]
|
|
232
222
|
|
|
233
223
|
@property
|
|
@@ -258,7 +248,7 @@ class BodyParameter(_ParameterBase):
|
|
|
258
248
|
return not (self.flattened or self.grouped_by)
|
|
259
249
|
|
|
260
250
|
@property
|
|
261
|
-
def content_types(self) ->
|
|
251
|
+
def content_types(self) -> list[str]:
|
|
262
252
|
return self.yaml_data["contentTypes"]
|
|
263
253
|
|
|
264
254
|
@property
|
|
@@ -280,11 +270,10 @@ class BodyParameter(_ParameterBase):
|
|
|
280
270
|
"prepare_multipart_form_data",
|
|
281
271
|
ImportType.LOCAL,
|
|
282
272
|
)
|
|
283
|
-
file_import.add_submodule_import("typing", "List", ImportType.STDLIB)
|
|
284
273
|
return file_import
|
|
285
274
|
|
|
286
275
|
@classmethod
|
|
287
|
-
def from_yaml(cls, yaml_data:
|
|
276
|
+
def from_yaml(cls, yaml_data: dict[str, Any], code_model: "CodeModel") -> "BodyParameter":
|
|
288
277
|
return cls(
|
|
289
278
|
yaml_data=yaml_data,
|
|
290
279
|
code_model=code_model,
|
|
@@ -300,7 +289,7 @@ class Parameter(_ParameterBase):
|
|
|
300
289
|
|
|
301
290
|
def __init__(
|
|
302
291
|
self,
|
|
303
|
-
yaml_data:
|
|
292
|
+
yaml_data: dict[str, Any],
|
|
304
293
|
code_model: "CodeModel",
|
|
305
294
|
type: BaseType,
|
|
306
295
|
) -> None:
|
|
@@ -364,7 +353,7 @@ class Parameter(_ParameterBase):
|
|
|
364
353
|
return ParameterMethodLocation.POSITIONAL
|
|
365
354
|
|
|
366
355
|
@classmethod
|
|
367
|
-
def from_yaml(cls, yaml_data:
|
|
356
|
+
def from_yaml(cls, yaml_data: dict[str, Any], code_model: "CodeModel"):
|
|
368
357
|
return cls(
|
|
369
358
|
yaml_data=yaml_data,
|
|
370
359
|
code_model=code_model,
|
|
@@ -396,6 +385,8 @@ class ClientParameter(Parameter):
|
|
|
396
385
|
and not self.code_model.options["azure-arm"]
|
|
397
386
|
):
|
|
398
387
|
return ParameterMethodLocation.KEYWORD_ONLY
|
|
388
|
+
if self.location == ParameterLocation.KEYWORD:
|
|
389
|
+
return ParameterMethodLocation.KEYWORD_ONLY
|
|
399
390
|
return ParameterMethodLocation.POSITIONAL
|
|
400
391
|
|
|
401
392
|
|
|
@@ -7,8 +7,6 @@ import logging
|
|
|
7
7
|
from typing import (
|
|
8
8
|
Any,
|
|
9
9
|
Callable,
|
|
10
|
-
Dict,
|
|
11
|
-
List,
|
|
12
10
|
Optional,
|
|
13
11
|
TYPE_CHECKING,
|
|
14
12
|
Union,
|
|
@@ -48,7 +46,7 @@ class ParameterImplementation(Enum):
|
|
|
48
46
|
_LOGGER = logging.getLogger(__name__)
|
|
49
47
|
|
|
50
48
|
|
|
51
|
-
def method_signature_helper(positional:
|
|
49
|
+
def method_signature_helper(positional: list[str], keyword_only: Optional[list[str]], kwarg_params: list[str]):
|
|
52
50
|
keyword_only = keyword_only or []
|
|
53
51
|
return positional + keyword_only + kwarg_params
|
|
54
52
|
|
|
@@ -64,9 +62,9 @@ class _ParameterListBase(
|
|
|
64
62
|
|
|
65
63
|
def __init__(
|
|
66
64
|
self,
|
|
67
|
-
yaml_data:
|
|
65
|
+
yaml_data: dict[str, Any],
|
|
68
66
|
code_model: "CodeModel",
|
|
69
|
-
parameters:
|
|
67
|
+
parameters: list[ParameterType],
|
|
70
68
|
body_parameter: Optional[BodyParameterType] = None,
|
|
71
69
|
) -> None:
|
|
72
70
|
self.yaml_data = yaml_data
|
|
@@ -97,18 +95,18 @@ class _ParameterListBase(
|
|
|
97
95
|
|
|
98
96
|
@staticmethod
|
|
99
97
|
@abstractmethod
|
|
100
|
-
def parameter_creator() -> Callable[[
|
|
98
|
+
def parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], ParameterType]:
|
|
101
99
|
"""Callable for creating parameters"""
|
|
102
100
|
|
|
103
101
|
@staticmethod
|
|
104
102
|
@abstractmethod
|
|
105
|
-
def body_parameter_creator() -> Callable[[
|
|
103
|
+
def body_parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], BodyParameterType]:
|
|
106
104
|
"""Callable for creating body parameters"""
|
|
107
105
|
|
|
108
106
|
@property
|
|
109
|
-
def grouped(self) ->
|
|
107
|
+
def grouped(self) -> list[Union[ParameterType, BodyParameterType]]:
|
|
110
108
|
"""All parameters that are inside a parameter group"""
|
|
111
|
-
params:
|
|
109
|
+
params: list[Union[ParameterType, BodyParameterType]] = [p for p in self.parameters if p.grouped_by]
|
|
112
110
|
if self.has_body and self.body_parameter.grouped_by:
|
|
113
111
|
params.append(self.body_parameter)
|
|
114
112
|
return params
|
|
@@ -123,41 +121,41 @@ class _ParameterListBase(
|
|
|
123
121
|
return bool(self._body_parameter)
|
|
124
122
|
|
|
125
123
|
@property
|
|
126
|
-
def path(self) ->
|
|
124
|
+
def path(self) -> list[ParameterType]:
|
|
127
125
|
"""All path parameters"""
|
|
128
126
|
return [p for p in self.parameters if p.location in (ParameterLocation.PATH, ParameterLocation.ENDPOINT_PATH)]
|
|
129
127
|
|
|
130
128
|
@property
|
|
131
|
-
def query(self) ->
|
|
129
|
+
def query(self) -> list[ParameterType]:
|
|
132
130
|
"""All query parameters"""
|
|
133
131
|
return [p for p in self.parameters if p.location == ParameterLocation.QUERY]
|
|
134
132
|
|
|
135
133
|
@property
|
|
136
|
-
def headers(self) ->
|
|
134
|
+
def headers(self) -> list[ParameterType]:
|
|
137
135
|
"""All header parameters"""
|
|
138
136
|
return [p for p in self.parameters if p.location == ParameterLocation.HEADER]
|
|
139
137
|
|
|
140
138
|
@property
|
|
141
|
-
def constant(self) ->
|
|
139
|
+
def constant(self) -> list[Union[ParameterType, BodyParameterType]]:
|
|
142
140
|
"""All constant parameters"""
|
|
143
141
|
return [p for p in self.parameters if p.constant]
|
|
144
142
|
|
|
145
143
|
@property
|
|
146
|
-
def positional(self) ->
|
|
144
|
+
def positional(self) -> list[Union[ParameterType, BodyParameterType]]:
|
|
147
145
|
"""All positional parameters"""
|
|
148
146
|
return _sort(
|
|
149
147
|
[p for p in self.unsorted_method_params if p.method_location == ParameterMethodLocation.POSITIONAL]
|
|
150
148
|
)
|
|
151
149
|
|
|
152
150
|
@property
|
|
153
|
-
def keyword_only(self) ->
|
|
151
|
+
def keyword_only(self) -> list[Union[ParameterType, BodyParameterType]]:
|
|
154
152
|
"""All keyword only parameters"""
|
|
155
153
|
return _sort(
|
|
156
154
|
[p for p in self.unsorted_method_params if p.method_location == ParameterMethodLocation.KEYWORD_ONLY]
|
|
157
155
|
)
|
|
158
156
|
|
|
159
157
|
@property
|
|
160
|
-
def kwarg(self) ->
|
|
158
|
+
def kwarg(self) -> list[Union[ParameterType, BodyParameterType]]:
|
|
161
159
|
"""All kwargs"""
|
|
162
160
|
return _sort([p for p in self.unsorted_method_params if p.method_location == ParameterMethodLocation.KWARG])
|
|
163
161
|
|
|
@@ -174,9 +172,9 @@ class _ParameterListBase(
|
|
|
174
172
|
"""Whether this is a client or a method parameter"""
|
|
175
173
|
|
|
176
174
|
@property
|
|
177
|
-
def unsorted_method_params(self) ->
|
|
175
|
+
def unsorted_method_params(self) -> list[Union[ParameterType, BodyParameterType]]:
|
|
178
176
|
"""Method params before sorting"""
|
|
179
|
-
method_params:
|
|
177
|
+
method_params: list[Union[ParameterType, BodyParameterType]] = [
|
|
180
178
|
p
|
|
181
179
|
for p in self.parameters
|
|
182
180
|
if p.in_method_signature
|
|
@@ -196,11 +194,11 @@ class _ParameterListBase(
|
|
|
196
194
|
return method_params
|
|
197
195
|
|
|
198
196
|
@property
|
|
199
|
-
def method(self) ->
|
|
197
|
+
def method(self) -> list[Union[ParameterType, BodyParameterType]]:
|
|
200
198
|
"""Sorted method params. First positional, then keyword only, then kwarg"""
|
|
201
199
|
return self.positional + self.keyword_only + self.kwarg
|
|
202
200
|
|
|
203
|
-
def method_signature(self, async_mode: bool, **kwargs: Any) ->
|
|
201
|
+
def method_signature(self, async_mode: bool, **kwargs: Any) -> list[str]:
|
|
204
202
|
"""Method signature for this parameter list."""
|
|
205
203
|
return method_signature_helper(
|
|
206
204
|
positional=self.method_signature_positional(async_mode, **kwargs),
|
|
@@ -208,11 +206,11 @@ class _ParameterListBase(
|
|
|
208
206
|
kwarg_params=self.method_signature_kwargs,
|
|
209
207
|
)
|
|
210
208
|
|
|
211
|
-
def method_signature_positional(self, async_mode: bool, **kwargs: Any) ->
|
|
209
|
+
def method_signature_positional(self, async_mode: bool, **kwargs: Any) -> list[str]:
|
|
212
210
|
"""Signature for positional parameters"""
|
|
213
211
|
return [parameter.method_signature(async_mode, **kwargs) for parameter in self.positional]
|
|
214
212
|
|
|
215
|
-
def method_signature_keyword_only(self, async_mode: bool, **kwargs: Any) ->
|
|
213
|
+
def method_signature_keyword_only(self, async_mode: bool, **kwargs: Any) -> list[str]:
|
|
216
214
|
"""Signature for keyword only parameters"""
|
|
217
215
|
result = [
|
|
218
216
|
parameter.method_signature(async_mode, **kwargs)
|
|
@@ -222,19 +220,19 @@ class _ParameterListBase(
|
|
|
222
220
|
return ["*,"] + result if result else []
|
|
223
221
|
|
|
224
222
|
@property
|
|
225
|
-
def method_signature_kwargs(self) ->
|
|
223
|
+
def method_signature_kwargs(self) -> list[str]:
|
|
226
224
|
"""Signature for kwargs"""
|
|
227
225
|
return ["**kwargs: Any"]
|
|
228
226
|
|
|
229
227
|
@property
|
|
230
|
-
def kwargs_to_pop(self) ->
|
|
228
|
+
def kwargs_to_pop(self) -> list[Union[ParameterType, BodyParameterType]]:
|
|
231
229
|
"""Method kwargs we want to pop"""
|
|
232
230
|
# don't want to pop bodies unless it's a constant
|
|
233
231
|
kwargs_to_pop = self.kwarg
|
|
234
232
|
return [k for k in kwargs_to_pop if k.location != ParameterLocation.BODY or k.constant]
|
|
235
233
|
|
|
236
234
|
@property
|
|
237
|
-
def call(self) ->
|
|
235
|
+
def call(self) -> list[str]:
|
|
238
236
|
"""How to pass in parameters to call the operation"""
|
|
239
237
|
retval = [p.client_name for p in self.method if p.method_location == ParameterMethodLocation.POSITIONAL]
|
|
240
238
|
retval.extend(
|
|
@@ -248,7 +246,7 @@ class _ParameterListBase(
|
|
|
248
246
|
return retval
|
|
249
247
|
|
|
250
248
|
@classmethod
|
|
251
|
-
def from_yaml(cls, yaml_data:
|
|
249
|
+
def from_yaml(cls, yaml_data: dict[str, Any], code_model: "CodeModel"):
|
|
252
250
|
parameters = [cls.parameter_creator()(parameter, code_model) for parameter in yaml_data["parameters"]]
|
|
253
251
|
body_parameter = None
|
|
254
252
|
if yaml_data.get("bodyParameter"):
|
|
@@ -264,11 +262,11 @@ class _ParameterListBase(
|
|
|
264
262
|
class _ParameterList(_ParameterListBase[Parameter, BodyParameter]):
|
|
265
263
|
|
|
266
264
|
@staticmethod
|
|
267
|
-
def parameter_creator() -> Callable[[
|
|
265
|
+
def parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], Parameter]:
|
|
268
266
|
return Parameter.from_yaml
|
|
269
267
|
|
|
270
268
|
@staticmethod
|
|
271
|
-
def body_parameter_creator() -> Callable[[
|
|
269
|
+
def body_parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], BodyParameter]:
|
|
272
270
|
return BodyParameter.from_yaml
|
|
273
271
|
|
|
274
272
|
@property
|
|
@@ -276,7 +274,7 @@ class _ParameterList(_ParameterListBase[Parameter, BodyParameter]):
|
|
|
276
274
|
return "Method"
|
|
277
275
|
|
|
278
276
|
@property
|
|
279
|
-
def path(self) ->
|
|
277
|
+
def path(self) -> list[Parameter]:
|
|
280
278
|
return [k for k in super().path if k.location == ParameterLocation.ENDPOINT_PATH]
|
|
281
279
|
|
|
282
280
|
|
|
@@ -288,11 +286,11 @@ class _RequestBuilderParameterList(_ParameterListBase[RequestBuilderParameter, R
|
|
|
288
286
|
"""_RequestBuilderParameterList is base parameter list for RequestBuilder classes"""
|
|
289
287
|
|
|
290
288
|
@staticmethod
|
|
291
|
-
def parameter_creator() -> Callable[[
|
|
289
|
+
def parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], RequestBuilderParameter]:
|
|
292
290
|
return RequestBuilderParameter.from_yaml
|
|
293
291
|
|
|
294
292
|
@staticmethod
|
|
295
|
-
def body_parameter_creator() -> Callable[[
|
|
293
|
+
def body_parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], RequestBuilderBodyParameter]:
|
|
296
294
|
return RequestBuilderBodyParameter.from_yaml
|
|
297
295
|
|
|
298
296
|
@property
|
|
@@ -302,7 +300,7 @@ class _RequestBuilderParameterList(_ParameterListBase[RequestBuilderParameter, R
|
|
|
302
300
|
@property
|
|
303
301
|
def unsorted_method_params(
|
|
304
302
|
self,
|
|
305
|
-
) ->
|
|
303
|
+
) -> list[Union[RequestBuilderParameter, RequestBuilderBodyParameter]]:
|
|
306
304
|
# don't have access to client params in request builder
|
|
307
305
|
retval = [
|
|
308
306
|
p
|
|
@@ -313,13 +311,13 @@ class _RequestBuilderParameterList(_ParameterListBase[RequestBuilderParameter, R
|
|
|
313
311
|
return retval
|
|
314
312
|
|
|
315
313
|
@property
|
|
316
|
-
def path(self) ->
|
|
314
|
+
def path(self) -> list[RequestBuilderParameter]:
|
|
317
315
|
return [p for p in super().path if p.location != ParameterLocation.ENDPOINT_PATH]
|
|
318
316
|
|
|
319
317
|
@property
|
|
320
318
|
def constant(
|
|
321
319
|
self,
|
|
322
|
-
) ->
|
|
320
|
+
) -> list[Union[RequestBuilderParameter, RequestBuilderBodyParameter]]:
|
|
323
321
|
"""All constant parameters"""
|
|
324
322
|
return [p for p in super().constant if p.location != ParameterLocation.ENDPOINT_PATH]
|
|
325
323
|
|
|
@@ -336,7 +334,7 @@ class _ClientGlobalParameterList(_ParameterListBase[ParameterType, BodyParameter
|
|
|
336
334
|
"""Base parameter list for client and config classes"""
|
|
337
335
|
|
|
338
336
|
@staticmethod
|
|
339
|
-
def body_parameter_creator() -> Callable[[
|
|
337
|
+
def body_parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], BodyParameter]:
|
|
340
338
|
return BodyParameter.from_yaml
|
|
341
339
|
|
|
342
340
|
@property
|
|
@@ -351,7 +349,7 @@ class _ClientGlobalParameterList(_ParameterListBase[ParameterType, BodyParameter
|
|
|
351
349
|
return None
|
|
352
350
|
|
|
353
351
|
@property
|
|
354
|
-
def path(self) ->
|
|
352
|
+
def path(self) -> list[ParameterType]:
|
|
355
353
|
return [p for p in super().path if p.location == ParameterLocation.ENDPOINT_PATH]
|
|
356
354
|
|
|
357
355
|
|
|
@@ -359,11 +357,11 @@ class ClientGlobalParameterList(_ClientGlobalParameterList[ClientParameter]):
|
|
|
359
357
|
"""Parameter list for Client class"""
|
|
360
358
|
|
|
361
359
|
@staticmethod
|
|
362
|
-
def parameter_creator() -> Callable[[
|
|
360
|
+
def parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], ClientParameter]:
|
|
363
361
|
return ClientParameter.from_yaml
|
|
364
362
|
|
|
365
363
|
@property
|
|
366
|
-
def path(self) ->
|
|
364
|
+
def path(self) -> list[ClientParameter]:
|
|
367
365
|
return [p for p in super().path if not p.is_host]
|
|
368
366
|
|
|
369
367
|
@property
|
|
@@ -379,7 +377,7 @@ class ConfigGlobalParameterList(_ClientGlobalParameterList[ConfigParameter]):
|
|
|
379
377
|
"""Parameter list for config"""
|
|
380
378
|
|
|
381
379
|
@staticmethod
|
|
382
|
-
def parameter_creator() -> Callable[[
|
|
380
|
+
def parameter_creator() -> Callable[[dict[str, Any], "CodeModel"], ConfigParameter]:
|
|
383
381
|
return ConfigParameter.from_yaml
|
|
384
382
|
|
|
385
383
|
@property
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# --------------------------------------------------------------------------
|
|
6
6
|
import datetime
|
|
7
7
|
import decimal
|
|
8
|
-
from typing import Any,
|
|
8
|
+
from typing import Any, Optional, Union, TYPE_CHECKING
|
|
9
9
|
|
|
10
10
|
from .base import BaseType
|
|
11
11
|
from .imports import FileImport, ImportType, TypingSection
|
|
@@ -61,7 +61,7 @@ class BooleanType(PrimitiveType):
|
|
|
61
61
|
|
|
62
62
|
|
|
63
63
|
class BinaryType(PrimitiveType):
|
|
64
|
-
def __init__(self, yaml_data:
|
|
64
|
+
def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
|
|
65
65
|
super().__init__(yaml_data=yaml_data, code_model=code_model)
|
|
66
66
|
self.type = "IO"
|
|
67
67
|
|
|
@@ -176,7 +176,7 @@ class AnyObjectType(PrimitiveType):
|
|
|
176
176
|
|
|
177
177
|
|
|
178
178
|
class NumberType(PrimitiveType):
|
|
179
|
-
def __init__(self, yaml_data:
|
|
179
|
+
def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
|
|
180
180
|
super().__init__(yaml_data=yaml_data, code_model=code_model)
|
|
181
181
|
self.precision: Optional[int] = yaml_data.get("precision")
|
|
182
182
|
self.multiple: Optional[int] = yaml_data.get("multipleOf")
|
|
@@ -186,7 +186,7 @@ class NumberType(PrimitiveType):
|
|
|
186
186
|
self.exclusive_minimum: Optional[int] = yaml_data.get("exclusiveMinimum")
|
|
187
187
|
|
|
188
188
|
@property
|
|
189
|
-
def serialization_constraints(self) ->
|
|
189
|
+
def serialization_constraints(self) -> list[str]:
|
|
190
190
|
validation_constraints = [
|
|
191
191
|
(f"maximum_ex={self.maximum}" if self.maximum is not None and self.exclusive_maximum else None),
|
|
192
192
|
(f"maximum={self.maximum}" if self.maximum is not None and not self.exclusive_maximum else None),
|
|
@@ -197,8 +197,8 @@ class NumberType(PrimitiveType):
|
|
|
197
197
|
return [x for x in validation_constraints if x is not None]
|
|
198
198
|
|
|
199
199
|
@property
|
|
200
|
-
def validation(self) -> Optional[
|
|
201
|
-
validation:
|
|
200
|
+
def validation(self) -> Optional[dict[str, Union[bool, int, str]]]:
|
|
201
|
+
validation: dict[str, Union[bool, int, str]] = {}
|
|
202
202
|
if self.maximum is not None:
|
|
203
203
|
if self.exclusive_maximum:
|
|
204
204
|
validation["maximum_ex"] = self.maximum
|
|
@@ -221,7 +221,7 @@ class NumberType(PrimitiveType):
|
|
|
221
221
|
|
|
222
222
|
class IntegerType(NumberType):
|
|
223
223
|
|
|
224
|
-
def __init__(self, yaml_data:
|
|
224
|
+
def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
|
|
225
225
|
super().__init__(yaml_data=yaml_data, code_model=code_model)
|
|
226
226
|
if yaml_data.get("encode") == "string":
|
|
227
227
|
self.encode = "str"
|
|
@@ -294,7 +294,7 @@ class DecimalType(NumberType):
|
|
|
294
294
|
|
|
295
295
|
|
|
296
296
|
class StringType(PrimitiveType):
|
|
297
|
-
def __init__(self, yaml_data:
|
|
297
|
+
def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
|
|
298
298
|
super().__init__(yaml_data=yaml_data, code_model=code_model)
|
|
299
299
|
self.max_length: Optional[int] = yaml_data.get("maxLength")
|
|
300
300
|
self.min_length: Optional[int] = (
|
|
@@ -303,7 +303,7 @@ class StringType(PrimitiveType):
|
|
|
303
303
|
self.pattern: Optional[str] = yaml_data.get("pattern")
|
|
304
304
|
|
|
305
305
|
@property
|
|
306
|
-
def serialization_constraints(self) ->
|
|
306
|
+
def serialization_constraints(self) -> list[str]:
|
|
307
307
|
validation_constraints = [
|
|
308
308
|
f"max_length={self.max_length}" if self.max_length is not None else None,
|
|
309
309
|
f"min_length={self.min_length}" if self.min_length is not None else None,
|
|
@@ -312,8 +312,8 @@ class StringType(PrimitiveType):
|
|
|
312
312
|
return [x for x in validation_constraints if x is not None]
|
|
313
313
|
|
|
314
314
|
@property
|
|
315
|
-
def validation(self) -> Optional[
|
|
316
|
-
validation:
|
|
315
|
+
def validation(self) -> Optional[dict[str, Union[bool, int, str]]]:
|
|
316
|
+
validation: dict[str, Union[bool, int, str]] = {}
|
|
317
317
|
if self.max_length is not None:
|
|
318
318
|
validation["max_length"] = self.max_length
|
|
319
319
|
if self.min_length is not None:
|
|
@@ -338,7 +338,7 @@ class StringType(PrimitiveType):
|
|
|
338
338
|
|
|
339
339
|
|
|
340
340
|
class DatetimeType(PrimitiveType):
|
|
341
|
-
def __init__(self, yaml_data:
|
|
341
|
+
def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
|
|
342
342
|
super().__init__(yaml_data=yaml_data, code_model=code_model)
|
|
343
343
|
self.encode = (
|
|
344
344
|
"rfc3339"
|
|
@@ -564,7 +564,7 @@ class DurationType(PrimitiveType):
|
|
|
564
564
|
|
|
565
565
|
|
|
566
566
|
class ByteArraySchema(PrimitiveType):
|
|
567
|
-
def __init__(self, yaml_data:
|
|
567
|
+
def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
|
|
568
568
|
super().__init__(yaml_data=yaml_data, code_model=code_model)
|
|
569
569
|
self.encode = yaml_data.get("encode", "base64")
|
|
570
570
|
|
|
@@ -585,20 +585,26 @@ class ByteArraySchema(PrimitiveType):
|
|
|
585
585
|
|
|
586
586
|
|
|
587
587
|
class SdkCoreType(PrimitiveType):
|
|
588
|
-
def __init__(self, yaml_data:
|
|
588
|
+
def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
|
|
589
589
|
super().__init__(yaml_data=yaml_data, code_model=code_model)
|
|
590
590
|
self.name = yaml_data.get("name", "")
|
|
591
591
|
self.submodule = yaml_data.get("submodule", "")
|
|
592
|
+
self.is_typing_only = yaml_data.get("isTypingOnly", False)
|
|
592
593
|
|
|
593
594
|
def docstring_type(self, **kwargs: Any) -> str:
|
|
594
|
-
return f"~{self.code_model.core_library}.{self.
|
|
595
|
+
return f"~{self.code_model.core_library}.{self.name}"
|
|
595
596
|
|
|
596
597
|
def type_annotation(self, **kwargs: Any) -> str:
|
|
597
|
-
return self.name
|
|
598
|
+
return f'"{self.name}"' if self.is_typing_only else self.name
|
|
598
599
|
|
|
599
600
|
def imports(self, **kwargs: Any) -> FileImport:
|
|
600
601
|
file_import = super().imports(**kwargs)
|
|
601
|
-
file_import.add_submodule_import(
|
|
602
|
+
file_import.add_submodule_import(
|
|
603
|
+
self.submodule,
|
|
604
|
+
self.name,
|
|
605
|
+
ImportType.SDKCORE,
|
|
606
|
+
typing_section=TypingSection.TYPING if self.is_typing_only else TypingSection.REGULAR,
|
|
607
|
+
)
|
|
602
608
|
return file_import
|
|
603
609
|
|
|
604
610
|
@property
|
|
@@ -610,7 +616,7 @@ class SdkCoreType(PrimitiveType):
|
|
|
610
616
|
|
|
611
617
|
|
|
612
618
|
class MultiPartFileType(PrimitiveType):
|
|
613
|
-
def __init__(self, yaml_data:
|
|
619
|
+
def __init__(self, yaml_data: dict[str, Any], code_model: "CodeModel") -> None:
|
|
614
620
|
super().__init__(yaml_data=yaml_data, code_model=code_model)
|
|
615
621
|
self.name = "FileType"
|
|
616
622
|
|