Decide the fate of undocumented script behavior of some modules
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 77.2k
- Forks
- 36k
- PR merge metrics
- PR metrics pending
Description
There are three dozens of standard modules that can be called via python -m and their documentation doesn't mention it. They can be grouped into five categories:
-
kind of smoke tests:
- codecs:
performs stdin:latin1 → utf-8 → latin1 → stdout passthroughedit: it just wraps stdin and stdout then just exits the script (gh-94233) - curses.has_key: "Compare the output of this implementation and the ncurses has_key, on platforms where has_key is already available"
- pprint: measures performance (gh-94613 → https://github.com/python/pyperformance/pull/222)
- random: evaluates output statistics of supported generators
- codecs:
-
full-fledged crossplatform utils for admin-like users and small automation:
- asyncio: like
pythonbut allows to useawaitin top-level script code - cProfile, profile: runs a script under the profiler
- encodings.rot_13: a stream converter
- filecmp: a crossplatform file comparison utility
- fileinput: prints specified files one by another annotating lines with their source
- http.server: makes a directory available as a site; useful to quickly test a static site with relative links
- mimetypes: useful for batch processing of files (maybe) (gh-93097)
- modulefinder: the objdump but for Python source files
- netrc: prints content of
.netrcfor a current user - pdb
- platform: returns a single line like
Windows-10-10.0.19044-SP0; can be useful in automation - quopri: a stream converter
- tabnanny
- wsgiref.simple_server - the same as http.server but for APIs; pases a single request and exits
- asyncio: like
-
both:
- base64:
- a stream converter
-
base64 -tencodes/decodesAladdin:open sesameand tests if the result is the same as the original (gh-94230)
- base64:
-
demos with no real world application:
- curses.textpad: shows an input area; when a user closes it, prints the text back
- ftplib: a simple one-pass FTP downloader (uses ~/.netrc for login)
-
getopt: just passes arguments toThe module is no longer maintained after gh-105735getopt() - imaplib: sending emails to a dead end has no sence but can be used to check if a email client works or got broken
- shlex: parses stdin using
shlex()and prints the list into stdout - smtplib: a simple e-mail client
- xmlrpc.server: serves a datetime service
-
complex matter; better leave untouched:
- idlelib.*
- tkinter.*
- turtledemo.*
- pstats
Eggs and to-be-removed modules aren't listed.
We need to decide what to do with all these undocumented categories.
I propose the following:
- move smoke tests into
testmodule with deduplication - for full-fledged utils, add
Command-Line Usageinto the docs like in https://docs.python.org/3/library/ast.html#command-line-usage or https://docs.python.org/3/library/trace.html#command-line-usage - move demos into the docs of the corresponding module
Linked PRs
- gh-131039
- gh-131068
- gh-131069
- gh-131080
- gh-131081
- gh-131097
- gh-131099
- gh-131130
- gh-131133
- gh-131136
- gh-131137
- gh-131144
- gh-131273
- gh-131408
- gh-132266
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the listed module categories and the existing Command-Line Usage sections in the ast and trace documentation. Check the linked PRs to understand which items are already being handled, then determine whether each remaining behavior belongs in the test module or the corresponding module documentation. Done means the fate of every listed category is decided and the resulting documentation or test changes are tracked.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli, documentation
- Issue type
- Documentation
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 15/100