Skip to content

Move or remove useless/irrelevant command line interface (CLI) on stdlib modules #110076

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

Closed
vstinner opened this issue Sep 29, 2023 · 7 comments
Closed
Labels
stdlib Python modules in the Lib dir

Comments

@vstinner
Copy link
Member

In issue gh-109435, I documented stdlib modules provinding an useful or interesting CLI: https://docs.python.org/dev/library/cmdline.html

Some stdlib 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
  • curses.has_key: self-test?
  • getopt: self-test
  • heapq: self-test
  • imaplib: self-test, "test the IMAP4_stream class"
  • modulefinder: self-test
  • symtable: self-test. parse itself (symtable.py)
  • textwrap: self-test
  • tkinter: self-test
  • wsgiref.simple_server: self-test, run a server, open itself in a browser, stop the server.
  • xml.sax.xmlreader: self-test.

Maybe demos should be moved as examples in the documentation instead?

  • ctypes.textpad: demo
  • shlex: print tokens. Is it really useful?
  • dbm.__init__: get the DB type... but this CLI is not easy discoverable, it's in the init module!
  • netrc: just parse ~/.netrc if available, and then display nothing... not very useful
  • smtplib: "Test the sendmail method", try to send an email to localhost SMTP server.
  • xmlrpc.client + xmlrpc.server: simple demo.

The random module includes a benchmark. I don't think that it's useful to regular users, it should be moved somewhere else:

  • random: benchmark

I'm fine with keeping easter eggs:

  • turtle: it's a demo. Looks more like an easter egg or advanced example than "an useful CLI".
  • xml.sax.expatreader: Sheakspear easter egg.

See also issue gh-93096 "Decide the fate of undocumented script behavior of some modules".

@merwok
Copy link
Member

merwok commented Sep 29, 2023

Previous comments on this situation:

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
Copy link
Member Author

I still don’t see the use of a long list, or long table, of all the runnable modules.

Please comment gh-109435. This issue is about modules which have a CLI and not documented on purpose.

@AA-Turner
Copy link
Member

Various other comments were linked at #109435 (comment), too, and my most recent at #109436 (comment), but I don't have time to propose any other changes (or removing the list, which remains my preference to be honest), sorry.

A

@AA-Turner
Copy link
Member

AA-Turner commented Sep 29, 2023

Summarising the discussion on Discord:

[me]

I have a slight hesitation on the purpose of such a list. If it’s an idle curiosity thing, lists such as Simon’s & others exist. To be aimed at programmers reading it, I think we ought be clear on the purpose and type of each command-line tool. For example -m zipapp is very different to eg the expat Easter Egg.

Éric’s summary of groups I think is useful, but I’m I suppose not yet convinced as to why we need to enumerate all of the modules with script-like behaviour in one place.

[Victor]

I don't think that the sax parser should be documented 🤫

There was also brief discussion on mechanisms to auto-generate such a list, and it was noted that the documentation of many of the CLIs / -m modes are poorly / undocumented within the modules.

@AA-Turner
Copy link
Member

I agree with this issue though that self-tests should be moved to tests, and demos could be moved to recipies or How-Tos.

@chgnrdv
Copy link
Contributor

chgnrdv commented Oct 15, 2023

FYI, there are PRs that aim to make symtable CLI more useful: #109112 #20757

@iritkatriel iritkatriel added the stdlib Python modules in the Lib dir label Nov 28, 2023
@vstinner
Copy link
Member Author

I failed to find time to look into this issue. I suppose that the status quo can survive a few more months. I close the issue for now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
stdlib Python modules in the Lib dir
Projects
None yet
Development

No branches or pull requests

5 participants