@azure-tools/typespec-python 0.28.0 → 0.30.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 (92) hide show
  1. package/dist/scripts/eng/format.d.ts +2 -0
  2. package/dist/scripts/eng/format.d.ts.map +1 -0
  3. package/dist/scripts/eng/format.js +4 -0
  4. package/dist/scripts/eng/format.js.map +1 -0
  5. package/dist/scripts/eng/lint.d.ts +5 -0
  6. package/dist/scripts/eng/lint.d.ts.map +1 -0
  7. package/dist/scripts/eng/lint.js +66 -0
  8. package/dist/scripts/eng/lint.js.map +1 -0
  9. package/dist/scripts/{regenerate.d.ts.map → eng/regenerate.d.ts.map} +1 -1
  10. package/dist/scripts/{regenerate.js → eng/regenerate.js} +33 -30
  11. package/dist/scripts/eng/regenerate.js.map +1 -0
  12. package/dist/scripts/eng/run-tests.d.ts +2 -0
  13. package/dist/scripts/eng/run-tests.d.ts.map +1 -0
  14. package/dist/scripts/eng/run-tests.js +71 -0
  15. package/dist/scripts/eng/run-tests.js.map +1 -0
  16. package/dist/scripts/eng/utils.d.ts +3 -0
  17. package/dist/scripts/eng/utils.d.ts.map +1 -0
  18. package/dist/scripts/eng/utils.js +39 -0
  19. package/dist/scripts/eng/utils.js.map +1 -0
  20. package/dist/scripts/run-python3.d.ts +2 -0
  21. package/dist/scripts/run-python3.d.ts.map +1 -0
  22. package/dist/scripts/run-python3.js +23 -0
  23. package/dist/scripts/run-python3.js.map +1 -0
  24. package/dist/scripts/system-requirements.d.ts +17 -0
  25. package/dist/scripts/system-requirements.d.ts.map +1 -0
  26. package/{scripts/system-requirements.cjs → dist/scripts/system-requirements.js} +80 -97
  27. package/dist/scripts/system-requirements.js.map +1 -0
  28. package/dist/src/code-model.d.ts.map +1 -1
  29. package/dist/src/code-model.js +23 -17
  30. package/dist/src/code-model.js.map +1 -1
  31. package/dist/src/emitter.d.ts.map +1 -1
  32. package/dist/src/emitter.js +14 -3
  33. package/dist/src/emitter.js.map +1 -1
  34. package/dist/src/external-process.js +1 -1
  35. package/dist/src/external-process.js.map +1 -1
  36. package/dist/src/http.js +34 -23
  37. package/dist/src/http.js.map +1 -1
  38. package/dist/src/lib.d.ts +1 -0
  39. package/dist/src/lib.d.ts.map +1 -1
  40. package/dist/src/lib.js +1 -0
  41. package/dist/src/lib.js.map +1 -1
  42. package/dist/src/types.d.ts +7 -1
  43. package/dist/src/types.d.ts.map +1 -1
  44. package/dist/src/types.js +42 -7
  45. package/dist/src/types.js.map +1 -1
  46. package/dist/src/utils.d.ts +3 -3
  47. package/dist/src/utils.d.ts.map +1 -1
  48. package/dist/src/utils.js +11 -13
  49. package/dist/src/utils.js.map +1 -1
  50. package/generator/pygen/black.py +2 -3
  51. package/generator/pygen/codegen/models/__init__.py +2 -0
  52. package/generator/pygen/codegen/models/code_model.py +2 -4
  53. package/generator/pygen/codegen/models/combined_type.py +1 -1
  54. package/generator/pygen/codegen/models/credential_types.py +7 -14
  55. package/generator/pygen/codegen/models/enum_type.py +1 -1
  56. package/generator/pygen/codegen/models/lro_operation.py +0 -1
  57. package/generator/pygen/codegen/models/lro_paging_operation.py +1 -1
  58. package/generator/pygen/codegen/models/model_type.py +6 -9
  59. package/generator/pygen/codegen/models/operation.py +13 -16
  60. package/generator/pygen/codegen/models/paging_operation.py +0 -1
  61. package/generator/pygen/codegen/models/parameter_list.py +2 -5
  62. package/generator/pygen/codegen/models/primitive_types.py +35 -3
  63. package/generator/pygen/codegen/models/property.py +1 -9
  64. package/generator/pygen/codegen/serializers/__init__.py +1 -1
  65. package/generator/pygen/codegen/serializers/builder_serializer.py +12 -13
  66. package/generator/pygen/codegen/serializers/general_serializer.py +2 -2
  67. package/generator/pygen/codegen/serializers/model_serializer.py +2 -0
  68. package/generator/pygen/codegen/serializers/sample_serializer.py +20 -15
  69. package/generator/pygen/codegen/templates/model_base.py.jinja2 +30 -18
  70. package/generator/pygen/codegen/templates/vendor.py.jinja2 +0 -2
  71. package/generator/pygen/m2r.py +1 -1
  72. package/generator/pygen/postprocess/__init__.py +2 -2
  73. package/generator/pygen/postprocess/venvtools.py +1 -3
  74. package/generator/pygen/preprocess/__init__.py +1 -1
  75. package/generator/pygen/utils.py +1 -3
  76. package/generator/setup.py +1 -1
  77. package/package.json +18 -25
  78. package/scripts/__pycache__/venvtools.cpython-310.pyc +0 -0
  79. package/scripts/eng/format.ts +5 -0
  80. package/scripts/eng/lint.ts +75 -0
  81. package/scripts/eng/mypy.ini +38 -0
  82. package/scripts/eng/pylintrc +58 -0
  83. package/scripts/eng/pyrightconfig.json +6 -0
  84. package/scripts/{regenerate.ts → eng/regenerate.ts} +45 -33
  85. package/scripts/eng/run-tests.ts +80 -0
  86. package/scripts/eng/utils.ts +38 -0
  87. package/scripts/run-python3.ts +25 -0
  88. package/scripts/run_tsp.py +7 -5
  89. package/scripts/system-requirements.ts +253 -0
  90. package/dist/scripts/regenerate.js.map +0 -1
  91. package/scripts/run-python3.cjs +0 -22
  92. /package/dist/scripts/{regenerate.d.ts → eng/regenerate.d.ts} +0 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../scripts/eng/format.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ /* eslint-disable no-console */
