Plugin
Esegue codice Python sandboxed con accesso al registro dati della pipeline.
Il modulo Plugin esegue codice Python definito dall’utente all’interno di un container Docker isolato. Gli script possono leggere dati dai moduli precedenti, eseguire trasformazioni ed esportare nuovi dati per i moduli a valle.

Configurazione
| Campo | Tipo | Descrizione |
|---|---|---|
| script_id | string |
Identificativo univoco dello script |
| code | string |
Il codice sorgente Python da eseguire |
Integrazione con la Codebase
Il modulo include un menu a tendina Codebase per caricare script salvati dalla libreria della codebase. Clicca sul pulsante Save to codebase (icona del floppy disk) per salvare lo script corrente e riutilizzarlo. Gli script possono anche essere eliminati dalla codebase.
Monaco Editor
L’editor di codice usa il Monaco editor (lo stesso editor di VS Code) con le seguenti impostazioni:
- Evidenziazione della sintassi Python
- Tema scuro (stile
vs-darkdi VS Code) — nota che l’editor si apre sempre in modalità scura, anche se normalmente altrove usi un tema chiaro - Minimap per una navigazione rapida
- Famiglia di font
Menlo, "Courier New", monospace - Dimensione del font 14
- Dimensione della tabulazione 4 (una tabulazione inserisce quattro spazi)
- Word wrap disattivato — le righe lunghe si estendono oltre l’area visibile e richiedono lo scorrimento orizzontale
Completamento Automatico
Mentre digiti, l’editor suggerisce completamenti per:
Data.get()— legge un valore dal registro datiData.export()— scrive un valore nel registro datiData.set_compliance()— modifica il valore di Compliance (vedi Sovrascrittura della Compliance più avanti)- Chiavi dati note già presenti nel registro
L’API Data
All’interno di uno script Python, interagisci con i dati della Pipeline attraverso l’oggetto Data:
Lettura dei Dati
# Ottieni un valore dal registro dati
image = Data.get("Camera_0.frame")
score = Data.get("AnomalyDetection_0.pred_score")
Scrittura dei Dati
# Esporta un valore nel registro dati
Data.export("result", my_result)
Data.export("processed_image", processed)
I nomi delle variabili esportate non devono contenere punti (.). Il sistema aggiunge automaticamente il prefisso <module_id>. alle esportazioni, quindi un’esportazione chiamata result da un modulo con ID PythonScript_0 diventa PythonScript_0.result nel registro.
Data.export() applica due regole che faranno fallire il tuo script con un ValueError:
- Non puoi esportare una chiave già esistente nei dati di input. Se un altro modulo ha già scritto su una chiave con lo stesso nome, rinomina la tua esportazione.
- Non puoi usare il nome di chiave
"compliance". La Compliance deve essere modificata con il metodo dedicatoData.set_compliance()— vedi la sezione Sovrascrittura della Compliance più avanti.
Rilevamento Input e Output
Il sistema rileva automaticamente input e output analizzando il codice dello script:
- Input: estratti dalle chiamate
Data.get("...")eData.get_*("...") - Output: estratti dalle chiamate
Data.export("...")eData.export_*("...")
Questo permette al sistema di validazione di verificare che tutte le dipendenze siano soddisfatte prima dell’esecuzione.
Output della Console
Qualsiasi output print() dallo script viene inoltrato al pannello console dell’Action Plan. Gli errori vengono visualizzati con un indicatore di errore.
Sovrascrittura della Compliance
Gli script possono sovrascrivere il valore di Compliance della Pipeline chiamando il metodo dedicato:
# Sovrascrittura compliance: 0 = Buono, 1 = Incerto, 2 = Difettoso
Data.set_compliance(0)
Modalità Visualizzazione
In modalità visualizzazione, il modulo mostra i dati esportati come JSON e visualizza anteprime per eventuali output immagine.
Input e Output
| Direzione | Chiave | Tipo | Descrizione |
|---|---|---|---|
| Input | Qualsiasi chiave via Data.get(...) |
vario | Dati dai moduli precedenti |
| Output | <module_id>.<exported_name> |
vario | Dati esportati via Data.export(...) |
Vincoli di esecuzione
| Vincolo | Supportato |
|---|---|
| Sempre | ✅ |
| Acquisizione | — |
| Inferenza | ✅ |
Gli script Python non possono essere eseguiti in modalità solo acquisizione. Sono progettati per elaborare dati, il che è rilevante in modalità inferenza.
Ambiente di Esecuzione
Gli script Python vengono eseguiti all’interno di container Docker isolati gestiti dal servizio Whale. Questo fornisce:
- Sandboxing — gli script non possono accedere direttamente al sistema host
- Riproducibilità — ogni esecuzione avviene in un ambiente pulito
- Sicurezza — errori nel codice utente non fanno crashare l’applicazione principale
Script di Esempio
# Leggi il punteggio di predizione anomalia
score = Data.get("anomaly_0.pred_score")
# Applica logica di business personalizzata
if score < 0.3:
verdict = "PASS"
elif score < 0.7:
verdict = "REVIEW"
else:
verdict = "FAIL"
# Esporta i risultati
Data.export("verdict", verdict)
# Sovrascrivi la compliance usando il metodo dedicato
if verdict == "PASS":
Data.set_compliance(COMPLIANT)
elif verdict == "REVIEW":
Data.set_compliance(UNCERTAIN)
else:
Data.set_compliance(DEFECTED)
print(f"Verdetto: {verdict} (punteggio: {score})")