@autorest/python 5.16.0 → 5.17.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/ChangeLog.md +43 -3
- package/README.md +30 -4
- package/autorest/__init__.py +1 -1
- package/autorest/codegen/__init__.py +48 -209
- package/autorest/codegen/models/__init__.py +116 -83
- package/autorest/codegen/models/base_builder.py +49 -88
- package/autorest/codegen/models/base_model.py +1 -1
- package/autorest/codegen/models/{base_schema.py → base_type.py} +56 -40
- package/autorest/codegen/models/client.py +157 -48
- package/autorest/codegen/models/code_model.py +108 -254
- package/autorest/codegen/models/combined_type.py +107 -0
- package/autorest/codegen/models/{constant_schema.py → constant_type.py} +49 -40
- package/autorest/codegen/models/credential_types.py +224 -0
- package/autorest/codegen/models/{dictionary_schema.py → dictionary_type.py} +41 -31
- package/autorest/codegen/models/enum_type.py +195 -0
- package/autorest/codegen/models/imports.py +23 -0
- package/autorest/codegen/models/list_type.py +134 -0
- package/autorest/codegen/models/lro_operation.py +77 -156
- package/autorest/codegen/models/lro_paging_operation.py +28 -11
- package/autorest/codegen/models/model_type.py +239 -0
- package/autorest/codegen/models/operation.py +303 -269
- package/autorest/codegen/models/operation_group.py +48 -89
- package/autorest/codegen/models/paging_operation.py +80 -123
- package/autorest/codegen/models/parameter.py +289 -396
- package/autorest/codegen/models/parameter_list.py +348 -360
- package/autorest/codegen/models/primitive_types.py +544 -0
- package/autorest/codegen/models/property.py +109 -139
- package/autorest/codegen/models/request_builder.py +105 -88
- package/autorest/codegen/models/request_builder_parameter.py +112 -100
- package/autorest/codegen/models/response.py +325 -0
- package/autorest/codegen/models/utils.py +12 -19
- package/autorest/codegen/serializers/__init__.py +46 -37
- package/autorest/codegen/serializers/builder_serializer.py +604 -1146
- package/autorest/codegen/serializers/client_serializer.py +83 -88
- package/autorest/codegen/serializers/general_serializer.py +5 -64
- package/autorest/codegen/serializers/import_serializer.py +7 -4
- package/autorest/codegen/serializers/metadata_serializer.py +15 -104
- package/autorest/codegen/serializers/model_base_serializer.py +40 -32
- package/autorest/codegen/serializers/model_generic_serializer.py +8 -6
- package/autorest/codegen/serializers/model_init_serializer.py +2 -4
- package/autorest/codegen/serializers/model_python3_serializer.py +22 -16
- package/autorest/codegen/serializers/operation_groups_serializer.py +4 -13
- package/autorest/codegen/serializers/parameter_serializer.py +174 -0
- package/autorest/codegen/serializers/request_builders_serializer.py +12 -29
- package/autorest/codegen/serializers/utils.py +0 -142
- package/autorest/codegen/templates/MANIFEST.in.jinja2 +1 -0
- package/autorest/codegen/templates/{service_client.py.jinja2 → client.py.jinja2} +7 -7
- package/autorest/codegen/templates/config.py.jinja2 +13 -13
- package/autorest/codegen/templates/enum.py.jinja2 +4 -4
- package/autorest/codegen/templates/enum_container.py.jinja2 +1 -1
- package/autorest/codegen/templates/init.py.jinja2 +2 -2
- package/autorest/codegen/templates/lro_operation.py.jinja2 +4 -1
- package/autorest/codegen/templates/lro_paging_operation.py.jinja2 +4 -1
- package/autorest/codegen/templates/metadata.json.jinja2 +33 -33
- package/autorest/codegen/templates/model.py.jinja2 +23 -24
- package/autorest/codegen/templates/model_container.py.jinja2 +2 -1
- package/autorest/codegen/templates/model_init.py.jinja2 +3 -5
- package/autorest/codegen/templates/operation.py.jinja2 +6 -8
- package/autorest/codegen/templates/operation_group.py.jinja2 +7 -7
- package/autorest/codegen/templates/operation_groups_container.py.jinja2 +1 -1
- package/autorest/codegen/templates/operation_tools.jinja2 +8 -2
- package/autorest/codegen/templates/paging_operation.py.jinja2 +2 -2
- package/autorest/codegen/templates/request_builder.py.jinja2 +13 -11
- package/autorest/codegen/templates/setup.py.jinja2 +9 -3
- package/autorest/codegen/templates/vendor.py.jinja2 +1 -1
- package/autorest/jsonrpc/server.py +15 -3
- package/autorest/m4reformatter/__init__.py +1108 -0
- package/autorest/multiapi/models/code_model.py +1 -1
- package/autorest/multiapi/serializers/__init__.py +4 -4
- package/autorest/multiapi/templates/multiapi_config.py.jinja2 +3 -3
- package/autorest/multiapi/templates/multiapi_init.py.jinja2 +2 -2
- package/autorest/multiapi/templates/multiapi_operations_mixin.py.jinja2 +3 -3
- package/autorest/multiapi/templates/multiapi_service_client.py.jinja2 +9 -9
- package/autorest/postprocess/__init__.py +202 -0
- package/autorest/postprocess/get_all.py +19 -0
- package/autorest/postprocess/venvtools.py +73 -0
- package/autorest/preprocess/__init__.py +209 -0
- package/autorest/preprocess/helpers.py +54 -0
- package/autorest/{namer → preprocess}/python_mappings.py +21 -16
- package/package.json +2 -2
- package/autorest/codegen/models/credential_model.py +0 -55
- package/autorest/codegen/models/credential_schema.py +0 -95
- package/autorest/codegen/models/credential_schema_policy.py +0 -73
- package/autorest/codegen/models/enum_schema.py +0 -225
- package/autorest/codegen/models/list_schema.py +0 -135
- package/autorest/codegen/models/object_schema.py +0 -303
- package/autorest/codegen/models/primitive_schemas.py +0 -495
- package/autorest/codegen/models/request_builder_parameter_list.py +0 -249
- package/autorest/codegen/models/schema_request.py +0 -55
- package/autorest/codegen/models/schema_response.py +0 -141
- package/autorest/namer/__init__.py +0 -23
- package/autorest/namer/name_converter.py +0 -509
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{% set disable = " # pylint: disable=too-many-public-methods" if operation_group.operations | length > 20 else "" %}
|
|
2
2
|
{% set base_class = ("(" + operation_group.base_class(async_mode) + ")") if operation_group.base_class(async_mode) else "" %}
|
|
3
3
|
class {{ operation_group.class_name }}{{ base_class }}:{{ disable }}
|
|
4
|
-
{% if not operation_group.
|
|
4
|
+
{% if not operation_group.is_mixin %}
|
|
5
5
|
"""
|
|
6
6
|
.. warning::
|
|
7
7
|
**DO NOT** instantiate this class directly.
|
|
8
8
|
|
|
9
9
|
Instead, you should access the following operations through
|
|
10
|
-
:class:`{{ "~" + code_model.namespace + (".aio." if async_mode else ".") + code_model.
|
|
11
|
-
:attr:`{{ operation_group.
|
|
10
|
+
:class:`{{ "~" + code_model.namespace + (".aio." if async_mode else ".") + code_model.client.name }}`'s
|
|
11
|
+
:attr:`{{ operation_group.property_name }}` attribute.
|
|
12
12
|
"""
|
|
13
13
|
|
|
14
|
-
{% if code_model.
|
|
14
|
+
{% if code_model.public_model_types and code_model.options["models_mode"] %}
|
|
15
15
|
models = _models
|
|
16
16
|
|
|
17
17
|
{% endif %}
|
|
@@ -27,11 +27,11 @@ class {{ operation_group.class_name }}{{ base_class }}:{{ disable }}
|
|
|
27
27
|
|
|
28
28
|
{% set request_builder = operation.request_builder %}
|
|
29
29
|
{% set operation_serializer = get_operation_serializer(operation) %}
|
|
30
|
-
{% if
|
|
30
|
+
{% if operation.operation_type == "lropaging" %}
|
|
31
31
|
{%- macro someop() %}{% include "lro_paging_operation.py.jinja2" %}{% endmacro %}
|
|
32
|
-
{% elif
|
|
32
|
+
{% elif operation.operation_type == "lro" %}
|
|
33
33
|
{%- macro someop() %}{% include "lro_operation.py.jinja2" %}{% endmacro %}
|
|
34
|
-
{% elif
|
|
34
|
+
{% elif operation.operation_type == "paging" %}
|
|
35
35
|
{% macro someop() %}{% include "paging_operation.py.jinja2" %}{% endmacro %}
|
|
36
36
|
{% else %}
|
|
37
37
|
{% macro someop() %}{% include "operation.py.jinja2" %}{% endmacro %}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
# fmt: off
|
|
13
13
|
{% endif %}
|
|
14
14
|
{% for operation_group in operation_groups %}
|
|
15
|
-
{% for request_builder in code_model.request_builders | selectattr("
|
|
15
|
+
{% for request_builder in code_model.request_builders | selectattr("group_name", "equalto", operation_group.property_name) | rejectattr("is_overload") %}
|
|
16
16
|
|
|
17
17
|
{% include "request_builder.py.jinja2" %}
|
|
18
18
|
{% endfor %}
|
|
@@ -16,11 +16,11 @@
|
|
|
16
16
|
|
|
17
17
|
{% endif %}
|
|
18
18
|
{% endfor %}
|
|
19
|
-
{% if serializer.
|
|
19
|
+
{% if serializer.example_template(builder) %}
|
|
20
20
|
|
|
21
21
|
Example:
|
|
22
22
|
.. code-block:: python
|
|
23
|
-
{% for template_line in serializer.
|
|
23
|
+
{% for template_line in serializer.example_template(builder) %}
|
|
24
24
|
{% if template_line %}
|
|
25
25
|
{% set wrap_amount = (template_line | length) - (template_line.lstrip() | length) + 10 %}
|
|
26
26
|
{{ wrap_string(template_line, wrapstring='\n' + " " * wrap_amount, width=(95 - wrap_amount)) }}
|
|
@@ -56,3 +56,9 @@ _SERIALIZER = Serializer()
|
|
|
56
56
|
_SERIALIZER.client_side_validation = False
|
|
57
57
|
{% endif %}
|
|
58
58
|
{% endmacro %}
|
|
59
|
+
|
|
60
|
+
{% macro generate_overloads(operation_serializer, operation) %}
|
|
61
|
+
{% for overload in operation.overloads %}
|
|
62
|
+
{{ operation_serializer.method_signature_and_response_type_annotation(overload) }}
|
|
63
|
+
{{ description(overload, operation_serializer) | indent }}
|
|
64
|
+
{% endfor %}{% endmacro %}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{% import 'operation_tools.jinja2' as op_tools with context %}
|
|
2
2
|
{# actual template starts here #}
|
|
3
|
-
{{ operation_serializer.method_signature_and_response_type_annotation(operation
|
|
4
|
-
{% if operation.
|
|
3
|
+
{{ operation_serializer.method_signature_and_response_type_annotation(operation) }}
|
|
4
|
+
{% if operation.public %}
|
|
5
5
|
{{ op_tools.description(operation, operation_serializer) | indent }}{% endif %}
|
|
6
6
|
{% if not operation.abstract %}
|
|
7
7
|
{% if operation.deprecated %}
|
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
{% import 'keywords.jinja2' as keywords with context %}
|
|
2
2
|
{% import 'operation_tools.jinja2' as op_tools with context %}
|
|
3
|
-
{{ request_builder_serializer.method_signature_and_response_type_annotation(request_builder
|
|
3
|
+
{{ request_builder_serializer.method_signature_and_response_type_annotation(request_builder) }}
|
|
4
4
|
{% if code_model.options["builders_visibility"] == "public" %}
|
|
5
5
|
{{ op_tools.description(request_builder, request_builder_serializer) | indent }}
|
|
6
6
|
{% endif %}
|
|
7
|
-
{% if request_builder.
|
|
7
|
+
{% if not request_builder.is_overload %}
|
|
8
|
+
{% if request_builder.abstract %}
|
|
8
9
|
raise NotImplementedError(
|
|
9
10
|
"You need to write a custom operation for '{{ request_builder.name }}'. "
|
|
10
11
|
"Please refer to https://aka.ms/azsdk/python/dpcodegen/python/customize to learn how to customize."
|
|
11
12
|
)
|
|
12
|
-
{% else %}
|
|
13
|
-
|
|
13
|
+
{% else %}
|
|
14
|
+
{% if request_builder_serializer.pop_kwargs_from_signature(request_builder) %}
|
|
14
15
|
{{ op_tools.serialize(request_builder_serializer.pop_kwargs_from_signature(request_builder)) | indent }}
|
|
15
|
-
|
|
16
|
+
{%- endif -%}
|
|
16
17
|
{% if request_builder_serializer.declare_non_inputtable_constants(request_builder) %}
|
|
17
18
|
{{ op_tools.serialize(request_builder_serializer.declare_non_inputtable_constants(request_builder)) | indent }}
|
|
18
|
-
|
|
19
|
+
{% endif %}
|
|
19
20
|
# Construct URL
|
|
20
21
|
{{ request_builder_serializer.construct_url(request_builder) }}
|
|
21
22
|
{% if request_builder.parameters.path %}
|
|
22
23
|
{{ op_tools.serialize(request_builder_serializer.serialize_path(request_builder)) | indent }}
|
|
23
24
|
_url = _format_url_section(_url, **path_format_arguments)
|
|
24
|
-
|
|
25
|
+
{% endif %}
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
{% if request_builder.parameters.query %}
|
|
27
28
|
{{ op_tools.serialize(request_builder_serializer.serialize_query(request_builder)) | indent }}
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
{% endif %}
|
|
30
|
+
{% if request_builder.parameters.headers %}
|
|
30
31
|
{{ op_tools.serialize(request_builder_serializer.serialize_headers(request_builder)) | indent }}
|
|
31
|
-
|
|
32
|
+
{% endif %}
|
|
32
33
|
{{ op_tools.serialize(request_builder_serializer.create_http_request(request_builder)) | indent }}
|
|
34
|
+
{% endif %}
|
|
33
35
|
{% endif %}
|
|
@@ -7,7 +7,7 @@ import re
|
|
|
7
7
|
{% endif -%}
|
|
8
8
|
from setuptools import setup, find_packages
|
|
9
9
|
|
|
10
|
-
{% set package_name_render = package_name or code_model.
|
|
10
|
+
{% set package_name_render = package_name or code_model.client.name %}
|
|
11
11
|
|
|
12
12
|
PACKAGE_NAME = "{{ package_name_render|lower }}"
|
|
13
13
|
{% if package_mode -%}
|
|
@@ -30,7 +30,7 @@ if not version:
|
|
|
30
30
|
{% else %}
|
|
31
31
|
version = "{{ code_model.options['package_version'] }}"
|
|
32
32
|
{% set description = "%s"|format(package_name_render) %}
|
|
33
|
-
{% set long_description = code_model.description %}
|
|
33
|
+
{% set long_description = code_model.client.description %}
|
|
34
34
|
{% set author_email = "" %}
|
|
35
35
|
{% set url = "" %}
|
|
36
36
|
{% endif -%}
|
|
@@ -65,12 +65,18 @@ setup(
|
|
|
65
65
|
packages=find_packages(
|
|
66
66
|
exclude=[
|
|
67
67
|
"tests",
|
|
68
|
+
{% if pkgutil_names %}
|
|
68
69
|
# Exclude packages that will be covered by PEP420 or nspkg
|
|
70
|
+
{% endif %}
|
|
69
71
|
{%- for pkgutil_name in pkgutil_names %}
|
|
70
72
|
"{{ pkgutil_name }}",
|
|
71
73
|
{%- endfor %}
|
|
72
74
|
]
|
|
73
75
|
),
|
|
76
|
+
include_package_data=True,
|
|
77
|
+
package_data={
|
|
78
|
+
'pytyped': ['py.typed'],
|
|
79
|
+
},
|
|
74
80
|
{% else %}
|
|
75
81
|
packages=find_packages(),
|
|
76
82
|
include_package_data=True,
|
|
@@ -87,7 +93,7 @@ setup(
|
|
|
87
93
|
python_requires=">=3.6",
|
|
88
94
|
{% else %}
|
|
89
95
|
long_description="""\
|
|
90
|
-
{{ code_model.description }}
|
|
96
|
+
{{ code_model.client.description }}
|
|
91
97
|
"""
|
|
92
98
|
{% endif %}
|
|
93
99
|
)
|
|
@@ -30,7 +30,7 @@ def _format_url_section(template, **kwargs):
|
|
|
30
30
|
class MixinABC(ABC):
|
|
31
31
|
"""DO NOT use this class. It is for internal typing use only."""
|
|
32
32
|
_client: "{{ keywords.async_class }}PipelineClient"
|
|
33
|
-
_config: {{ code_model.
|
|
33
|
+
_config: {{ code_model.client.name }}Configuration
|
|
34
34
|
_serialize: "Serializer"
|
|
35
35
|
_deserialize: "Deserializer"
|
|
36
36
|
{% endif %}
|
|
@@ -18,7 +18,15 @@ _LOGGER = logging.getLogger(__name__)
|
|
|
18
18
|
|
|
19
19
|
@dispatcher.add_method
|
|
20
20
|
def GetPluginNames():
|
|
21
|
-
return [
|
|
21
|
+
return [
|
|
22
|
+
"codegen",
|
|
23
|
+
"m2r",
|
|
24
|
+
"preprocess",
|
|
25
|
+
"m4reformatter",
|
|
26
|
+
"black",
|
|
27
|
+
"multiapiscript",
|
|
28
|
+
"postprocess",
|
|
29
|
+
]
|
|
22
30
|
|
|
23
31
|
|
|
24
32
|
@dispatcher.add_method
|
|
@@ -36,10 +44,14 @@ def Process(plugin_name: str, session_id: str) -> bool:
|
|
|
36
44
|
)
|
|
37
45
|
if plugin_name == "m2r":
|
|
38
46
|
from ..m2r import M2R as PluginToLoad
|
|
39
|
-
elif plugin_name == "
|
|
40
|
-
from ..
|
|
47
|
+
elif plugin_name == "preprocess":
|
|
48
|
+
from ..preprocess import PreProcessPlugin as PluginToLoad # type: ignore
|
|
49
|
+
elif plugin_name == "m4reformatter":
|
|
50
|
+
from ..m4reformatter import M4Reformatter as PluginToLoad # type: ignore
|
|
41
51
|
elif plugin_name == "codegen":
|
|
42
52
|
from ..codegen import CodeGenerator as PluginToLoad # type: ignore
|
|
53
|
+
elif plugin_name == "postprocess":
|
|
54
|
+
from ..postprocess import PostProcessPlugin as PluginToLoad # type: ignore
|
|
43
55
|
elif plugin_name == "black":
|
|
44
56
|
from ..black import BlackScriptPlugin as PluginToLoad # type: ignore
|
|
45
57
|
elif plugin_name == "multiapiscript":
|