From 19da3a22993f4fd43d2be8a884e5e8c02e4a2902 Mon Sep 17 00:00:00 2001 From: Patrick Arminio Date: Fri, 11 Jul 2025 14:19:39 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Always=20load=20settings=20lazil?= =?UTF-8?q?y?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/fastapi_cloud_cli/commands/login.py | 6 +++++- src/fastapi_cloud_cli/config.py | 5 +++-- src/fastapi_cloud_cli/utils/api.py | 4 +++- tests/test_cli_deploy.py | 3 ++- tests/test_cli_login.py | 3 ++- tests/test_cli_whoami.py | 3 ++- tests/test_env_delete.py | 3 ++- tests/test_env_list.py | 3 ++- tests/test_env_set.py | 3 ++- 9 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/fastapi_cloud_cli/commands/login.py b/src/fastapi_cloud_cli/commands/login.py index 50fc819..3f881ba 100644 --- a/src/fastapi_cloud_cli/commands/login.py +++ b/src/fastapi_cloud_cli/commands/login.py @@ -6,7 +6,7 @@ import typer from pydantic import BaseModel -from fastapi_cloud_cli.config import settings +from fastapi_cloud_cli.config import Settings from fastapi_cloud_cli.utils.api import APIClient from fastapi_cloud_cli.utils.auth import AuthConfig, write_auth_config from fastapi_cloud_cli.utils.cli import get_rich_toolkit, handle_http_errors @@ -29,6 +29,8 @@ class TokenResponse(BaseModel): def _start_device_authorization( client: httpx.Client, ) -> AuthorizationData: + settings = Settings.get() + response = client.post( "/login/device/authorization", data={"client_id": settings.client_id} ) @@ -39,6 +41,8 @@ def _start_device_authorization( def _fetch_access_token(client: httpx.Client, device_code: str, interval: int) -> str: + settings = Settings.get() + while True: response = client.post( "/login/device/token", diff --git a/src/fastapi_cloud_cli/config.py b/src/fastapi_cloud_cli/config.py index 891c5bd..1988b6f 100644 --- a/src/fastapi_cloud_cli/config.py +++ b/src/fastapi_cloud_cli/config.py @@ -21,5 +21,6 @@ def from_user_settings(cls, config_path: Path) -> "Settings": return cls(**user_settings) - -settings = Settings.from_user_settings(get_cli_config_path()) + @classmethod + def get(cls) -> "Settings": + return cls.from_user_settings(get_cli_config_path()) diff --git a/src/fastapi_cloud_cli/utils/api.py b/src/fastapi_cloud_cli/utils/api.py index ddb4e67..2e56bc8 100644 --- a/src/fastapi_cloud_cli/utils/api.py +++ b/src/fastapi_cloud_cli/utils/api.py @@ -1,12 +1,14 @@ import httpx from fastapi_cloud_cli import __version__ -from fastapi_cloud_cli.config import settings +from fastapi_cloud_cli.config import Settings from fastapi_cloud_cli.utils.auth import get_auth_token class APIClient(httpx.Client): def __init__(self) -> None: + settings = Settings.get() + token = get_auth_token() super().__init__( diff --git a/tests/test_cli_deploy.py b/tests/test_cli_deploy.py index 1ca232a..d8f14d3 100644 --- a/tests/test_cli_deploy.py +++ b/tests/test_cli_deploy.py @@ -11,11 +11,12 @@ from typer.testing import CliRunner from fastapi_cloud_cli.cli import app -from fastapi_cloud_cli.config import settings +from fastapi_cloud_cli.config import Settings from tests.conftest import ConfiguredApp from tests.utils import Keys, changing_dir runner = CliRunner() +settings = Settings.get() assets_path = Path(__file__).parent / "assets" diff --git a/tests/test_cli_login.py b/tests/test_cli_login.py index 19d88cc..072d3da 100644 --- a/tests/test_cli_login.py +++ b/tests/test_cli_login.py @@ -8,9 +8,10 @@ from typer.testing import CliRunner from fastapi_cloud_cli.cli import app -from fastapi_cloud_cli.config import settings +from fastapi_cloud_cli.config import Settings runner = CliRunner() +settings = Settings.get() assets_path = Path(__file__).parent / "assets" diff --git a/tests/test_cli_whoami.py b/tests/test_cli_whoami.py index 848e511..5bfd101 100644 --- a/tests/test_cli_whoami.py +++ b/tests/test_cli_whoami.py @@ -6,9 +6,10 @@ from typer.testing import CliRunner from fastapi_cloud_cli.cli import app -from fastapi_cloud_cli.config import settings +from fastapi_cloud_cli.config import Settings runner = CliRunner() +settings = Settings.get() assets_path = Path(__file__).parent / "assets" diff --git a/tests/test_env_delete.py b/tests/test_env_delete.py index 2c34dd2..1b9f9c5 100644 --- a/tests/test_env_delete.py +++ b/tests/test_env_delete.py @@ -7,10 +7,11 @@ from typer.testing import CliRunner from fastapi_cloud_cli.cli import app -from fastapi_cloud_cli.config import settings +from fastapi_cloud_cli.config import Settings from tests.utils import Keys, changing_dir runner = CliRunner() +settings = Settings.get() assets_path = Path(__file__).parent / "assets" diff --git a/tests/test_env_list.py b/tests/test_env_list.py index 263c6a8..22d9ff2 100644 --- a/tests/test_env_list.py +++ b/tests/test_env_list.py @@ -6,11 +6,12 @@ from typer.testing import CliRunner from fastapi_cloud_cli.cli import app -from fastapi_cloud_cli.config import settings +from fastapi_cloud_cli.config import Settings from tests.conftest import ConfiguredApp from tests.utils import changing_dir runner = CliRunner() +settings = Settings.get() assets_path = Path(__file__).parent / "assets" diff --git a/tests/test_env_set.py b/tests/test_env_set.py index 7a50f12..c4182da 100644 --- a/tests/test_env_set.py +++ b/tests/test_env_set.py @@ -7,10 +7,11 @@ from typer.testing import CliRunner from fastapi_cloud_cli.cli import app -from fastapi_cloud_cli.config import settings +from fastapi_cloud_cli.config import Settings from tests.utils import Keys, changing_dir runner = CliRunner() +settings = Settings.get() assets_path = Path(__file__).parent / "assets"