GeezerVison is showing github.com — Add a page to the documentation listing stdlib modules with a command-line interface (CLI) · Issue #109435 · python/cpython
Add a page to the documentation listing stdlib modules with a command-line interface (CLI) #109435DescriptionWhile 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__.py files, 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.
- ctypes.util: self-test
- ctypes.textpad: demo
- curses.has_key: self-test?
dbm.__init__: get the DB type... but this CLI is not easy discoverable, it's in the init module!
- getopt: self-test
- heapq: self-test
- shlex: print tokens. Is it really useful?
- imaplib: self-test, "test the IMAP4_stream class"
- modulefinder: self-test
- netrc: just parse
~/.netrc if available, and then display nothing... not very useful
- random: benchmark
- smtplib: "Test the sendmail method", try to send an email to localhost SMTP server.
- symtable: self-test. parse itself (symtable.py)
- turtle: it's a demo. Looks more like an easter egg or advanced example than "an useful CLI".
- textwrap: self-test
- tkinter: self-test
- wsgiref.simple_server: self-test, run a server, open itself in a browser, stop the server.
- xml.sax.expatreader: Sheakspear easter egg.
- xml.sax.xmlreader: self-test.
- xmlrpc.client + xmlrpc.server: simple demo.
Linked PRs
Reacted by Hugo van Kemenade and GalaxySnail Activityhugovk commented on Sep 15, 2023 serhiy-storchaka commented on Sep 15, 2023 You missed this. 😉 🥚
Not all modules with the CLI have main() function. See for example platform. vstinner commented on Sep 15, 2023
You 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 this module CLI is worth it, but I'm open to not document it :-) vstinner commented on Sep 15, 2023 AA-Turner commented on Sep 15, 2023 See also the following for related discussion:
A AA-Turner commented on Sep 15, 2023 Note on #109436, this was previously rejected -- we should instead aim to document command-line behaviour in appropriate places.
A vstinner commented on Sep 15, 2023 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. hugovk commented on Sep 15, 2023 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 CLI shows 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 Stinner serhiy-storchaka commented on Sep 15, 2023 vstinner commented on Sep 29, 2023 #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! merwok commented on Oct 15, 2023 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:
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. vstinner commented on Oct 16, 2023 Feel free to reopen the issue and/or start a new discussion if you want. vstinner commented on Dec 20, 2023 @merwok: You reopened the issue but then did nothing. If you disagree with the added documentation, you can just remove it. merwok commented on Dec 20, 2023 @hugovk @AA-Turner Would you object to a revert? (see comment from October 15 and the links there for justification) hugovk commented on Dec 20, 2023 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 of uuid).
I'd rather see it (incrementally) updated to make it more useful. IIRC there was a suggestion to group them somehow? vstinner commented on Sep 6, 2024 hugovk commented on Sep 7, 2024 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. pradyunsg commented on Sep 8, 2024 I 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. vstinner commented on Sep 8, 2024
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.
MetadataMetadataDevelopmentNo branches or pull requestsIssue actions
|