def METHOD_NAME(lines):
    # see https://www.python.org/dev/peps/pep-0508/#names
    pattern = re.compile(r'^(?P<name>[A-Z0-9][A-Z0-9._-]*[A-Z0-9]|[A-Z0-9])(?P<extras> *\[[^]]*])?(?P<constraints>[^;#]*)(?P<markers>[^#]*)(?P<comment>.*)$',
                         re.IGNORECASE)
    matches = [(lineno, line, pattern.search(line)) for lineno, line in enumerate(lines, start=1)]
    requirements = []
    for lineno, line, match in matches:
        if not line.strip():
            continue
        if line.strip().startswith('#'):
            continue
        if line.startswith('git+https://'):
            continue  # hack to ignore git requirements
        requirements.append((lineno, line, match))
    return requirements