Coverage for src/configuraptor/loaders/__init__.py: 100%
11 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-28 14:59 +0200
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-28 14:59 +0200
1"""
2Loads loaders based on Python version.
3"""
5import typing
7from ._types import T_config
9# tomli used for every Python version now.
10from .loaders_shared import dotenv, json, toml, yaml
12__all__ = ["get", "toml", "json", "yaml", "dotenv"]
14T_loader = typing.Callable[[typing.BinaryIO], T_config]
16LOADERS: dict[str, T_loader] = {
17 "toml": toml,
18 "json": json,
19 "yml": yaml,
20 "yaml": yaml,
21 "env": dotenv,
22}
25def get(extension: str) -> T_loader:
26 """
27 Get the right loader for a specific extension.
28 """
29 extension = extension.removeprefix(".")
30 if loader := LOADERS.get(extension):
31 return loader
32 else:
33 raise ValueError(f"Invalid extension {extension}")