2
+ import { runCommand } from "./utils.js";
3
+ runCommand("black .", "black");
4
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../scripts/eng/format.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function pylint(): void;
2
+ export declare function mypy(): void;
3
+ export declare function pyright(): void;
4
+ export declare function eslint(): void;
5
+ //# sourceMappingURL=lint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../../scripts/eng/lint.ts"],"names":[],"mappings":"AAuCA,wBAAgB,MAAM,SAErB;AAED,wBAAgB,IAAI,SAEnB;AAED,wBAAgB,OAAO,SAEtB;AAED,wBAAgB,MAAM,SAIrB"}
@@ -0,0 +1,66 @@
1
+ /* eslint-disable no-console */
2
+ import yargs from "yargs";
3
+ import { hideBin } from "yargs/helpers";
4
+ import { runCommand, executeCommand } from "./utils.js";
5
+ const validCommands = ["pylint", "mypy", "pyright", "eslint"];
6
+ // PARSE INPUT ARGUMENTS
7
+ const argv = yargs(hideBin(process.argv))
8
+ .option("folderName", {
9
+ type: "string",
10
+ choices: ["generator", "autorest"],
11
+ description: "Specify the flavor",
12
+ default: "generator",
13
+ })
14
+ .option("command", {
15
+ alias: "c",
16
+ type: "string",
17
+ choices: validCommands,
18
+ description: "Specify the command to run",
19
+ })
20
+ .option("skipWarning", {
21
+ alias: "s",
22
+ type: "boolean",
23
+ description: "Skip to check warnings",
24
+ })
25
+ .option("skipEslint", {
26
+ alias: "e",
27
+ type: "boolean",
28
+ description: "Skip to check eslint",
29
+ }).argv;
30
+ export function pylint() {
31
+ runCommand(`pylint ${argv.folderName}/ --rcfile ./scripts/eng/pylintrc`, "pylint");
32
+ }
33
+ export function mypy() {
34
+ runCommand(`mypy ${argv.folderName}/ --config-file ./scripts/eng/mypy.ini`, "mypy");
35
+ }
36
+ export function pyright() {
37
+ runCommand(`pyright ${argv.folderName}/ -p ./scripts/eng/pyrightconfig.json`, "pyright");
38
+ }
39
+ export function eslint() {
40
+ // const checkWarning = argv.skipWarning ? "" : "--max-warnings=0";
41
+ const checkWarning = "";
42
+ executeCommand(`npx eslint . --ext .ts ${checkWarning} `, "eslint");
43
+ }
44
+ if (argv.command === "pylint") {
45
+ pylint();
46
+ }
47
+ else if (argv.command === "mypy") {
48
+ mypy();
49
+ }
50
+ else if (argv.command === "pyright") {
51
+ pyright();
52
+ }
53
+ else if (argv.command === "eslint") {
54
+ if (!argv.skipEslint) {
55
+ eslint();
56
+ }
57
+ }
58
+ else {
59
+ pylint();
60
+ mypy();
61
+ pyright();
62
+ if (!argv.skipEslint) {
63
+ eslint();
64
+ }
65
+ }
66
+ //# sourceMappingURL=lint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../../scripts/eng/lint.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AASxD,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAE9D,wBAAwB;AACxB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACpC,MAAM,CAAC,YAAY,EAAE;IAClB,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;IAClC,WAAW,EAAE,oBAAoB;IACjC,OAAO,EAAE,WAAW;CACvB,CAAC;KACD,MAAM,CAAC,SAAS,EAAE;IACf,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,4BAA4B;CAC5C,CAAC;KACD,MAAM,CAAC,aAAa,EAAE;IACnB,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,wBAAwB;CACxC,CAAC;KACD,MAAM,CAAC,YAAY,EAAE;IAClB,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,sBAAsB;CACtC,CAAC,CAAC,IAAiB,CAAC;AAEzB,MAAM,UAAU,MAAM;IAClB,UAAU,CAAC,UAAU,IAAI,CAAC,UAAU,mCAAmC,EAAE,QAAQ,CAAC,CAAC;AACvF,CAAC;AAED,MAAM,UAAU,IAAI;IAChB,UAAU,CAAC,QAAQ,IAAI,CAAC,UAAU,wCAAwC,EAAE,MAAM,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,OAAO;IACnB,UAAU,CAAC,WAAW,IAAI,CAAC,UAAU,uCAAuC,EAAE,SAAS,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,UAAU,MAAM;IAClB,mEAAmE;IACnE,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,cAAc,CAAC,0BAA0B,YAAY,GAAG,EAAE,QAAQ,CAAC,CAAC;AACxE,CAAC;AAED,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC;CACZ;KAAM,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE;IAChC,IAAI,EAAE,CAAC;CACV;KAAM,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;IACnC,OAAO,EAAE,CAAC;CACb;KAAM,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE;IAClC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;QAClB,MAAM,EAAE,CAAC;KACZ;CACJ;KAAM;IACH,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,OAAO,EAAE,CAAC;IACV,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;QAClB,MAAM,EAAE,CAAC;KACZ;CACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"regenerate.d.ts","sourceRoot":"","sources":["../../scripts/regenerate.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"regenerate.d.ts","sourceRoot":"","sources":["../../../scripts/eng/regenerate.ts"],"names":[],"mappings":""}
@@ -4,7 +4,7 @@ import { promisify } from "util";
4
4
  import yargs from "yargs";
