Skip to content

Commit 2336975

Browse files
authored
πŸ› Always load settings lazily (#64)
1 parent 660072b commit 2336975

File tree

9 files changed

+23
-10
lines changed

9 files changed

+23
-10
lines changed

β€Žsrc/fastapi_cloud_cli/commands/login.pyβ€Ž

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import typer
77
from pydantic import BaseModel
88

9-
from fastapi_cloud_cli.config import settings
9+
from fastapi_cloud_cli.config import Settings
1010
from fastapi_cloud_cli.utils.api import APIClient
1111
from fastapi_cloud_cli.utils.auth import AuthConfig, write_auth_config
1212
from fastapi_cloud_cli.utils.cli import get_rich_toolkit, handle_http_errors
@@ -29,6 +29,8 @@ class TokenResponse(BaseModel):
2929
def _start_device_authorization(
3030
client: httpx.Client,
3131
) -> AuthorizationData:
32+
settings = Settings.get()
33+
3234
response = client.post(
3335
"/login/device/authorization", data={"client_id": settings.client_id}
3436
)
@@ -39,6 +41,8 @@ def _start_device_authorization(
3941

4042

4143
def _fetch_access_token(client: httpx.Client, device_code: str, interval: int) -> str:
44+
settings = Settings.get()
45+
4246
while True:
4347
response = client.post(
4448
"/login/device/token",

β€Žsrc/fastapi_cloud_cli/config.pyβ€Ž

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,6 @@ def from_user_settings(cls, config_path: Path) -> "Settings":
2121

2222
return cls(**user_settings)
2323

24-
25-
settings = Settings.from_user_settings(get_cli_config_path())
24+
@classmethod
25+
def get(cls) -> "Settings":
26+
return cls.from_user_settings(get_cli_config_path())

β€Žsrc/fastapi_cloud_cli/utils/api.pyβ€Ž

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import httpx
22

33
from fastapi_cloud_cli import __version__
4-
from fastapi_cloud_cli.config import settings
4+
from fastapi_cloud_cli.config import Settings
55
from fastapi_cloud_cli.utils.auth import get_auth_token
66

77

88
class APIClient(httpx.Client):
99
def __init__(self) -> None:
10+
settings = Settings.get()
11+
1012
token = get_auth_token()
1113

1214
super().__init__(

β€Žtests/test_cli_deploy.pyβ€Ž

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@
1111
from typer.testing import CliRunner
1212

1313
from fastapi_cloud_cli.cli import app
14-
from fastapi_cloud_cli.config import settings
14+
from fastapi_cloud_cli.config import Settings
1515
from tests.conftest import ConfiguredApp
1616
from tests.utils import Keys, changing_dir
1717

1818
runner = CliRunner()
19+
settings = Settings.get()
1920

2021
assets_path = Path(__file__).parent / "assets"
2122

β€Žtests/test_cli_login.pyβ€Ž

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,10 @@
88
from typer.testing import CliRunner
99

1010
from fastapi_cloud_cli.cli import app
11-
from fastapi_cloud_cli.config import settings
11+
from fastapi_cloud_cli.config import Settings
1212

1313
runner = CliRunner()
14+
settings = Settings.get()
1415

1516
assets_path = Path(__file__).parent / "assets"
1617

β€Žtests/test_cli_whoami.pyβ€Ž

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,10 @@
66
from typer.testing import CliRunner
77

88
from fastapi_cloud_cli.cli import app
9-
from fastapi_cloud_cli.config import settings
9+
from fastapi_cloud_cli.config import Settings
1010

1111
runner = CliRunner()
12+
settings = Settings.get()
1213

1314
assets_path = Path(__file__).parent / "assets"
1415

β€Žtests/test_env_delete.pyβ€Ž

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
from typer.testing import CliRunner
88

99
from fastapi_cloud_cli.cli import app
10-
from fastapi_cloud_cli.config import settings
10+
from fastapi_cloud_cli.config import Settings
1111
from tests.utils import Keys, changing_dir
1212

1313
runner = CliRunner()
14+
settings = Settings.get()
1415

1516
assets_path = Path(__file__).parent / "assets"
1617

β€Žtests/test_env_list.pyβ€Ž

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,12 @@
66
from typer.testing import CliRunner
77

88
from fastapi_cloud_cli.cli import app
9-
from fastapi_cloud_cli.config import settings
9+
from fastapi_cloud_cli.config import Settings
1010
from tests.conftest import ConfiguredApp
1111
from tests.utils import changing_dir
1212

1313
runner = CliRunner()
14+
settings = Settings.get()
1415

1516
assets_path = Path(__file__).parent / "assets"
1617

β€Žtests/test_env_set.pyβ€Ž

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@
77
from typer.testing import CliRunner
88

99
from fastapi_cloud_cli.cli import app
10-
from fastapi_cloud_cli.config import settings
10+
from fastapi_cloud_cli.config import Settings
1111
from tests.utils import Keys, changing_dir
1212

1313
runner = CliRunner()
14+
settings = Settings.get()
1415

1516
assets_path = Path(__file__).parent / "assets"
1617

0 commit comments

Comments
Β (0)