def setuptools_parse_requirements_backport(strs):  <EOL>
<EOL>def yield_lines(strs):<EOL><INDENT>"""<STR_LIT>"""<EOL>if isinstance(strs, six.string_types):<EOL><INDENT>for s in strs.splitlines():<EOL><INDENT>s = s.strip()<EOL>if s and not s.startswith('<STR_LIT:#>'):<EOL><INDENT>yield s<EOL><DEDENT><DEDENT><DEDENT>else:<EOL><INDENT>for ss in strs:<EOL><INDENT>for s in yield_lines(ss):<EOL><INDENT>yield s<EOL><DEDENT><DEDENT><DEDENT><DEDENT>lines = iter(yield_lines(strs))<EOL>for line in lines:<EOL><INDENT>if '<STR_LIT>' in line:<EOL><INDENT>line = line[:line.find('<STR_LIT>')]<EOL><DEDENT>if line.endswith('<STR_LIT:\\>'):<EOL><INDENT>line = line[:-<NUM_LIT:2>].strip()<EOL>line += next(lines)<EOL><DEDENT>yield PackagingRequirement(line)<EOL><DEDENT>
Yield ``Requirement`` objects for each specification in `strs`

    `strs` must be a string, or a (possibly-nested) iterable thereof.