@autorest/python 6.14.3 → 6.16.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/autorest/__init__.py +2 -93
- package/autorest/black.py +13 -0
- package/autorest/codegen.py +117 -0
- package/autorest/m2r.py +16 -0
- package/autorest/m4reformatter/__init__.py +1 -1
- package/autorest/multiapi/__init__.py +2 -1
- package/autorest/multiapi/serializers/__init__.py +5 -3
- package/autorest/multiclient/__init__.py +2 -1
- package/autorest/postprocess.py +14 -0
- package/autorest/preprocess.py +20 -0
- package/generator/LICENSE +21 -0
- package/generator/README.md +1 -0
- package/generator/dev_requirements.txt +5 -0
- package/generator/pygen/__init__.py +107 -0
- package/generator/pygen/_version.py +7 -0
- package/{autorest/black/__init__.py → generator/pygen/black.py} +2 -7
- package/{autorest → generator/pygen}/codegen/__init__.py +7 -83
- package/{autorest → generator/pygen}/codegen/models/client.py +2 -1
- package/{autorest → generator/pygen}/codegen/models/combined_type.py +1 -1
- package/{autorest → generator/pygen}/codegen/models/model_type.py +1 -1
- package/{autorest → generator/pygen}/codegen/models/operation.py +2 -0
- package/{autorest → generator/pygen}/codegen/models/operation_group.py +1 -1
- package/{autorest → generator/pygen}/codegen/serializers/__init__.py +16 -30
- package/{autorest → generator/pygen}/codegen/serializers/builder_serializer.py +37 -18
- package/{autorest → generator/pygen}/codegen/serializers/client_serializer.py +1 -1
- package/{autorest → generator/pygen}/codegen/serializers/operations_init_serializer.py +1 -1
- package/{autorest → generator/pygen}/codegen/serializers/parameter_serializer.py +1 -1
- package/{autorest → generator/pygen}/codegen/serializers/sample_serializer.py +2 -2
- package/{autorest → generator/pygen}/codegen/serializers/test_serializer.py +48 -24
- package/{autorest → generator/pygen}/codegen/templates/conftest.py.jinja2 +1 -1
- package/{autorest → generator/pygen}/codegen/templates/request_builder.py.jinja2 +2 -2
- package/generator/pygen/codegen/templates/test.py.jinja2 +50 -0
- package/{autorest/m2r/__init__.py → generator/pygen/m2r.py} +5 -10
- package/{autorest → generator/pygen}/postprocess/__init__.py +1 -6
- package/{autorest → generator/pygen}/preprocess/__init__.py +12 -16
- package/{autorest → generator/pygen}/preprocess/python_mappings.py +6 -4
- package/{autorest/_utils.py → generator/pygen/utils.py} +4 -0
- package/generator/pygen.egg-info/PKG-INFO +25 -0
- package/generator/pygen.egg-info/SOURCES.txt +66 -0
- package/generator/pygen.egg-info/dependency_links.txt +1 -0
- package/generator/pygen.egg-info/requires.txt +4 -0
- package/generator/pygen.egg-info/top_level.txt +1 -0
- package/generator/requirements.txt +12 -0
- package/generator/setup.py +55 -0
- package/package.json +11 -12
- package/requirements.txt +1 -1
- package/scripts/__pycache__/venvtools.cpython-38.pyc +0 -0
- package/scripts/copy-generator.js +19 -0
- package/{install.py → scripts/install.py} +3 -5
- package/{prepare.py → scripts/prepare.py} +7 -4
- package/{start.py → scripts/start.py} +1 -1
- package/{venvtools.py → scripts/venvtools.py} +1 -1
- package/autorest/codegen/templates/test.py.jinja2 +0 -26
- package/run_cadl.py +0 -40
- /package/{autorest → generator/pygen}/codegen/_utils.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/__init__.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/base.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/base_builder.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/code_model.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/constant_type.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/credential_types.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/dictionary_type.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/enum_type.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/imports.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/list_type.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/lro_operation.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/lro_paging_operation.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/paging_operation.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/parameter.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/parameter_list.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/primitive_types.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/property.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/request_builder.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/request_builder_parameter.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/response.py +0 -0
- /package/{autorest → generator/pygen}/codegen/models/utils.py +0 -0
- /package/{autorest → generator/pygen}/codegen/serializers/base_serializer.py +0 -0
- /package/{autorest → generator/pygen}/codegen/serializers/enum_serializer.py +0 -0
- /package/{autorest → generator/pygen}/codegen/serializers/general_serializer.py +0 -0
- /package/{autorest → generator/pygen}/codegen/serializers/import_serializer.py +0 -0
- /package/{autorest → generator/pygen}/codegen/serializers/metadata_serializer.py +0 -0
- /package/{autorest → generator/pygen}/codegen/serializers/model_init_serializer.py +0 -0
- /package/{autorest → generator/pygen}/codegen/serializers/model_serializer.py +0 -0
- /package/{autorest → generator/pygen}/codegen/serializers/operation_groups_serializer.py +0 -0
- /package/{autorest → generator/pygen}/codegen/serializers/patch_serializer.py +0 -0
- /package/{autorest → generator/pygen}/codegen/serializers/request_builders_serializer.py +0 -0
- /package/{autorest → generator/pygen}/codegen/serializers/types_serializer.py +0 -0
- /package/{autorest → generator/pygen}/codegen/serializers/utils.py +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/client.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/client_container.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/config.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/config_container.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/enum.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/enum_container.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/init.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/keywords.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/lro_operation.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/lro_paging_operation.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/macros.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/metadata.json.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/model_base.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/model_container.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/model_dpg.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/model_init.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/model_msrest.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/operation.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/operation_group.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/operation_groups_container.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/operation_tools.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/operations_folder_init.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/packaging_templates/CHANGELOG.md.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/packaging_templates/LICENSE.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/packaging_templates/MANIFEST.in.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/packaging_templates/README.md.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/packaging_templates/setup.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/paging_operation.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/patch.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/pkgutil_init.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/request_builders.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/rest_init.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/sample.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/serialization.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/testpreparer.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/types.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/validation.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/vendor.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/codegen/templates/version.py.jinja2 +0 -0
- /package/{autorest → generator/pygen}/postprocess/get_all.py +0 -0
- /package/{autorest → generator/pygen}/postprocess/venvtools.py +0 -0
- /package/{autorest → generator/pygen}/preprocess/helpers.py +0 -0
- /package/{run-python3.js → scripts/run-python3.js} +0 -0
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import copy
|
|
9
9
|
from typing import Callable, Dict, Any, List, Optional
|
|
10
10
|
|
|
11
|
-
from ..
|
|
11
|
+
from ..utils import to_snake_case, extract_original_name
|
|
12
12
|
from .helpers import (
|
|
13
13
|
add_redefined_builtin_info,
|
|
14
14
|
pad_builtin_namespaces,
|
|
@@ -16,8 +16,8 @@ from .helpers import (
|
|
|
16
16
|
)
|
|
17
17
|
from .python_mappings import CADL_RESERVED_WORDS, RESERVED_WORDS, PadType
|
|
18
18
|
|
|
19
|
-
from .. import YamlUpdatePlugin
|
|
20
|
-
from ..
|
|
19
|
+
from .. import YamlUpdatePlugin
|
|
20
|
+
from ..utils import parse_args, get_body_type_for_description, JSON_REGEXP, KNOWN_TYPES, update_enum_value
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
def update_overload_section(
|
|
@@ -235,7 +235,8 @@ class PreProcessPlugin(YamlUpdatePlugin): # pylint: disable=abstract-method
|
|
|
235
235
|
property["clientName"] = self.pad_reserved_words(property["clientName"].lower(), PadType.PROPERTY)
|
|
236
236
|
add_redefined_builtin_info(property["clientName"], property)
|
|
237
237
|
if type.get("name"):
|
|
238
|
-
|
|
238
|
+
pad_type = PadType.MODEL if type["type"] == "model" else PadType.ENUM_CLASS
|
|
239
|
+
name = self.pad_reserved_words(type["name"], pad_type)
|
|
239
240
|
type["name"] = name[0].upper() + name[1:]
|
|
240
241
|
type["description"] = update_description(type.get("description", ""), type["name"])
|
|
241
242
|
type["snakeCaseName"] = to_snake_case(type["name"])
|
|
@@ -243,7 +244,7 @@ class PreProcessPlugin(YamlUpdatePlugin): # pylint: disable=abstract-method
|
|
|
243
244
|
# we're enums
|
|
244
245
|
values_to_add = []
|
|
245
246
|
for value in type["values"]:
|
|
246
|
-
padded_name = self.pad_reserved_words(value["name"].lower(), PadType.
|
|
247
|
+
padded_name = self.pad_reserved_words(value["name"].lower(), PadType.ENUM_VALUE).upper()
|
|
247
248
|
if self.version_tolerant:
|
|
248
249
|
if padded_name[0] in "0123456789":
|
|
249
250
|
padded_name = "ENUM_" + padded_name
|
|
@@ -362,7 +363,12 @@ class PreProcessPlugin(YamlUpdatePlugin): # pylint: disable=abstract-method
|
|
|
362
363
|
yaml_data["groupName"] = self.pad_reserved_words(yaml_data["groupName"], PadType.OPERATION_GROUP)
|
|
363
364
|
yaml_data["groupName"] = to_snake_case(yaml_data["groupName"])
|
|
364
365
|
yaml_data["name"] = yaml_data["name"].lower()
|
|
365
|
-
yaml_data
|
|
366
|
+
if yaml_data.get("isLroInitialOperation") is True:
|
|
367
|
+
yaml_data["name"] = (
|
|
368
|
+
"_" + self.pad_reserved_words(extract_original_name(yaml_data["name"]), PadType.METHOD) + "_initial"
|
|
369
|
+
)
|
|
370
|
+
else:
|
|
371
|
+
yaml_data["name"] = self.pad_reserved_words(yaml_data["name"], PadType.METHOD)
|
|
366
372
|
yaml_data["description"] = update_description(yaml_data["description"], yaml_data["name"])
|
|
367
373
|
yaml_data["summary"] = update_description(yaml_data.get("summary", ""))
|
|
368
374
|
body_parameter = yaml_data.get("bodyParameter")
|
|
@@ -497,16 +503,6 @@ class PreProcessPlugin(YamlUpdatePlugin): # pylint: disable=abstract-method
|
|
|
497
503
|
yaml_data["namespace"] = pad_builtin_namespaces(yaml_data["namespace"])
|
|
498
504
|
|
|
499
505
|
|
|
500
|
-
class PreProcessPluginAutorest(YamlUpdatePluginAutorest, PreProcessPlugin):
|
|
501
|
-
def get_options(self) -> Dict[str, Any]:
|
|
502
|
-
options = {
|
|
503
|
-
"version-tolerant": self._autorestapi.get_boolean_value("version-tolerant"),
|
|
504
|
-
"azure-arm": self._autorestapi.get_boolean_value("azure-arm"),
|
|
505
|
-
"models-mode": self._autorestapi.get_value("models-mode"),
|
|
506
|
-
}
|
|
507
|
-
return {k: v for k, v in options.items() if v is not None}
|
|
508
|
-
|
|
509
|
-
|
|
510
506
|
if __name__ == "__main__":
|
|
511
507
|
# CADL pipeline will call this
|
|
512
508
|
args, unknown_args = parse_args()
|
|
@@ -53,9 +53,10 @@ basic_latin_chars = {
|
|
|
53
53
|
|
|
54
54
|
class PadType(str, Enum):
|
|
55
55
|
MODEL = "Model"
|
|
56
|
+
ENUM_CLASS = "Enum"
|
|
56
57
|
METHOD = "_method"
|
|
57
58
|
PARAMETER = "_parameter"
|
|
58
|
-
|
|
59
|
+
ENUM_VALUE = "_enum"
|
|
59
60
|
PROPERTY = "_property"
|
|
60
61
|
OPERATION_GROUP = "Operations"
|
|
61
62
|
|
|
@@ -112,7 +113,7 @@ RESERVED_WORDS = {
|
|
|
112
113
|
PadType.METHOD: [*_always_reserved],
|
|
113
114
|
PadType.PARAMETER: [
|
|
114
115
|
"self",
|
|
115
|
-
# these are kwargs we've reserved for our
|
|
116
|
+
# these are kwargs we've reserved for our generated operations
|
|
116
117
|
"content_type",
|
|
117
118
|
"accept",
|
|
118
119
|
"cls",
|
|
@@ -175,9 +176,10 @@ RESERVED_WORDS = {
|
|
|
175
176
|
"retry_on_status_codes",
|
|
176
177
|
*_always_reserved,
|
|
177
178
|
],
|
|
178
|
-
PadType.MODEL: [*_always_reserved],
|
|
179
|
+
PadType.MODEL: ["enum", *_always_reserved],
|
|
179
180
|
PadType.PROPERTY: ["self", *_always_reserved],
|
|
180
|
-
PadType.
|
|
181
|
+
PadType.ENUM_CLASS: ["enum", *_always_reserved],
|
|
182
|
+
PadType.ENUM_VALUE: ["mro", *_always_reserved],
|
|
181
183
|
PadType.OPERATION_GROUP: [*_always_reserved],
|
|
182
184
|
}
|
|
183
185
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: pygen
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Core Library for Python Generation
|
|
5
|
+
Home-page: https://github.com/Azure/autorest.python/packages/core
|
|
6
|
+
Author: Microsoft Corporation
|
|
7
|
+
Author-email: azpysdkhelp@microsoft.com
|
|
8
|
+
License: MIT License
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Programming Language :: Python
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Requires-Dist: Jinja2>=2.11
|
|
21
|
+
Requires-Dist: pyyaml
|
|
22
|
+
Requires-Dist: m2r2
|
|
23
|
+
Requires-Dist: black
|
|
24
|
+
|
|
25
|
+
# Core Library for Python Generation
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
setup.py
|
|
4
|
+
pygen/__init__.py
|
|
5
|
+
pygen/_version.py
|
|
6
|
+
pygen/black.py
|
|
7
|
+
pygen/m2r.py
|
|
8
|
+
pygen/utils.py
|
|
9
|
+
pygen.egg-info/PKG-INFO
|
|
10
|
+
pygen.egg-info/SOURCES.txt
|
|
11
|
+
pygen.egg-info/dependency_links.txt
|
|
12
|
+
pygen.egg-info/requires.txt
|
|
13
|
+
pygen.egg-info/top_level.txt
|
|
14
|
+
pygen/codegen/__init__.py
|
|
15
|
+
pygen/codegen/_utils.py
|
|
16
|
+
pygen/codegen/models/__init__.py
|
|
17
|
+
pygen/codegen/models/base.py
|
|
18
|
+
pygen/codegen/models/base_builder.py
|
|
19
|
+
pygen/codegen/models/client.py
|
|
20
|
+
pygen/codegen/models/code_model.py
|
|
21
|
+
pygen/codegen/models/combined_type.py
|
|
22
|
+
pygen/codegen/models/constant_type.py
|
|
23
|
+
pygen/codegen/models/credential_types.py
|
|
24
|
+
pygen/codegen/models/dictionary_type.py
|
|
25
|
+
pygen/codegen/models/enum_type.py
|
|
26
|
+
pygen/codegen/models/imports.py
|
|
27
|
+
pygen/codegen/models/list_type.py
|
|
28
|
+
pygen/codegen/models/lro_operation.py
|
|
29
|
+
pygen/codegen/models/lro_paging_operation.py
|
|
30
|
+
pygen/codegen/models/model_type.py
|
|
31
|
+
pygen/codegen/models/operation.py
|
|
32
|
+
pygen/codegen/models/operation_group.py
|
|
33
|
+
pygen/codegen/models/paging_operation.py
|
|
34
|
+
pygen/codegen/models/parameter.py
|
|
35
|
+
pygen/codegen/models/parameter_list.py
|
|
36
|
+
pygen/codegen/models/primitive_types.py
|
|
37
|
+
pygen/codegen/models/property.py
|
|
38
|
+
pygen/codegen/models/request_builder.py
|
|
39
|
+
pygen/codegen/models/request_builder_parameter.py
|
|
40
|
+
pygen/codegen/models/response.py
|
|
41
|
+
pygen/codegen/models/utils.py
|
|
42
|
+
pygen/codegen/serializers/__init__.py
|
|
43
|
+
pygen/codegen/serializers/base_serializer.py
|
|
44
|
+
pygen/codegen/serializers/builder_serializer.py
|
|
45
|
+
pygen/codegen/serializers/client_serializer.py
|
|
46
|
+
pygen/codegen/serializers/enum_serializer.py
|
|
47
|
+
pygen/codegen/serializers/general_serializer.py
|
|
48
|
+
pygen/codegen/serializers/import_serializer.py
|
|
49
|
+
pygen/codegen/serializers/metadata_serializer.py
|
|
50
|
+
pygen/codegen/serializers/model_init_serializer.py
|
|
51
|
+
pygen/codegen/serializers/model_serializer.py
|
|
52
|
+
pygen/codegen/serializers/operation_groups_serializer.py
|
|
53
|
+
pygen/codegen/serializers/operations_init_serializer.py
|
|
54
|
+
pygen/codegen/serializers/parameter_serializer.py
|
|
55
|
+
pygen/codegen/serializers/patch_serializer.py
|
|
56
|
+
pygen/codegen/serializers/request_builders_serializer.py
|
|
57
|
+
pygen/codegen/serializers/sample_serializer.py
|
|
58
|
+
pygen/codegen/serializers/test_serializer.py
|
|
59
|
+
pygen/codegen/serializers/types_serializer.py
|
|
60
|
+
pygen/codegen/serializers/utils.py
|
|
61
|
+
pygen/postprocess/__init__.py
|
|
62
|
+
pygen/postprocess/get_all.py
|
|
63
|
+
pygen/postprocess/venvtools.py
|
|
64
|
+
pygen/preprocess/__init__.py
|
|
65
|
+
pygen/preprocess/helpers.py
|
|
66
|
+
pygen/preprocess/python_mappings.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
pygen
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
# -------------------------------------------------------------------------
|
|
4
|
+
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
5
|
+
# Licensed under the MIT License. See License.txt in the project root for
|
|
6
|
+
# license information.
|
|
7
|
+
# --------------------------------------------------------------------------
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
import os
|
|
11
|
+
import re
|
|
12
|
+
|
|
13
|
+
from setuptools import setup, find_packages
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# Version extraction inspired from 'requests'
|
|
17
|
+
with open(os.path.join("pygen", "_version.py"), "r") as fd:
|
|
18
|
+
version = re.search(r'^VERSION\s*=\s*[\'"]([^\'"]*)[\'"]', fd.read(), re.MULTILINE).group(1)
|
|
19
|
+
|
|
20
|
+
if not version:
|
|
21
|
+
raise RuntimeError("Cannot find version information")
|
|
22
|
+
|
|
23
|
+
setup(
|
|
24
|
+
name="pygen",
|
|
25
|
+
version=version,
|
|
26
|
+
description="Core Library for Python Generation",
|
|
27
|
+
long_description=open("README.md", "r").read(),
|
|
28
|
+
long_description_content_type="text/markdown",
|
|
29
|
+
license="MIT License",
|
|
30
|
+
author="Microsoft Corporation",
|
|
31
|
+
author_email="azpysdkhelp@microsoft.com",
|
|
32
|
+
url="https://github.com/Azure/autorest.python/packages/core",
|
|
33
|
+
classifiers=[
|
|
34
|
+
"Development Status :: 4 - Beta",
|
|
35
|
+
"Programming Language :: Python",
|
|
36
|
+
"Programming Language :: Python :: 3",
|
|
37
|
+
"Programming Language :: Python :: 3.8",
|
|
38
|
+
"Programming Language :: Python :: 3.9",
|
|
39
|
+
"Programming Language :: Python :: 3.10",
|
|
40
|
+
"Programming Language :: Python :: 3.11",
|
|
41
|
+
"Programming Language :: Python :: 3.12",
|
|
42
|
+
"License :: OSI Approved :: MIT License",
|
|
43
|
+
],
|
|
44
|
+
packages=find_packages(
|
|
45
|
+
exclude=[
|
|
46
|
+
"test",
|
|
47
|
+
]
|
|
48
|
+
),
|
|
49
|
+
install_requires=[
|
|
50
|
+
"Jinja2 >= 2.11", # I need "include" and auto-context + blank line are not indented by default
|
|
51
|
+
"pyyaml",
|
|
52
|
+
"m2r2",
|
|
53
|
+
"black",
|
|
54
|
+
],
|
|
55
|
+
)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autorest/python",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.16.0",
|
|
4
4
|
"description": "The Python extension for generators in AutoRest.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"repository": {
|
|
@@ -19,27 +19,26 @@
|
|
|
19
19
|
},
|
|
20
20
|
"homepage": "https://github.com/Azure/autorest.python/blob/main/README.md",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@autorest/system-requirements": "~1.0.2"
|
|
22
|
+
"@autorest/system-requirements": "~1.0.2",
|
|
23
|
+
"fs-extra": "~11.2.0"
|
|
23
24
|
},
|
|
24
25
|
"devDependencies": {
|
|
25
26
|
"@microsoft.azure/autorest.testserver": "^3.3.46",
|
|
26
|
-
"typescript": "~5.1.3"
|
|
27
|
+
"typescript": "~5.1.3",
|
|
28
|
+
"@azure-tools/typespec-python": "^0.26.0"
|
|
27
29
|
},
|
|
28
30
|
"files": [
|
|
29
31
|
"autorest/**/*.py",
|
|
30
32
|
"autorest/**/*.jinja2",
|
|
33
|
+
"scripts/",
|
|
31
34
|
"setup.py",
|
|
32
|
-
"install.py",
|
|
33
|
-
"prepare.py",
|
|
34
|
-
"start.py",
|
|
35
|
-
"venvtools.py",
|
|
36
|
-
"run-python3.js",
|
|
37
35
|
"requirements.txt",
|
|
38
|
-
"
|
|
36
|
+
"generator/"
|
|
39
37
|
],
|
|
40
38
|
"scripts": {
|
|
41
|
-
"start": "node run-python3.js start.py",
|
|
42
|
-
"
|
|
43
|
-
"
|
|
39
|
+
"start": "node ./scripts/run-python3.js ./scripts/start.py",
|
|
40
|
+
"build": "node ./scripts/copy-generator.js --force",
|
|
41
|
+
"install": "node ./scripts/copy-generator.js && node ./scripts/run-python3.js ./scripts/install.py",
|
|
42
|
+
"debug": "node ./scripts/run-python3.js ./scripts/start.py --debug"
|
|
44
43
|
}
|
|
45
44
|
}
|
package/requirements.txt
CHANGED
|
Binary file
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const fs = require("fs-extra");
|
|
2
|
+
const path = require("path");
|
|
3
|
+
|
|
4
|
+
const force = process.argv[2] === "--force" ? true : false;
|
|
5
|
+
|
|
6
|
+
const typespecModulePath = path.join(__dirname, "..", "node_modules", "@azure-tools", "typespec-python");
|
|
7
|
+
|
|
8
|
+
// Define the source and destination directories
|
|
9
|
+
const sourceDir = path.join(typespecModulePath, "generator");
|
|
10
|
+
const destDir = path.join(__dirname, "..", "generator");
|
|
11
|
+
|
|
12
|
+
// Delete the destination directory if it exists
|
|
13
|
+
if (fs.existsSync(destDir)) {
|
|
14
|
+
if (force) fs.removeSync(destDir);
|
|
15
|
+
else process.exit(0);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Copy the source directory to the destination directory
|
|
19
|
+
fs.copySync(sourceDir, destDir);
|
|
@@ -23,17 +23,15 @@ except ImportError:
|
|
|
23
23
|
|
|
24
24
|
# Now we have pip and Py >= 3.8, go to work
|
|
25
25
|
|
|
26
|
-
import subprocess
|
|
27
26
|
from pathlib import Path
|
|
28
27
|
|
|
29
28
|
from venvtools import ExtendedEnvBuilder, python_run
|
|
30
29
|
|
|
31
|
-
_ROOT_DIR = Path(__file__).parent
|
|
30
|
+
_ROOT_DIR = Path(__file__).parent.parent
|
|
32
31
|
|
|
33
32
|
|
|
34
33
|
def main():
|
|
35
34
|
venv_path = _ROOT_DIR / "venv"
|
|
36
|
-
|
|
37
35
|
if venv_path.exists():
|
|
38
36
|
env_builder = venv.EnvBuilder(with_pip=True)
|
|
39
37
|
venv_context = env_builder.ensure_directories(venv_path)
|
|
@@ -43,8 +41,8 @@ def main():
|
|
|
43
41
|
venv_context = env_builder.context
|
|
44
42
|
|
|
45
43
|
python_run(venv_context, "pip", ["install", "-U", "pip"])
|
|
46
|
-
python_run(venv_context, "pip", ["install", "-r", "requirements.txt"])
|
|
47
|
-
python_run(venv_context, "pip", ["install", "-e",
|
|
44
|
+
python_run(venv_context, "pip", ["install", "-r", f"{_ROOT_DIR}/requirements.txt"])
|
|
45
|
+
python_run(venv_context, "pip", ["install", "-e", f"{_ROOT_DIR}/generator"])
|
|
48
46
|
|
|
49
47
|
|
|
50
48
|
if __name__ == "__main__":
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
# license information.
|
|
7
7
|
# --------------------------------------------------------------------------
|
|
8
8
|
import sys
|
|
9
|
+
import os
|
|
10
|
+
import argparse
|
|
9
11
|
|
|
10
12
|
if not sys.version_info >= (3, 8, 0):
|
|
11
13
|
raise Exception("Autorest for Python extension requires Python 3.8 at least")
|
|
@@ -15,7 +17,7 @@ import venv
|
|
|
15
17
|
|
|
16
18
|
from venvtools import python_run
|
|
17
19
|
|
|
18
|
-
_ROOT_DIR = Path(__file__).parent
|
|
20
|
+
_ROOT_DIR = Path(__file__).parent.parent
|
|
19
21
|
|
|
20
22
|
|
|
21
23
|
def main():
|
|
@@ -26,9 +28,10 @@ def main():
|
|
|
26
28
|
|
|
27
29
|
env_builder = venv.EnvBuilder(with_pip=True)
|
|
28
30
|
venv_context = env_builder.ensure_directories(venv_path)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
try:
|
|
32
|
+
python_run(venv_context, "pip", ["install", "-r", f"{_ROOT_DIR}/dev_requirements.txt"])
|
|
33
|
+
except FileNotFoundError as e:
|
|
34
|
+
raise ValueError(e.filename)
|
|
32
35
|
|
|
33
36
|
|
|
34
37
|
if __name__ == "__main__":
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
{% set prefix_lower = test.prefix|lower %}
|
|
2
|
-
{% set async = "async " if test.is_async else "" %}
|
|
3
|
-
{% set async_suffix = "_async" if test.is_async else "" %}
|
|
4
|
-
# coding=utf-8
|
|
5
|
-
{{ code_model.options['license_header'] }}
|
|
6
|
-
import pytest
|
|
7
|
-
{{ imports }}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@pytest.mark.skip("you may need to update the auto-generated test case before run it")
|
|
11
|
-
class {{ test.test_class_name }}({{ test.base_test_class_name }}):
|
|
12
|
-
{% for testcase in test.testcases %}
|
|
13
|
-
@{{ test.preparer_name }}()
|
|
14
|
-
@recorded_by_proxy{{ async_suffix }}
|
|
15
|
-
{{ async }}def test_{{ testcase.operation.name }}(self, {{ prefix_lower }}_endpoint):
|
|
16
|
-
client = self.{{ test.create_client_name }}(endpoint={{ prefix_lower }}_endpoint)
|
|
17
|
-
{{testcase.response }}client{{ testcase.operation_group_prefix }}.{{ testcase.operation.name }}(
|
|
18
|
-
{% for key, value in testcase.params.items() %}
|
|
19
|
-
{{ key }}={{ value|indent(12) }},
|
|
20
|
-
{% endfor %}
|
|
21
|
-
){{ testcase.operation_suffix }}
|
|
22
|
-
{{ testcase.extra_operation }}
|
|
23
|
-
# please add some check logic here by yourself
|
|
24
|
-
# ...
|
|
25
|
-
|
|
26
|
-
{% endfor %}
|
package/run_cadl.py
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# -------------------------------------------------------------------------
|
|
2
|
-
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
-
# Licensed under the MIT License. See License.txt in the project root for
|
|
4
|
-
# license information.
|
|
5
|
-
# --------------------------------------------------------------------------
|
|
6
|
-
import sys
|
|
7
|
-
import venv
|
|
8
|
-
import logging
|
|
9
|
-
from pathlib import Path
|
|
10
|
-
from venvtools import python_run
|
|
11
|
-
|
|
12
|
-
_ROOT_DIR = Path(__file__).parent
|
|
13
|
-
|
|
14
|
-
_LOGGER = logging.getLogger(__name__)
|
|
15
|
-
|
|
16
|
-
if __name__ == "__main__":
|
|
17
|
-
venv_path = _ROOT_DIR / "venv"
|
|
18
|
-
venv_prexists = venv_path.exists()
|
|
19
|
-
|
|
20
|
-
assert venv_prexists # Otherwise install was not done
|
|
21
|
-
|
|
22
|
-
env_builder = venv.EnvBuilder(with_pip=True)
|
|
23
|
-
venv_context = env_builder.ensure_directories(venv_path)
|
|
24
|
-
|
|
25
|
-
if "--debug" in sys.argv or "--debug=true" in sys.argv:
|
|
26
|
-
try:
|
|
27
|
-
import debugpy # pylint: disable=import-outside-toplevel
|
|
28
|
-
except ImportError:
|
|
29
|
-
raise SystemExit("Please pip install ptvsd in order to use VSCode debugging")
|
|
30
|
-
|
|
31
|
-
# 5678 is the default attach port in the VS Code debug configurations
|
|
32
|
-
debugpy.listen(("localhost", 5678))
|
|
33
|
-
debugpy.wait_for_client()
|
|
34
|
-
breakpoint() # pylint: disable=undefined-variable
|
|
35
|
-
|
|
36
|
-
# run m2r
|
|
37
|
-
python_run(venv_context, "autorest.m2r.__init__", command=sys.argv[1:])
|
|
38
|
-
python_run(venv_context, "autorest.preprocess.__init__", command=sys.argv[1:])
|
|
39
|
-
python_run(venv_context, "autorest.codegen.__init__", command=sys.argv[1:])
|
|
40
|
-
python_run(venv_context, "autorest.black.__init__", command=sys.argv[1:])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|