@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.
- package/dist/scripts/eng/format.d.ts +2 -0
- package/dist/scripts/eng/format.d.ts.map +1 -0
- package/dist/scripts/eng/format.js +4 -0
- package/dist/scripts/eng/format.js.map +1 -0
- package/dist/scripts/eng/lint.d.ts +5 -0
- package/dist/scripts/eng/lint.d.ts.map +1 -0
- package/dist/scripts/eng/lint.js +66 -0
- package/dist/scripts/eng/lint.js.map +1 -0
- package/dist/scripts/{regenerate.d.ts.map → eng/regenerate.d.ts.map} +1 -1
- package/dist/scripts/{regenerate.js → eng/regenerate.js} +33 -30
- package/dist/scripts/eng/regenerate.js.map +1 -0
- package/dist/scripts/eng/run-tests.d.ts +2 -0
- package/dist/scripts/eng/run-tests.d.ts.map +1 -0
- package/dist/scripts/eng/run-tests.js +71 -0
- package/dist/scripts/eng/run-tests.js.map +1 -0
- package/dist/scripts/eng/utils.d.ts +3 -0
- package/dist/scripts/eng/utils.d.ts.map +1 -0
- package/dist/scripts/eng/utils.js +39 -0
- package/dist/scripts/eng/utils.js.map +1 -0
- package/dist/scripts/run-python3.d.ts +2 -0
- package/dist/scripts/run-python3.d.ts.map +1 -0
- package/dist/scripts/run-python3.js +23 -0
- package/dist/scripts/run-python3.js.map +1 -0
- package/dist/scripts/system-requirements.d.ts +17 -0
- package/dist/scripts/system-requirements.d.ts.map +1 -0
- package/{scripts/system-requirements.cjs → dist/scripts/system-requirements.js} +80 -97
- package/dist/scripts/system-requirements.js.map +1 -0
- package/dist/src/code-model.d.ts.map +1 -1
- package/dist/src/code-model.js +23 -17
- package/dist/src/code-model.js.map +1 -1
- package/dist/src/emitter.d.ts.map +1 -1
- package/dist/src/emitter.js +14 -3
- package/dist/src/emitter.js.map +1 -1
- package/dist/src/external-process.js +1 -1
- package/dist/src/external-process.js.map +1 -1
- package/dist/src/http.js +34 -23
- package/dist/src/http.js.map +1 -1
- package/dist/src/lib.d.ts +1 -0
- package/dist/src/lib.d.ts.map +1 -1
- package/dist/src/lib.js +1 -0
- package/dist/src/lib.js.map +1 -1
- package/dist/src/types.d.ts +7 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +42 -7
- package/dist/src/types.js.map +1 -1
- package/dist/src/utils.d.ts +3 -3
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +11 -13
- package/dist/src/utils.js.map +1 -1
- package/generator/pygen/black.py +2 -3
- package/generator/pygen/codegen/models/__init__.py +2 -0
- package/generator/pygen/codegen/models/code_model.py +2 -4
- package/generator/pygen/codegen/models/combined_type.py +1 -1
- package/generator/pygen/codegen/models/credential_types.py +7 -14
- package/generator/pygen/codegen/models/enum_type.py +1 -1
- package/generator/pygen/codegen/models/lro_operation.py +0 -1
- package/generator/pygen/codegen/models/lro_paging_operation.py +1 -1
- package/generator/pygen/codegen/models/model_type.py +6 -9
- package/generator/pygen/codegen/models/operation.py +13 -16
- package/generator/pygen/codegen/models/paging_operation.py +0 -1
- package/generator/pygen/codegen/models/parameter_list.py +2 -5
- package/generator/pygen/codegen/models/primitive_types.py +35 -3
- package/generator/pygen/codegen/models/property.py +1 -9
- package/generator/pygen/codegen/serializers/__init__.py +1 -1
- package/generator/pygen/codegen/serializers/builder_serializer.py +12 -13
- package/generator/pygen/codegen/serializers/general_serializer.py +2 -2
- package/generator/pygen/codegen/serializers/model_serializer.py +2 -0
- package/generator/pygen/codegen/serializers/sample_serializer.py +20 -15
- package/generator/pygen/codegen/templates/model_base.py.jinja2 +30 -18
- package/generator/pygen/codegen/templates/vendor.py.jinja2 +0 -2
- package/generator/pygen/m2r.py +1 -1
- package/generator/pygen/postprocess/__init__.py +2 -2
- package/generator/pygen/postprocess/venvtools.py +1 -3
- package/generator/pygen/preprocess/__init__.py +1 -1
- package/generator/pygen/utils.py +1 -3
- package/generator/setup.py +1 -1
- package/package.json +18 -25
- package/scripts/__pycache__/venvtools.cpython-310.pyc +0 -0
- package/scripts/eng/format.ts +5 -0
- package/scripts/eng/lint.ts +75 -0
- package/scripts/eng/mypy.ini +38 -0
- package/scripts/eng/pylintrc +58 -0
- package/scripts/eng/pyrightconfig.json +6 -0
- package/scripts/{regenerate.ts → eng/regenerate.ts} +45 -33
- package/scripts/eng/run-tests.ts +80 -0
- package/scripts/eng/utils.ts +38 -0
- package/scripts/run-python3.ts +25 -0
- package/scripts/run_tsp.py +7 -5
- package/scripts/system-requirements.ts +253 -0
- package/dist/scripts/regenerate.js.map +0 -1
- package/scripts/run-python3.cjs +0 -22
- /package/dist/scripts/{regenerate.d.ts → eng/regenerate.d.ts} +0 -0
|
@@ -1,59 +1,46 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { spawn } from "child_process";
|
|
2
|
+
import { coerce, satisfies } from "semver";
|
|
4
3
|
/*
|
|
5
4
|
* Copied from @autorest/system-requirements
|
|
6
5
|
*/
|
|
7
|
-
|
|
8
|
-
const PythonRequirement = "python";
|
|
9
|
-
const PRINT_PYTHON_VERSION_SCRIPT = "import sys; print('.'.join(map(str, sys.version_info[:3])))";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
function execute(command, cmdlineargs, options = {}) {
|
|
6
|
+
const execute = (command, cmdlineargs, options = {}) => {
|
|
13
7
|
return new Promise((resolve, reject) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
log: all,
|
|
42
|
-
error: code ? new Error("Process Failed.") : null,
|
|
43
|
-
code,
|
|
44
|
-
}),
|
|
45
|
-
);
|
|
8
|
+
const cp = spawn(command, cmdlineargs, { ...options, stdio: "pipe", shell: true });
|
|
9
|
+
if (options.onCreate) {
|
|
10
|
+
options.onCreate(cp);
|
|
11
|
+
}
|
|
12
|
+
options.onStdOutData ? cp.stdout.on("data", options.onStdOutData) : cp;
|
|
13
|
+
options.onStdErrData ? cp.stderr.on("data", options.onStdErrData) : cp;
|
|
14
|
+
let err = "";
|
|
15
|
+
let out = "";
|
|
16
|
+
let all = "";
|
|
17
|
+
cp.stderr.on("data", (chunk) => {
|
|
18
|
+
err += chunk;
|
|
19
|
+
all += chunk;
|
|
20
|
+
});
|
|
21
|
+
cp.stdout.on("data", (chunk) => {
|
|
22
|
+
out += chunk;
|
|
23
|
+
all += chunk;
|
|
24
|
+
});
|
|
25
|
+
cp.on("error", (err) => {
|
|
26
|
+
reject(err);
|
|
27
|
+
});
|
|
28
|
+
cp.on("close", (code, signal) => resolve({
|
|
29
|
+
stdout: out,
|
|
30
|
+
stderr: err,
|
|
31
|
+
log: all,
|
|
32
|
+
error: code ? new Error("Process Failed.") : null,
|
|
33
|
+
code,
|
|
34
|
+
}));
|
|
46
35
|
});
|
|
47
36
|
};
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return semver.satisfies(cleanedVersion, requirement, true);
|
|
37
|
+
const versionIsSatisfied = (version, requirement) => {
|
|
38
|
+
const cleanedVersion = coerce(version);
|
|
39
|
+
if (!cleanedVersion) {
|
|
40
|
+
throw new Error(`Invalid version ${version}.`);
|
|
41
|
+
}
|
|
42
|
+
return satisfies(cleanedVersion, requirement, true);
|
|
55
43
|
};
|
|
56
|
-
|
|
57
44
|
/**
|
|
58
45
|
* Validate the provided system requirement resolution is satisfying the version requirement if applicable.
|
|
59
46
|
* @param resolution Command resolution.
|
|
@@ -61,68 +48,62 @@ function versionIsSatisfied(version, requirement) {
|
|
|
61
48
|
* @param requirement Requirement.
|
|
62
49
|
* @returns the resolution if it is valid or an @see SystemRequirementError if not.
|
|
63
50
|
*/
|
|
64
|
-
|
|
51
|
+
const validateVersionRequirement = (resolution, actualVersion, requirement) => {
|
|
65
52
|
if (!requirement.version) {
|
|
66
53
|
return resolution; // No version requirement.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
try {
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
70
56
|
if (versionIsSatisfied(actualVersion, requirement.version)) {
|
|
71
|
-
|
|
57
|
+
return resolution;
|
|
72
58
|
}
|
|
73
59
|
return {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
60
|
+
...resolution,
|
|
61
|
+
error: true,
|
|
62
|
+
message: `'${resolution.command}' version is '${actualVersion}' but doesn't satisfy requirement '${requirement.version}'. Please update.`,
|
|
63
|
+
actualVersion: actualVersion,
|
|
64
|
+
neededVersion: requirement.version,
|
|
79
65
|
};
|
|
80
|
-
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
81
68
|
return {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
69
|
+
...resolution,
|
|
70
|
+
error: true,
|
|
71
|
+
message: `Couldn't parse the version ${actualVersion}. This is not a valid semver version.`,
|
|
72
|
+
actualVersion: actualVersion,
|
|
73
|
+
neededVersion: requirement.version,
|
|
87
74
|
};
|
|
88
|
-
|
|
75
|
+
}
|
|
89
76
|
};
|
|
90
|
-
|
|
91
|
-
async function tryPython(requirement, command, additionalArgs = []) {
|
|
77
|
+
const tryPython = async (requirement, command, additionalArgs = []) => {
|
|
92
78
|
const resolution = {
|
|
93
79
|
name: PythonRequirement,
|
|
94
80
|
command,
|
|
95
81
|
additionalArgs: additionalArgs.length > 0 ? additionalArgs : undefined,
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
try {
|
|
82
|
+
};
|
|
83
|
+
try {
|
|
99
84
|
const result = await execute(command, [...additionalArgs, "-c", `"${PRINT_PYTHON_VERSION_SCRIPT}"`]);
|
|
100
85
|
return validateVersionRequirement(resolution, result.stdout.trim(), requirement);
|
|
101
|
-
|
|
86
|
+
}
|
|
87
|
+
catch (e) {
|
|
102
88
|
return {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
89
|
+
error: true,
|
|
90
|
+
...resolution,
|
|
91
|
+
message: `'${command}' command line is not found in the path. Make sure to have it installed.`,
|
|
106
92
|
};
|
|
107
|
-
|
|
93
|
+
}
|
|
108
94
|
};
|
|
109
|
-
|
|
110
95
|
/**
|
|
111
96
|
* Returns the path to the executable as asked in the requirement.
|
|
112
97
|
* @param requirement System requirement definition.
|
|
113
98
|
* @returns If the requirement provide an environment variable for the path returns the value of that environment variable. undefined otherwise.
|
|
114
99
|
*/
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
function createPythonErrorMessage(requirement, errors) {
|
|
100
|
+
const getExecutablePath = (requirement) => requirement.environmentVariable && process.env[requirement.environmentVariable];
|
|
101
|
+
const createPythonErrorMessage = (requirement, errors) => {
|
|
120
102
|
const versionReq = requirement.version ?? "*";
|
|
121
103
|
const lines = [
|
|
122
104
|
`Couldn't find a valid python interpreter satisfying the requirement (version: ${versionReq}). Tried:`,
|
|
123
105
|
...errors.map((x) => ` - ${x.command} (${x.message})`),
|
|
124
106
|
];
|
|
125
|
-
|
|
126
107
|
return {
|
|
127
108
|
error: true,
|
|
128
109
|
name: "python",
|
|
@@ -130,46 +111,44 @@ function createPythonErrorMessage(requirement, errors) {
|
|
|
130
111
|
message: lines.join("\n"),
|
|
131
112
|
};
|
|
132
113
|
};
|
|
133
|
-
|
|
134
|
-
|
|
114
|
+
const resolvePythonRequirement = async (requirement) => {
|
|
115
|
+
// Hardcoding AUTOREST_PYTHON_EXE is for backward compatibility
|
|
135
116
|
const path = getExecutablePath(requirement) ?? process.env["AUTOREST_PYTHON_EXE"];
|
|
136
117
|
if (path) {
|
|
137
118
|
return await tryPython(requirement, path);
|
|
138
119
|
}
|
|
139
|
-
|
|
140
120
|
const errors = [];
|
|
141
121
|
// On windows try `py` executable with `-3` flag.
|
|
142
122
|
if (process.platform === "win32") {
|
|
143
123
|
const pyResult = await tryPython(requirement, "py", ["-3"]);
|
|
144
124
|
if ("error" in pyResult) {
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
|
|
125
|
+
errors.push(pyResult);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
return pyResult;
|
|
148
129
|
}
|
|
149
130
|
}
|
|
150
|
-
|
|
151
131
|
const python3Result = await tryPython(requirement, "python3");
|
|
152
132
|
if ("error" in python3Result) {
|
|
153
133
|
errors.push(python3Result);
|
|
154
|
-
}
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
155
136
|
return python3Result;
|
|
156
137
|
}
|
|
157
|
-
|
|
158
138
|
const pythonResult = await tryPython(requirement, "python");
|
|
159
139
|
if ("error" in pythonResult) {
|
|
160
140
|
errors.push(pythonResult);
|
|
161
|
-
}
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
162
143
|
return pythonResult;
|
|
163
144
|
}
|
|
164
|
-
|
|
165
145
|
return createPythonErrorMessage(requirement, errors);
|
|
166
146
|
};
|
|
167
|
-
|
|
168
147
|
/**
|
|
169
148
|
* @param command list of the command and arguments. First item in array must be a python exe @see KnownPythonExe. (e.g. ["python", "mypythonfile.py"]
|
|
170
149
|
* @param requirement
|
|
171
150
|
*/
|
|
172
|
-
|
|
151
|
+
export const patchPythonPath = async (command, requirement) => {
|
|
173
152
|
const [_, ...args] = command;
|
|
174
153
|
const resolution = await resolvePythonRequirement(requirement);
|
|
175
154
|
if ("error" in resolution) {
|
|
@@ -177,4 +156,8 @@ async function patchPythonPath(command, requirement) {
|
|
|
177
156
|
}
|
|
178
157
|
return [resolution.command, ...(resolution.additionalArgs ?? []), ...args];
|
|
179
158
|
};
|
|
180
|
-
|
|
159
|
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
160
|
+
// TYPES
|
|
161
|
+
const PythonRequirement = "python";
|
|
162
|
+
const PRINT_PYTHON_VERSION_SCRIPT = "import sys; print('.'.join(map(str, sys.version_info[:3])))";
|
|
163
|
+
//# sourceMappingURL=system-requirements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system-requirements.js","sourceRoot":"","sources":["../../scripts/system-requirements.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-model.d.ts","sourceRoot":"","sources":["../../src/code-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAWH,mBAAmB,EAGtB,MAAM,6CAA6C,CAAC;AAIrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAgM5C,wBAAgB,aAAa,CAAC,iBAAiB,SAAS,mBAAmB,EACvE,UAAU,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"code-model.d.ts","sourceRoot":"","sources":["../../src/code-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAWH,mBAAmB,EAGtB,MAAM,6CAA6C,CAAC;AAIrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAgM5C,wBAAgB,aAAa,CAAC,iBAAiB,SAAS,mBAAmB,EACvE,UAAU,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,uBAuClD"}
|
package/dist/src/code-model.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { UsageFlags, getCrossLanguagePackageId, } from "@azure-tools/typespec-client-generator-core";
|
|
2
|
-
import { KnownTypes, emitEndpointType, getType, simpleTypesMap, typesMap } from "./types.js";
|
|
2
|
+
import { KnownTypes, disableGenerationMap, emitEndpointType, getType, simpleTypesMap, typesMap } from "./types.js";
|
|
3
3
|
import { emitParamBase, getImplementation, removeUnderscoresFromNamespace } from "./utils.js";
|
|
4
4
|
import { emitBasicHttpMethod, emitLroHttpMethod, emitLroPagingHttpMethod, emitPagingHttpMethod } from "./http.js";
|
|
5
5
|
import { ignoreDiagnostics } from "@typespec/compiler";
|
|
@@ -125,23 +125,23 @@ function emitOperationGroups(context, client, rootClient, prefix) {
|
|
|
125
125
|
return operationGroups.length > 0 ? operationGroups : undefined;
|
|
126
126
|
}
|
|
127
127
|
function emitClient(context, client) {
|
|
128
|
-
var _a, _b, _c, _d;
|
|
129
128
|
if (client.initialization) {
|
|
130
129
|
context.__endpointPathParameters = [];
|
|
131
130
|
}
|
|
132
|
-
const parameters =
|
|
133
|
-
|
|
131
|
+
const parameters = client.initialization?.properties.map((x) => emitMethodParameter(context, x)).reduce((a, b) => [...a, ...b]) ??
|
|
132
|
+
[];
|
|
133
|
+
const endpointParameter = client.initialization?.properties.find((x) => x.kind === "endpoint");
|
|
134
134
|
const operationGroups = emitOperationGroups(context, client, client, "");
|
|
135
135
|
let url;
|
|
136
|
-
if (
|
|
136
|
+
if (endpointParameter?.type.kind === "union") {
|
|
137
137
|
url = endpointParameter.type.values[0].serverUrl;
|
|
138
138
|
}
|
|
139
139
|
else {
|
|
140
|
-
url = endpointParameter
|
|
140
|
+
url = endpointParameter?.type.serverUrl;
|
|
141
141
|
}
|
|
142
142
|
return {
|
|
143
143
|
name: client.name,
|
|
144
|
-
description:
|
|
144
|
+
description: client.description ?? "",
|
|
145
145
|
parameters,
|
|
146
146
|
operationGroups,
|
|
147
147
|
url,
|
|
@@ -157,11 +157,25 @@ export function emitCodeModel(sdkContext) {
|
|
|
157
157
|
clients: [],
|
|
158
158
|
subnamespaceToClients: {},
|
|
159
159
|
};
|
|
160
|
+
for (const client of sdkPackage.clients) {
|
|
161
|
+
codeModel["clients"].push(emitClient(sdkContext, client));
|
|
162
|
+
if (client.nameSpace === sdkPackage.rootNamespace) {
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
codeModel["subnamespaceToClients"][client.nameSpace] = emitClient(sdkContext, client);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// loop through models and enums since there may be some orphaned models needs to be generated
|
|
160
169
|
for (const model of sdkPackage.models) {
|
|
161
|
-
if (model.name === "" ||
|
|
170
|
+
if (model.name === "" ||
|
|
171
|
+
((model.usage & UsageFlags.Spread) > 0 &&
|
|
172
|
+
(model.usage & UsageFlags.Input) === 0 &&
|
|
173
|
+
(model.usage & UsageFlags.Output) === 0)) {
|
|
162
174
|
continue;
|
|
163
175
|
}
|
|
164
|
-
|
|
176
|
+
if (!disableGenerationMap.has(model)) {
|
|
177
|
+
getType(sdkContext, model);
|
|
178
|
+
}
|
|
165
179
|
}
|
|
166
180
|
for (const sdkEnum of sdkPackage.enums) {
|
|
167
181
|
if (sdkEnum.usage === UsageFlags.ApiVersionEnum) {
|
|
@@ -169,14 +183,6 @@ export function emitCodeModel(sdkContext) {
|
|
|
169
183
|
}
|
|
170
184
|
getType(sdkContext, sdkEnum);
|
|
171
185
|
}
|
|
172
|
-
for (const client of sdkPackage.clients) {
|
|
173
|
-
codeModel["clients"].push(emitClient(sdkContext, client));
|
|
174
|
-
if (client.nameSpace === sdkPackage.rootNamespace) {
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
codeModel["subnamespaceToClients"][client.nameSpace] = emitClient(sdkContext, client);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
186
|
codeModel["types"] = [...typesMap.values(), ...Object.values(KnownTypes), ...simpleTypesMap.values()];
|
|
181
187
|
codeModel["crossLanguagePackageId"] = ignoreDiagnostics(getCrossLanguagePackageId(sdkContext));
|
|
182
188
|
return codeModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-model.js","sourceRoot":"","sources":["../../src/code-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAYH,UAAU,EACV,yBAAyB,GAC5B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"code-model.js","sourceRoot":"","sources":["../../src/code-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAEH,UAAU,EAGb,MAAM,6CAA6C,CAAC;AAKrD,OAAO,EAAE,oBAAoB,EAAoB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAEH,UAAU,EAGb,MAAM,6CAA6C,CAAC;AAKrD,OAAO,EAAE,oBAAoB,EAAoB,MAAM,UAAU,CAAC;AAMlE,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,KAAK,GAAG,MAAM,CAUjE;AAwCD,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,oBAAoB,CAAC,iBAkDvE"}
|
package/dist/src/emitter.js
CHANGED
|
@@ -2,10 +2,11 @@ import { createSdkContext, } from "@azure-tools/typespec-client-generator-core";
|
|
|
2
2
|
import { saveCodeModelAsYaml } from "./external-process.js";
|
|
3
3
|
import { dirname } from "path";
|
|
4
4
|
import { fileURLToPath } from "url";
|
|
5
|
-
import {
|
|
5
|
+
import { execSync } from "child_process";
|
|
6
6
|
import { emitCodeModel } from "./code-model.js";
|
|
7
7
|
import { removeUnderscoresFromNamespace } from "./utils.js";
|
|
8
8
|
import path from "path";
|
|
9
|
+
import fs from "fs";
|
|
9
10
|
export function getModelsMode(context) {
|
|
10
11
|
const specifiedModelsMode = context.emitContext.options["models-mode"];
|
|
11
12
|
if (specifiedModelsMode) {
|
|
@@ -57,8 +58,18 @@ export async function $onEmit(context) {
|
|
|
57
58
|
const yamlMap = emitCodeModel(sdkContext);
|
|
58
59
|
addDefaultOptions(sdkContext);
|
|
59
60
|
const yamlPath = await saveCodeModelAsYaml("typespec-python-yaml-map", yamlMap);
|
|
61
|
+
let venvPath = path.join(root, "venv");
|
|
62
|
+
if (fs.existsSync(path.join(venvPath, "bin"))) {
|
|
63
|
+
venvPath = path.join(venvPath, "bin", "python");
|
|
64
|
+
}
|
|
65
|
+
else if (fs.existsSync(path.join(venvPath, "Scripts"))) {
|
|
66
|
+
venvPath = path.join(venvPath, "Scripts", "python.exe");
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
throw new Error("Virtual environment doesn't exist.");
|
|
70
|
+
}
|
|
60
71
|
const commandArgs = [
|
|
61
|
-
|
|
72
|
+
venvPath,
|
|
62
73
|
`${root}/scripts/run_tsp.py`,
|
|
63
74
|
`--output-folder=${outputDir}`,
|
|
64
75
|
`--cadl-file=${yamlPath}`,
|
|
@@ -86,7 +97,7 @@ export async function $onEmit(context) {
|
|
|
86
97
|
}
|
|
87
98
|
commandArgs.push("--from-typespec=true");
|
|
88
99
|
if (!program.compilerOptions.noEmit && !program.hasError()) {
|
|
89
|
-
|
|
100
|
+
execSync(commandArgs.join(" "));
|
|
90
101
|
}
|
|
91
102
|
}
|
|
92
103
|
//# sourceMappingURL=emitter.js.map
|
package/dist/src/emitter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"AACA,OAAO,EACH,gBAAgB,GAInB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-process.js","sourceRoot":"","sources":["../../src/external-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAgB,KAAK,EAAgB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,kBAAkB,GAAG,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;AAElE,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,SAAiB,EAAE;IACjE,OAAO,SAAS,CAAC,kBAAkB,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,SAAS,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,SAAkB;IACtE,MAAM,KAAK,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,OAAe,EACf,IAAc,EACd,UAAwB,EAAE;IAE1B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACrE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,MAAM,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC1B,OAAO,CAAC;gBACJ,QAAQ,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"external-process.js","sourceRoot":"","sources":["../../src/external-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAgB,KAAK,EAAgB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,kBAAkB,GAAG,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;AAElE,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,SAAiB,EAAE;IACjE,OAAO,SAAS,CAAC,kBAAkB,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,SAAS,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,SAAkB;IACtE,MAAM,KAAK,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,OAAe,EACf,IAAc,EACd,UAAwB,EAAE;IAE1B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACrE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,MAAM,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC1B,OAAO,CAAC;gBACJ,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC;gBACxB,IAAI,EAAE,KAAK;aACd,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/src/http.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { UsageFlags, } from "@azure-tools/typespec-client-generator-core";
|
|
2
|
-
import { camelToSnakeCase, emitParamBase, getAddedOn,
|
|
2
|
+
import { camelToSnakeCase, emitParamBase, getAddedOn, getDelimiterAndExplode, getDescriptionAndSummary, getImplementation, isAbstract, isAzureCoreErrorResponse, } from "./utils.js";
|
|
3
3
|
import { KnownTypes, getType } from "./types.js";
|
|
4
4
|
function isContentTypeParameter(parameter) {
|
|
5
5
|
return parameter.serializedName.toLowerCase() === "content-type";
|
|
@@ -27,7 +27,7 @@ export function emitBasicHttpMethod(context, rootClient, method, operationGroupN
|
|
|
27
27
|
}
|
|
28
28
|
function emitInitialLroHttpMethod(context, rootClient, method, operationGroupName) {
|
|
29
29
|
return {
|
|
30
|
-
...emitHttpOperation(context, rootClient, operationGroupName, method.operation),
|
|
30
|
+
...emitHttpOperation(context, rootClient, operationGroupName, method.operation, method),
|
|
31
31
|
name: `_${camelToSnakeCase(method.name)}_initial`,
|
|
32
32
|
isLroInitialOperation: true,
|
|
33
33
|
wantTracing: false,
|
|
@@ -49,8 +49,8 @@ function addLroInformation(context, rootClient, method, operationGroupName) {
|
|
|
49
49
|
}
|
|
50
50
|
function addPagingInformation(context, rootClient, method, operationGroupName) {
|
|
51
51
|
for (const response of method.operation.responses.values()) {
|
|
52
|
-
if (response.type
|
|
53
|
-
getType(context, response.type)["
|
|
52
|
+
if (response.type) {
|
|
53
|
+
getType(context, response.type)["usage"] = UsageFlags.None;
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
const itemType = getType(context, method.response.type);
|
|
@@ -84,14 +84,13 @@ export function emitLroPagingHttpMethod(context, rootClient, method, operationGr
|
|
|
84
84
|
return [lroMethod.initialOperation, pagingMethod, lroMethod];
|
|
85
85
|
}
|
|
86
86
|
function emitHttpOperation(context, rootClient, operationGroupName, operation, method) {
|
|
87
|
-
var _a, _b;
|
|
88
87
|
const responses = [];
|
|
89
88
|
const exceptions = [];
|
|
90
89
|
for (const [statusCodes, response] of operation.responses) {
|
|
91
90
|
responses.push(emitHttpResponse(context, statusCodes, response, method));
|
|
92
91
|
}
|
|
93
92
|
for (const [statusCodes, exception] of operation.exceptions) {
|
|
94
|
-
exceptions.push(emitHttpResponse(context, statusCodes, exception));
|
|
93
|
+
exceptions.push(emitHttpResponse(context, statusCodes, exception, undefined, true));
|
|
95
94
|
}
|
|
96
95
|
const result = {
|
|
97
96
|
url: operation.path,
|
|
@@ -108,14 +107,17 @@ function emitHttpOperation(context, rootClient, operationGroupName, operation, m
|
|
|
108
107
|
apiVersions: [],
|
|
109
108
|
wantTracing: true,
|
|
110
109
|
exposeStreamKeyword: true,
|
|
111
|
-
crossLanguageDefinitionId: method
|
|
112
|
-
samples: arrayToRecord(method
|
|
110
|
+
crossLanguageDefinitionId: method?.crossLanguageDefintionId,
|
|
111
|
+
samples: arrayToRecord(method?.operation.examples),
|
|
113
112
|
};
|
|
114
|
-
if (result.bodyParameter &&
|
|
115
|
-
((_a = operation.bodyParam) === null || _a === void 0 ? void 0 : _a.type.kind) === "model" &&
|
|
116
|
-
(((_b = operation.bodyParam) === null || _b === void 0 ? void 0 : _b.type.usage) & UsageFlags.Spread) > 0) {
|
|
113
|
+
if (result.bodyParameter && isSpreadBody(operation.bodyParam)) {
|
|
117
114
|
result.bodyParameter["propertyToParameterName"] = {};
|
|
118
115
|
result.bodyParameter["defaultToUnsetSentinel"] = true;
|
|
116
|
+
// if body type is not only used for this spread body, but also used in other input/output, we should clone it, then change the type base to json
|
|
117
|
+
if ((result.bodyParameter.type.usage & UsageFlags.Input) > 0 ||
|
|
118
|
+
(result.bodyParameter.type.usage & UsageFlags.Output) > 0) {
|
|
119
|
+
result.bodyParameter.type = { ...result.bodyParameter.type, name: `${method.name}Request` };
|
|
120
|
+
}
|
|
119
121
|
result.bodyParameter.type.base = "json";
|
|
120
122
|
for (const property of result.bodyParameter.type.properties) {
|
|
121
123
|
result.bodyParameter["propertyToParameterName"][property["wireName"]] = property["clientName"];
|
|
@@ -124,6 +126,9 @@ function emitHttpOperation(context, rootClient, operationGroupName, operation, m
|
|
|
124
126
|
}
|
|
125
127
|
return result;
|
|
126
128
|
}
|
|
129
|
+
function isSpreadBody(bodyParam) {
|
|
130
|
+
return bodyParam?.type.kind === "model" && bodyParam.type !== bodyParam.correspondingMethodParams[0]?.type;
|
|
131
|
+
}
|
|
127
132
|
function emitFlattenedParameter(bodyParameter, property) {
|
|
128
133
|
return {
|
|
129
134
|
checkClientInput: false,
|
|
@@ -153,12 +158,12 @@ function emitHttpPathParameter(context, parameter) {
|
|
|
153
158
|
location: parameter.kind,
|
|
154
159
|
implementation: getImplementation(context, parameter),
|
|
155
160
|
clientDefaultValue: parameter.clientDefaultValue,
|
|
156
|
-
skipUrlEncoding: parameter.
|
|
161
|
+
skipUrlEncoding: parameter.allowReserved,
|
|
157
162
|
};
|
|
158
163
|
}
|
|
159
164
|
function emitHttpHeaderParameter(context, parameter) {
|
|
160
165
|
const base = emitParamBase(context, parameter);
|
|
161
|
-
const [delimiter, explode] =
|
|
166
|
+
const [delimiter, explode] = getDelimiterAndExplode(parameter);
|
|
162
167
|
let clientDefaultValue = parameter.clientDefaultValue;
|
|
163
168
|
if (isContentTypeParameter(parameter)) {
|
|
164
169
|
// we switch to string type for content-type header
|
|
@@ -179,7 +184,7 @@ function emitHttpHeaderParameter(context, parameter) {
|
|
|
179
184
|
}
|
|
180
185
|
function emitHttpQueryParameter(context, parameter) {
|
|
181
186
|
const base = emitParamBase(context, parameter);
|
|
182
|
-
const [delimiter, explode] =
|
|
187
|
+
const [delimiter, explode] = getDelimiterAndExplode(parameter);
|
|
183
188
|
return {
|
|
184
189
|
...base,
|
|
185
190
|
wireName: parameter.serializedName,
|
|
@@ -211,7 +216,7 @@ function emitHttpBodyParameter(context, bodyParam) {
|
|
|
211
216
|
if (bodyParam === undefined)
|
|
212
217
|
return undefined;
|
|
213
218
|
return {
|
|
214
|
-
...emitParamBase(context, bodyParam
|
|
219
|
+
...emitParamBase(context, bodyParam),
|
|
215
220
|
contentTypes: bodyParam.contentTypes,
|
|
216
221
|
location: bodyParam.kind,
|
|
217
222
|
clientName: bodyParam.isGeneratedName ? "body" : camelToSnakeCase(bodyParam.name),
|
|
@@ -221,16 +226,22 @@ function emitHttpBodyParameter(context, bodyParam) {
|
|
|
221
226
|
defaultContentType: bodyParam.defaultContentType,
|
|
222
227
|
};
|
|
223
228
|
}
|
|
224
|
-
function emitHttpResponse(context, statusCodes, response, method) {
|
|
225
|
-
var _a;
|
|
229
|
+
function emitHttpResponse(context, statusCodes, response, method, isException = false) {
|
|
226
230
|
if (!response)
|
|
227
231
|
return undefined;
|
|
228
232
|
let type = undefined;
|
|
229
|
-
if (
|
|
230
|
-
type
|
|
233
|
+
if (isException) {
|
|
234
|
+
if (response.type && !isAzureCoreErrorResponse(response.type)) {
|
|
235
|
+
type = getType(context, response.type);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
else if (method && !method.kind.includes("basic")) {
|
|
239
|
+
if (method.response.type) {
|
|
240
|
+
type = getType(context, method.response.type);
|
|
241
|
+
}
|
|
231
242
|
}
|
|
232
|
-
else if (
|
|
233
|
-
type = getType(context,
|
|
243
|
+
else if (response.type) {
|
|
244
|
+
type = getType(context, response.type);
|
|
234
245
|
}
|
|
235
246
|
return {
|
|
236
247
|
headers: response.headers.map((x) => emitHttpResponseHeader(context, x)),
|
|
@@ -242,8 +253,8 @@ function emitHttpResponse(context, statusCodes, response, method) {
|
|
|
242
253
|
discriminator: "basic",
|
|
243
254
|
type,
|
|
244
255
|
contentTypes: response.contentTypes,
|
|
245
|
-
defaultContentType:
|
|
246
|
-
resultProperty: method
|
|
256
|
+
defaultContentType: response.defaultContentType ?? "application/json",
|
|
257
|
+
resultProperty: method?.response.resultPath,
|
|
247
258
|
};
|
|
248
259
|
}
|
|
249
260
|
function emitHttpResponseHeader(context, header) {
|