better errors in state.py (#3929)
This commit is contained in:
parent
9497a89704
commit
6e1550b89f
@ -64,7 +64,10 @@ from reflex.event import (
|
|||||||
)
|
)
|
||||||
from reflex.utils import console, format, path_ops, prerequisites, types
|
from reflex.utils import console, format, path_ops, prerequisites, types
|
||||||
from reflex.utils.exceptions import (
|
from reflex.utils.exceptions import (
|
||||||
|
ComputedVarShadowsBaseVars,
|
||||||
|
ComputedVarShadowsStateVar,
|
||||||
DynamicRouteArgShadowsStateVar,
|
DynamicRouteArgShadowsStateVar,
|
||||||
|
EventHandlerShadowsBuiltInStateMethod,
|
||||||
ImmutableStateError,
|
ImmutableStateError,
|
||||||
LockExpiredError,
|
LockExpiredError,
|
||||||
)
|
)
|
||||||
@ -755,7 +758,7 @@ class BaseState(Base, ABC, extra=pydantic.Extra.allow):
|
|||||||
"""Check for shadow methods and raise error if any.
|
"""Check for shadow methods and raise error if any.
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
NameError: When an event handler shadows an inbuilt state method.
|
EventHandlerShadowsBuiltInStateMethod: When an event handler shadows an inbuilt state method.
|
||||||
"""
|
"""
|
||||||
overridden_methods = set()
|
overridden_methods = set()
|
||||||
state_base_functions = cls._get_base_functions()
|
state_base_functions = cls._get_base_functions()
|
||||||
@ -769,7 +772,7 @@ class BaseState(Base, ABC, extra=pydantic.Extra.allow):
|
|||||||
overridden_methods.add(method.__name__)
|
overridden_methods.add(method.__name__)
|
||||||
|
|
||||||
for method_name in overridden_methods:
|
for method_name in overridden_methods:
|
||||||
raise NameError(
|
raise EventHandlerShadowsBuiltInStateMethod(
|
||||||
f"The event handler name `{method_name}` shadows a builtin State method; use a different name instead"
|
f"The event handler name `{method_name}` shadows a builtin State method; use a different name instead"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -778,11 +781,11 @@ class BaseState(Base, ABC, extra=pydantic.Extra.allow):
|
|||||||
"""Check for shadow base vars and raise error if any.
|
"""Check for shadow base vars and raise error if any.
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
NameError: When a computed var shadows a base var.
|
ComputedVarShadowsBaseVars: When a computed var shadows a base var.
|
||||||
"""
|
"""
|
||||||
for computed_var_ in cls._get_computed_vars():
|
for computed_var_ in cls._get_computed_vars():
|
||||||
if computed_var_._js_expr in cls.__annotations__:
|
if computed_var_._js_expr in cls.__annotations__:
|
||||||
raise NameError(
|
raise ComputedVarShadowsBaseVars(
|
||||||
f"The computed var name `{computed_var_._js_expr}` shadows a base var in {cls.__module__}.{cls.__name__}; use a different name instead"
|
f"The computed var name `{computed_var_._js_expr}` shadows a base var in {cls.__module__}.{cls.__name__}; use a different name instead"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -791,14 +794,14 @@ class BaseState(Base, ABC, extra=pydantic.Extra.allow):
|
|||||||
"""Check for shadow computed vars and raise error if any.
|
"""Check for shadow computed vars and raise error if any.
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
NameError: When a computed var shadows another.
|
ComputedVarShadowsStateVar: When a computed var shadows another.
|
||||||
"""
|
"""
|
||||||
for name, cv in cls.__dict__.items():
|
for name, cv in cls.__dict__.items():
|
||||||
if not is_computed_var(cv):
|
if not is_computed_var(cv):
|
||||||
continue
|
continue
|
||||||
name = cv._js_expr
|
name = cv._js_expr
|
||||||
if name in cls.inherited_vars or name in cls.inherited_backend_vars:
|
if name in cls.inherited_vars or name in cls.inherited_backend_vars:
|
||||||
raise NameError(
|
raise ComputedVarShadowsStateVar(
|
||||||
f"The computed var name `{cv._js_expr}` shadows a var in {cls.__module__}.{cls.__name__}; use a different name instead"
|
f"The computed var name `{cv._js_expr}` shadows a var in {cls.__module__}.{cls.__name__}; use a different name instead"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -91,3 +91,19 @@ class EventFnArgMismatch(ReflexError, TypeError):
|
|||||||
|
|
||||||
class DynamicRouteArgShadowsStateVar(ReflexError, NameError):
|
class DynamicRouteArgShadowsStateVar(ReflexError, NameError):
|
||||||
"""Raised when a dynamic route arg shadows a state var."""
|
"""Raised when a dynamic route arg shadows a state var."""
|
||||||
|
|
||||||
|
|
||||||
|
class ComputedVarShadowsStateVar(ReflexError, NameError):
|
||||||
|
"""Raised when a computed var shadows a state var."""
|
||||||
|
|
||||||
|
|
||||||
|
class ComputedVarShadowsBaseVars(ReflexError, NameError):
|
||||||
|
"""Raised when a computed var shadows a base var."""
|
||||||
|
|
||||||
|
|
||||||
|
class EventHandlerShadowsBuiltInStateMethod(ReflexError, NameError):
|
||||||
|
"""Raised when an event handler shadows a built-in state method."""
|
||||||
|
|
||||||
|
|
||||||
|
class GeneratedCodeHasNoFunctionDefs(ReflexError):
|
||||||
|
"""Raised when refactored code generated with flexgen has no functions defined."""
|
||||||
|
Loading…
Reference in New Issue
Block a user