@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
|
@@ -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
|
|
|
@@ -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 Any,
|
|
6
|
+
from typing import Any, Optional, TYPE_CHECKING, cast, Union
|
|
7
7
|
|
|
8
8
|
from .base import BaseModel
|
|
9
9
|
from .constant_type import ConstantType
|
|
@@ -20,7 +20,7 @@ if TYPE_CHECKING:
|
|
|
20
20
|
class Property(BaseModel): # pylint: disable=too-many-instance-attributes
|
|
21
21
|
def __init__(
|
|
22
22
|
self,
|
|
23
|
-
yaml_data:
|
|
23
|
+
yaml_data: dict[str, Any],
|
|
24
24
|
code_model: "CodeModel",
|
|
25
25
|
type: BaseType,
|
|
26
26
|
) -> None:
|
|
@@ -30,13 +30,13 @@ class Property(BaseModel): # pylint: disable=too-many-instance-attributes
|
|
|
30
30
|
self.type = type
|
|
31
31
|
self.optional: bool = self.yaml_data["optional"]
|
|
32
32
|
self.readonly: bool = self.yaml_data.get("readonly", False)
|
|
33
|
-
self.visibility:
|
|
33
|
+
self.visibility: list[str] = self.yaml_data.get("visibility", [])
|
|
34
34
|
self.is_polymorphic: bool = self.yaml_data.get("isPolymorphic", False)
|
|
35
35
|
self.is_discriminator: bool = yaml_data.get("isDiscriminator", False)
|
|
36
36
|
self.client_default_value = yaml_data.get("clientDefaultValue", None)
|
|
37
37
|
if self.client_default_value is None:
|
|
38
38
|
self.client_default_value = self.type.client_default_value
|
|
39
|
-
self.flattened_names:
|
|
39
|
+
self.flattened_names: list[str] = yaml_data.get("flattenedNames", [])
|
|
40
40
|
self.is_multipart_file_input: bool = yaml_data.get("isMultipartFileInput", False)
|
|
41
41
|
self.flatten = self.yaml_data.get("flatten", False) and not getattr(self.type, "flattened_property", False)
|
|
42
42
|
|
|
@@ -101,7 +101,7 @@ class Property(BaseModel): # pylint: disable=too-many-instance-attributes
|
|
|
101
101
|
return self.is_discriminator and self.is_polymorphic and cast(ConstantType, self.type).value is None
|
|
102
102
|
|
|
103
103
|
@property
|
|
104
|
-
def xml_metadata(self) -> Optional[
|
|
104
|
+
def xml_metadata(self) -> Optional[dict[str, Union[str, bool]]]:
|
|
105
105
|
return self.yaml_data.get("xmlMetadata")
|
|
106
106
|
|
|
107
107
|
def type_annotation(self, *, is_operation_file: bool = False, **kwargs: Any) -> str:
|
|
@@ -127,22 +127,22 @@ class Property(BaseModel): # pylint: disable=too-many-instance-attributes
|
|
|
127
127
|
client_default_value_declaration=client_default_value_declaration,
|
|
128
128
|
)
|
|
129
129
|
|
|
130
|
-
def get_polymorphic_subtypes(self, polymorphic_subtypes:
|
|
130
|
+
def get_polymorphic_subtypes(self, polymorphic_subtypes: list["ModelType"]) -> None:
|
|
131
131
|
from .model_type import ModelType
|
|
132
132
|
|
|
133
133
|
if isinstance(self.type, ModelType):
|
|
134
134
|
self.type.get_polymorphic_subtypes(polymorphic_subtypes)
|
|
135
135
|
|
|
136
136
|
@property
|
|
137
|
-
def validation(self) -> Optional[
|
|
138
|
-
retval:
|
|
137
|
+
def validation(self) -> Optional[dict[str, Any]]:
|
|
138
|
+
retval: dict[str, Any] = {}
|
|
139
139
|
if not self.optional:
|
|
140
140
|
retval["required"] = True
|
|
141
141
|
if self.readonly:
|
|
142
142
|
retval["readonly"] = True
|
|
143
143
|
if self.constant:
|
|
144
144
|
retval["constant"] = True
|
|
145
|
-
retval
|
|
145
|
+
retval |= self.type.validation or {}
|
|
146
146
|
return retval or None
|
|
147
147
|
|
|
148
148
|
def imports(self, **kwargs) -> FileImport:
|
|
@@ -164,7 +164,7 @@ class Property(BaseModel): # pylint: disable=too-many-instance-attributes
|
|
|
164
164
|
@classmethod
|
|
165
165
|
def from_yaml(
|
|
166
166
|
cls,
|
|
167
|
-
yaml_data:
|
|
167
|
+
yaml_data: dict[str, Any],
|
|
168
168
|
code_model: "CodeModel",
|
|
169
169
|
) -> "Property":
|
|
170
170
|
from . import build_type # pylint: disable=import-outside-toplevel
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
from typing import (
|
|
7
7
|
Any,
|
|
8
8
|
Callable,
|
|
9
|
-
Dict,
|
|
10
9
|
TypeVar,
|
|
11
10
|
TYPE_CHECKING,
|
|
12
11
|
Union,
|
|
@@ -38,7 +37,7 @@ ParameterListType = TypeVar(
|
|
|
38
37
|
class RequestBuilderBase(BaseBuilder[ParameterListType, Sequence["RequestBuilder"]]):
|
|
39
38
|
def __init__(
|
|
40
39
|
self,
|
|
41
|
-
yaml_data:
|
|
40
|
+
yaml_data: dict[str, Any],
|
|
42
41
|
code_model: "CodeModel",
|
|
43
42
|
client: "Client",
|
|
44
43
|
name: str,
|
|
@@ -116,13 +115,13 @@ class RequestBuilderBase(BaseBuilder[ParameterListType, Sequence["RequestBuilder
|
|
|
116
115
|
|
|
117
116
|
@staticmethod
|
|
118
117
|
@abstractmethod
|
|
119
|
-
def parameter_list_type() -> Callable[[
|
|
118
|
+
def parameter_list_type() -> Callable[[dict[str, Any], "CodeModel"], ParameterListType]: ...
|
|
120
119
|
|
|
121
120
|
@classmethod
|
|
122
121
|
def get_name(
|
|
123
122
|
cls,
|
|
124
123
|
name: str,
|
|
125
|
-
yaml_data:
|
|
124
|
+
yaml_data: dict[str, Any],
|
|
126
125
|
code_model: "CodeModel",
|
|
127
126
|
client: "Client",
|
|
128
127
|
) -> str:
|
|
@@ -140,7 +139,7 @@ class RequestBuilderBase(BaseBuilder[ParameterListType, Sequence["RequestBuilder
|
|
|
140
139
|
@classmethod
|
|
141
140
|
def from_yaml(
|
|
142
141
|
cls,
|
|
143
|
-
yaml_data:
|
|
142
|
+
yaml_data: dict[str, Any],
|
|
144
143
|
code_model: "CodeModel",
|
|
145
144
|
client: "Client",
|
|
146
145
|
):
|
|
@@ -165,18 +164,18 @@ class RequestBuilderBase(BaseBuilder[ParameterListType, Sequence["RequestBuilder
|
|
|
165
164
|
|
|
166
165
|
class RequestBuilder(RequestBuilderBase[RequestBuilderParameterList]):
|
|
167
166
|
@staticmethod
|
|
168
|
-
def parameter_list_type() -> Callable[[
|
|
167
|
+
def parameter_list_type() -> Callable[[dict[str, Any], "CodeModel"], RequestBuilderParameterList]:
|
|
169
168
|
return RequestBuilderParameterList.from_yaml
|
|
170
169
|
|
|
171
170
|
|
|
172
171
|
class OverloadedRequestBuilder(RequestBuilderBase[OverloadedRequestBuilderParameterList]):
|
|
173
172
|
@staticmethod
|
|
174
|
-
def parameter_list_type() -> Callable[[
|
|
173
|
+
def parameter_list_type() -> Callable[[dict[str, Any], "CodeModel"], OverloadedRequestBuilderParameterList]:
|
|
175
174
|
return OverloadedRequestBuilderParameterList.from_yaml
|
|
176
175
|
|
|
177
176
|
|
|
178
177
|
def get_request_builder(
|
|
179
|
-
yaml_data:
|
|
178
|
+
yaml_data: dict[str, Any], code_model: "CodeModel", client: "Client"
|
|
180
179
|
) -> Union[RequestBuilder, OverloadedRequestBuilder]:
|
|
181
180
|
if yaml_data.get("overloads"):
|
|
182
181
|
return OverloadedRequestBuilder.from_yaml(yaml_data, code_model, client)
|
|
@@ -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 TYPE_CHECKING, Any
|
|
6
|
+
from typing import TYPE_CHECKING, Any
|
|
7
7
|
from .parameter import (
|
|
8
8
|
ParameterLocation,
|
|
9
9
|
ParameterMethodLocation,
|
|
@@ -52,7 +52,7 @@ class RequestBuilderBodyParameter(BodyParameter):
|
|
|
52
52
|
)
|
|
53
53
|
|
|
54
54
|
@classmethod
|
|
55
|
-
def from_yaml(cls, yaml_data:
|
|
55
|
+
def from_yaml(cls, yaml_data: dict[str, Any], code_model: "CodeModel") -> "RequestBuilderBodyParameter":
|
|
56
56
|
return super().from_yaml(yaml_data, code_model) # type: ignore
|
|
57
57
|
|
|
58
58
|
@property
|
|
@@ -67,7 +67,7 @@ class RequestBuilderParameter(Parameter):
|
|
|
67
67
|
|
|
68
68
|
def __init__(
|
|
69
69
|
self,
|
|
70
|
-
yaml_data:
|
|
70
|
+
yaml_data: dict[str, Any],
|
|
71
71
|
code_model: "CodeModel",
|
|
72
72
|
type: BaseType,
|
|
73
73
|
) -> None:
|