From 3b649c8bd1bd3e44ec18c6f9cf395dbe94bf5c7d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 4 Mar 2026 05:32:48 +0000 Subject: [PATCH 1/2] Initial plan From 0ee9d070d9390da2742a8a00d40592e91e3c795b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 4 Mar 2026 05:35:22 +0000 Subject: [PATCH 2/2] feat(http-client-python): remove reserved word padding for enum values Enum values are generated in UPPER_CASE so there is no need for reserved word padding. This removes PadType.ENUM_VALUE and its associated logic, and fixes the failing test_escaped_reserved_words test. Co-authored-by: msyyc <70930885+msyyc@users.noreply.github.com> --- ...on-removeEnumPadding-2026-1-27-12-23-22.md | 7 ++++++ .../generator/pygen/preprocess/__init__.py | 24 ++++--------------- .../pygen/preprocess/python_mappings.py | 2 -- .../test/unittests/test_name_converter.py | 7 ------ 4 files changed, 12 insertions(+), 28 deletions(-) create mode 100644 .chronus/changes/python-removeEnumPadding-2026-1-27-12-23-22.md diff --git a/.chronus/changes/python-removeEnumPadding-2026-1-27-12-23-22.md b/.chronus/changes/python-removeEnumPadding-2026-1-27-12-23-22.md new file mode 100644 index 00000000000..c0e8e0fa7ab --- /dev/null +++ b/.chronus/changes/python-removeEnumPadding-2026-1-27-12-23-22.md @@ -0,0 +1,7 @@ +--- +changeKind: feature +packages: + - "@typespec/http-client-python" +--- + +Remove enum value padding because we generate our enum value names with upper case so there is no need diff --git a/packages/http-client-python/generator/pygen/preprocess/__init__.py b/packages/http-client-python/generator/pygen/preprocess/__init__.py index 315d8ff9078..e2f8cf842b3 100644 --- a/packages/http-client-python/generator/pygen/preprocess/__init__.py +++ b/packages/http-client-python/generator/pygen/preprocess/__init__.py @@ -21,7 +21,6 @@ get_body_type_for_description, JSON_REGEXP, KNOWN_TYPES, - update_enum_value, ) @@ -272,25 +271,12 @@ def update_types(self, yaml_data: list[dict[str, Any]]) -> None: type["description"] = update_description(type.get("description", ""), type["name"]) type["snakeCaseName"] = to_snake_case(type["name"]) if type.get("values"): - # we're enums - values_to_add = [] + # we're enums - enum values are UPPER_CASE so no padding needed for reserved words for value in type["values"]: - padded_name = self.pad_reserved_words(value["name"].lower(), PadType.ENUM_VALUE, value).upper() - if self.version_tolerant: - if padded_name[0] in "0123456789": - padded_name = "ENUM_" + padded_name - value["name"] = padded_name - else: - if value["name"] != padded_name: - values_to_add.append( - update_enum_value( - name=padded_name, - value=value["value"], - description=value["description"], - enum_type=value["enumType"], - ) - ) - type["values"].extend(values_to_add) + upper_name = value["name"].upper() + if upper_name[0] in "0123456789": + upper_name = "ENUM_" + upper_name + value["name"] = upper_name # add type for reference for v in HEADERS_CONVERT_IN_METHOD.values(): diff --git a/packages/http-client-python/generator/pygen/preprocess/python_mappings.py b/packages/http-client-python/generator/pygen/preprocess/python_mappings.py index d81bee8134d..c9621498437 100644 --- a/packages/http-client-python/generator/pygen/preprocess/python_mappings.py +++ b/packages/http-client-python/generator/pygen/preprocess/python_mappings.py @@ -56,7 +56,6 @@ class PadType(str, Enum): ENUM_CLASS = "Enum" METHOD = "_method" PARAMETER = "_parameter" - ENUM_VALUE = "_enum" PROPERTY = "_property" OPERATION_GROUP = "Operations" @@ -183,7 +182,6 @@ class PadType(str, Enum): PadType.MODEL: ["enum", *_always_reserved], PadType.PROPERTY: ["self", *_always_reserved], PadType.ENUM_CLASS: ["enum", *_always_reserved], - PadType.ENUM_VALUE: ["mro", *_always_reserved], PadType.OPERATION_GROUP: [*_always_reserved], } diff --git a/packages/http-client-python/generator/test/unittests/test_name_converter.py b/packages/http-client-python/generator/test/unittests/test_name_converter.py index c205c0b0bae..4bfbee891b6 100644 --- a/packages/http-client-python/generator/test/unittests/test_name_converter.py +++ b/packages/http-client-python/generator/test/unittests/test_name_converter.py @@ -34,10 +34,3 @@ def test_escaped_reserved_words(): for name in expected_conversion_parameter: assert pad_reserved_words(name, pad_type=PadType.PARAMETER) == expected_conversion_parameter[name] - expected_conversion_enum = { - "self": "self", - "mro": "mro_enum", - "continuation_token": "continuation_token", - } - for name in expected_conversion_enum: - assert pad_reserved_words(name, pad_type=PadType.ENUM_VALUE) == expected_conversion_enum[name]