Anleitung 1: Hello World
Diese Anleitung erstellt die kleinste nützliche quickli-Anwendung: ein Begrüßungs-
werkzeug, das einen Namen und ein optionales Flag für Großbuchstaben akzeptiert.
Du lernst:
- eine
Applicationmit einer Beschreibung zu erstellen - mit
@app.entrypointeinen Einstiegspunkt zu registrieren - ein Positions-
Argumenthinzuzufügen - ein boolesches
Option-Flag hinzuzufügen - die Anwendung über die Kommandozeile auszuführen
Das vollständige Beispiel
Speichere die folgende Datei als hello.py:
from __future__ import annotations
from quickli import Application, Argument, Option
app = Application(
name="hello",
description="Greet a person from the command line.",
)
@app.entrypoint(
help_text="Print a greeting.",
arguments=[Argument("name", help_text="Name to greet.")],
options=[
Option(
"uppercase",
short_name="u",
is_flag=True,
help_text="Print the greeting in uppercase.",
),
],
)
def greet(name: str, uppercase: bool = False) -> str:
message = f"Hello, {name}!"
return message.upper() if uppercase else message
if __name__ == "__main__":
sys.exit(app.main())
Ausführen
python hello.py Ada
# Hello, Ada!
python hello.py Ada --uppercase
# HELLO, ADA!
python hello.py Ada -u
# HELLO, ADA!
Erklärung Zeile für Zeile
Imports
from quickli import Application, Argument, Option
Du musst nur die drei verwendeten Klassen importieren. quickli hält seine öffentliche
API klein und ausdrücklich.
Die Anwendung erstellen
app = Application(
name="hello",
description="Greet a person from the command line.",
)
Application ist der zentrale Container. name wird in der Hilfe verwendet.
description erscheint unter der Nutzungszeile, wenn du das Werkzeug ohne Argumente
startest.
Den Einstiegspunkt registrieren
@app.entrypoint(
help_text="Print a greeting.",
arguments=[Argument("name", help_text="Name to greet.")],
options=[
Option(
"uppercase",
short_name="u",
is_flag=True,
help_text="Print the greeting in uppercase.",
),
],
)
def greet(name: str, uppercase: bool = False) -> str:
...
@app.entrypoint ist für Anwendungen ohne Befehl gedacht. Die Anwendung hat einen
einzigen Zweck, daher ist kein Befehlsname nötig.
help_texterscheint in der erzeugten Nutzungsausgabe.argumentsist eine Liste vonArgument-Instanzen in Positionsreihenfolge.optionsist eine Liste vonOption-Instanzen.
Der Konstruktor von Argument
Argument("name", help_text="Name to greet.")
Argument erwartet als erstes Argument einen Positionsnamen. Dieser Name muss zum
entsprechenden Funktionsparameter passen. Argumente sind standardmäßig erforderlich.
Für ein optionales Argument übergibst du required=False und einen default.
Der Konstruktor von Option
Option(
"uppercase",
short_name="u",
is_flag=True,
help_text="Print the greeting in uppercase.",
)
"uppercase"wird in der Kommandozeile zu--uppercase.short_name="u"ergänzt die Kurzform-u.is_flag=Truebedeutet, dass die Option boolesch ist: vorhanden →True, nicht vorhanden →False.- Der Funktionsparameter muss zum Optionsnamen passen, wobei Bindestriche durch Unterstriche ersetzt werden.
Die Handler-Funktion
def greet(name: str, uppercase: bool = False) -> str:
message = f"Hello, {name}!"
return message.upper() if uppercase else message
Der Handler erhält die geparsten Werte direkt. quickli ordnet Argument- und
Optionsnamen den Parameternamen zu. Der Standardwert für uppercase entspricht der
Abwesenheit der Option.
Der Handler gibt einen String zurück. Application.main() gibt diesen Wert bei
erfolgreichen Läufen aus.
Der Einstiegspunkt
if __name__ == "__main__":
sys.exit(app.main())
Application.main() ist der einfachste Einstiegspunkt für ausführbare Programme. Er liest
sys.argv[1:], gibt normale Ergebnisse aus, meldet quickli-Laufzeitfehler und liefert
einen Exit-Code zurück.
Application.run(argv) akzeptiert weiterhin explizite Tokens, wenn du diese niedrigere,
testfreundliche Grenze direkt verwenden willst.
Application.run() liest ebenfalls standardmäßig sys.argv[1:], wenn du es ohne
Argumente aufrufst. Übergib eine explizite Liste zum Überschreiben oder setze
auto_sys_argv=False, um das automatische Lesen zu deaktivieren.
Die Hilfeausgabe erkunden
Starte das Programm ohne Argumente:
python hello.py
quickli erzeugt den Nutzungstext aus den registrierten Argumenten, Optionen und Hilfetexten.
Was du als Nächstes ausprobieren kannst
- Füge eine zweite Option hinzu, etwa
--shout, und ändere das Nachrichtenformat. - Mache das Argument
namemitrequired=Falseunddefault="world"optional. - Lies Anleitung 2: Dateibetrachter, um globale Optionen, mehrere Dateiargumente und Pfadvalidierung kennenzulernen.
