rename
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
from __future__ import annotations
|
||||
from dataclasses import dataclass
|
||||
from os import environ
|
||||
from typing import TypeAlias
|
||||
|
||||
|
||||
JSONDataScalar: TypeAlias = str | None | float | bool
|
||||
JSONDataList: TypeAlias = list["JSONDataScalar | JSONDataMap | JSONDataList"]
|
||||
JSONDataMap: TypeAlias = dict[str, "JSONDataScalar | JSONDataList | JSONDataMap"]
|
||||
JSONData: TypeAlias = "JSONDataMap | JSONDataList"
|
||||
|
||||
|
||||
@dataclass
|
||||
class EnvVar:
|
||||
"""
|
||||
Environment Variable fetcher for use in dataclass ``field(default_factory=...)``
|
||||
|
||||
>>> @dataclass
|
||||
>>> class SomeDataclass:
|
||||
... field_name: str = field(default_factory=EnvVar("SOME_VAR_NAME", "err msg"))
|
||||
|
||||
"""
|
||||
|
||||
var_name: str
|
||||
err_msg: str = ""
|
||||
|
||||
def __call__(self) -> str:
|
||||
try:
|
||||
return environ[self.var_name]
|
||||
except KeyError as e:
|
||||
e.add_note(self.err_msg)
|
||||
raise
|
||||
Reference in New Issue
Block a user