Repository navigation
Add a page to the documentation listing stdlib modules with a command-line interface (CLI) #109435
Description
Activity
- added a commit that references this issue
on Sep 15, 2023 There's not a page listing them, and I was also thinking it would be good to have an index.
@simonw found 90 and wrote up some highlights on his blog recently: https://til.simonwillison.net/python/stdlib-cli-tools
@AA-Turner Is there some existing Sphinx automation we could use for this? Mark the CLI sections and have them all listed on a single page, with some custom intro text?
For example, we have a Superseded Modules page, but it's a manually maintained page.
You missed
this. 😉 🥚Not all modules with the CLI have main() function. See for example
platform.Reacted by Charlie ZhaoYou missed this. 😉 🥚
Not all modules with the CLI have main() function. See for example platform.I completed the list in my PR.
I also completed the list of modules that I don't want to document in: #109435 (comment)
IMO documenting
thismodule CLI is worth it, but I'm open to not document it :-)Since https://til.simonwillison.net/python/stdlib-cli-tools was written, PEP 594 removed many modules.
Note on #109436, this was previously rejected -- we should instead aim to document command-line behaviour in appropriate places.
A
Ah, I was not the first one looking for such list :-)
Decide the fate of undocumented script behavior of some modules
I propose to remove them.
I think it's useful because https://docs.python.org/3/library/index.html is "here's a list of Python APIs you can use programmatically", and this page is "here's a list of Python APIs you can use via the command-line".
The discussion about a
re CLIshows how useful these can be for cross-platform use, for example it opens up some tools that aren't always easily accessible on Windows.Reacted by Victor StinnerFor
symtablesee#93410 proposed to display the list as a table, the idea is interesting. But I'm not interested to propose a change for that. If someone wants to enhance the list, please go ahead!
Could this be re-opened? This discussion was relatively short, not on python-dev and did not seem to review previous on the same topic.
Some specific comments of interest:
- Document all "python -m" utilities #73158 (comment)
- smtpd-as-a-script feature should be documented and should use argparse #55469 (comment)
- gh-59150: Add table of runnable modules #93410 (comment)
I still don’t see the use of a long list, or long table, of all the runnable modules. They don’t all have the same usefulness and audience, or the same maintained/documented status.
Feel free to reopen the issue and/or start a new discussion if you want.
@merwok: You reopened the issue but then did nothing. If you disagree with the added documentation, you can just remove it.
@hugovk @AA-Turner Would you object to a revert? (see comment from October 15 and the links there for justification)
I actually found it useful this week, as a quick reference to check if a certain module could be used as a CLI (
secrets, it can't; I'd been thinking ofuuid).I'd rather see it (incrementally) updated to make it more useful. IIRC there was a suggestion to group them somehow?
What's the status of https://docs.python.org/dev/library/cmdline.html ?
I still think it's useful: I told someone about it last month who said they wished they'd known about it before. There have been suggestions to show it in a table, or group them somehow. But if you want to close this issue, I think they could be new issues or PRs.
Reacted by Pradyun GedamI agree that it's useful, that we should improve it incrementally, and that this issue can be closed.
The current state where we have just a list of module references is better than nothing, and we can improve it further over time with new issues/PRs.
I agree that it's useful, that we should improve it incrementally, and that this issue can be closed.
Ok, I close the issue again.
While reviewing PR #109152, I discover that the sqlite3 module has a command line interface. Maybe I knew and then I forgot.
Is there a a documentation page listing all modules with a command-line interface (CLI)? I don't know so.
By searching for
main(pattern and for__main__.pyfiles, so far, I found:Some modules include self-tests in their main() function. I dislike that and I would suggest to remove it and at least move it to their test suite.
dbm.__init__: get the DB type... but this CLI is not easy discoverable, it's in the init module!~/.netrcif available, and then display nothing... not very usefulLinked PRs