diff --git a/.chronus/changes/python-enumMemberTypesMap-2026-0-29-16-11-6.md b/.chronus/changes/python-enumMemberTypesMap-2026-0-29-16-11-6.md new file mode 100644 index 00000000000..1ef4ca34f3e --- /dev/null +++ b/.chronus/changes/python-enumMemberTypesMap-2026-0-29-16-11-6.md @@ -0,0 +1,7 @@ +--- +changeKind: fix +packages: + - "@typespec/http-client-python" +--- + +Properly cache enum values \ No newline at end of file diff --git a/packages/http-client-python/emitter/src/types.ts b/packages/http-client-python/emitter/src/types.ts index a448ce98eaa..4bffbdbb2c6 100644 --- a/packages/http-client-python/emitter/src/types.ts +++ b/packages/http-client-python/emitter/src/types.ts @@ -385,12 +385,15 @@ function emitEnumMember( type: SdkEnumValueType, enumType: Record, ): Record { + if (typesMap.has(type)) { + return typesMap.get(type)!; + } // python don't generate enum created by TCGC, so we shall not generate type for enum member of the enum, either. if (type.enumType.isGeneratedName) { return getConstantFromEnumValueType(type); } - return { + const result = { name: enumName(type.name), value: type.value, description: type.summary ? type.summary : type.doc, @@ -398,6 +401,8 @@ function emitEnumMember( type: type.kind, valueType: enumType["valueType"], }; + typesMap.set(type, result); + return result; } function emitDurationOrDateType(type: SdkDurationType | SdkDateTimeType): Record {