@autorest/python 6.14.3 → 6.15.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.
Files changed (132) hide show
  1. package/autorest/__init__.py +2 -93
  2. package/autorest/black.py +13 -0
  3. package/autorest/codegen.py +117 -0
  4. package/autorest/m2r.py +16 -0
  5. package/autorest/m4reformatter/__init__.py +1 -1
  6. package/autorest/multiapi/__init__.py +2 -1
  7. package/autorest/multiapi/serializers/__init__.py +5 -3
  8. package/autorest/multiclient/__init__.py +2 -1
  9. package/autorest/postprocess.py +14 -0
  10. package/autorest/preprocess.py +20 -0
  11. package/generator/LICENSE +21 -0
  12. package/generator/README.md +1 -0
  13. package/generator/dev_requirements.txt +5 -0
  14. package/generator/pygen/__init__.py +107 -0
  15. package/generator/pygen/_version.py +7 -0
  16. package/{autorest/black/__init__.py → generator/pygen/black.py} +2 -7
  17. package/{autorest → generator/pygen}/codegen/__init__.py +3 -83
  18. package/{autorest → generator/pygen}/codegen/models/combined_type.py +1 -1
  19. package/{autorest → generator/pygen}/codegen/models/model_type.py +1 -1
  20. package/{autorest → generator/pygen}/codegen/models/operation_group.py +1 -1
  21. package/{autorest → generator/pygen}/codegen/serializers/__init__.py +12 -30
  22. package/{autorest → generator/pygen}/codegen/serializers/builder_serializer.py +1 -1
  23. package/{autorest → generator/pygen}/codegen/serializers/client_serializer.py +1 -1
  24. package/{autorest → generator/pygen}/codegen/serializers/operations_init_serializer.py +1 -1
  25. package/{autorest → generator/pygen}/codegen/serializers/sample_serializer.py +2 -2
  26. package/{autorest → generator/pygen}/codegen/serializers/test_serializer.py +48 -24
  27. package/{autorest → generator/pygen}/codegen/templates/conftest.py.jinja2 +1 -1
  28. package/generator/pygen/codegen/templates/test.py.jinja2 +50 -0
  29. package/{autorest/m2r/__init__.py → generator/pygen/m2r.py} +5 -10
  30. package/{autorest → generator/pygen}/postprocess/__init__.py +1 -6
  31. package/{autorest → generator/pygen}/preprocess/__init__.py +3 -13
  32. package/{autorest → generator/pygen}/preprocess/python_mappings.py +1 -1
  33. package/generator/pygen.egg-info/PKG-INFO +25 -0
  34. package/generator/pygen.egg-info/SOURCES.txt +66 -0
  35. package/generator/pygen.egg-info/dependency_links.txt +1 -0
  36. package/generator/pygen.egg-info/requires.txt +4 -0
  37. package/generator/pygen.egg-info/top_level.txt +1 -0
  38. package/generator/requirements.txt +12 -0
  39. package/generator/setup.py +55 -0
  40. package/package.json +11 -12
  41. package/requirements.txt +1 -1
  42. package/scripts/__pycache__/venvtools.cpython-38.pyc +0 -0
  43. package/scripts/copy-generator.js +19 -0
  44. package/{install.py → scripts/install.py} +3 -5
  45. package/{prepare.py → scripts/prepare.py} +7 -4
  46. package/{start.py → scripts/start.py} +1 -1
  47. package/{venvtools.py → scripts/venvtools.py} +1 -1
  48. package/autorest/codegen/templates/test.py.jinja2 +0 -26
  49. package/run_cadl.py +0 -40
  50. /package/{autorest → generator/pygen}/codegen/_utils.py +0 -0
  51. /package/{autorest → generator/pygen}/codegen/models/__init__.py +0 -0
  52. /package/{autorest → generator/pygen}/codegen/models/base.py +0 -0
  53. /package/{autorest → generator/pygen}/codegen/models/base_builder.py +0 -0
  54. /package/{autorest → generator/pygen}/codegen/models/client.py +0 -0
  55. /package/{autorest → generator/pygen}/codegen/models/code_model.py +0 -0
  56. /package/{autorest → generator/pygen}/codegen/models/constant_type.py +0 -0
  57. /package/{autorest → generator/pygen}/codegen/models/credential_types.py +0 -0
  58. /package/{autorest → generator/pygen}/codegen/models/dictionary_type.py +0 -0
  59. /package/{autorest → generator/pygen}/codegen/models/enum_type.py +0 -0
  60. /package/{autorest → generator/pygen}/codegen/models/imports.py +0 -0
  61. /package/{autorest → generator/pygen}/codegen/models/list_type.py +0 -0
  62. /package/{autorest → generator/pygen}/codegen/models/lro_operation.py +0 -0
  63. /package/{autorest → generator/pygen}/codegen/models/lro_paging_operation.py +0 -0
  64. /package/{autorest → generator/pygen}/codegen/models/operation.py +0 -0
  65. /package/{autorest → generator/pygen}/codegen/models/paging_operation.py +0 -0
  66. /package/{autorest → generator/pygen}/codegen/models/parameter.py +0 -0
  67. /package/{autorest → generator/pygen}/codegen/models/parameter_list.py +0 -0
  68. /package/{autorest → generator/pygen}/codegen/models/primitive_types.py +0 -0
  69. /package/{autorest → generator/pygen}/codegen/models/property.py +0 -0
  70. /package/{autorest → generator/pygen}/codegen/models/request_builder.py +0 -0
  71. /package/{autorest → generator/pygen}/codegen/models/request_builder_parameter.py +0 -0
  72. /package/{autorest → generator/pygen}/codegen/models/response.py +0 -0
  73. /package/{autorest → generator/pygen}/codegen/models/utils.py +0 -0
  74. /package/{autorest → generator/pygen}/codegen/serializers/base_serializer.py +0 -0
  75. /package/{autorest → generator/pygen}/codegen/serializers/enum_serializer.py +0 -0
  76. /package/{autorest → generator/pygen}/codegen/serializers/general_serializer.py +0 -0
  77. /package/{autorest → generator/pygen}/codegen/serializers/import_serializer.py +0 -0
  78. /package/{autorest → generator/pygen}/codegen/serializers/metadata_serializer.py +0 -0
  79. /package/{autorest → generator/pygen}/codegen/serializers/model_init_serializer.py +0 -0
  80. /package/{autorest → generator/pygen}/codegen/serializers/model_serializer.py +0 -0
  81. /package/{autorest → generator/pygen}/codegen/serializers/operation_groups_serializer.py +0 -0
  82. /package/{autorest → generator/pygen}/codegen/serializers/parameter_serializer.py +0 -0
  83. /package/{autorest → generator/pygen}/codegen/serializers/patch_serializer.py +0 -0
  84. /package/{autorest → generator/pygen}/codegen/serializers/request_builders_serializer.py +0 -0
  85. /package/{autorest → generator/pygen}/codegen/serializers/types_serializer.py +0 -0
  86. /package/{autorest → generator/pygen}/codegen/serializers/utils.py +0 -0
  87. /package/{autorest → generator/pygen}/codegen/templates/client.py.jinja2 +0 -0
  88. /package/{autorest → generator/pygen}/codegen/templates/client_container.py.jinja2 +0 -0
  89. /package/{autorest → generator/pygen}/codegen/templates/config.py.jinja2 +0 -0
  90. /package/{autorest → generator/pygen}/codegen/templates/config_container.py.jinja2 +0 -0
  91. /package/{autorest → generator/pygen}/codegen/templates/enum.py.jinja2 +0 -0
  92. /package/{autorest → generator/pygen}/codegen/templates/enum_container.py.jinja2 +0 -0
  93. /package/{autorest → generator/pygen}/codegen/templates/init.py.jinja2 +0 -0
  94. /package/{autorest → generator/pygen}/codegen/templates/keywords.jinja2 +0 -0
  95. /package/{autorest → generator/pygen}/codegen/templates/lro_operation.py.jinja2 +0 -0
  96. /package/{autorest → generator/pygen}/codegen/templates/lro_paging_operation.py.jinja2 +0 -0
  97. /package/{autorest → generator/pygen}/codegen/templates/macros.jinja2 +0 -0
  98. /package/{autorest → generator/pygen}/codegen/templates/metadata.json.jinja2 +0 -0
  99. /package/{autorest → generator/pygen}/codegen/templates/model_base.py.jinja2 +0 -0
  100. /package/{autorest → generator/pygen}/codegen/templates/model_container.py.jinja2 +0 -0
  101. /package/{autorest → generator/pygen}/codegen/templates/model_dpg.py.jinja2 +0 -0
  102. /package/{autorest → generator/pygen}/codegen/templates/model_init.py.jinja2 +0 -0
  103. /package/{autorest → generator/pygen}/codegen/templates/model_msrest.py.jinja2 +0 -0
  104. /package/{autorest → generator/pygen}/codegen/templates/operation.py.jinja2 +0 -0
  105. /package/{autorest → generator/pygen}/codegen/templates/operation_group.py.jinja2 +0 -0
  106. /package/{autorest → generator/pygen}/codegen/templates/operation_groups_container.py.jinja2 +0 -0
  107. /package/{autorest → generator/pygen}/codegen/templates/operation_tools.jinja2 +0 -0
  108. /package/{autorest → generator/pygen}/codegen/templates/operations_folder_init.py.jinja2 +0 -0
  109. /package/{autorest → generator/pygen}/codegen/templates/packaging_templates/CHANGELOG.md.jinja2 +0 -0
  110. /package/{autorest → generator/pygen}/codegen/templates/packaging_templates/LICENSE.jinja2 +0 -0
  111. /package/{autorest → generator/pygen}/codegen/templates/packaging_templates/MANIFEST.in.jinja2 +0 -0
  112. /package/{autorest → generator/pygen}/codegen/templates/packaging_templates/README.md.jinja2 +0 -0
  113. /package/{autorest → generator/pygen}/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +0 -0
  114. /package/{autorest → generator/pygen}/codegen/templates/packaging_templates/setup.py.jinja2 +0 -0
  115. /package/{autorest → generator/pygen}/codegen/templates/paging_operation.py.jinja2 +0 -0
  116. /package/{autorest → generator/pygen}/codegen/templates/patch.py.jinja2 +0 -0
  117. /package/{autorest → generator/pygen}/codegen/templates/pkgutil_init.py.jinja2 +0 -0
  118. /package/{autorest → generator/pygen}/codegen/templates/request_builder.py.jinja2 +0 -0
  119. /package/{autorest → generator/pygen}/codegen/templates/request_builders.py.jinja2 +0 -0
  120. /package/{autorest → generator/pygen}/codegen/templates/rest_init.py.jinja2 +0 -0
  121. /package/{autorest → generator/pygen}/codegen/templates/sample.py.jinja2 +0 -0
  122. /package/{autorest → generator/pygen}/codegen/templates/serialization.py.jinja2 +0 -0
  123. /package/{autorest → generator/pygen}/codegen/templates/testpreparer.py.jinja2 +0 -0
  124. /package/{autorest → generator/pygen}/codegen/templates/types.py.jinja2 +0 -0
  125. /package/{autorest → generator/pygen}/codegen/templates/validation.py.jinja2 +0 -0
  126. /package/{autorest → generator/pygen}/codegen/templates/vendor.py.jinja2 +0 -0
  127. /package/{autorest → generator/pygen}/codegen/templates/version.py.jinja2 +0 -0
  128. /package/{autorest → generator/pygen}/postprocess/get_all.py +0 -0
  129. /package/{autorest → generator/pygen}/postprocess/venvtools.py +0 -0
  130. /package/{autorest → generator/pygen}/preprocess/helpers.py +0 -0
  131. /package/{autorest/_utils.py → generator/pygen/utils.py} +0 -0
  132. /package/{run-python3.js → scripts/run-python3.js} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autorest/python",
