Coverage for /home/runner/.local/share/hatch/env/virtual/importnb/KA2AwMZG/test.stdlib/lib/python3.9/site-packages/importnb/loaders.py: 92%
41 statements
« prev ^ index » next coverage.py v7.3.2, created at 2023-11-02 04:02 +0000
« prev ^ index » next coverage.py v7.3.2, created at 2023-11-02 04:02 +0000
1from .loader import Loader, SourceModule 1a
2from dataclasses import dataclass, field 1a
3from types import ModuleType 1a
6class DataModule(SourceModule): 1a
7 def _repr_json_(self): 1a
8 return self.data, dict(root=repr(self), expanded=False)
11@dataclass 1a
12class DataStreamLoader(Loader): 1a
13 """an import loader for data streams"""
15 module_type: ModuleType = field(default=DataModule) 1a
17 def exec_module(self, module): 1a
18 with open(module.__file__, "rb") as file: 1a
19 module.data = self.get_data_loader()(file) 1a
20 return module 1a
22 def get_data_loader(self): 1a
23 raise NotImplementedError("load_data not implemented.")
26@dataclass 1a
27class Json(DataStreamLoader): 1a
28 """an import loader for json files"""
30 extensions: tuple = field(default_factory=[".json"].copy) 1a
32 def get_data_loader(self): 1a
33 from json import load 1a
35 return load 1a
38@dataclass 1a
39class Yaml(DataStreamLoader): 1a
40 """an import loader for yml and yaml"""
42 extensions: tuple = field(default_factory=[".yml", ".yaml"].copy) 1a
44 def get_data_loader(self): 1a
45 try: 1a
46 from ruamel.yaml import YAML 1a
48 yaml = YAML(typ="safe", pure=True) 1a
49 safe_load = yaml.load 1a
50 except ModuleNotFoundError:
51 from yaml import safe_load
52 # probably want an error message about how to fix this if we cant find yamls
53 return safe_load 1a
56@dataclass 1a
57class Toml(DataStreamLoader): 1a
58 """an import loader for toml"""
60 extensions: tuple = field(default_factory=[".toml"].copy) 1a
62 def get_data_loader(self): 1a
63 try: 1a
64 from tomllib import load 1a
65 except ModuleNotFoundError: 1a
66 from tomli import load 1a
67 return load 1a