From c1a375b6fe44ec694528a853a682fda87a271f2c Mon Sep 17 00:00:00 2001 From: Charles Duffy Date: Tue, 1 Oct 2024 11:14:28 -0500 Subject: [PATCH] Cache calculated field_aliases for a schema --- litestar/openapi/spec/schema.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/litestar/openapi/spec/schema.py b/litestar/openapi/spec/schema.py index da4947ebef..2a0097f942 100644 --- a/litestar/openapi/spec/schema.py +++ b/litestar/openapi/spec/schema.py @@ -1,7 +1,7 @@ from __future__ import annotations from dataclasses import dataclass, field, fields, is_dataclass -from typing import TYPE_CHECKING, Any, Hashable, Mapping, Sequence +from typing import TYPE_CHECKING, Any, Dict, Hashable, Mapping, Sequence, cast from litestar.openapi.spec.base import BaseSchemaObject from litestar.utils.predicates import is_non_string_sequence @@ -648,11 +648,14 @@ def __hash__(self) -> int: return _recursive_hash(self) @classmethod - def field_aliases(cls) -> dict[str, str]: + def field_aliases(cls) -> Dict[str, str]: + if hasattr(cls, "_field_aliases"): + return cast(Dict[str, str], cls._field_aliases) retval = {} for field_def in fields(cls): if field_def.metadata is not None and (field_alias := field_def.metadata.get("alias")): retval[field_alias] = field_def.name + cls._field_aliases = retval return retval