@typespec/http-client-python 0.33.0 → 0.34.1
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/README.md +25 -3
- package/dist/emitter/emitter.d.ts.map +1 -1
- package/dist/emitter/emitter.js +2 -11
- package/dist/emitter/emitter.js.map +1 -1
- package/dist/emitter/external-process.d.ts +14 -0
- package/dist/emitter/external-process.d.ts.map +1 -1
- package/dist/emitter/external-process.js +17 -1
- package/dist/emitter/external-process.js.map +1 -1
- package/dist/emitter/lib.js +1 -1
- package/dist/emitter/lib.js.map +1 -1
- package/dist/emitter/node-runner.d.ts.map +1 -1
- package/dist/emitter/node-runner.js +2 -1
- package/dist/emitter/node-runner.js.map +1 -1
- package/dist/emitter/types.d.ts.map +1 -1
- package/dist/emitter/types.js +2 -0
- package/dist/emitter/types.js.map +1 -1
- package/dist/emitter/utils.d.ts +10 -0
- package/dist/emitter/utils.d.ts.map +1 -1
- package/dist/emitter/utils.js +12 -0
- package/dist/emitter/utils.js.map +1 -1
- package/emitter/src/emitter.ts +2 -14
- package/emitter/src/external-process.ts +18 -1
- package/emitter/src/lib.ts +1 -1
- package/emitter/src/node-runner.ts +2 -1
- package/emitter/src/types.ts +2 -0
- package/emitter/src/utils.ts +13 -0
- package/emitter/temp/tsconfig.tsbuildinfo +1 -1
- package/emitter/test/external-process.test.ts +28 -0
- package/emitter/test/utils.test.ts +12 -1
- package/eng/scripts/ci/regenerate-common.ts +40 -15
- package/eng/scripts/setup/__pycache__/package_manager.cpython-311.pyc +0 -0
- package/eng/scripts/setup/__pycache__/venvtools.cpython-311.pyc +0 -0
- package/generator/build/lib/pygen/__init__.py +3 -3
- package/generator/build/lib/pygen/codegen/models/__init__.py +4 -2
- package/generator/build/lib/pygen/codegen/models/code_model.py +27 -5
- package/generator/build/lib/pygen/codegen/models/combined_type.py +3 -3
- package/generator/build/lib/pygen/codegen/models/enum_type.py +75 -25
- package/generator/build/lib/pygen/codegen/models/list_type.py +10 -4
- package/generator/build/lib/pygen/codegen/models/model_type.py +149 -4
- package/generator/build/lib/pygen/codegen/models/operation.py +1 -0
- package/generator/build/lib/pygen/codegen/models/paging_operation.py +5 -1
- package/generator/build/lib/pygen/codegen/models/parameter.py +2 -2
- package/generator/build/lib/pygen/codegen/models/primitive_types.py +30 -6
- package/generator/build/lib/pygen/codegen/models/property.py +21 -8
- package/generator/build/lib/pygen/codegen/models/response.py +16 -3
- package/generator/build/lib/pygen/codegen/models/utils.py +3 -6
- package/generator/build/lib/pygen/codegen/serializers/__init__.py +46 -11
- package/generator/build/lib/pygen/codegen/serializers/builder_serializer.py +48 -15
- package/generator/build/lib/pygen/codegen/serializers/model_init_serializer.py +1 -1
- package/generator/build/lib/pygen/codegen/serializers/model_serializer.py +127 -3
- package/generator/build/lib/pygen/codegen/serializers/types_serializer.py +356 -12
- package/generator/build/lib/pygen/codegen/serializers/unions_serializer.py +44 -0
- package/generator/build/lib/pygen/codegen/templates/model_container.py.jinja2 +1 -1
- package/generator/build/lib/pygen/codegen/templates/types.py.jinja2 +51 -2
- package/generator/build/lib/pygen/codegen/templates/unions.py.jinja2 +9 -0
- package/generator/build/lib/pygen/preprocess/__init__.py +175 -162
- package/generator/build/lib/pygen/utils.py +6 -24
- package/generator/component-detection-pip-report.json +9 -9
- package/generator/dist/pygen-0.1.0-py3-none-any.whl +0 -0
- package/generator/pygen/__init__.py +3 -3
- package/generator/pygen/codegen/models/__init__.py +4 -2
- package/generator/pygen/codegen/models/code_model.py +27 -5
- package/generator/pygen/codegen/models/combined_type.py +3 -3
- package/generator/pygen/codegen/models/enum_type.py +75 -25
- package/generator/pygen/codegen/models/list_type.py +10 -4
- package/generator/pygen/codegen/models/model_type.py +149 -4
- package/generator/pygen/codegen/models/operation.py +1 -0
- package/generator/pygen/codegen/models/paging_operation.py +5 -1
- package/generator/pygen/codegen/models/parameter.py +2 -2
- package/generator/pygen/codegen/models/primitive_types.py +30 -6
- package/generator/pygen/codegen/models/property.py +21 -8
- package/generator/pygen/codegen/models/response.py +16 -3
- package/generator/pygen/codegen/models/utils.py +3 -6
- package/generator/pygen/codegen/serializers/__init__.py +46 -11
- package/generator/pygen/codegen/serializers/builder_serializer.py +48 -15
- package/generator/pygen/codegen/serializers/model_init_serializer.py +1 -1
- package/generator/pygen/codegen/serializers/model_serializer.py +127 -3
- package/generator/pygen/codegen/serializers/types_serializer.py +356 -12
- package/generator/pygen/codegen/serializers/unions_serializer.py +44 -0
- package/generator/pygen/codegen/templates/model_container.py.jinja2 +1 -1
- package/generator/pygen/codegen/templates/types.py.jinja2 +51 -2
- package/generator/pygen/codegen/templates/unions.py.jinja2 +9 -0
- package/generator/pygen/preprocess/__init__.py +175 -162
- package/generator/pygen/utils.py +6 -24
- package/generator/pygen.egg-info/SOURCES.txt +2 -0
- package/package.json +5 -5
|
@@ -16,6 +16,7 @@ import { blackExcludeDirs, PYGEN_WHEEL_FILENAME } from "./constants.js";
|
|
|
16
16
|
import { saveCodeModelAsYaml } from "./external-process.js";
|
|
17
17
|
import { PythonEmitterOptions, reportDiagnostic } from "./lib.js";
|
|
18
18
|
import { runPython3 } from "./run-python3.js";
|
|
19
|
+
import { quoteShellArg } from "./utils.js";
|
|
19
20
|
|
|
20
21
|
export interface RunNodeEmitArgs {
|
|
21
22
|
context: EmitContext<PythonEmitterOptions>;
|
|
@@ -106,7 +107,7 @@ export async function runNodeEmit({
|
|
|
106
107
|
commandArgs["output-folder"] = outputDir;
|
|
107
108
|
commandArgs["tsp-file"] = yamlPath;
|
|
108
109
|
const commandFlags = Object.entries(commandArgs)
|
|
109
|
-
.map(([key, value]) => `--${key}=${value}`)
|
|
110
|
+
.map(([key, value]) => `--${key}=${quoteShellArg(String(value))}`)
|
|
110
111
|
.join(" ");
|
|
111
112
|
const command = `${venvPath} ${root}/eng/scripts/setup/run_tsp.py ${commandFlags}`;
|
|
112
113
|
execSync(command);
|
package/emitter/src/types.ts
CHANGED
|
@@ -233,6 +233,7 @@ function emitProperty(
|
|
|
233
233
|
// Python convert all the type of file part to FileType so clear these models' usage so that they won't be generated
|
|
234
234
|
addDisableGenerationMap(context, property.type);
|
|
235
235
|
}
|
|
236
|
+
const isNullable = !isMultipartFileInput && sourceType.kind === "nullable";
|
|
236
237
|
return {
|
|
237
238
|
clientName: getClientName(property),
|
|
238
239
|
isExactName: property.isExactName,
|
|
@@ -242,6 +243,7 @@ function emitProperty(
|
|
|
242
243
|
: property.serializationOptions?.json?.name) ?? property.name,
|
|
243
244
|
type: getType(context, sourceType),
|
|
244
245
|
optional: property.optional,
|
|
246
|
+
nullable: isNullable,
|
|
245
247
|
description: property.summary ? property.summary : property.doc,
|
|
246
248
|
addedOn: getAddedOn(context, property),
|
|
247
249
|
apiVersions: property.apiVersions,
|
package/emitter/src/utils.ts
CHANGED
|
@@ -268,6 +268,19 @@ export function capitalize(name: string): string {
|
|
|
268
268
|
return name[0].toUpperCase() + name.slice(1);
|
|
269
269
|
}
|
|
270
270
|
|
|
271
|
+
/**
|
|
272
|
+
* Quotes a value so it can be safely embedded in a shell command line.
|
|
273
|
+
*
|
|
274
|
+
* The value is wrapped in double quotes (handling spaces and other separators)
|
|
275
|
+
* and any embedded double quotes are escaped. This quoting must only be applied
|
|
276
|
+
* when the value is passed through a shell (e.g. `execSync`); it must never be
|
|
277
|
+
* baked into the option value itself, otherwise the quotes leak into non-shell
|
|
278
|
+
* consumers such as the Pyodide runtime and end up in generated files.
|
|
279
|
+
*/
|
|
280
|
+
export function quoteShellArg(value: string): string {
|
|
281
|
+
return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
|
|
282
|
+
}
|
|
283
|
+
|
|
271
284
|
// Library namespaces that should not be used as client namespaces
|
|
272
285
|
const LIB_NAMESPACE = [
|
|
273
286
|
"azure.core",
|