-
-
Notifications
You must be signed in to change notification settings - Fork 612
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Erroneous line continuation generated when using --generate-hashes --annotate #1063
Comments
I have submitted a PR fixing this issue at #1065 |
Hello @wwuck, Thanks for the issue!
That's because pip joins lines at first and then ignores comments. See the code. Just wondering why would anyone strip comments from requirements.txt? |
That's odd. Probably this is a bug in the documentation since it's done the opposite in the code. I've checked how it works in python and bash, comments there stripped after line continuations are processed, otherwise, the parser wouldn't allow you to add a comment after line continuation. See: Python ok = \
"OK" \
# OK Bash echo \
OK \
# OK |
It's definitely a bug in the pip doc. See the original PR where "Comments are stripped before line continuations are processed" appeared and note the order of preprocessors in Would you like to create an issue/PR on pip's issue tracker? |
Thanks for the analysis. I've created an issue at pypa/pip#7728. |
Motion to close this as invalid? |
I'd keep it open until pip maintainers respond to pypa/pip#7728. |
Close based on pypa/pip#7780 approval. Thanks for the issue nonetheless! |
@atugushev You didn't close this. :) |
@pradyunsg thank you for the reminder :) |
When I generate a requirements.txt file using
pip-compile --generate-hashes --annotate
, the resulting output incorrectly contains a line continuation character before the following comment line. If I generate the requirements.txt usingpip-compile --generate-hashes --no-annotate
then the line continuation character is not printed before the followingpackage==version
line.I believe this is a problem because the requirements file format spec says:
Comments are stripped before line continuations are processed.
Considering a simple requirements.txt like the following (some --hash lines removed for brevity):
If we follow the requirements.txt spec and strip the comments before processing line continuations, then we end up with an invalid requirements.txt file where the line continuation character exists before the following
package==version
line:I hit this issue when trying to fix arkq/flake8-requirements#14. It would appear that pip itself does not follow this part of the spec correctly, as it seems to be fine processing the existing (incorrect) generated output from pip-compile.
Environment Versions
Linux
$ python -V
3.7.3
$ pip --version
20.0.2
$ pip-compile --version
4.4.2.dev2+gd405bf9
Steps to replicate
pip-compile --generate-hashes --annotate
from the following requirements.in:Expected result
Actual result
The text was updated successfully, but these errors were encountered: