Configuração¶
Configurações em zayt são tratadas em Python puro.
Os arquivos de configuração são localizados por padrão no diretório configuration com o nome base settings.py:
project/
├── application/
│ └── ...
└── configuration/
├── settings.py
├── settings_dev.py
└── settings_prod.py
Recuperando valores de configuração¶
The configuration values can be accessed by injecting zayt.configuration.Settings.
from typing import Annotated
from zayt.conf import Settings
from zayt.di import Inject, service
@service
class MyService:
settings: Annotated[Settings, Inject]
The Settings object is a dict like object
that can also be accessed using property syntax:
from zayt.conf import Settings
settings = Settings({"config": "value"})
assert settings["config"] == "value"
assert settings.config == "value"
Variáveis de ambiente¶
A função zayt.conf.env() pode ser usada para recuperar variáveis de ambiente e aplicar conversão para tipos básicos (int, float, bool):
from zayt.conf import env
settings = {
"required": env("ENV_VAR"),
"optional": env("OPT_VAR", default="value"),
"int": env("INT_VAR", cast=int),
"bool": env("BOOL_VAR", cast=bool)
}
Perfis¶
Perfis opcionais podem ser ativados ao definir a variável de ambiente ZAYT_PROFILE. O framework procurará por um arquivo chamado settings_${ZAYT_PROFILE}.py e mesclará os valores com o settings.py principal. Valores da configuração do perfil tem precedência sobre os valores da configuração principal.
Por exemplo, se definirmos ZAYT_PROFILE=dev, o arquivo settings_dev.py será carregado. Se, ao invés disso, definirmos ZAYT_PROFILE=prod, então o arquivo settings_prod.py será carregado.
Múltiplos perfis podem ser ativados ao definir ZAYT_PROFILE como uma lista separa por vírgula de perfis, por exemplo, ZAYT_PROFILE=dev,prod. O framework vai iterar sobre a lista e mesclar as configurações encontrara em cada um. A precedência é do último para o primeiro, então configurações de um perfile sobrescrevem configurações do perfil anterior.
DotEnv¶
If running you project using zayt.run.app(), for example uvicorn zayt.run:app,
environment variables are automatically loaded from a .env file. The parsing
is done using the python-dotenv library.
Por padrão, um arquivo .env que existir no diretório atual será carregado, mas pode ser customizado com a variável de ambiente ZAYT_DOTENV apontando para o arquivo .env.