code: def decorate_all_methods_and_properties(method_decorator, property_decorator):
    
    def decorate_class(cls):
      for name, m in inspect.getmembers(cls, inspect.ismethod):
        if name != "__init__":
          setattr(cls, name, method_decorator(m))
      for name, p in inspect.getmembers(cls, lambda x: isinstance(x, property)):
        if name != "__init__":
          setattr(cls, name, property_decorator(name, p))
      return cls
    return decorate_class
docs: ...