docs: def type_inherits_of_type(inheriting_type, base_type):
      """Checks whether inheriting_type inherits from base_type
  
      :param str inheriting_type:
      :param str base_type:
      :return: True is base_type is base of inheriting_type
      """
      assert isinstance(inheriting_type, type) or isclass(inheriting_type)
      assert isinstance(base_type, type) or isclass(base_type)
  
      if inheriting_type == base_type:
          return True
      else:
          if len(inheriting_type.__bases__) != 1:
              return False
          return type_inherits_of_type(inheriting_type.__bases__[0], base_type)