Skip to content

Commit 73634da

Browse files
committed
feat: provide environment variable aliases for setting instance config
This facilitates dandi-archive, a Django app, to use environment variables with more consistent names to set the instance config
1 parent b78da9e commit 73634da

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

dandischema/conf.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import logging
99
from typing import TYPE_CHECKING, Annotated, Any, Optional, Union
1010

11-
from pydantic import AnyUrl, BaseModel, Field, StringConstraints
11+
from pydantic import AliasChoices, AnyUrl, BaseModel, Field, StringConstraints
1212
from pydantic_settings import BaseSettings, SettingsConfigDict
1313

1414
_MODELS_MODULE_NAME = "dandischema.models"
@@ -76,22 +76,38 @@ class Config(BaseSettings):
7676
For details, see https://docs.pydantic.dev/latest/concepts/pydantic_settings/
7777
"""
7878

79-
model_config = SettingsConfigDict(env_prefix="dandi_")
79+
model_config = SettingsConfigDict(
80+
validate_by_name=False,
81+
validate_by_alias=True,
82+
)
8083

8184
instance_name: Annotated[
82-
str, StringConstraints(pattern=rf"^{UNVENDORED_ID_PATTERN}$")
83-
] = DEFAULT_INSTANCE_NAME
85+
str,
86+
StringConstraints(pattern=rf"^{UNVENDORED_ID_PATTERN}$"),
87+
Field(
88+
default=DEFAULT_INSTANCE_NAME,
89+
validation_alias=AliasChoices(
90+
"DANDI_INSTANCE_NAME", "DJANGO_DANDI_INSTANCE_NAME"
91+
),
92+
),
93+
]
8494
"""Name of the DANDI instance"""
8595

8696
doi_prefix: Optional[
8797
Annotated[str, StringConstraints(pattern=rf"^{UNVENDORED_DOI_PREFIX_PATTERN}$")]
88-
] = None
98+
] = Field(
99+
default=None,
100+
validation_alias=AliasChoices(
101+
"DANDI_DOI_PREFIX", "DJANGO_DANDI_DOI_API_PREFIX"
102+
),
103+
)
89104
"""
90105
The DOI prefix at DataCite
91106
"""
92107

93108
licenses: set[License] = Field(
94-
default={License("spdx:CC0-1.0"), License("spdx:CC-BY-4.0")}
109+
default={License("spdx:CC0-1.0"), License("spdx:CC-BY-4.0")},
110+
validation_alias=AliasChoices("DANDI_LICENSES", "DJANGO_DANDI_LICENSES"),
95111
)
96112
"""
97113
Set of licenses to be supported by the DANDI instance

0 commit comments

Comments
 (0)