diff --git a/reflex/app.py b/reflex/app.py index cdf21aa35..eb453bd0b 100644 --- a/reflex/app.py +++ b/reflex/app.py @@ -1157,7 +1157,7 @@ class App(MiddlewareMixin, LifespanMixin): if hasattr(handler_fn, "__name__"): _fn_name = handler_fn.__name__ else: - _fn_name = handler_fn.__class__.__name__ + _fn_name = type(handler_fn).__name__ if isinstance(handler_fn, functools.partial): raise ValueError( diff --git a/reflex/components/component.py b/reflex/components/component.py index 5c1c4941d..75a821ac8 100644 --- a/reflex/components/component.py +++ b/reflex/components/component.py @@ -161,7 +161,7 @@ class ComponentNamespace(SimpleNamespace): Returns: The hash of the namespace. """ - return hash(self.__class__.__name__) + return hash(type(self).__name__) def evaluate_style_namespaces(style: ComponentStyle) -> dict: @@ -2565,7 +2565,7 @@ class LiteralComponentVar(CachedVarOperation, LiteralVar, ComponentVar): Returns: The hash of the var. """ - return hash((self.__class__.__name__, self._js_expr)) + return hash((type(self).__name__, self._js_expr)) @classmethod def create( diff --git a/reflex/components/core/cond.py b/reflex/components/core/cond.py index b75667890..488990f54 100644 --- a/reflex/components/core/cond.py +++ b/reflex/components/core/cond.py @@ -49,9 +49,9 @@ class Cond(MemoizationLeaf): The conditional component. """ # Wrap everything in fragments. - if comp1.__class__.__name__ != "Fragment": + if type(comp1).__name__ != "Fragment": comp1 = Fragment.create(comp1) - if comp2 is None or comp2.__class__.__name__ != "Fragment": + if comp2 is None or type(comp2).__name__ != "Fragment": comp2 = Fragment.create(comp2) if comp2 else Fragment.create() return Fragment.create( cls( diff --git a/reflex/components/radix/themes/base.py b/reflex/components/radix/themes/base.py index 65a9ae835..9a8a2d7c0 100644 --- a/reflex/components/radix/themes/base.py +++ b/reflex/components/radix/themes/base.py @@ -139,9 +139,7 @@ class RadixThemesComponent(Component): component = super().create(*children, **props) if component.library is None: component.library = RadixThemesComponent.__fields__["library"].default - component.alias = "RadixThemes" + ( - component.tag or component.__class__.__name__ - ) + component.alias = "RadixThemes" + (component.tag or type(component).__name__) # value = props.get("value") # if value is not None and component.alias == "RadixThemesSelect.Root": # lv = LiteralVar.create(value) diff --git a/reflex/event.py b/reflex/event.py index 3022de556..9807b696b 100644 --- a/reflex/event.py +++ b/reflex/event.py @@ -1556,7 +1556,7 @@ class LiteralEventVar(VarOperationCall, LiteralVar, EventVar): Returns: The hash of the var. """ - return hash((self.__class__.__name__, self._js_expr)) + return hash((type(self).__name__, self._js_expr)) @classmethod def create( @@ -1620,7 +1620,7 @@ class LiteralEventChainVar(ArgsFunctionOperationBuilder, LiteralVar, EventChainV Returns: The hash of the var. """ - return hash((self.__class__.__name__, self._js_expr)) + return hash((type(self).__name__, self._js_expr)) @classmethod def create( diff --git a/reflex/state.py b/reflex/state.py index 5e132ef65..09e76159c 100644 --- a/reflex/state.py +++ b/reflex/state.py @@ -438,7 +438,7 @@ class BaseState(Base, ABC, extra=pydantic.Extra.allow): Returns: The string representation of the state. """ - return f"{self.__class__.__name__}({self.dict()})" + return f"{type(self).__name__}({self.dict()})" @classmethod def _get_computed_vars(cls) -> list[ComputedVar]: @@ -3618,7 +3618,7 @@ class MutableProxy(wrapt.ObjectProxy): Returns: The representation of the wrapped object. """ - return f"{self.__class__.__name__}({self.__wrapped__})" + return f"{type(self).__name__}({self.__wrapped__})" def _mark_dirty( self, diff --git a/reflex/vars/base.py b/reflex/vars/base.py index ea78d1a89..941a9d81a 100644 --- a/reflex/vars/base.py +++ b/reflex/vars/base.py @@ -1569,7 +1569,7 @@ class CachedVarOperation: if name == "_js_expr": return self._cached_var_name - parent_classes = inspect.getmro(self.__class__) + parent_classes = inspect.getmro(type(self)) next_class = parent_classes[parent_classes.index(CachedVarOperation) + 1] @@ -1611,7 +1611,7 @@ class CachedVarOperation: """ return hash( ( - self.__class__.__name__, + type(self).__name__, *[ getattr(self, field.name) for field in dataclasses.fields(self) # type: ignore @@ -1733,7 +1733,7 @@ class CallableVar(Var): Returns: The hash of the object. """ - return hash((self.__class__.__name__, self.original_var)) + return hash((type(self).__name__, self.original_var)) RETURN_TYPE = TypeVar("RETURN_TYPE") diff --git a/reflex/vars/number.py b/reflex/vars/number.py index a762796e2..d14f9695b 100644 --- a/reflex/vars/number.py +++ b/reflex/vars/number.py @@ -1012,7 +1012,7 @@ class LiteralNumberVar(LiteralVar, NumberVar): Returns: int: The hash value of the object. """ - return hash((self.__class__.__name__, self._var_value)) + return hash((type(self).__name__, self._var_value)) @classmethod def create(cls, value: float | int, _var_data: VarData | None = None): @@ -1064,7 +1064,7 @@ class LiteralBooleanVar(LiteralVar, BooleanVar): Returns: int: The hash value of the object. """ - return hash((self.__class__.__name__, self._var_value)) + return hash((type(self).__name__, self._var_value)) @classmethod def create(cls, value: bool, _var_data: VarData | None = None): diff --git a/reflex/vars/object.py b/reflex/vars/object.py index 032fc8058..5de431f5a 100644 --- a/reflex/vars/object.py +++ b/reflex/vars/object.py @@ -362,7 +362,7 @@ class LiteralObjectVar(CachedVarOperation, ObjectVar[OBJECT_TYPE], LiteralVar): Returns: The hash of the var. """ - return hash((self.__class__.__name__, self._js_expr)) + return hash((type(self).__name__, self._js_expr)) @cached_property_no_lock def _cached_get_all_var_data(self) -> VarData | None: diff --git a/reflex/vars/sequence.py b/reflex/vars/sequence.py index f5639685f..a02645309 100644 --- a/reflex/vars/sequence.py +++ b/reflex/vars/sequence.py @@ -667,7 +667,7 @@ class LiteralStringVar(LiteralVar, StringVar[str]): Returns: The hash of the var. """ - return hash((self.__class__.__name__, self._var_value)) + return hash((type(self).__name__, self._var_value)) def json(self) -> str: """Get the JSON representation of the var. diff --git a/tests/integration/test_state_inheritance.py b/tests/integration/test_state_inheritance.py index 81512a67a..6b93a2ed7 100644 --- a/tests/integration/test_state_inheritance.py +++ b/tests/integration/test_state_inheritance.py @@ -73,7 +73,7 @@ def StateInheritance(): def on_click_other_mixin(self): self.other_mixin_clicks += 1 self.other_mixin = ( - f"{self.__class__.__name__}.clicked.{self.other_mixin_clicks}" + f"{type(self).__name__}.clicked.{self.other_mixin_clicks}" ) class Base1(Mixin, rx.State): diff --git a/tests/units/test_model.py b/tests/units/test_model.py index ac8187e03..0a83f39ec 100644 --- a/tests/units/test_model.py +++ b/tests/units/test_model.py @@ -46,7 +46,7 @@ def test_default_primary_key(model_default_primary: Model): Args: model_default_primary: Fixture. """ - assert "id" in model_default_primary.__class__.__fields__ + assert "id" in type(model_default_primary).__fields__ def test_custom_primary_key(model_custom_primary: Model): @@ -55,7 +55,7 @@ def test_custom_primary_key(model_custom_primary: Model): Args: model_custom_primary: Fixture. """ - assert "id" not in model_custom_primary.__class__.__fields__ + assert "id" not in type(model_custom_primary).__fields__ @pytest.mark.filterwarnings( diff --git a/tests/units/test_state.py b/tests/units/test_state.py index 9dc2bc4e2..5c062ccb2 100644 --- a/tests/units/test_state.py +++ b/tests/units/test_state.py @@ -1698,7 +1698,7 @@ async def test_state_manager_modify_state( assert not state_manager._states_locks[token].locked() # separate instances should NOT share locks - sm2 = state_manager.__class__(state=TestState) + sm2 = type(state_manager)(state=TestState) assert sm2._state_manager_lock is state_manager._state_manager_lock assert not sm2._states_locks if state_manager._states_locks: