from collections.abc import Callable class CachedProperty: def __init__(self, func: Callable) -> None: ... def __get__(self, obj, typ): ... def __set__(self, obj, value) -> None: ... # note: this is a lie to make type checkers happy (they special # case property). cache_readonly uses attribute names similar to # property (fget) but it does not provide fset and fdel. cache_readonly = property class AxisProperty: def __init__(self, axis: int = ..., doc: str = ...) -> None: ... def __get__(self, obj, typ): ... def __set__(self, obj, value) -> None: ...