def collect_subclasses(cls):
    """
    Recursively collects all descendant subclasses that inherit from the
    given class, not including the class itself.

    Note:
        Does not include `cls` itself.

    Args:
        cls (class): The class object from which the collection should begin.

    Returns:
        list: A list of `class` objects that inherit from `cls`. This list
            will not include `cls` itself.
    """
    subclasses = set()
    for subclass in cls.__subclasses__():
        subclasses.add(subclass)
        subclasses.update(collect_subclasses(subclass))
    return list(subclasses)