For the complete documentation index, see llms.txt. This page is also available as Markdown.
Scripting Reference
Diese Seite dokumentiert die öffentliche Headless-Scripting-API, die vom Python-Paket studio bereitgestellt wird.
Der Fokus liegt auf diesen öffentlichen Symbolen:
StudioScenario
install_logging_event
enable_logging_stdout
disable_logging_stdout
Wenn Sie noch nie ein Szenario headless ausgeführt haben, lesen Sie zuerst den Abschnitt "Headless" und kehren Sie dann hierher zurück, um die API-Details zu prüfen.
Imports
Alle hier dokumentierten APIs werden vom Top-Level-Paket studio exportiert:
from studio import( StudioScenario, install_logging_event, enable_logging_stdout, disable_logging_stdout,)
Typ-Stubs
Die öffentliche Headless-Oberfläche sieht folgendermaßen aus:
StudioScenario
StudioScenario ist der Haupteinstiegspunkt zum Laden und Ausführen einer .pmod-Datei ohne die Desktop-Benutzeroberfläche.
Konstruktor
verification_code
Dieser Wert wird zur Lizenzierung für die Headless-Ausführung verwendet.
Gängige Muster:
Lokal / Server: Übergeben Sie den Verifikationscode als String.
Docker / CI: Mounten Sie eine Lizenzdatei in den Container und übergeben Sie den Pfad als verification_code.
⚠️ Warnung: Für nicht-interaktive Umgebungen (Docker/CI/Services) immer verification_code explizit übergeben.
Typischer Ablauf
In den meisten Skripten:
Erstellen Sie das Szenario (StudioScenario(...)).
Laden Sie eine .pmod (load_scenario(...)).
Führen Sie es aus (run(...)).
Bereinigen Sie (cleanup()).
Beispiel:
ℹ️ Hinweis: cleanup() ist wichtig in lang laufenden Prozessen (Services, Batch-Jobs), um Speicher freizugeben und den Laufzeitzustand zurückzusetzen.
Laden einer .pmod
Gibt StudioScenario bei Erfolg zurück.
Gibt None zurück, wenn der Pfad nicht existiert.
Wenn Ihr Szenario auf externe Ressourcen verweist, behalten Sie die gleiche Verzeichnisstruktur bei wie auf dem Desktop (siehe Abschnitt „Transferring .pmod files“).
Ausführen eines Szenarios
Die Laufzeit validiert, dass die Anzahl der Argumente mit der Anzahl der Szenarioeingänge übereinstimmt.
Wenn Ihre .pmod hat:
0 Eingänge: rufen Sie scenario.run() oder scenario.run(()) auf
1 Eingang: rufen Sie scenario.run((value,)) auf
2 Eingänge: rufen Sie scenario.run((value1, value2)) auf
⚠️ Warnung: args muss ein Tuple sein. Für einen einzelnen Eingang nicht das abschließende Komma vergessen: (value,).
Weitere StudioScenario-Methoden
Dieser Abschnitt beschreibt zusätzliche öffentliche Methoden, die Sie für Automatisierung und Debugging verwenden können.
Laden ohne Fehler bei fehlenden Ressourcen
Wenn Sie Szenarien zwischen Maschinen/Containern verschieben und einige Ressourcen möglicherweise nicht verfügbar sind, können Sie permissiver laden:
Laden / Speichern
Custom Nodes
Laden Sie benutzerdefinierte Node-Python-Module aus einem Ordner:
⚠️ Warnung: Dies importiert Python-Dateien dynamisch. Laden Sie nur vertrauenswürdigen Code.
Szenario-Name
Ports (Szenario Eingänge/Ausgänge)
Sie können die Namen der Eingangs-/Ausgangsports abfragen:
Einen Webserver starten (optional)
Wenn Sie einen Szenario-Runner per HTTP bereitstellen möchten:
Events
Installieren Sie Lifecycle-Callbacks rund um die Szenarioausführung:
Logging-Hilfen
AugeLab Studio verfügt über einen Laufzeit-Logger, der von Blöcken und Szenarien verwendet wird. Im Headless-Modus möchten Sie typischerweise eines der folgenden:
Logs während der Entwicklung auf stdout ausgeben
Logs in Ihr eigenes Logging-System weiterleiten
Diese Hilfsfunktionen sind global (sie beeinflussen den Laufzeit-Logger, der von Ihrem Headless-Szenario verwendet wird).
enable_logging_stdout()
Aktiviert die „freundliche“ Laufzeitprotokollierung auf stdout.
Verwenden Sie dies, wenn Sie Block-/Szenario-Logs in der Konsole sehen möchten:
disable_logging_stdout()
Deaktiviert die Laufzeitprotokollierung nach stdout.
Nützlich wenn:
Sie install_logging_event(...) verwenden und doppelte Logs vermeiden möchten
Sie saubere Ausgabe möchten (nur eigene print(...)-/Logger-Ausgaben)
Wenn Sie bevorzugen, Hooks pro Szenario zu installieren (mit Filterung nach Level), verwenden Sie:
⚠️ Warnung: Halten Sie Ihren Callback schnell. Wenn Sie schwere Arbeit (I/O, Netzwerk) durchführen müssen, ziehen Sie in Betracht, Nachrichten zu puffern und diese in einem anderen Thread/Prozess zu verarbeiten.
Empfohlene Muster
1) Umgebungsvariable für Lizenzierung
Für Skripte, die in unterschiedlichen Umgebungen (lokal vs CI vs Docker) laufen, ist das Übergeben von verification_code über eine Umgebungsvariable praktisch portabel:
import os
from studio import StudioScenario, enable_logging_stdout
def main() -> None:
# Optional: gibt Laufzeit-Logs auf stdout aus (nützlich beim Debugging).
enable_logging_stdout()
verification_code = os.environ.get("AUGELAB_VERIFICATION_CODE", "")
scenario = StudioScenario(verification_code=verification_code)
try:
loaded = scenario.load_scenario("your_scenario.pmod")
if loaded is None:
raise FileNotFoundError("Could not load .pmod file")
# Wenn Ihr Szenario N Eingangsports hat, müssen Sie genau N Argumente übergeben.
result = scenario.run(args=())
print("Scenario result:", result)
finally:
scenario.cleanup()
if __name__ == "__main__":
main()
scenario.load_scenario("path/to/scenario.pmod")
outputs = scenario.run(args=(... ,))
from studio import StudioScenario
scenario = StudioScenario(verification_code="YOUR_CODE")
scenario.disable_load_errors()
scenario.load_scenario("scenario.pmod")