Skip to content

Commit 8f313ad

Browse files
authored
remove all get_config at the global scope (#4965)
* remove all get_config at the global scope * don't print value for default things
1 parent 518d975 commit 8f313ad

File tree

4 files changed

+99
-61
lines changed

4 files changed

+99
-61
lines changed

reflex/config.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -963,10 +963,11 @@ def update_from_env(self) -> dict[str, Any]:
963963
if key.upper() in _sensitive_env_vars:
964964
env_var = "***"
965965

966-
console.info(
967-
f"Overriding config value {key} with env var {key.upper()}={env_var}",
968-
dedupe=True,
969-
)
966+
if value != getattr(self, key):
967+
console.info(
968+
f"Overriding config value {key} with env var {key.upper()}={env_var}",
969+
dedupe=True,
970+
)
970971

971972
return updated_values
972973

reflex/custom_components/custom_components.py

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,8 @@
2020
from reflex.constants import CustomComponents
2121
from reflex.utils import console
2222

23-
config = get_config()
2423
custom_components_cli = typer.Typer()
2524

26-
POST_CUSTOM_COMPONENTS_GALLERY_ENDPOINT = (
27-
f"{config.cp_backend_url}/custom-components/gallery"
28-
)
29-
30-
GET_CUSTOM_COMPONENTS_GALLERY_BY_NAME_ENDPOINT = (
31-
f"{config.cp_backend_url}/custom-components/gallery"
32-
)
3325

3426
POST_CUSTOM_COMPONENTS_GALLERY_TIMEOUT = 15
3527

@@ -318,8 +310,8 @@ def init(
318310
True,
319311
help="Whether to install package from this local custom component in editable mode.",
320312
),
321-
loglevel: constants.LogLevel = typer.Option(
322-
config.loglevel, help="The log level to use."
313+
loglevel: constants.LogLevel | None = typer.Option(
314+
None, help="The log level to use."
323315
),
324316
):
325317
"""Initialize a custom component.
@@ -334,7 +326,7 @@ def init(
334326
"""
335327
from reflex.utils import exec, prerequisites
336328

337-
console.set_log_level(loglevel)
329+
console.set_log_level(loglevel or get_config().loglevel)
338330

339331
if CustomComponents.PYPROJECT_TOML.exists():
340332
console.error(f"A {CustomComponents.PYPROJECT_TOML} already exists. Aborting.")
@@ -460,16 +452,16 @@ def _run_build():
460452

461453
@custom_components_cli.command(name="build")
462454
def build(
463-
loglevel: constants.LogLevel = typer.Option(
464-
config.loglevel, help="The log level to use."
455+
loglevel: constants.LogLevel | None = typer.Option(
456+
None, help="The log level to use."
465457
),
466458
):
467459
"""Build a custom component. Must be run from the project root directory where the pyproject.toml is.
468460
469461
Args:
470462
loglevel: The log level to use.
471463
"""
472-
console.set_log_level(loglevel)
464+
console.set_log_level(loglevel or get_config().loglevel)
473465
_run_build()
474466

475467

@@ -641,8 +633,8 @@ def publish(
641633
True,
642634
help="Whether to interactively validate the project information in the pyproject.toml file.",
643635
),
644-
loglevel: constants.LogLevel = typer.Option(
645-
config.loglevel, help="The log level to use."
636+
loglevel: constants.LogLevel | None = typer.Option(
637+
None, help="The log level to use."
646638
),
647639
):
648640
"""Publish a custom component. Must be run from the project root directory where the pyproject.toml is.
@@ -660,7 +652,7 @@ def publish(
660652
Raises:
661653
Exit: If arguments provided are not correct or the publish fails.
662654
"""
663-
console.set_log_level(loglevel)
655+
console.set_log_level(loglevel or get_config().loglevel)
664656

665657
# Validate the repository name.
666658
repository = _validate_repository_name(repository)
@@ -853,6 +845,12 @@ def _collect_details_for_gallery():
853845
console.print(f"[ Custom component package name ] : {package_name}")
854846
params["package_name"] = package_name
855847

848+
config = get_config()
849+
850+
post_custom_components_gallery_endpoint = (
851+
f"{config.cp_backend_url}/custom-components/gallery"
852+
)
853+
856854
# Check the backend services if the user is allowed to update information of this package is already shared.
857855
try:
858856
console.debug(
@@ -862,7 +860,7 @@ def _collect_details_for_gallery():
862860
# 1. Check if the package is already shared by the user. If not, the backend will return 403.
863861
# 2. If this package is not shared before, this request records the package name in the backend.
864862
response = httpx.post(
865-
POST_CUSTOM_COMPONENTS_GALLERY_ENDPOINT,
863+
post_custom_components_gallery_endpoint,
866864
headers={"Authorization": f"Bearer {access_token}"},
867865
data=params,
868866
)
@@ -899,7 +897,7 @@ def _collect_details_for_gallery():
899897
try:
900898
console.debug(f"Sending custom component data: {params}")
901899
response = httpx.post(
902-
POST_CUSTOM_COMPONENTS_GALLERY_ENDPOINT,
900+
post_custom_components_gallery_endpoint,
903901
headers={"Authorization": f"Bearer {access_token}"},
904902
data=params,
905903
files=files,
@@ -949,24 +947,24 @@ def _get_file_from_prompt_in_loop() -> tuple[bytes, str] | None:
949947

950948
@custom_components_cli.command(name="share")
951949
def share_more_detail(
952-
loglevel: constants.LogLevel = typer.Option(
953-
config.loglevel, help="The log level to use."
950+
loglevel: constants.LogLevel | None = typer.Option(
951+
None, help="The log level to use."
954952
),
955953
):
956954
"""Collect more details on the published package for gallery.
957955
958956
Args:
959957
loglevel: The log level to use.
960958
"""
961-
console.set_log_level(loglevel)
959+
console.set_log_level(loglevel or get_config().loglevel)
962960

963961
_collect_details_for_gallery()
964962

965963

966964
@custom_components_cli.command()
967965
def install(
968-
loglevel: constants.LogLevel = typer.Option(
969-
config.loglevel, help="The log level to use."
966+
loglevel: constants.LogLevel | None = typer.Option(
967+
None, help="The log level to use."
970968
),
971969
):
972970
"""Install package from this local custom component in editable mode.
@@ -977,7 +975,7 @@ def install(
977975
Raises:
978976
Exit: If unable to install the current directory in editable mode.
979977
"""
980-
console.set_log_level(loglevel)
978+
console.set_log_level(loglevel or get_config().loglevel)
981979

982980
if _pip_install_on_demand(package_name=".", install_args=["-e"]):
983981
console.info("Package installed successfully!")

reflex/reflex.py

Lines changed: 69 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,6 @@
2222
cli = typer.Typer(add_completion=False, pretty_exceptions_enable=False)
2323

2424

25-
# Get the config.
26-
config = get_config()
27-
28-
2925
def version(value: bool):
3026
"""Get the Reflex version.
3127
@@ -58,13 +54,19 @@ def main(
5854
def _init(
5955
name: str,
6056
template: str | None = None,
61-
loglevel: constants.LogLevel = config.loglevel,
57+
loglevel: constants.LogLevel | None = None,
6258
ai: bool = False,
6359
):
6460
"""Initialize a new Reflex app in the given directory."""
6561
from reflex.utils import exec, prerequisites
6662

63+
if loglevel is not None:
64+
console.set_log_level(loglevel)
65+
66+
config = get_config()
67+
6768
# Set the log level.
69+
loglevel = loglevel or config.loglevel
6870
console.set_log_level(loglevel)
6971

7072
# Show system info
@@ -109,8 +111,8 @@ def init(
109111
None,
110112
help="The template to initialize the app with.",
111113
),
112-
loglevel: constants.LogLevel = typer.Option(
113-
config.loglevel, help="The log level to use."
114+
loglevel: constants.LogLevel | None = typer.Option(
115+
None, help="The log level to use."
114116
),
115117
ai: bool = typer.Option(
116118
False,
@@ -127,12 +129,20 @@ def _run(
127129
backend: bool = True,
128130
frontend_port: int | None = None,
129131
backend_port: int | None = None,
130-
backend_host: str = config.backend_host,
131-
loglevel: constants.LogLevel = config.loglevel,
132+
backend_host: str | None = None,
133+
loglevel: constants.LogLevel | None = None,
132134
):
133135
"""Run the app in the given directory."""
134136
from reflex.utils import build, exec, prerequisites, processes
135137

138+
if loglevel is not None:
139+
console.set_log_level(loglevel)
140+
141+
config = get_config()
142+
143+
loglevel = loglevel or config.loglevel
144+
backend_host = backend_host or config.backend_host
145+
136146
# Set the log level.
137147
console.set_log_level(loglevel)
138148

@@ -274,28 +284,36 @@ def run(
274284
help="Execute only backend.",
275285
envvar=environment.REFLEX_BACKEND_ONLY.name,
276286
),
277-
frontend_port: int = typer.Option(
278-
config.frontend_port,
287+
frontend_port: int | None = typer.Option(
288+
None,
279289
help="Specify a different frontend port.",
280290
envvar=environment.REFLEX_FRONTEND_PORT.name,
281291
),
282-
backend_port: int = typer.Option(
283-
config.backend_port,
292+
backend_port: int | None = typer.Option(
293+
None,
284294
help="Specify a different backend port.",
285295
envvar=environment.REFLEX_BACKEND_PORT.name,
286296
),
287-
backend_host: str = typer.Option(
288-
config.backend_host, help="Specify the backend host."
289-
),
290-
loglevel: constants.LogLevel = typer.Option(
291-
config.loglevel, help="The log level to use."
297+
backend_host: str | None = typer.Option(None, help="Specify the backend host."),
298+
loglevel: constants.LogLevel | None = typer.Option(
299+
None, help="The log level to use."
292300
),
293301
):
294302
"""Run the app in the current directory."""
295303
if frontend and backend:
296304
console.error("Cannot use both --frontend-only and --backend-only options.")
297305
raise typer.Exit(1)
298306

307+
if loglevel is not None:
308+
console.set_log_level(loglevel)
309+
310+
config = get_config()
311+
312+
frontend_port = frontend_port or config.frontend_port
313+
backend_port = backend_port or config.backend_port
314+
backend_host = backend_host or config.backend_host
315+
loglevel = loglevel or config.loglevel
316+
299317
environment.REFLEX_COMPILE_CONTEXT.set(constants.CompileContext.RUN)
300318
environment.REFLEX_BACKEND_ONLY.set(backend)
301319
environment.REFLEX_FRONTEND_ONLY.set(frontend)
@@ -335,8 +353,8 @@ def export(
335353
env: constants.Env = typer.Option(
336354
constants.Env.PROD, help="The environment to export the app in."
337355
),
338-
loglevel: constants.LogLevel = typer.Option(
339-
config.loglevel, help="The log level to use."
356+
loglevel: constants.LogLevel | None = typer.Option(
357+
None, help="The log level to use."
340358
),
341359
):
342360
"""Export the app to a zip file."""
@@ -347,8 +365,11 @@ def export(
347365

348366
frontend, backend = prerequisites.check_running_mode(frontend, backend)
349367

368+
loglevel = loglevel or get_config().loglevel
369+
console.set_log_level(loglevel)
370+
350371
if prerequisites.needs_reinit(frontend=frontend or not backend):
351-
_init(name=config.app_name, loglevel=loglevel)
372+
_init(name=get_config().app_name, loglevel=loglevel)
352373

353374
export_utils.export(
354375
zipping=zipping,
@@ -362,10 +383,14 @@ def export(
362383

363384

364385
@cli.command()
365-
def login(loglevel: constants.LogLevel = typer.Option(config.loglevel)):
386+
def login(loglevel: constants.LogLevel | None = typer.Option(None)):
366387
"""Authenticate with experimental Reflex hosting service."""
367388
from reflex_cli.v2 import cli as hosting_cli
368389

390+
loglevel = loglevel or get_config().loglevel
391+
392+
console.set_log_level(loglevel)
393+
369394
check_version()
370395

371396
validated_info = hosting_cli.login()
@@ -376,15 +401,17 @@ def login(loglevel: constants.LogLevel = typer.Option(config.loglevel)):
376401

377402
@cli.command()
378403
def logout(
379-
loglevel: constants.LogLevel = typer.Option(
380-
config.loglevel, help="The log level to use."
404+
loglevel: constants.LogLevel | None = typer.Option(
405+
None, help="The log level to use."
381406
),
382407
):
383408
"""Log out of access to Reflex hosting service."""
384409
from reflex_cli.v2.cli import logout
385410

386411
check_version()
387412

413+
loglevel = loglevel or get_config().loglevel
414+
388415
logout(loglevel) # pyright: ignore [reportArgumentType]
389416

390417

@@ -403,6 +430,8 @@ def db_init():
403430
from reflex import model
404431
from reflex.utils import prerequisites
405432

433+
config = get_config()
434+
406435
# Check the database url.
407436
if config.db_url is None:
408437
console.error("db_url is not configured, cannot initialize.")
@@ -470,8 +499,8 @@ def makemigrations(
470499

471500
@cli.command()
472501
def deploy(
473-
app_name: str = typer.Option(
474-
config.app_name,
502+
app_name: str | None = typer.Option(
503+
None,
475504
"--app-name",
476505
help="The name of the App to deploy under.",
477506
),
@@ -510,8 +539,8 @@ def deploy(
510539
"--envfile",
511540
help="The path to an env file to use. Will override any envs set manually.",
512541
),
513-
loglevel: constants.LogLevel = typer.Option(
514-
config.loglevel, help="The log level to use."
542+
loglevel: constants.LogLevel | None = typer.Option(
543+
None, help="The log level to use."
515544
),
516545
project: str | None = typer.Option(
517546
None,
@@ -542,6 +571,14 @@ def deploy(
542571
from reflex.utils import export as export_utils
543572
from reflex.utils import prerequisites
544573

574+
if loglevel is not None:
575+
console.set_log_level(loglevel)
576+
577+
config = get_config()
578+
579+
loglevel = loglevel or config.loglevel
580+
app_name = app_name or config.app_name
581+
545582
check_version()
546583

547584
environment.REFLEX_COMPILE_CONTEXT.set(constants.CompileContext.DEPLOY)
@@ -608,13 +645,15 @@ def convert_reflex_loglevel_to_reflex_cli_loglevel(
608645
@cli.command()
609646
def rename(
610647
new_name: str = typer.Argument(..., help="The new name for the app."),
611-
loglevel: constants.LogLevel = typer.Option(
612-
config.loglevel, help="The log level to use."
648+
loglevel: constants.LogLevel | None = typer.Option(
649+
None, help="The log level to use."
613650
),
614651
):
615652
"""Rename the app in the current directory."""
616653
from reflex.utils import prerequisites
617654

655+
loglevel = loglevel or get_config().loglevel
656+
618657
prerequisites.validate_app_name(new_name)
619658
prerequisites.rename_app(new_name, loglevel)
620659

0 commit comments

Comments
 (0)