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