Skip to main content

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

  1. Campi semplici: Per ogni campo del modello, pydantic-config-generator chiede un valore, mostrando il default se disponibile
  2. Validazione: Ogni input viene validato secondo le regole del modello Pydantic
  3. Modelli annidati: Se un campo è un modello Pydantic, pydantic-config-generator chiede se includerlo (se opzionale) e poi richiede i suoi campi
  4. Gestione errori: Se un valore non è valido, viene mostrato un errore e viene richiesto di nuovo
  5. Salvataggio in file:
    • prompt() restituisce un dizionario Python con i dati inseriti
    • write_ini() accetta un dizionario e salva la configurazione in formato INI, dove ogni chiave del dizionario diventa una sezione
    • write_env() accetta un dizionario e salva la configurazione in formato .env, con supporto per modelli annidati tramite separatori personalizzabili
    • create_ini() e create_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydantic_config_generator-0.5.0.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydantic_config_generator-0.5.0-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file pydantic_config_generator-0.5.0.tar.gz.

File metadata

File hashes

Hashes for pydantic_config_generator-0.5.0.tar.gz
Algorithm Hash digest
SHA256 83571340fd2264d9e3409e13345c5ede0763cb444407b94d0287b9077ad035b9
MD5 f45265b4a717f49c02d9f8a6c3047a4a
BLAKE2b-256 b77d3d48d0c0a4b6280061a059db3f2783868f28b4419f606d0671f07a0a2f04

See more details on using hashes here.

File details

Details for the file pydantic_config_generator-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pydantic_config_generator-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 52ca83b04d5c0902e5431c5fa395ff0c0a46a1359a914bd1a8ece3e6ba5a6778
MD5 dae13db12a51a912018c5cb0fcf9c9ca
BLAKE2b-256 ae08f4bff44ceec5020b53f44b8bd3f9b8a784ee283a433ee356f8d6996a7a80

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page