@azure-tools/typespec-python 0.24.3 → 0.26.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 (137) hide show
  1. package/dist/src/code-model.d.ts.map +1 -1
  2. package/dist/src/code-model.js +3 -6
  3. package/dist/src/code-model.js.map +1 -1
  4. package/dist/src/emitter.d.ts.map +1 -1
  5. package/dist/src/emitter.js +6 -5
  6. package/dist/src/emitter.js.map +1 -1
  7. package/dist/src/external-process.d.ts +0 -9
  8. package/dist/src/external-process.d.ts.map +1 -1
  9. package/dist/src/external-process.js +1 -25
  10. package/dist/src/external-process.js.map +1 -1
  11. package/dist/src/http.d.ts.map +1 -1
  12. package/dist/src/http.js +2 -1
  13. package/dist/src/http.js.map +1 -1
  14. package/dist/src/types.d.ts.map +1 -1
  15. package/dist/src/types.js +2 -0
  16. package/dist/src/types.js.map +1 -1
  17. package/dist/src/utils.js +1 -1
  18. package/dist/src/utils.js.map +1 -1
  19. package/generator/LICENSE +21 -0
  20. package/generator/README.md +1 -0
  21. package/generator/dev_requirements.txt +5 -0
  22. package/generator/pygen/__init__.py +107 -0
  23. package/generator/pygen/_version.py +7 -0
  24. package/generator/pygen/black.py +71 -0
  25. package/generator/pygen/codegen/__init__.py +338 -0
  26. package/generator/pygen/codegen/_utils.py +16 -0
  27. package/generator/pygen/codegen/models/__init__.py +202 -0
  28. package/generator/pygen/codegen/models/base.py +186 -0
  29. package/generator/pygen/codegen/models/base_builder.py +119 -0
  30. package/generator/pygen/codegen/models/client.py +430 -0
  31. package/generator/pygen/codegen/models/code_model.py +239 -0
  32. package/generator/pygen/codegen/models/combined_type.py +149 -0
  33. package/generator/pygen/codegen/models/constant_type.py +129 -0
  34. package/generator/pygen/codegen/models/credential_types.py +221 -0
  35. package/generator/pygen/codegen/models/dictionary_type.py +127 -0
  36. package/generator/pygen/codegen/models/enum_type.py +238 -0
  37. package/generator/pygen/codegen/models/imports.py +291 -0
  38. package/generator/pygen/codegen/models/list_type.py +143 -0
  39. package/generator/pygen/codegen/models/lro_operation.py +143 -0
  40. package/generator/pygen/codegen/models/lro_paging_operation.py +32 -0
  41. package/generator/pygen/codegen/models/model_type.py +361 -0
  42. package/generator/pygen/codegen/models/operation.py +520 -0
  43. package/generator/pygen/codegen/models/operation_group.py +184 -0
  44. package/generator/pygen/codegen/models/paging_operation.py +156 -0
  45. package/generator/pygen/codegen/models/parameter.py +402 -0
  46. package/generator/pygen/codegen/models/parameter_list.py +390 -0
  47. package/generator/pygen/codegen/models/primitive_types.py +626 -0
  48. package/generator/pygen/codegen/models/property.py +175 -0
  49. package/generator/pygen/codegen/models/request_builder.py +189 -0
  50. package/generator/pygen/codegen/models/request_builder_parameter.py +115 -0
  51. package/generator/pygen/codegen/models/response.py +348 -0
  52. package/generator/pygen/codegen/models/utils.py +23 -0
  53. package/generator/pygen/codegen/serializers/__init__.py +574 -0
  54. package/generator/pygen/codegen/serializers/base_serializer.py +21 -0
  55. package/generator/pygen/codegen/serializers/builder_serializer.py +1473 -0
  56. package/generator/pygen/codegen/serializers/client_serializer.py +295 -0
  57. package/generator/pygen/codegen/serializers/enum_serializer.py +15 -0
  58. package/generator/pygen/codegen/serializers/general_serializer.py +212 -0
  59. package/generator/pygen/codegen/serializers/import_serializer.py +127 -0
  60. package/generator/pygen/codegen/serializers/metadata_serializer.py +198 -0
  61. package/generator/pygen/codegen/serializers/model_init_serializer.py +33 -0
  62. package/generator/pygen/codegen/serializers/model_serializer.py +287 -0
  63. package/generator/pygen/codegen/serializers/operation_groups_serializer.py +89 -0
  64. package/generator/pygen/codegen/serializers/operations_init_serializer.py +44 -0
  65. package/generator/pygen/codegen/serializers/parameter_serializer.py +221 -0
  66. package/generator/pygen/codegen/serializers/patch_serializer.py +19 -0
  67. package/generator/pygen/codegen/serializers/request_builders_serializer.py +52 -0
  68. package/generator/pygen/codegen/serializers/sample_serializer.py +163 -0
  69. package/generator/pygen/codegen/serializers/test_serializer.py +287 -0
  70. package/generator/pygen/codegen/serializers/types_serializer.py +31 -0
  71. package/generator/pygen/codegen/serializers/utils.py +68 -0
  72. package/generator/pygen/codegen/templates/client.py.jinja2 +37 -0
  73. package/generator/pygen/codegen/templates/client_container.py.jinja2 +12 -0
  74. package/generator/pygen/codegen/templates/config.py.jinja2 +73 -0
  75. package/generator/pygen/codegen/templates/config_container.py.jinja2 +16 -0
  76. package/generator/pygen/codegen/templates/conftest.py.jinja2 +28 -0
  77. package/generator/pygen/codegen/templates/enum.py.jinja2 +13 -0
  78. package/generator/pygen/codegen/templates/enum_container.py.jinja2 +10 -0
  79. package/generator/pygen/codegen/templates/init.py.jinja2 +24 -0
  80. package/generator/pygen/codegen/templates/keywords.jinja2 +19 -0
  81. package/generator/pygen/codegen/templates/lro_operation.py.jinja2 +16 -0
  82. package/generator/pygen/codegen/templates/lro_paging_operation.py.jinja2 +18 -0
  83. package/generator/pygen/codegen/templates/macros.jinja2 +12 -0
  84. package/generator/pygen/codegen/templates/metadata.json.jinja2 +167 -0
  85. package/generator/pygen/codegen/templates/model_base.py.jinja2 +899 -0
  86. package/generator/pygen/codegen/templates/model_container.py.jinja2 +13 -0
  87. package/generator/pygen/codegen/templates/model_dpg.py.jinja2 +92 -0
  88. package/generator/pygen/codegen/templates/model_init.py.jinja2 +28 -0
  89. package/generator/pygen/codegen/templates/model_msrest.py.jinja2 +92 -0
  90. package/generator/pygen/codegen/templates/operation.py.jinja2 +21 -0
  91. package/generator/pygen/codegen/templates/operation_group.py.jinja2 +75 -0
  92. package/generator/pygen/codegen/templates/operation_groups_container.py.jinja2 +20 -0
  93. package/generator/pygen/codegen/templates/operation_tools.jinja2 +74 -0
  94. package/generator/pygen/codegen/templates/operations_folder_init.py.jinja2 +17 -0
  95. package/generator/pygen/codegen/templates/packaging_templates/CHANGELOG.md.jinja2 +6 -0
  96. package/generator/pygen/codegen/templates/packaging_templates/LICENSE.jinja2 +21 -0
  97. package/generator/pygen/codegen/templates/packaging_templates/MANIFEST.in.jinja2 +8 -0
  98. package/generator/pygen/codegen/templates/packaging_templates/README.md.jinja2 +107 -0
  99. package/generator/pygen/codegen/templates/packaging_templates/dev_requirements.txt.jinja2 +9 -0
  100. package/generator/pygen/codegen/templates/packaging_templates/setup.py.jinja2 +108 -0
  101. package/generator/pygen/codegen/templates/paging_operation.py.jinja2 +21 -0
  102. package/generator/pygen/codegen/templates/patch.py.jinja2 +19 -0
  103. package/generator/pygen/codegen/templates/pkgutil_init.py.jinja2 +1 -0
  104. package/generator/pygen/codegen/templates/request_builder.py.jinja2 +28 -0
  105. package/generator/pygen/codegen/templates/request_builders.py.jinja2 +10 -0
  106. package/generator/pygen/codegen/templates/rest_init.py.jinja2 +12 -0
  107. package/generator/pygen/codegen/templates/sample.py.jinja2 +44 -0
  108. package/generator/pygen/codegen/templates/serialization.py.jinja2 +2006 -0
  109. package/generator/pygen/codegen/templates/test.py.jinja2 +50 -0
  110. package/generator/pygen/codegen/templates/testpreparer.py.jinja2 +26 -0
  111. package/generator/pygen/codegen/templates/types.py.jinja2 +8 -0
  112. package/generator/pygen/codegen/templates/validation.py.jinja2 +38 -0
  113. package/generator/pygen/codegen/templates/vendor.py.jinja2 +98 -0
  114. package/generator/pygen/codegen/templates/version.py.jinja2 +4 -0
  115. package/generator/pygen/m2r.py +65 -0
  116. package/generator/pygen/postprocess/__init__.py +183 -0
  117. package/generator/pygen/postprocess/get_all.py +19 -0
  118. package/generator/pygen/postprocess/venvtools.py +77 -0
  119. package/generator/pygen/preprocess/__init__.py +509 -0
  120. package/generator/pygen/preprocess/helpers.py +27 -0
  121. package/generator/pygen/preprocess/python_mappings.py +224 -0
  122. package/generator/pygen/utils.py +153 -0
  123. package/generator/pygen.egg-info/PKG-INFO +25 -0
  124. package/generator/pygen.egg-info/SOURCES.txt +66 -0
  125. package/generator/pygen.egg-info/dependency_links.txt +1 -0
  126. package/generator/pygen.egg-info/requires.txt +4 -0
  127. package/generator/pygen.egg-info/top_level.txt +1 -0
  128. package/generator/requirements.txt +12 -0
  129. package/generator/setup.py +55 -0
  130. package/package.json +31 -26
  131. package/scripts/__pycache__/venvtools.cpython-38.pyc +0 -0
  132. package/scripts/install.py +49 -0
  133. package/scripts/prepare.py +38 -0
  134. package/scripts/run-python3.cjs +22 -0
  135. package/scripts/run_tsp.py +40 -0
  136. package/scripts/system-requirements.cjs +180 -0
  137. package/scripts/venvtools.py +81 -0
