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