Maybe it would be clearer to drop the comment and newline handling stuff from the core requirement specifier syntax (declaring that newlines are simply a syntax error), and assume that there's some higher-level framing protocol taking care of that stuff?
that sounds right to me.
(Nice to see Metadata-Version: 2.0 getting some real-world use! I guess???
the use of 2.0 already is odd see here for old discussion in the wheel tracker: https://bitbucket.org/pypa/wheel/issues/96/metadata-version-20