update behaviour for wrong state passed as argument (#1447)

This commit is contained in:
Thomas Brandého 2023-07-28 20:18:36 +02:00 committed by GitHub
parent e6f4bcdb95
commit 6bc622e67d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 6 deletions

View File

@ -108,6 +108,7 @@ class App(Base):
"""
super().__init__(*args, **kwargs)
state_subclasses = State.__subclasses__()
inferred_state = state_subclasses[-1]
is_testing_env = constants.PYTEST_CURRENT_TEST in os.environ
# Special case to allow test cases have multiple subclasses of rx.State.
@ -117,13 +118,14 @@ class App(Base):
raise ValueError(
"rx.State has been subclassed multiple times. Only one subclass is allowed"
)
if self.state != DefaultState:
console.deprecate(
"Passing the state as keyword argument to `rx.App` is deprecated. "
"The base state will automatically be inferred as the subclass of `rx.State`."
)
self.state = state_subclasses[-1]
# verify that provided state is valid
if self.state not in [DefaultState, inferred_state]:
console.warn(
f"Using substate ({self.state.__name__}) as root state in `rx.App` is currently not supported."
f" Defaulting to root state: ({inferred_state.__name__})"
)
self.state = inferred_state
# Get the config
config = get_config()

View File

@ -21,6 +21,15 @@ def deprecate(msg: str) -> None:
_console.print(f"[yellow]DeprecationWarning: {msg}[/yellow]")
def warn(msg: str) -> None:
"""Print a warning about bad usage in Reflex.
Args:
msg: The warning message.
"""
_console.print(f"[orange1]UsageWarning: {msg}[/orange1]")
def log(msg: str) -> None:
"""Takes a string and logs it to the console.