fix(openapi): avoid duplicated anyOf refs from shared app-level responses

The OpenAPI generator performed only a shallow copy of
`additional_response`, causing nested objects (e.g., `content`)
to be shared across all routes during openapi generation. When 
`deep_dict_update()` merged schemas for each route, the 
shared `anyOf` array accumulated duplicate $ref entries. 
Switching to a deep copy ensures each route processes an
isolated response definition and prevents duplication.
This commit is contained in:
DJ Melisso 2025-12-05 00:38:49 -08:00
parent 61ffa3eb82
commit 4fffe81a71
1 changed files with 2 additions and 1 deletions

View File

@ -1,3 +1,4 @@
import copy
import http.client import http.client
import inspect import inspect
import warnings import warnings
@ -378,7 +379,7 @@ def get_openapi_path(
additional_status_code, additional_status_code,
additional_response, additional_response,
) in route.responses.items(): ) in route.responses.items():
process_response = additional_response.copy() process_response = copy.deepcopy(additional_response)
process_response.pop("model", None) process_response.pop("model", None)
status_code_key = str(additional_status_code).upper() status_code_key = str(additional_status_code).upper()
if status_code_key == "DEFAULT": if status_code_key == "DEFAULT":