From 27daac0ab0fa43e9574c44e1f7667d95673b73eb Mon Sep 17 00:00:00 2001 From: Artem Goncharov Date: Thu, 1 Aug 2024 09:09:06 +0200 Subject: [PATCH] Fix generation of openapi with py310 in py310 response_code decorator refering to http.HTTPStatus result in enum as such being used in openapi, while py311 does the proper conversion. Change-Id: I4726519f2e2e45d23ca91efecb66ac01addfda56 --- codegenerator/openapi/base.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/codegenerator/openapi/base.py b/codegenerator/openapi/base.py index fab3569..5cab9aa 100644 --- a/codegenerator/openapi/base.py +++ b/codegenerator/openapi/base.py @@ -13,6 +13,7 @@ import abc import copy import datetime +import enum import importlib import inspect import logging @@ -729,8 +730,15 @@ class OpenStackServerSourceBase: operation_spec.deprecated = True if not response_code: response_codes = getattr(func, "wsgi_code", None) - if response_codes and not isinstance(response_codes, list): - response_codes = [str(response_codes)] + if response_codes: + if not isinstance(response_codes, list): + response_codes = [response_codes] + # py starting from 3.11 magically works for str(enum.IntEnum), + # while older ones need an explicit conversion + response_codes = [ + rc.value if isinstance(rc, enum.IntEnum) else rc + for rc in response_codes + ] else: response_codes = [response_code] if not response_codes: