@autorest/python 6.4.4 → 6.4.6
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/autorest/codegen/models/parameter.py +12 -4
- package/autorest/codegen/serializers/parameter_serializer.py +2 -2
- package/autorest/codegen/templates/metadata.json.jinja2 +8 -10
- package/autorest/codegen/templates/serialization.py.jinja2 +3 -3
- package/autorest/m4reformatter/__init__.py +2 -6
- package/autorest/preprocess/__init__.py +10 -2
- package/package.json +1 -1
- package/requirements.txt +2 -2
|
@@ -140,7 +140,11 @@ class _ParameterBase(
|
|
|
140
140
|
|
|
141
141
|
def type_annotation(self, **kwargs: Any) -> str:
|
|
142
142
|
kwargs["is_operation_file"] = True
|
|
143
|
-
|
|
143
|
+
# special logic for api-version parameter
|
|
144
|
+
if self.is_api_version:
|
|
145
|
+
type_annot = "str"
|
|
146
|
+
else:
|
|
147
|
+
type_annot = self.type.type_annotation(**kwargs)
|
|
144
148
|
if self.optional and self.client_default_value is None:
|
|
145
149
|
return f"Optional[{type_annot}]"
|
|
146
150
|
return type_annot
|
|
@@ -176,9 +180,13 @@ class _ParameterBase(
|
|
|
176
180
|
|
|
177
181
|
def imports(self, async_mode: bool, **kwargs: Any) -> FileImport:
|
|
178
182
|
file_import = self._imports_shared(async_mode, **kwargs)
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
183
|
+
# special logic for api-version parameter
|
|
184
|
+
if not self.is_api_version:
|
|
185
|
+
file_import.merge(
|
|
186
|
+
self.type.imports(
|
|
187
|
+
is_operation_file=True, async_mode=async_mode, **kwargs
|
|
188
|
+
)
|
|
189
|
+
)
|
|
182
190
|
if self.default_to_unset_sentinel:
|
|
183
191
|
file_import.add_submodule_import("typing", "Any", ImportType.STDLIB)
|
|
184
192
|
file_import.define_mypy_type(
|
|
@@ -127,6 +127,7 @@ class ParameterSerializer:
|
|
|
127
127
|
if pop_headers_kwarg != PopKwargType.NO or pop_params_kwarg != PopKwargType.NO:
|
|
128
128
|
retval.append("")
|
|
129
129
|
for kwarg in parameters:
|
|
130
|
+
type_annot = kwarg.type_annotation()
|
|
130
131
|
if kwarg.client_default_value is not None or kwarg.optional:
|
|
131
132
|
if check_client_input and kwarg.check_client_input:
|
|
132
133
|
default_value = f"self._config.{kwarg.client_name}"
|
|
@@ -145,11 +146,10 @@ class ParameterSerializer:
|
|
|
145
146
|
f"_{kwarg_dict}.pop('{kwarg.rest_api_name}', {default_value})"
|
|
146
147
|
)
|
|
147
148
|
retval.append(
|
|
148
|
-
f"{kwarg.client_name}: {
|
|
149
|
+
f"{kwarg.client_name}: {type_annot} = kwargs.pop('{kwarg.client_name}', "
|
|
149
150
|
+ f"{default_value})"
|
|
150
151
|
)
|
|
151
152
|
else:
|
|
152
|
-
type_annot = kwarg.type_annotation()
|
|
153
153
|
retval.append(
|
|
154
154
|
f"{kwarg.client_name}: {type_annot} = kwargs.pop('{kwarg.client_name}')"
|
|
155
155
|
)
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
{% import 'operation_tools.jinja2' as op_tools %}
|
|
2
2
|
{% import 'keywords.jinja2' as keywords %}
|
|
3
|
-
{% set only_path = client.code_model.options["only_path_and_body_params_positional"] %}
|
|
4
|
-
{% set method_location = "keywordOnly" if only_path else "positional" %}
|
|
5
3
|
{
|
|
6
4
|
"chosen_version": {{ chosen_version | tojson }},
|
|
7
5
|
"total_api_version_list": {{ total_api_version_list | tojson }},
|
|
@@ -52,15 +50,15 @@
|
|
|
52
50
|
"description": "API version to use if no profile is provided, or if missing in profile.",
|
|
53
51
|
"docstring_type": "str",
|
|
54
52
|
"required": false,
|
|
55
|
-
"method_location":
|
|
53
|
+
"method_location": "positional"
|
|
56
54
|
},
|
|
57
55
|
{% if not client.has_parameterized_host %}
|
|
58
|
-
"
|
|
56
|
+
"base_url": {
|
|
59
57
|
"signature": {{ client.parameters.host.method_signature(async_mode=False) | tojson }},
|
|
60
58
|
"description": "Service URL",
|
|
61
59
|
"docstring_type": "str",
|
|
62
60
|
"required": false,
|
|
63
|
-
"method_location":
|
|
61
|
+
"method_location": "positional"
|
|
64
62
|
},
|
|
65
63
|
{% endif %}
|
|
66
64
|
"profile": {
|
|
@@ -68,7 +66,7 @@
|
|
|
68
66
|
"description": "A profile definition, from KnownProfiles to dict.",
|
|
69
67
|
"docstring_type": "azure.profiles.KnownProfiles",
|
|
70
68
|
"required": false,
|
|
71
|
-
"method_location":
|
|
69
|
+
"method_location": "positional"
|
|
72
70
|
}
|
|
73
71
|
},
|
|
74
72
|
"async": {
|
|
@@ -77,15 +75,15 @@
|
|
|
77
75
|
"description": "API version to use if no profile is provided, or if missing in profile.",
|
|
78
76
|
"docstring_type": "str",
|
|
79
77
|
"required": false,
|
|
80
|
-
"method_location":
|
|
78
|
+
"method_location": "positional"
|
|
81
79
|
},
|
|
82
80
|
{% if not client.has_parameterized_host %}
|
|
83
|
-
"
|
|
81
|
+
"base_url": {
|
|
84
82
|
"signature": {{ client.parameters.host.method_signature(async_mode=True) | tojson }},
|
|
85
83
|
"description": "Service URL",
|
|
86
84
|
"docstring_type": "str",
|
|
87
85
|
"required": false,
|
|
88
|
-
"method_location":
|
|
86
|
+
"method_location": "positional"
|
|
89
87
|
},
|
|
90
88
|
{% endif %}
|
|
91
89
|
"profile": {
|
|
@@ -93,7 +91,7 @@
|
|
|
93
91
|
"description": "A profile definition, from KnownProfiles to dict.",
|
|
94
92
|
"docstring_type": "azure.profiles.KnownProfiles",
|
|
95
93
|
"required": false,
|
|
96
|
-
"method_location":
|
|
94
|
+
"method_location": "positional"
|
|
97
95
|
}
|
|
98
96
|
}
|
|
99
97
|
}
|
|
@@ -631,7 +631,7 @@ class Serializer(object):
|
|
|
631
631
|
if xml_desc.get("attr", False):
|
|
632
632
|
if xml_ns:
|
|
633
633
|
ET.register_namespace(xml_prefix, xml_ns)
|
|
634
|
-
xml_name = "{}{}".format(xml_ns, xml_name)
|
|
634
|
+
xml_name = "{% raw %}{{{}}}{}{% endraw %}".format(xml_ns, xml_name)
|
|
635
635
|
serialized.set(xml_name, new_attr) # type: ignore
|
|
636
636
|
continue
|
|
637
637
|
if xml_desc.get("text", False):
|
|
@@ -1273,7 +1273,7 @@ def _extract_name_from_internal_type(internal_type):
|
|
|
1273
1273
|
xml_name = internal_type_xml_map.get("name", internal_type.__name__)
|
|
1274
1274
|
xml_ns = internal_type_xml_map.get("ns", None)
|
|
1275
1275
|
if xml_ns:
|
|
1276
|
-
xml_name = "{}{}".format(xml_ns, xml_name)
|
|
1276
|
+
xml_name = "{% raw %}{{{}}}{}{% endraw %}".format(xml_ns, xml_name)
|
|
1277
1277
|
return xml_name
|
|
1278
1278
|
|
|
1279
1279
|
|
|
@@ -1297,7 +1297,7 @@ def xml_key_extractor(attr, attr_desc, data):
|
|
|
1297
1297
|
# Integrate namespace if necessary
|
|
1298
1298
|
xml_ns = xml_desc.get("ns", internal_type_xml_map.get("ns", None))
|
|
1299
1299
|
if xml_ns:
|
|
1300
|
-
xml_name = "{}{}".format(xml_ns, xml_name)
|
|
1300
|
+
xml_name = "{% raw %}{{{}}}{}{% endraw %}".format(xml_ns, xml_name)
|
|
1301
1301
|
|
|
1302
1302
|
# If it's an attribute, that's simple
|
|
1303
1303
|
if xml_desc.get("attr", False):
|
|
@@ -994,11 +994,7 @@ class M4Reformatter(
|
|
|
994
994
|
if name == "$host":
|
|
995
995
|
# I am the non-parameterized endpoint. Modify name based off of flag
|
|
996
996
|
|
|
997
|
-
client_name =
|
|
998
|
-
"endpoint"
|
|
999
|
-
if self.only_path_and_body_parameters_positional
|
|
1000
|
-
else "base_url"
|
|
1001
|
-
)
|
|
997
|
+
client_name = "endpoint" if self.version_tolerant else "base_url"
|
|
1002
998
|
global_parameter["language"]["default"]["description"] = "Service URL."
|
|
1003
999
|
elif (
|
|
1004
1000
|
global_parameter.get("origin") == "modelerfour:synthesized/api-version"
|
|
@@ -1129,7 +1125,7 @@ class M4Reformatter(
|
|
|
1129
1125
|
"skipUrlEncoding": True,
|
|
1130
1126
|
"inOverload": False,
|
|
1131
1127
|
}
|
|
1132
|
-
if self.
|
|
1128
|
+
if self.version_tolerant:
|
|
1133
1129
|
parameters.append(credential)
|
|
1134
1130
|
else:
|
|
1135
1131
|
parameters.insert(0, credential)
|
|
@@ -325,14 +325,22 @@ class PreProcessPlugin(YamlUpdatePlugin): # pylint: disable=abstract-method
|
|
|
325
325
|
code_model: Dict[str, Any],
|
|
326
326
|
yaml_data: Dict[str, Any],
|
|
327
327
|
is_overload: bool = False,
|
|
328
|
+
item_type: Optional[Dict[str, Any]] = None,
|
|
328
329
|
) -> None:
|
|
329
330
|
self.update_lro_operation(code_model, yaml_data, is_overload=is_overload)
|
|
330
|
-
self.update_paging_operation(
|
|
331
|
+
self.update_paging_operation(
|
|
332
|
+
code_model, yaml_data, is_overload=is_overload, item_type=item_type
|
|
333
|
+
)
|
|
331
334
|
yaml_data["discriminator"] = "lropaging"
|
|
332
335
|
for response in yaml_data.get("responses", []):
|
|
333
336
|
response["discriminator"] = "lropaging"
|
|
334
337
|
for overload in yaml_data.get("overloads", []):
|
|
335
|
-
self.update_lro_paging_operation(
|
|
338
|
+
self.update_lro_paging_operation(
|
|
339
|
+
code_model,
|
|
340
|
+
overload,
|
|
341
|
+
is_overload=True,
|
|
342
|
+
item_type=yaml_data["responses"][0]["itemType"],
|
|
343
|
+
)
|
|
336
344
|
|
|
337
345
|
def update_lro_operation(
|
|
338
346
|
self,
|
package/package.json
CHANGED