def parse_dependency_line(line):
    """
    >>> parse_dependency_line("ABC==EFG")
    ('ABC', '==EFG')

    >>> parse_dependency_line("ABC>=EFG")
    ('ABC', '>=EFG')

    >>> parse_dependency_line("ABC<=EFG")
    ('ABC', '<=EFG')

    >>> parse_dependency_line("ABC~=EFG")
    ('ABC', '~=EFG')

    >>> parse_dependency_line("ABC")
    ('ABC', '')
    """
    first_version_descriptor \
        = next(filter(lambda ch: ch in ['=', '<', '>', '~'], line), None)
    if first_version_descriptor is not None:
        separator = line.find(first_version_descriptor)
        return line[:separator], line[separator:]
    else:
        return line, ""