Interactive configuration prompt for Pydantic models
Project description
pydantic-config-generator
pydantic-config-generator è una libreria Python che fornisce prompt interattivi per la configurazione di modelli Pydantic. Permette di creare interfacce CLI interattive per raccogliere e validare dati secondo i tuoi modelli Pydantic.
Caratteristiche
- 🎯 Validazione automatica: Usa la validazione di Pydantic per garantire dati corretti
- 🔄 Supporto per modelli annidati: Gestisce configurazioni complesse con modelli Pydantic annidati
- ⚡ Facile da usare: Basta passare il tuo modello Pydantic e pydantic-config-generator fa il resto
- 🛡️ Type-safe: Sfrutta il sistema di tipi di Pydantic
- 💾 Salvataggio in file: Salva le configurazioni in formato INI o .env per un uso successivo
Installazione
pip install pydantic-config-generator
Utilizzo
Esempio Base
from pydantic import BaseModel
from pydantic_config_generator import prompt
class ExampleConfig(BaseModel):
name: str = ''
surname: str
age: int
is_student: bool = True
# Avvia il prompt interattivo
# prompt() restituisce un dizionario con i valori inseriti
config_data = prompt(ExampleConfig)
Esempio con Modelli Annidati
from pydantic import BaseModel
from pydantic_config_generator import prompt
class ExampleSubConfig(BaseModel):
name: str
surname: str
age: int
class ExampleConfig(BaseModel):
name: str = ''
surname: str
age: int
is_student: bool = True
teacher: ExampleSubConfig = None
# prompt() restituisce un dizionario
config_data = prompt(ExampleConfig)
Il sistema ti chiederà di inserire i valori per ogni campo, mostrando i valori di default tra parentesi quadre. I campi obbligatori devono essere compilati, mentre quelli opzionali possono essere saltati. Se lasci un campo vuoto e ha un valore di default, verrà utilizzato il valore di default. La funzione prompt() restituisce un dizionario Python con i dati inseriti.
Salvare la Configurazione in un File
Dopo aver raccolto la configurazione tramite prompt(), puoi salvarla in diversi formati:
Salvataggio in formato INI
from pydantic import BaseModel
from pydantic_config_generator import prompt, write_ini
class ExampleConfig(BaseModel):
name: str = ''
surname: str
age: int
is_student: bool = True
# Raccogli la configurazione (restituisce un dizionario)
config_data = prompt(ExampleConfig)
# Salva in un file INI
# write_ini() accetta un dizionario, non un'istanza BaseModel
write_ini(config_data, 'config.ini')
La funzione write_ini() crea un file INI dove ogni chiave del dizionario diventa una sezione. I modelli annidati vengono salvati come sezioni separate.
Salvataggio in formato .env
from pydantic import BaseModel
from pydantic_config_generator import prompt, write_env
class ExampleConfig(BaseModel):
name: str = ''
surname: str
age: int
is_student: bool = True
# Raccogli la configurazione (restituisce un dizionario)
config_data = prompt(ExampleConfig)
# Salva in un file .env
# write_env() accetta un dizionario, non un'istanza BaseModel
write_env(config_data, '.env', group_separator='_', use_uppercase=True)
La funzione write_env() supporta i seguenti parametri:
file: nome del file (default:.env)group_separator: separatore per i gruppi annidati (default:.)use_uppercase: se usare lettere maiuscole per i nomi delle variabili (default:True)
Funzioni di convenienza
Puoi anche combinare prompt e salvataggio in un'unica chiamata:
from pydantic import BaseModel
from pydantic_config_generator import create_ini, create_env
class ExampleConfig(BaseModel):
name: str = ''
surname: str
age: int
is_student: bool = True
# Crea e salva direttamente in formato INI
create_ini(ExampleConfig, 'config.ini')
# Crea e salva direttamente in formato .env
create_env(ExampleConfig, '.env', group_separator='_', use_uppercase=True)
Se il file esiste già, ti verrà chiesta conferma prima di sovrascriverlo.
Come Funziona
- Campi semplici: Per ogni campo del modello, pydantic-config-generator chiede un valore, mostrando il default se disponibile
- Validazione: Ogni input viene validato secondo le regole del modello Pydantic
- Modelli annidati: Se un campo è un modello Pydantic, pydantic-config-generator chiede se includerlo (se opzionale) e poi richiede i suoi campi
- Gestione errori: Se un valore non è valido, viene mostrato un errore e viene richiesto di nuovo
- Salvataggio in file:
prompt()restituisce un dizionario Python con i dati inseritiwrite_ini()accetta un dizionario e salva la configurazione in formato INI, dove ogni chiave del dizionario diventa una sezionewrite_env()accetta un dizionario e salva la configurazione in formato .env, con supporto per modelli annidati tramite separatori personalizzabilicreate_ini()ecreate_env()combinano prompt e salvataggio in un'unica operazione
Requisiti
- Python >= 3.7
- pydantic >= 1.0, < 2.0
Licenza
MIT License
Contribuire
I contributi sono benvenuti! Sentiti libero di aprire issue o pull request.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pydantic_config_generator-0.6.1.tar.gz.
File metadata
- Download URL: pydantic_config_generator-0.6.1.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
768fb857ce8de1f00854c4d21e5d9c763037e3cb266517c2129d89cd2ab330bf
|
|
| MD5 |
41abf814f2ba3a3397c209a88e9c1f23
|
|
| BLAKE2b-256 |
8615049eb0f62feaeda05cb060a9a2c774a758367e8ee782451cb57c0d0f46ae
|
File details
Details for the file pydantic_config_generator-0.6.1-py3-none-any.whl.
File metadata
- Download URL: pydantic_config_generator-0.6.1-py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35e2bd2863276df3412a2730f1a9a33d15aef4b39f2def69453241f3b2bf28be
|
|
| MD5 |
ca4bf8eed1424ea2722b6da88cf7ea28
|
|
| BLAKE2b-256 |
f941550396af9893e52eee4289fecf61e13d433a70f4de6b42310c582e602914
|