5
5
  import { hideBin } from "yargs/helpers";
6
6
  import { dirname, join, relative, resolve } from "path";
7
- import { promises } from "fs";
7
+ import { promises, rmSync } from "fs";
8
8
  import { fileURLToPath } from "url";
9
9
  // Promisify the exec function
10
10
  const exec = promisify(execCallback);
@@ -111,9 +111,16 @@ function getEmitterOption(spec) {
111
111
  return Array.isArray(result) ? result : [result];
112
112
  }
113
113
  // Function to execute CLI commands asynchronously
114
- async function executeCommand(command) {
114
+ async function executeCommand(tspCommand) {
115
115
  try {
116
- const { stdout, stderr } = await exec(command);
116
+ rmSync(tspCommand.outputDir, { recursive: true, force: true });
117
+ }
118
+ catch (error) {
119
+ console.error(`rm error: ${error}`);
120
+ }
121
+ try {
122
+ console.log(`exec: ${tspCommand.command}`);
123
+ const { stdout, stderr } = await exec(tspCommand.command);
117
124
  if (stdout)
118
125
  console.log(`stdout: ${stdout}`);
119
126
  if (stderr)
@@ -142,6 +149,12 @@ async function getSubdirectories(baseDir, flags) {
142
149
  const mainTspRelativePath = toPosix(relative(baseDir, mainTspPath));
143
150
  if (flags.flavor === "unbranded" && mainTspRelativePath.includes("azure"))
144
151
  return;
152
+ // after xml support, remove this check
153
+ if (mainTspRelativePath.includes("xml"))
154
+ return;
155
+ // after fix test generation for nested operation group, remove this check
156
+ if (mainTspRelativePath.includes("client-operation-group"))
157
+ return;
145
158
  const hasMainTsp = await promises
146
159
  .access(mainTspPath)
147
160
  .then(() => true)
@@ -176,12 +189,11 @@ function defaultPackageName(spec) {
176
189
  .toLowerCase();
177
190
  }
178
191
  function addOptions(spec, generatedFolder, flags) {
179
- var _a;
180
192
  const emitterConfigs = [];
181
193
  for (const config of getEmitterOption(spec)) {
182
194
  const options = { ...config };
183
195
  options["flavor"] = flags.flavor;
184
- for (const [k, v] of Object.entries((_a = SpecialFlags[flags.flavor]) !== null && _a !== void 0 ? _a : {})) {
196
+ for (const [k, v] of Object.entries(SpecialFlags[flags.flavor] ?? {})) {
185
197
  options[k] = v;
186
198
  }
187
199
  if (options["emitter-output-dir"] === undefined) {
@@ -194,48 +206,39 @@ function addOptions(spec, generatedFolder, flags) {
194
206
  if (flags.flavor === "unbranded") {
195
207
  options["company-name"] = "Unbranded";
196
208
  }
197
- options["examples-directory"] = toPosix(join(dirname(spec), "examples"));
209
+ options["examples-dir"] = toPosix(join(dirname(spec), "examples"));
198
210
  const configs = Object.entries(options).flatMap(([k, v]) => {
199
211
  return `--option @azure-tools/typespec-python.${k}=${v}`;
200
212
  });
201
- emitterConfigs.push(configs.join(" "));
213
+ emitterConfigs.push({
214
+ optionsStr: configs.join(" "),
215
+ outputDir: options["emitter-output-dir"],
216
+ });
202
217
  }
203
218
  return emitterConfigs;
204
219
  }
205
- async function _regenerateSingle(spec, flags) {
206
- // Perform some asynchronous operation here
207
- const options = addOptions(spec, PLUGIN_DIR, flags);
208
- const commandPromises = options.map((option) => {
209
- const command = `tsp compile ${spec} --emit=${toPosix(PLUGIN_DIR)} ${option}`;
210
- console.log(command);
211
- return executeCommand(command);
220
+ function _getCmdList(spec, flags) {
221
+ return addOptions(spec, PLUGIN_DIR, flags).map((option) => {
222
+ return {
223
+ outputDir: option.outputDir,
224
+ command: `tsp compile ${spec} --emit=${toPosix(PLUGIN_DIR)} ${option.optionsStr}`,
225
+ };
212
226
  });
213
- await Promise.all(commandPromises);
214
227
  }
215
228
  async function regenerate(flags) {
216
229
  if (flags.flavor === undefined) {
217
- const azureGeneration = await regenerate({ ...flags, flavor: "azure" });
218
- const unbrandedGeneration = await regenerate({ ...flags, flavor: "unbranded" });
219
- return azureGeneration && unbrandedGeneration;
230
+ await regenerate({ ...flags, flavor: "azure" });
231
+ await regenerate({ ...flags, flavor: "unbranded" });
220
232
  }
221
233
  else {
222
234
  const flagsResolved = { debug: false, flavor: flags.flavor, ...flags };
223
235
  const CADL_RANCH_DIR = resolve(PLUGIN_DIR, "node_modules/@azure-tools/cadl-ranch-specs/http");
224
236
  const subdirectories = await getSubdirectories(CADL_RANCH_DIR, flagsResolved);
225
- const promises = subdirectories.map(async (subdirectory) => {
226
- // Perform additional asynchronous operations on each subdirectory here
227
- await _regenerateSingle(subdirectory, flagsResolved);
228
- });
229
- await Promise.all(promises);
230
- return true;
237
+ const cmdList = subdirectories.flatMap((subdirectory) => _getCmdList(subdirectory, flagsResolved));
238
+ const PromiseCommands = cmdList.map((tspCommand) => executeCommand(tspCommand));
239
+ await Promise.all(PromiseCommands);
231
240
  }
232
241
  }
233
- // try {
234
- // const output = await executeCommand('tsp compile');
235
- // console.log(`Command output: ${output}`);
236
- // } catch (error) {
237
- // console.error(`Command failed: ${error}`);
238
- // }
239
242
  // PARSE INPUT ARGUMENTS
240
243
  const argv = yargs(hideBin(process.argv))
241
244
  .option("flavor", {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regenerate.js","sourceRoot":"","sources":["../../../scripts/eng/regenerate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=run-tests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-tests.d.ts","sourceRoot":"","sources":["../../../scripts/eng/run-tests.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ /* eslint-disable no-console */
2
+ import { execSync } from "child_process";
3
+ import { readFileSync } from "fs";
4
+ import { join } from "path";
5
+ import yargs from "yargs";
6
+ import { hideBin } from "yargs/helpers";
7
+ import { fileURLToPath } from "url";
8
+ const validCommands = ["ci", "lint", "mypy", "pyright", "apiview"];
9
+ // Parse command-line arguments using yargs
10
+ const argv = yargs(hideBin(process.argv))
11
+ .option("validFolders", {
12
+ alias: "vf",
13
+ describe: "Specify the valid folders",
14
+ type: "array",
15
+ default: ["azure", "unbranded"],
16
+ })
17
+ .option("folder", {
18
+ alias: "f",
19
+ describe: "Specify the folder to use",
20
+ type: "string",
21
+ })
22
+ .option("command", {
23
+ alias: "c",
24
+ describe: "Specify the command to run",
25
+ choices: validCommands,
26
+ type: "string",
27
+ }).argv;
28
+ const foldersToProcess = argv.folder ? [argv.folder] : argv.validFolders;
29
+ const commandToRun = argv.command || "all";
30
+ function getCommand(command, folder) {
31
+ if (!validCommands.includes(command))
32
+ throw new Error(`Unknown command '${command}'.`);
33
+ return `FOLDER=${folder} tox -c ./test/${folder}/tox.ini -e ${command}`;
34
+ }
35
+ function sectionExistsInToxIni(command, folder) {
36
+ const toxIniPath = join(fileURLToPath(import.meta.url), `../../../test/${folder}/tox.ini`);
37
+ const toxIniContent = readFileSync(toxIniPath, "utf-8");
38
+ const sectionHeader = `[testenv:${command}]`;
39
+ return toxIniContent.includes(sectionHeader);
40
+ }
41
+ function myExecSync(command, folder) {
42
+ if (!sectionExistsInToxIni(command, folder)) {
43
+ console.log(`No section for ${command} in tox.ini for folder ${folder}. Skipping...`);
44
+ return;
45
+ }
46
+ execSync(getCommand(command, folder), { stdio: "inherit" });
47
+ }
48
+ foldersToProcess.forEach((folder) => {
49
+ try {
50
+ if (commandToRun === "all") {
51
+ for (const key of validCommands) {
52
+ console.log(`Running ${key} for folder ${folder}...`);
53
+ myExecSync(key, folder);
54
+ }
55
+ }
56
+ else if (getCommand(commandToRun, folder)) {
57
+ console.log(`Running ${commandToRun} for folder ${folder}...`);
58
+ myExecSync(commandToRun, folder);
59
+ }
60
+ else {
61
+ console.error(`Error: Unknown command '${commandToRun}'.`);
62
+ process.exit(1);
63
+ }
64
+ }
65
+ catch (error) {
66
+ console.error(error.message);
67
+ console.error(`Error executing command for folder ${folder}: ${error.message}`);
68
+ process.exit(1);
69
+ }
70
+ });
71
+ //# sourceMappingURL=run-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-tests.js","sourceRoot":"","sources":["../../../scripts/eng/run-tests.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function executeCommand(command: string, prettyName: string): void;
2
+ export declare function runCommand(command: string, prettyName: string): void;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../scripts/eng/utils.ts"],"names":[],"mappings":"AASA,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAcjE;AAGD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,QAW7D"}
@@ -0,0 +1,39 @@
1
+ /* eslint-disable no-console */
2
+ import { exec } from "child_process";
3
+ import process from "process";
4
+ import { existsSync } from "fs";
5
+ import { dirname, join } from "path";
6
+ import { fileURLToPath } from "url";
7
+ import chalk from "chalk";
8
+ // execute the command
9
+ export function executeCommand(command, prettyName) {
10
+ exec(command, (error, stdout, stderr) => {
11
+ if (error) {
12
+ console.error(chalk.red(`Error executing ${command}(stdout): ${stdout}`));
13
+ console.error(chalk.red(`Error executing ${command}{stderr}: ${stderr}`));
14
+ process.exit(1);
15
+ }
16
+ if (stderr) {
17
+ // Process stderr output
18
+ console.log(chalk.yellow(`${command}:\n${stderr}`));
19
+ return;
20
+ }
21
+ console.log(chalk.green(`${prettyName} passed`));
22
+ });
23
+ }
24
+ // Function to run a command and log the output
25
+ export function runCommand(command, prettyName) {
26
+ let pythonPath = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "venv/");
27
+ if (existsSync(join(pythonPath, "bin"))) {
28
+ pythonPath = join(pythonPath, "bin", "python");
29
+ }
30
+ else if (existsSync(join(pythonPath, "Scripts"))) {
31
+ pythonPath = join(pythonPath, "Scripts", "python");
32
+ }
33
+ else {
34
+ throw new Error(pythonPath);
35
+ }
36
+ command = `${pythonPath} -m ${command}`;
37
+ executeCommand(command, prettyName);
38
+ }
39
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../scripts/eng/utils.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,sBAAsB;AACtB,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,UAAkB;IAC9D,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACpC,IAAI,KAAK,EAAE;YACP,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,OAAO,aAAa,MAAM,EAAE,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,OAAO,aAAa,MAAM,EAAE,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACnB;QACD,IAAI,MAAM,EAAE;YACR,wBAAwB;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO;SACV;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,SAAS,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,UAAkB;IAC1D,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpF,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,EAAE;QACrC,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;KAClD;SAAM,IAAI,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,EAAE;QAChD,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;KACtD;SAAM;QACH,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;KAC/B;IACD,OAAO,GAAG,GAAG,UAAU,OAAO,OAAO,EAAE,CAAC;IACxC,cAAc,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=run-python3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-python3.d.ts","sourceRoot":"","sources":["../../scripts/run-python3.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ // This script wraps logic in @azure-tools/extension to resolve
2
+ // the path to Python 3 so that a Python script file can be run
3
+ // from an npm script in package.json. It uses the same Python 3
4
+ // path resolution algorithm as AutoRest so that the behavior
5
+ // is fully consistent (and also supports AUTOREST_PYTHON_EXE).
6
+ //
7
+ // Invoke it like so: "tsx run-python3.ts script.py"
8
+ import cp from "child_process";
9
+ import { patchPythonPath } from "./system-requirements.js";
10
+ async function runPython3(...args) {
11
+ const command = await patchPythonPath(["python", ...args], {
12
+ version: ">=3.8",
13
+ environmentVariable: "AUTOREST_PYTHON_EXE",
14
+ });
15
+ cp.execSync(command.join(" "), {
16
+ stdio: [0, 1, 2],
17
+ });
18
+ }
19
+ runPython3(...process.argv.slice(2)).catch((err) => {
20
+ console.error(err.toString()); // eslint-disable-line no-console
21
+ process.exit(1);
22
+ });
23
+ //# sourceMappingURL=run-python3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-python3.js","sourceRoot":"","sources":["../../scripts/run-python3.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,+DAA+D;AAC/D,iEAAiE;AACjE,6DAA6D;AAC7D,+DAA+D;AAC/D,EAAE;AACF,oDAAoD;AAEpD,OAAO,EAAE,MAAM,eAAe,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,KAAK,UAAU,UAAU,CAAC,GAAG,IAAc;IACvC,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE;QACvD,OAAO,EAAE,OAAO;QAChB,mBAAmB,EAAE,qBAAqB;KAC7C,CAAC,CAAC;IACH,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC3B,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACnB,CAAC,CAAC;AACP,CAAC;AAED,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC/C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,iCAAiC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @param command list of the command and arguments. First item in array must be a python exe @see KnownPythonExe. (e.g. ["python", "mypythonfile.py"]
3
+ * @param requirement
4
+ */
5
+ export declare const patchPythonPath: (command: PythonCommandLine, requirement: SystemRequirement) => Promise<string[]>;
6
+ type KnownPythonExe = "python.exe" | "python3.exe" | "python" | "python3";
7
+ type PythonCommandLine = [KnownPythonExe, ...string[]];
8
+ interface SystemRequirement {
9
+ version?: string;
10
+ /**
11
+ * Name of an environment variable where the user could provide the path to the exe.
12
+ * @example "AUTOREST_PYTHON_PATH"
13
+ */
14
+ environmentVariable?: string;
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=system-requirements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-requirements.d.ts","sourceRoot":"","sources":["../../scripts/system-requirements.ts"],"names":[],"mappings":"AAgLA;;;GAGG;AACH,eAAO,MAAM,eAAe,4CAEX,iBAAiB,KAC/B,QAAQ,MAAM,EAAE,CAOlB,CAAC;AAOF,KAAK,cAAc,GAAG,YAAY,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC1E,KAAK,iBAAiB,GAAG,CAAC,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AAQvD,UAAU,iBAAiB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAChC"}