From 66625bc795fc73f835ed7c36a0df69ae57353645 Mon Sep 17 00:00:00 2001 From: tadelesh Date: Tue, 7 Jan 2025 10:40:59 +0800 Subject: [PATCH 1/3] do not do exception sort if there is no operation groups --- packages/http-client-python/CHANGELOG.md | 6 ++++++ .../generator/pygen/codegen/__init__.py | 8 ++++++++ packages/http-client-python/package-lock.json | 14 +++++++------- packages/http-client-python/package.json | 6 +++--- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/packages/http-client-python/CHANGELOG.md b/packages/http-client-python/CHANGELOG.md index 0ffca955794..c72de8a4add 100644 --- a/packages/http-client-python/CHANGELOG.md +++ b/packages/http-client-python/CHANGELOG.md @@ -1,5 +1,11 @@ # Change Log - @typespec/http-client-python +## 0.5.1 + +### Bug Fixes + +- Do not do exception sort if there is no operation groups + ## 0.5.0 ### Features diff --git a/packages/http-client-python/generator/pygen/codegen/__init__.py b/packages/http-client-python/generator/pygen/codegen/__init__.py index 8a08e8e6a2a..f53857fe0ef 100644 --- a/packages/http-client-python/generator/pygen/codegen/__init__.py +++ b/packages/http-client-python/generator/pygen/codegen/__init__.py @@ -244,7 +244,11 @@ def _validate_code_model_options(self) -> None: @staticmethod def sort_exceptions(yaml_data: Dict[str, Any]) -> None: for client in yaml_data["clients"]: + if not client.get("operationGroups"): + continue for group in client["operationGroups"]: + if not group.get("operations"): + continue for operation in group["operations"]: if not operation.get("exceptions"): continue @@ -261,7 +265,11 @@ def sort_exceptions(yaml_data: Dict[str, Any]) -> None: @staticmethod def remove_cloud_errors(yaml_data: Dict[str, Any]) -> None: for client in yaml_data["clients"]: + if not client.get("operationGroups"): + continue for group in client["operationGroups"]: + if not group.get("operations"): + continue for operation in group["operations"]: if not operation.get("exceptions"): continue diff --git a/packages/http-client-python/package-lock.json b/packages/http-client-python/package-lock.json index 470fe5265b9..46fe0e3ff2d 100644 --- a/packages/http-client-python/package-lock.json +++ b/packages/http-client-python/package-lock.json @@ -1,12 +1,12 @@ { "name": "@typespec/http-client-python", - "version": "0.5.0", + "version": "0.5.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@typespec/http-client-python", - "version": "0.5.0", + "version": "0.5.1", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -21,7 +21,7 @@ "@azure-tools/typespec-azure-core": "~0.49.0", "@azure-tools/typespec-azure-resource-manager": "~0.49.0", "@azure-tools/typespec-azure-rulesets": "~0.49.0", - "@azure-tools/typespec-client-generator-core": "~0.49.0", + "@azure-tools/typespec-client-generator-core": "~0.49.1", "@types/js-yaml": "~4.0.5", "@types/node": "~22.5.4", "@types/semver": "7.5.8", @@ -46,7 +46,7 @@ "@azure-tools/typespec-azure-core": ">=0.49.0 <1.0.0", "@azure-tools/typespec-azure-resource-manager": ">=0.49.0 <1.0.0", "@azure-tools/typespec-azure-rulesets": ">=0.49.0 <3.0.0", - "@azure-tools/typespec-client-generator-core": ">=0.49.0 <1.0.0", + "@azure-tools/typespec-client-generator-core": ">=0.49.1 <1.0.0", "@typespec/compiler": ">=0.63.0 <1.0.0", "@typespec/http": ">=0.63.0 <1.0.0", "@typespec/openapi": ">=0.63.0 <1.0.0", @@ -145,9 +145,9 @@ } }, "node_modules/@azure-tools/typespec-client-generator-core": { - "version": "0.49.0", - "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.49.0.tgz", - "integrity": "sha512-inFLRIeTU0mQg4PT19O3YwT/4YODLuTgIsXuhKDdG/sEsx8PG8AEFTabtnZJ0w3Lc4xuxKFJrzZ2ZH2iiAAbig==", + "version": "0.49.1", + "resolved": "https://registry.npmjs.org/@azure-tools/typespec-client-generator-core/-/typespec-client-generator-core-0.49.1.tgz", + "integrity": "sha512-uAzlkYfL73lp1BnP8HMcIcS8iud7UnQzw6bf6FCUkKFO1B6wDwcvut3HfTtUj1kvw0XkiVJ0NkcxT0Dz0cylpQ==", "dev": true, "dependencies": { "change-case": "~5.4.4", diff --git a/packages/http-client-python/package.json b/packages/http-client-python/package.json index 8322dd9c285..934fcae1bf1 100644 --- a/packages/http-client-python/package.json +++ b/packages/http-client-python/package.json @@ -1,6 +1,6 @@ { "name": "@typespec/http-client-python", - "version": "0.5.0", + "version": "0.5.1", "author": "Microsoft Corporation", "description": "TypeSpec emitter for Python SDKs", "homepage": "https://typespec.io", @@ -60,7 +60,7 @@ "@azure-tools/typespec-azure-resource-manager": ">=0.49.0 <1.0.0", "@azure-tools/typespec-autorest": ">=0.49.0 <1.0.0", "@azure-tools/typespec-azure-rulesets": ">=0.49.0 <3.0.0", - "@azure-tools/typespec-client-generator-core": ">=0.49.0 <1.0.0" + "@azure-tools/typespec-client-generator-core": ">=0.49.1 <1.0.0" }, "dependencies": { "js-yaml": "~4.1.0", @@ -78,7 +78,7 @@ "@azure-tools/typespec-azure-core": "~0.49.0", "@azure-tools/typespec-azure-rulesets": "~0.49.0", "@azure-tools/typespec-azure-resource-manager": "~0.49.0", - "@azure-tools/typespec-client-generator-core": "~0.49.0", + "@azure-tools/typespec-client-generator-core": "~0.49.1", "@azure-tools/azure-http-specs": "0.1.0-alpha.4", "@typespec/http-specs": "0.1.0-alpha.5", "@types/js-yaml": "~4.0.5", From 317db39e5f0649d266c51319c1fbe9f944bc0c3a Mon Sep 17 00:00:00 2001 From: tadelesh Date: Tue, 7 Jan 2025 10:47:15 +0800 Subject: [PATCH 2/3] refine code --- .../generator/pygen/codegen/__init__.py | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/packages/http-client-python/generator/pygen/codegen/__init__.py b/packages/http-client-python/generator/pygen/codegen/__init__.py index f53857fe0ef..07bd5b46f1f 100644 --- a/packages/http-client-python/generator/pygen/codegen/__init__.py +++ b/packages/http-client-python/generator/pygen/codegen/__init__.py @@ -244,12 +244,8 @@ def _validate_code_model_options(self) -> None: @staticmethod def sort_exceptions(yaml_data: Dict[str, Any]) -> None: for client in yaml_data["clients"]: - if not client.get("operationGroups"): - continue - for group in client["operationGroups"]: - if not group.get("operations"): - continue - for operation in group["operations"]: + for group in client.get("operationGroups", []): + for operation in group.get("operations", []): if not operation.get("exceptions"): continue # sort exceptions by status code, first single status code, then range, then default @@ -265,12 +261,8 @@ def sort_exceptions(yaml_data: Dict[str, Any]) -> None: @staticmethod def remove_cloud_errors(yaml_data: Dict[str, Any]) -> None: for client in yaml_data["clients"]: - if not client.get("operationGroups"): - continue - for group in client["operationGroups"]: - if not group.get("operations"): - continue - for operation in group["operations"]: + for group in client.get("operationGroups", []): + for operation in group.get("operations", []): if not operation.get("exceptions"): continue i = 0 From ee281c2da2336eec8494f896148ce636cf729e5e Mon Sep 17 00:00:00 2001 From: tadelesh Date: Tue, 7 Jan 2025 11:03:33 +0800 Subject: [PATCH 3/3] fix --- packages/http-client-python/emitter/src/http.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/http-client-python/emitter/src/http.ts b/packages/http-client-python/emitter/src/http.ts index cd2ae439047..0fc65ef64ec 100644 --- a/packages/http-client-python/emitter/src/http.ts +++ b/packages/http-client-python/emitter/src/http.ts @@ -204,7 +204,7 @@ function emitHttpOperation( apiVersions: [], wantTracing: true, exposeStreamKeyword: true, - crossLanguageDefinitionId: method?.crossLanguageDefintionId, + crossLanguageDefinitionId: method?.crossLanguageDefinitionId, samples: arrayToRecord(method?.operation.examples), internal: method.access === "internal", };