Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.
Sign upbpo-39400: Do not pass MANPAGER value to shell in pydoc #18123
Conversation
This comment has been minimized.
This comment has been minimized.
the-knights-who-say-ni
commented
Jan 22, 2020
Hello, and thanks for your contribution! I'm a bot set up to make sure that the project can legally accept this contribution by verifying everyone involved has signed the PSF contributor agreement (CLA). CLA MissingOur records indicate the following people have not signed the CLA: For legal reasons we need all the people listed to sign the CLA before we can look at your contribution. Please follow the steps outlined in the CPython devguide to rectify this issue. If you have recently signed the CLA, please wait at least one business day You can check yourself to see if the CLA has been received. Thanks again for the contribution, we look forward to reviewing it! |
RPigott commentedJan 22, 2020
•
edited by bedevere-bot
pipepager in pydoc passes documentation content to a pager using Popen with shell=True.
Shell parsing is incompatible with the interpretation of MANPAGER by the ubiquitous man program from man-db.
man man
:The difference in interpretation can make some valid values of MANPAGER cause pydoc to fail, but not man. For example,
In pydoc, the shell has split the unquoted terminal control sequences at the
;
.If we really want to borrow the MANPAGER variable from man, Python should match man's interpretation of the value. Python already has a built in parser that closely matches man's use of MANPAGER in
shlex.split
, so for compatibility we can use that instead.If Python is not wiling to match man's interpretation of MANPAGER, it think should reference only the PAGER value instead, as is already described in the documentation (no mention of MANPAGER):
https://bugs.python.org/issue39400