Skip to content

Commit 31ece92

Browse files
committed
Simplify ApplicationSettings
1 parent 4e84653 commit 31ece92

File tree

5 files changed

+26
-31
lines changed

5 files changed

+26
-31
lines changed
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
LoggingLevel="INFO"
1+
LoggingLevel="INFO"
2+
AZURE_KEY_VAULT_URL="https://my-resource.vault.azure.net/"
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
LoggingLevel="INFO"
2-
CosmosDbNoSqlUrl="http://localhost:8081"
1+
LOGGING_LEVEL="INFO"
2+
COSMOS_DB_NO_SQL_URL="http://localhost:8081"
33
CosmosDbNoSqlKey="C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
4-
CosmosDbNoSqlDatabase="mydatabase"
4+
COSMOS_DB_NO_SQL_DATABASE="mydatabase"
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
LoggingLevel="CRITICAL"
1+
LoggingLevel="CRITICAL"
2+
AZURE_KEY_VAULT_URL="https://my-resource.vault.azure.net/"
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
LoggingLevel="CRITICAL"
1+
LoggingLevel="CRITICAL"
2+
AZURE_KEY_VAULT_URL="https://my-resource.vault.azure.net/"
Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,51 @@
11
from pathlib import Path
22

33
from azure.identity import DefaultAzureCredential
4-
from pydantic import SecretStr
5-
from pydantic.alias_generators import to_pascal
4+
from pydantic import Field, SecretStr
65
from pydantic_settings import (
76
AzureKeyVaultSettingsSource,
87
BaseSettings,
9-
DotEnvSettingsSource,
10-
EnvSettingsSource,
118
PydanticBaseSettingsSource,
129
SettingsConfigDict,
1310
)
1411

1512
from python_archetype.common.application_environment import ApplicationEnvironment
1613

14+
current_path = Path(__file__).parent.resolve()
15+
1716

1817
class ApplicationSettings(BaseSettings):
19-
model_config = SettingsConfigDict(alias_generator=to_pascal, extra="ignore")
18+
model_config = SettingsConfigDict(
19+
extra="ignore",
20+
env_nested_delimiter="__",
21+
env_file=(
22+
str(current_path / ".env"),
23+
str(current_path / f".env.{ApplicationEnvironment.get_current()}"),
24+
),
25+
)
2026

2127
logging_level: str
2228
cosmos_db_no_sql_url: str
23-
cosmos_db_no_sql_key: SecretStr
29+
cosmos_db_no_sql_key: SecretStr = Field(alias="CosmosDbNoSqlKey")
2430
cosmos_db_no_sql_database: str
2531

2632
@classmethod
2733
def settings_customise_sources(
2834
cls,
2935
settings_cls: type[BaseSettings],
3036
init_settings: PydanticBaseSettingsSource, # noqa: ARG003
31-
env_settings: PydanticBaseSettingsSource, # noqa: ARG003
32-
dotenv_settings: PydanticBaseSettingsSource, # noqa: ARG003
37+
env_settings: PydanticBaseSettingsSource,
38+
dotenv_settings: PydanticBaseSettingsSource,
3339
file_secret_settings: PydanticBaseSettingsSource, # noqa: ARG003
3440
) -> tuple[PydanticBaseSettingsSource, ...]:
35-
env = EnvSettingsSource(
36-
settings_cls,
37-
env_nested_delimiter="__",
38-
)
39-
current_path = Path(__file__).parent.resolve()
40-
dotenv = DotEnvSettingsSource(
41-
settings_cls,
42-
env_file=[
43-
str(current_path / ".env"),
44-
str(current_path / f".env.{ApplicationEnvironment.get_current()}"),
45-
],
46-
env_nested_delimiter=":",
47-
case_sensitive=True,
48-
)
49-
settings = (env, dotenv)
41+
settings = (env_settings, dotenv_settings)
5042

5143
if ApplicationEnvironment.get_current() != ApplicationEnvironment.LOCAL:
5244
azure_key_vault = AzureKeyVaultSettingsSource(
5345
settings_cls,
54-
dotenv()["AzureKeyVaultUrl"],
46+
dotenv_settings()["azure_key_vault_url"],
5547
DefaultAzureCredential(),
5648
)
57-
settings += (azure_key_vault,)
49+
settings = (azure_key_vault, *settings)
5850

5951
return settings

0 commit comments

Comments
 (0)