toml|yaml|json|ini|py
e também carregadores personalizáveis.[default, development, testing, production]
init, list, write, validate, export
.$ pip install dynaconf
$ cd path/to/your/project/
$ dynaconf init -f toml
Configuring your Dynaconf environment
------------------------------------------
? The file `config.py` was generated.
?️ settings.toml created to hold your settings.
? .secrets.toml created to hold your secrets.
? the .secrets.* is also included in `.gitignore`
beware to not push your secrets to a public repo.
? Dynaconf is configured! read more on https://dynaconf.com
DICA: Você pode selecionar
toml|yaml|json|ini|py
emdynaconf init -f <fileformat>
toml é o formato padrão e também o mais recomendado para configuração.
.
├── config.py # This is from where you import your settings object (required)
├── .secrets.toml # This is to hold sensitive data like passwords and tokens (optional)
└── settings.toml # This is to hold your application settings (optional)
No arquivo config.py
Dynaconf init gera o seguinte padrão
from dynaconf import Dynaconf
settings = Dynaconf (
envvar_prefix = "DYNACONF" , # export envvars with `export DYNACONF_FOO=bar`.
settings_files = [ 'settings.yaml' , '.secrets.yaml' ], # Load files in the given order.
)
DICA: Você mesmo pode criar os arquivos em vez de usar o comando
init
como mostrado acima e pode dar qualquer nome que desejar em vez doconfig.py
padrão (o arquivo deve estar no caminho python importável) - Veja mais opções que você pode passe para o inicializador da classeDynaconf
em https://dynaconf.com
Coloque suas configurações em settings.{toml|yaml|ini|json|py}
username = " admin "
port = 5555
database = { name = ' mydb ' , schema = ' main ' }
Coloque informações confidenciais em .secrets.{toml|yaml|ini|json|py}
password = " secret123 "
IMPORTANTE: o comando
dynaconf init
coloca o.secrets.*
no seu.gitignore
para evitar que ele seja exposto em repositórios públicos, mas é sua responsabilidade mantê-lo seguro em seu ambiente local, também a recomendação para ambientes de produção é usar o build- no suporte ao serviço Hashicorp Vault para senhas e tokens.
Opcionalmente, agora você pode usar variáveis de ambiente para substituir valores por execução ou por ambiente.
# override `port` from settings.toml file and automatically casts as `int` value.
export DYNACONF_PORT=9900
No seu código, importe o objeto settings
from path . to . project . config import settings
# Reading the settings
settings . username == "admin" # dot notation with multi nesting support
settings . PORT == 9900 # case insensitive
settings [ 'password' ] == "secret123" # dict like access
settings . get ( "nonexisting" , "default value" ) # Default values just like a dict
settings . databases . name == "mydb" # Nested key traversing
settings [ 'databases.schema' ] == "main" # Nested key traversing
Há muito mais que você pode fazer, leia a documentação: http://dynaconf.com
As principais discussões acontecem na guia Discussões, saiba mais sobre como se envolver no guia CONTRIBUTING.md
Se você está procurando algo semelhante ao Dynaconf para usar em seus projetos Rust: https://github.com/rubik/hydroconf
E um agradecimento especial ao Caneco pelo logotipo.