from typing import Callable
from typing import Any
from typing import Dict


def get_help_str(f: Callable[..., Any]) -> str:
    """
    Returns a string with format:
        - (function_name): <args (arg_type)> ...
    If f takes no argument, then the string returned is:
        - (function_name): (no args)
    """
    parameters: Dict[str, type] = f.__annotations__.copy()
    del parameters["return"]
    help_str: str = f"\t- {f.__name__}:"
    if not parameters:
        help_str += " (no args)"
    else:
        for pname, ptype in parameters.items():
            help_str += f" <{pname} ({ptype.__name__})>"
    return help_str