def test_get_attr_by_inherit():
    attr = Attribute.get_attr(SomeClassSub, UnUsed)
    assert attr is None
    attr = Attribute.get_attr(SomeClassSub, UnUsed, inherit=True)
    assert attr is None
    attr = Attribute.get_attr(SomeClassSub, Data)
    assert attr is None
    attr = Attribute.get_attr(SomeClassSub, Data, inherit=True)
    assert attr is not None
def test_get_inherited_attr():
    class Parent(Attribute):
        pass
    class Current(Parent):
        pass
    class Sub(Current):
        pass

    @Current()
    class SomeClassScoped:
        pass

    attr = Attribute.get_attr(SomeClassScoped, Parent)
    assert attr is not None
    attr = Attribute.get_attr(SomeClassScoped, Current)
    assert attr is not None
    attr = Attribute.get_attr(SomeClassScoped, Sub)
    assert attr is None
def test_get_attr():
    attr = Attribute.get_attr(SomeClass, UnUsed)
    assert attr is None
    attr = Attribute.get_attr(SomeClass, Data)
    assert attr.args == (1, 2)
def test_attr_target():
    attr = Attribute.get_attr(SomeClassSub, Data, inherit=True)
    assert attr.target is SomeClassSub