python / python/cpython

Decide the fate of undocumented script behavior of some modules

Offen
#93,096 9 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

docs tests type-feature
Vorherrschende Sprache
Python
Sterne
77.2k
Forks
36k
Ø Merge
1 T. 9 Std.
Gemergte PRs (30 T.)
558

Beschreibung

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 passthrough edit: 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
  • full-fledged crossplatform utils for admin-like users and small automation:

    • asyncio: like python but allows to use await in 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 .netrc for 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
  • both:

    • base64:
      • a stream converter
      • base64 -t encodes/decodes Aladdin:open sesame and tests if the result is the same as the original (gh-94230)
  • 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 to getopt() The module is no longer maintained after gh-105735
    • 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:

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

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit der Überprüfung der aufgeführten Modulkategorien und der vorhandenen Abschnitte „Command-Line Usage“ in der ast- und trace-Dokumentation. Sieh dir die verknüpften PRs an, um zu verstehen, welche Punkte bereits bearbeitet werden, und bestimme anschließend, ob jedes verbleibende Verhalten in das Testmodul oder in die Dokumentation des entsprechenden Moduls gehört. Als erledigt gilt die Aufgabe, wenn das weitere Vorgehen für jede aufgeführte Kategorie festgelegt und die daraus resultierenden Dokumentations- oder Teständerungen erfasst sind.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
cli, documentation
Issue-Typ
Dokumentation
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
15/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.