class Foo: bar: int = field_property() def get_bar(self) -> int: return unwrap_property(self).bar def set_bar(self, value: int): unwrap_property(self).bar = value def del_bar(self): del unwrap_property(self).bar get_bar = field_property(bar).getter(get_bar) set_bar = field_property(bar).setter(set_bar) del_bar = field_property(bar).deleter(del_bar)
class Foo: bar: int = field_property() @field_property(bar) def get_bar(self) -> int: if global_bar is None: raise AttributeError("bar") return global_bar def set_bar(self, value: int): nonlocal global_bar global_bar = value def del_bar(self): nonlocal global_bar global_bar = None set_bar = field_property(bar).setter(set_bar) del_bar = field_property(bar).deleter(del_bar)
class Foo: bar: int = field_property(default=None) @field_property(bar) def get_bar(self): return 0
class WithoutDefault: no_default: int = field_property(repr=False) field_property(no_default).setter(setter)
class WithDefaultFactory: default_factory: int = field_property(default_factory=lambda: 1, repr=False) field_property(default_factory).setter(setter)
class WithDefault: default: int = field_property(default=0, repr=False) field_property(default).setter(setter)
class Foo: bar: int = field_property(init=False, raw=True) @field_property(bar) def get_bar(self) -> int: return 0
class Foo: bar: int = field_property()
def test_invalid_field_property(): with raises(ValueError, match=f"Invalid field property {None}"): field_property(None)
class Inherited(WithDefault): default: int = field_property(default=0, repr=False)
class Foo2(Foo): bar: int = field_property() getattr(field_property(bar), accessor)(mock)
class Foo2(Foo): bar: int = field_property(**overridden_args) @field_property(bar) def get_bar(self): return unwrap_property(self).bar + 1