@@ -0,0 +1,224 @@
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
+ from enum import Enum
7
+
8
+ basic_latin_chars = {
9
+ " ": "Space",
10
+ "!": "ExclamationMark",
11
+ '"': "QuotationMark",
12
+ "#": "NumberSign",
13
+ "$": "DollarSign",
14
+ "%": "PercentSign",
15
+ "&": "Ampersand",
16
+ "'": "Apostrophe",
17
+ "(": "LeftParenthesis",
18
+ ")": "RightParenthesis",
19
+ "*": "Asterisk",
20
+ "+": "PlusSign",
21
+ ",": "Comma",
22
+ "-": "HyphenMinus",
23
+ ".": "FullStop",
24
+ "/": "Slash",
25
+ "0": "Zero",
26
+ "1": "One",
27
+ "2": "Two",
28
+ "3": "Three",
29
+ "4": "Four",
30
+ "5": "Five",
31
+ "6": "Six",
32
+ "7": "Seven",
33
+ "8": "Eight",
34
+ "9": "Nine",
35
+ ":": "Colon",
36
+ ";": "Semicolon",
37
+ "<": "LessThanSign",
38
+ "=": "EqualSign",
39
+ ">": "GreaterThanSign",
40
+ "?": "QuestionMark",
41
+ "@": "AtSign",
42
+ "[": "LeftSquareBracket",
43
+ "\\": "Backslash",
44
+ "]": "RightSquareBracket",
45
+ "^": "CircumflexAccent",
46
+ "`": "GraveAccent",
47
+ "{": "LeftCurlyBracket",
48
+ "|": "VerticalBar",
49
+ "}": "RightCurlyBracket",
50
+ "~": "Tilde",
51
+ }
52
+
53
+
54
+ class PadType(str, Enum):
55
+ MODEL = "Model"
56
+ ENUM_CLASS = "Enum"
57
+ METHOD = "_method"
58
+ PARAMETER = "_parameter"
59
+ ENUM_VALUE = "_enum"
60
+ PROPERTY = "_property"
61
+ OPERATION_GROUP = "Operations"
62
+
63
+
64
+ _always_reserved = [
65
+ "and",
66
+ "as",
67
+ "assert",
68
+ "break",
69
+ "class",
70
+ "continue",
71
+ "def",
72
+ "del",
73
+ "elif",
74
+ "else",
75
+ "except",
76
+ "exec",
77
+ "finally",
78
+ "for",
79
+ "from",
80
+ "global",
81
+ "if",
82
+ "import",
83
+ "in",
84
+ "is",
85
+ "lambda",
86
+ "not",
87
+ "or",
88
+ "pass",
89
+ "raise",
90
+ "return",
91
+ "try",
92
+ "while",
93
+ "with",
94
+ "yield",
95
+ "async",
96
+ "await",
97
+ "int",
98
+ ]
99
+
100
+ RESERVED_MODEL_PROPERTIES = [
101
+ "keys",
102
+ "items",
103
+ "values",
104
+ "popitem",
105
+ "clear",
106
+ "update",
107
+ "setdefault",
108
+ "pop",
109
+ "get",
110
+ ]
111
+
112
+ RESERVED_WORDS = {
113
+ PadType.METHOD: [*_always_reserved],
114
+ PadType.PARAMETER: [
115
+ "self",
116
+ # these are kwargs we've reserved for our generated operations
117
+ "content_type",
118
+ "accept",
119
+ "cls",
120
+ "polling",
121
+ "continuation_token", # for LRO calls
122
+ # these are transport kwargs
123
+ # https://github.com/Azure/azure-sdk-for-python/blob/master/sdk/core/azure-core/CLIENT_LIBRARY_DEVELOPER.md#transport
124
+ "connection_timeout",
125
+ "connection_verify",
126
+ "connection_cert",
127
+ "connection_data_block_size",
128
+ "use_env_settings",
129
+ # the following aren't in the readme, but Xiang said these are also transport kwargs
130
+ "read_timeout",
131
+ "proxies",
132
+ "cookies",
133
+ # these are policy kwargs
134
+ # https://github.com/Azure/azure-sdk-for-python/blob/master/sdk/core/azure-core/CLIENT_LIBRARY_DEVELOPER.md#available-policies
135
+ "base_headers",
136
+ "headers",
137
+ "request_id",
138
+ "auto_request_id",
139
+ "base_user_agent",
140
+ "user_agent",
141
+ "user_agent_overwrite",
142
+ "user_agent_use_env",
143
+ "user_agent",
144
+ "sdk_moniker",
145
+ "logging_enable",
146
+ "logger",
147
+ "response_encoding",
148
+ "proxies",
149
+ "raw_request_hook",
150
+ "raw_response_hook",
151
+ "network_span_namer",
152
+ "tracing_attributes",
153
+ "permit_redirects",
154
+ "redirect_max",
155
+ "redirect_remove_headers",
156
+ "redirect_on_status_codes",
157
+ "permit_redirects",
158
+ "redirect_max",
159
+ "redirect_remove_headers",
160
+ "redirect_on_status_codes",
161
+ "retry_total",
162
+ "retry_connect",
163
+ "retry_read",
164
+ "retry_status",
165
+ "retry_backoff_factor",
166
+ "retry_backoff_max",
167
+ "retry_mode",
168
+ "retry_on_status_codes",
169
+ "retry_total",
170
+ "retry_connect",
171
+ "retry_read",
172
+ "retry_status",
173
+ "retry_backoff_factor",
174
+ "retry_backoff_max",
175
+ "retry_mode",
176
+ "retry_on_status_codes",
177
+ *_always_reserved,
178
+ ],
179
+ PadType.MODEL: ["enum", *_always_reserved],
180
+ PadType.PROPERTY: ["self", *_always_reserved],
181
+ PadType.ENUM_CLASS: ["enum", *_always_reserved],
182
+ PadType.ENUM_VALUE: ["mro", *_always_reserved],
183
+ PadType.OPERATION_GROUP: [*_always_reserved],
184
+ }
185
+
186
+ CADL_RESERVED_WORDS = {
187
+ PadType.PARAMETER: ["stream"],
188
+ PadType.PROPERTY: RESERVED_MODEL_PROPERTIES,
189
+ }
190
+
191
+ REDEFINED_BUILTINS = [ # we don't pad, but we need to do lint ignores
192
+ "id",
193
+ "min",
194
+ "max",
195
+ "filter",
196
+ "property",
197
+ ]
198
+
199
+ BUILTIN_PACKAGES = [
200
+ "array",
201
+ "atexit",
202
+ "binascii",
203
+ "builtins",
204
+ "cmath",
205
+ "errno",
206
+ "faulthandler",
207
+ "fcntl",
208
+ "gc",
209
+ "grp",
210
+ "itertools",
211
+ "marshal",
212
+ "math",
213
+ "posix",
214
+ "pwd",
215
+ "pyexpat",
216
+ "select",
217
+ "spwd",
218
+ "sys",
219
+ "syslog",
220
+ "time",
221
+ "unicodedata",
222
+ "xxsubtype",
223
+ "zlib",
224
+ ]
@@ -0,0 +1,153 @@
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
+ from typing import Any, Dict, Tuple, List
7
+ import re
8
+ import argparse
9
+
10
+
11
+ def update_enum_value(name: str, value: Any, description: str, enum_type: Dict[str, Any]) -> Dict[str, Any]:
12
+ return {
13
+ "name": name,
14
+ "type": "enumvalue",
15
+ "value": value,
16
+ "description": description,
17
+ "enumType": enum_type,
18
+ "valueType": enum_type["valueType"],
19
+ }
20
+
21
+
22
+ def to_snake_case(name: str) -> str:
23
+ def replace_upper_characters(m) -> str:
24
+ match_str = m.group().lower()
25
+ if m.start() > 0 and name[m.start() - 1] == "_":
26
+ # we are good if a '_' already exists
27
+ return match_str
28
+ # the first letter should not have _
29
+ prefix = "_" if m.start() > 0 else ""
30
+
31
+ # we will add an extra _ if there are multiple upper case chars together
32
+ next_non_upper_case_char_location = m.start() + len(match_str)
33
+ if (
34
+ len(match_str) > 2
35
+ and len(name) - next_non_upper_case_char_location > 1
36
+ and name[next_non_upper_case_char_location].isalpha()
37
+ ):
38
+ return prefix + match_str[: len(match_str) - 1] + "_" + match_str[len(match_str) - 1]
39
+
40
+ return prefix + match_str
41
+
42
+ result = re.sub("[A-Z]+", replace_upper_characters, name)
43
+ return result.replace(" ", "_").replace("__", "_").replace("-", "")
44
+
45
+
46
+ def parse_args(
47
+ need_cadl_file: bool = True,
48
+ ) -> Tuple[argparse.Namespace, Dict[str, Any]]:
49
+ parser = argparse.ArgumentParser(
50
+ description="Run mypy against target folder. Add a local custom plugin to the path prior to execution. "
51
+ )
52
+ parser.add_argument(
53
+ "--output-folder",
54
+ dest="output_folder",
55
+ help="Output folder for generated SDK",
56
+ required=True,
57
+ )
58
+ parser.add_argument(
59
+ "--cadl-file",
60
+ dest="cadl_file",
61
+ help="Serialized cadl file",
62
+ required=need_cadl_file,
63
+ )
64
+ parser.add_argument(
65
+ "--debug",
66
+ dest="debug",
67
+ help="Debug mode",
68
+ required=False,
69
+ action="store",
70
+ )
71
+ args, unknown_args = parser.parse_known_args()
72
+
73
+ def _get_value(value: Any) -> Any:
74
+ if value == "true":
75
+ return True
76
+ if value == "false":
77
+ return False
78
+ try:
79
+ return int(value)
80
+ except ValueError:
81
+ pass
82
+ return value
83
+
84
+ unknown_args_ret = {
85
+ ua.strip("--").split("=", maxsplit=1)[0]: _get_value( # pylint: disable=bad-str-strip-call
86
+ ua.strip("--").split("=", maxsplit=1)[1] # pylint: disable=bad-str-strip-call
87
+ )
88
+ for ua in unknown_args
89
+ }
90
+ return args, unknown_args_ret
91
+
92
+
93
+ def get_body_type_for_description(body_parameter: Dict[str, Any]) -> str:
94
+ if body_parameter["type"]["type"] == "binary":
95
+ return "binary"
96
+ if body_parameter["type"]["type"] == "string":
97
+ return "string"
98
+ return "JSON"
99
+
100
+
101
+ # used if we want to get a string / binary type etc
102
+ KNOWN_TYPES: Dict[str, Dict[str, Any]] = {
103
+ "string": {"type": "string"},
104
+ "binary": {"type": "binary"},
105
+ "anydict": {"type": "dict", "elementType": {"type": "any"}},
106
+ "any-object": {"type": "any-object"},
107
+ }
108
+
109
+ JSON_REGEXP = re.compile(r"^(application|text)/(.+\+)?json$")
110
+
111
+
112
+ def build_policies(
113
+ is_arm: bool,
114
+ async_mode: bool,
115
+ *,
116
+ is_azure_flavor: bool = False,
117
+ tracing: bool = True,
118
+ ) -> List[str]:
119
+ if is_azure_flavor:
120
+ # for Azure
121
+ async_prefix = "Async" if async_mode else ""
122
+ policies = [
123
+ "policies.RequestIdPolicy(**kwargs)",
124
+ "self._config.headers_policy",
125
+ "self._config.user_agent_policy",
126
+ "self._config.proxy_policy",
127
+ "policies.ContentDecodePolicy(**kwargs)",
128
+ (f"{async_prefix}ARMAutoResourceProviderRegistrationPolicy()" if is_arm else None),
129
+ "self._config.redirect_policy",
130
+ "self._config.retry_policy",
131
+ "self._config.authentication_policy",
132
+ "self._config.custom_hook_policy",
133
+ "self._config.logging_policy",
134
+ "policies.DistributedTracingPolicy(**kwargs)" if tracing else None,
135
+ "policies.SensitiveHeaderCleanupPolicy(**kwargs) if self._config.redirect_policy else None",
136
+ "self._config.http_logging_policy",
137
+ ]
138
+ else:
139
+ # for non-Azure
140
+ policies = [
141
+ "self._config.headers_policy",
142
+ "self._config.user_agent_policy",
143
+ "self._config.proxy_policy",
144
+ "policies.ContentDecodePolicy(**kwargs)",
145
+ "self._config.retry_policy",
146
+ "self._config.authentication_policy",
147
+ "self._config.logging_policy",
148
+ ]
149
+ return [p for p in policies if p]
150
+
151
+
152
+ def extract_original_name(name: str) -> str:
153
+ return name[1 : -len("_initial")]
@@ -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,4 @@
1
+ Jinja2>=2.11
2
+ pyyaml
3
+ m2r2
4
+ black
@@ -0,0 +1 @@
1
+ pygen
@@ -0,0 +1,12 @@
1
+ black==24.4.0
2
+ click==8.1.3
3
+ docutils==0.19
4
+ Jinja2==3.1.4
5
+ m2r2==0.3.3
6
+ MarkupSafe==2.1.2
7
+ mistune==0.8.4
8
+ pathspec==0.11.1
9
+ platformdirs==3.2.0
10
+ PyYAML==6.0.1
11
+ tomli==2.0.1
12
+ setuptools==69.2.0
@@ -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": "@azure-tools/typespec-python",
3
- "version": "0.24.3",
3
+ "version": "0.26.0",
4
4
  "author": "Microsoft Corporation",
