Browse Source

Refactor `Dependant.oauth_scopes` property for improved memory usage

pull/15336/head
ipeluffo 2 months ago
parent
commit
a92e6a349f
Failed to extract signature
  1. 19
      fastapi/dependencies/models.py

19
fastapi/dependencies/models.py

@ -49,15 +49,20 @@ class Dependant:
use_cache: bool = True use_cache: bool = True
path: str | None = None path: str | None = None
scope: Literal["function", "request"] | None = None scope: Literal["function", "request"] | None = None
# Lazy cached fields
_oauth_scopes_cache: list[str] = field(default=None, init=False, repr=False)
@cached_property @property
def oauth_scopes(self) -> list[str]: def oauth_scopes(self) -> list[str]:
scopes = self.parent_oauth_scopes.copy() if self.parent_oauth_scopes else [] if self._oauth_scopes_cache is None:
# This doesn't use a set to preserve order, just in case scopes = self.parent_oauth_scopes.copy() if self.parent_oauth_scopes else []
for scope in self.own_oauth_scopes or []: # This doesn't use a set to preserve order, just in case
if scope not in scopes: for scope in self.own_oauth_scopes or []:
scopes.append(scope) if scope not in scopes:
return scopes scopes.append(scope)
self._oauth_scopes_cache = scopes
return self._oauth_scopes_cache
@cached_property @cached_property
def cache_key(self) -> DependencyCacheKey: def cache_key(self) -> DependencyCacheKey:

Loading…
Cancel
Save