3
- "version": "6.14.3",
3
+ "version": "6.15.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.25.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
- "run_cadl.py"
36
+ "generator/"
39
37
  ],
40
38
  "scripts": {
41
- "start": "node run-python3.js start.py",
42
- "install": "node run-python3.js install.py",
43
- "debug": "node run-python3.js start.py --debug"
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
@@ -2,7 +2,6 @@ black==24.4.0
2
2
  click==8.1.3
3
3
  docutils==0.19
4
4
  Jinja2==3.1.4
5
- json-rpc==1.14.0
6
5
  m2r2==0.3.3
7
6
  MarkupSafe==2.1.2
8
7
  mistune==0.8.4
@@ -11,3 +10,4 @@ platformdirs==3.2.0
11
10
  PyYAML==6.0.1
12
11
  tomli==2.0.1
13
12
  setuptools==69.2.0
13
+ json-rpc==1.14.0
@@ -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", str(_ROOT_DIR)])
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
- requirements_path = _ROOT_DIR / "dev_requirements.txt"
30
-
31
- python_run(venv_context, "pip", ["install", "-r", str(requirements_path)])
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__":
@@ -15,7 +15,7 @@ import venv
15
15
 
16
16
  from venvtools import python_run
17
17
 
18
- _ROOT_DIR = Path(__file__).parent
18
+ _ROOT_DIR = Path(__file__).parent.parent
19
19
 
20
20
 
21
21
  def main():
@@ -11,7 +11,7 @@ import sys
11
11
  from pathlib import Path
12
12
 
13
13
 
14
- _ROOT_DIR = Path(__file__).parent
14
+ _ROOT_DIR = Path(__file__).parent.parent
15
15
 
16
16
 
17
17
  class ExtendedEnvBuilder(venv.EnvBuilder):
@@ -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