@@ -3436,6 +3436,30 @@ class GrandchildUsesMixinState(ChildMixinState):
34363436 pass
34373437
34383438
3439+ class BareMixin :
3440+ """A bare mixin which does not inherit from rx.State."""
3441+
3442+ _bare_mixin : int = 0
3443+
3444+
3445+ class BareStateMixin (BareMixin , rx .State , mixin = True ):
3446+ """A state mixin that uses a bare mixin."""
3447+
3448+ pass
3449+
3450+
3451+ class BareMixinState (BareStateMixin , State ):
3452+ """A state that uses a bare mixin."""
3453+
3454+ pass
3455+
3456+
3457+ class ChildBareMixinState (BareMixinState ):
3458+ """A child state that uses a bare mixin."""
3459+
3460+ pass
3461+
3462+
34393463def test_mixin_state () -> None :
34403464 """Test that a mixin state works correctly."""
34413465 assert "num" in UsesMixinState .base_vars
@@ -3481,6 +3505,21 @@ def test_grandchild_mixin_state() -> None:
34813505 assert GrandchildUsesMixinState .get_root_state () == State
34823506
34833507
3508+ def test_bare_mixin_state () -> None :
3509+ """Test that a mixin can inherit from a concrete state class."""
3510+ assert "_bare_mixin" not in BareMixinState .inherited_vars
3511+ assert "_bare_mixin" not in BareMixinState .base_vars
3512+
3513+ assert BareMixinState .get_parent_state () == State
3514+ assert BareMixinState .get_root_state () == State
3515+
3516+ assert "_bare_mixin" not in ChildBareMixinState .inherited_vars
3517+ assert "_bare_mixin" not in ChildBareMixinState .base_vars
3518+
3519+ assert ChildBareMixinState .get_parent_state () == BareMixinState
3520+ assert ChildBareMixinState .get_root_state () == State
3521+
3522+
34843523def test_assignment_to_undeclared_vars ():
34853524 """Test that an attribute error is thrown when undeclared vars are set."""
34863525
0 commit comments