I want to have a config class with immutable lists. Is it ok to create it like this?
import os
from dataclasses import asdict, dataclass
from itertools import chain
from typing import Optional, Tuple, Mapping
ENV = Mapping[str, str]
@dataclass(frozen=True)
class Config:
a_types: Tuple[str, ...]
b_types: Tuple[str, ...]
@classmethod
def from_env(cls, env: Optional[ENV] = None) -> "Config":
env = env or os.environ
return cls(
a_types=tuple(env["A_TYPES"].split(",")),
b_types=tuple(env["B_TYPES"].split(",")),
)
@property
def all(self) -> Tuple[str, ...]:
return tuple(chain(*asdict(self).values()))