Replying to
@riverfount Outra opção para fazer um singleton é usar o @lru_cache direto na classe. Exemplo:
@lru_cache
class ...
Único detalhe é que ele vai criar uma instância para cada combinação diferente de parâmetros que receber, mas se não receber nenhum parâmetro sempre retornará a mesma instância.
Mas eu particularmente prefiro usar anotações nesse caso. Exemplo:
from typing import Annotated
RunningSettings = Annotated[Settings, Depends(get_settings)]
Assim nas views basta usar RunningSettings como tipo do parâmetro e não precisa ficar se preocupando com o Depends toda vez.