Coverage for src/configuraptor/loaders/__init__.py: 100%
11 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-15 16:40 +0200
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-15 16:40 +0200
1"""
2Loads loaders based on Python version.
3"""
5import typing
7from ._types import T_config
9# tomlkit used for every Python version now.
10from .loaders_shared import json, toml, yaml
12# if sys.version_info > (3, 11):
13# from .loaders_311 import toml
14# else: # pragma: no cover
15# from .loaders_310 import toml
18__all__ = ["get", "toml", "json", "yaml"]
20T_loader = typing.Callable[[typing.BinaryIO], T_config]
22LOADERS: dict[str, T_loader] = {
23 "toml": toml,
24 "json": json,
25 "yml": yaml,
26 "yaml": yaml,
27}
30def get(extension: str) -> T_loader:
31 """
32 Get the right loader for a specific extension.
33 """
34 extension = extension.removeprefix(".")
35 if loader := LOADERS.get(extension):
36 return loader
37 else:
38 raise ValueError(f"Invalid extension {extension}")