code: def add_derived_property(cls, getter_function, name=None):
          
  
          if name is None:
              name = getter_function.__name__
          mp = property(fget=getter_function)
          setattr(cls, name, mp)
docs: Register a user-defined derived property
  
          Parameters
          ----------
          getter_function : function
              Function that fetches the result of the user-defined derived property
          name : str
              Derived property name
              If unassigned, will default to the function's name