5
5
  "description": "TypeSpec emitter for Python SDKs",
6
6
  "homepage": "https://github.com/Azure/autorest.python",
@@ -27,21 +27,22 @@
27
27
  "node": ">=14.0.0"
28
28
  },
29
29
  "files": [
30
- "lib/*.cadl",
31
30
  "dist/**",
32
31
  "!dist/test/**",
33
- "get-autorest-python-path.cjs"
32
+ "generator/**",
33
+ "scripts/**"
34
34
  ],
35
35
  "peerDependencies": {
36
- "@azure-tools/typespec-azure-core": ">=0.43.0 <1.0.0",
37
- "@azure-tools/typespec-azure-resource-manager": ">=0.43.0 <1.0.0",
38
- "@azure-tools/typespec-autorest": ">=0.43.0 <1.0.0",
39
- "@azure-tools/typespec-client-generator-core": ">=0.43.0 <1.0.0",
40
- "@typespec/compiler": ">=0.57.0 <1.0.0",
41
- "@typespec/http": ">=0.57.0 <1.0.0",
42
- "@typespec/rest": ">=0.57.0 <1.0.0",
43
- "@typespec/versioning": ">=0.57.0 <1.0.0",
44
- "@typespec/openapi": ">=0.57.0 <1.0.0"
36
+ "@azure-tools/typespec-azure-core": ">=0.44.0 <1.0.0",
37
+ "@azure-tools/typespec-azure-resource-manager": ">=0.44.0 <1.0.0",
38
+ "@azure-tools/typespec-autorest": ">=0.44.0 <1.0.0",
39
+ "@azure-tools/typespec-client-generator-core": ">=0.44.1 <1.0.0",
40
+ "@azure-tools/typespec-azure-rulesets": ">=0.44.0 <3.0.0",
41
+ "@typespec/compiler": ">=0.58.0 <1.0.0",
42
+ "@typespec/http": ">=0.58.0 <1.0.0",
43
+ "@typespec/rest": ">=0.58.0 <1.0.0",
44
+ "@typespec/versioning": ">=0.58.0 <1.0.0",
45
+ "@typespec/openapi": ">=0.58.0 <1.0.0"
45
46
  },
46
47
  "dependenciesMeta": {
47
48
  "@azure-tools/typespec-client-generator-core": {
@@ -50,30 +51,33 @@
50
51
  },
51
52
  "dependencies": {
52
53
  "js-yaml": "~4.1.0",
53
- "@typespec/openapi3": "~0.57.0",
54
- "@autorest/python": "^6.14.3"
54
+ "@typespec/openapi3": "~0.58.0",
55
+ "@autorest/system-requirements": "~1.0.2",
56
+ "fs-extra": "~11.2.0",
57
+ "semver": "~7.6.2"
55
58
  },
56
59
  "devDependencies": {
57
- "@azure-tools/typespec-azure-resource-manager": "~0.43.0",
58
- "@azure-tools/typespec-autorest": "~0.43.0",
59
- "@azure-tools/cadl-ranch-expect": "~0.14.0",
60
- "@azure-tools/cadl-ranch-specs": "~0.34.0",
60
+ "@azure-tools/typespec-azure-resource-manager": "~0.44.0",
61
+ "@azure-tools/typespec-autorest": "~0.44.0",
62
+ "@azure-tools/cadl-ranch-expect": "~0.14.1",
63
+ "@azure-tools/cadl-ranch-specs": "~0.34.5",
61
64
  "@types/js-yaml": "~4.0.5",
62
65
  "@types/mocha": "~10.0.1",
63
66
  "@types/node": "^18.16.3",
64
67
  "@typespec/eslint-config-typespec": "~0.55.0",
65
- "@typespec/openapi": "~0.57.0",
68
+ "@typespec/openapi": "~0.58.0",
66
69
  "c8": "~7.13.0",
67
70
  "eslint": "^8.57.0",
68
71
  "mocha": "~10.2.0",
69
72
  "rimraf": "~5.0.0",
70
73
  "typescript": "~5.1.3",
71
- "@azure-tools/typespec-azure-core": "~0.43.0",
72
- "@azure-tools/typespec-client-generator-core": "~0.43.0",
73
- "@typespec/compiler": "~0.57.0",
74
- "@typespec/http": "~0.57.0",
75
- "@typespec/rest": "~0.57.0",
76
- "@typespec/versioning": "~0.57.0"
74
+ "@azure-tools/typespec-azure-core": "~0.44.0",
75
+ "@azure-tools/typespec-client-generator-core": "~0.44.1",
76
+ "@typespec/compiler": "~0.58.0",
77
+ "@typespec/http": "~0.58.0",
78
+ "@typespec/rest": "~0.58.0",
79
+ "@typespec/versioning": "~0.58.0",
80
+ "@azure-tools/typespec-azure-rulesets": "0.44.0"
77
81
  },
78
82
  "scripts": {
79
83
  "clean": "rimraf ./dist ./temp",
@@ -82,6 +86,7 @@
82
86
  "test": "mocha",
83
87
  "test-official": "c8 mocha --forbid-only",
84
88
  "lint": "eslint . --ext .ts --max-warnings=0",
85
- "lint:fix": "eslint . --fix --ext .ts"
89
+ "lint:fix": "eslint . --fix --ext .ts",
90
+ "install": "node ./scripts/run-python3.cjs ./scripts/install.py"
86
91
  }
87
92
  }