Skip to content

Commit a96c6c7

Browse files
committed
♻️ Factor out module-level boilerplate into make_module_api()
1 parent 38c67f1 commit a96c6c7

5 files changed

Lines changed: 18 additions & 72 deletions

File tree

sigma/validators/sigmahq/data/base.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,13 @@ def set_cache_dir(self, cache_dir: str) -> None:
106106
if self._cache is not None:
107107
self._cache.close()
108108
self._cache = None
109+
110+
111+
def make_module_api(loader_cls: type) -> dict:
112+
loader = loader_cls()
113+
return {
114+
"__getattr__": lambda name: loader.get_attr(name, loader_cls.__module__),
115+
"clear_cache": loader.clear_cache,
116+
"set_url": loader.set_url,
117+
"set_cache_dir": loader.set_cache_dir,
118+
}

sigma/validators/sigmahq/data/data_filename.py

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from sigma.rule import SigmaLogSource
44

5-
from .base import SigmahqDataLoader
5+
from .base import SigmahqDataLoader, make_module_api
66

77

88
class _FilenameLoader(SigmahqDataLoader):
@@ -33,20 +33,4 @@ def _parse(self, json_data: Dict[str, Any]) -> Dict[str, Any]:
3333
}
3434

3535

36-
_loader = _FilenameLoader()
37-
38-
39-
def __getattr__(name: str) -> Any:
40-
return _loader.get_attr(name, __name__)
41-
42-
43-
def clear_cache() -> None:
44-
_loader.clear_cache()
45-
46-
47-
def set_url(url: str) -> None:
48-
_loader.set_url(url)
49-
50-
51-
def set_cache_dir(cache_dir: str) -> None:
52-
_loader.set_cache_dir(cache_dir)
36+
globals().update(make_module_api(_FilenameLoader))

sigma/validators/sigmahq/data/data_taxonomy.py

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from sigma.rule import SigmaLogSource
44

5-
from .base import SigmahqDataLoader
5+
from .base import SigmahqDataLoader, make_module_api
66

77

88
class _TaxonomyLoader(SigmahqDataLoader):
@@ -44,20 +44,4 @@ def _parse(self, json_data: Dict[str, Any]) -> Dict[str, Any]:
4444
}
4545

4646

47-
_loader = _TaxonomyLoader()
48-
49-
50-
def __getattr__(name: str) -> Any:
51-
return _loader.get_attr(name, __name__)
52-
53-
54-
def clear_cache() -> None:
55-
_loader.clear_cache()
56-
57-
58-
def set_url(url: str) -> None:
59-
_loader.set_url(url)
60-
61-
62-
def set_cache_dir(cache_dir: str) -> None:
63-
_loader.set_cache_dir(cache_dir)
47+
globals().update(make_module_api(_TaxonomyLoader))
Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Any, Dict
22

3-
from .base import SigmahqDataLoader
3+
from .base import SigmahqDataLoader, make_module_api
44

55

66
class _EventIdLoader(SigmahqDataLoader):
@@ -18,20 +18,4 @@ def _parse(self, json_data: Dict[str, Any]) -> Dict[str, Any]:
1818
}
1919

2020

21-
_loader = _EventIdLoader()
22-
23-
24-
def __getattr__(name: str) -> Any:
25-
return _loader.get_attr(name, __name__)
26-
27-
28-
def clear_cache() -> None:
29-
_loader.clear_cache()
30-
31-
32-
def set_url(url: str) -> None:
33-
_loader.set_url(url)
34-
35-
36-
def set_cache_dir(cache_dir: str) -> None:
37-
_loader.set_cache_dir(cache_dir)
21+
globals().update(make_module_api(_EventIdLoader))
Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from typing import Any, Dict
22

3-
from .base import SigmahqDataLoader
3+
from .base import SigmahqDataLoader, make_module_api
44

55

66
class _ProviderLoader(SigmahqDataLoader):
@@ -18,20 +18,4 @@ def _parse(self, json_data: Dict[str, Any]) -> Dict[str, Any]:
1818
}
1919

2020

21-
_loader = _ProviderLoader()
22-
23-
24-
def __getattr__(name: str) -> Any:
25-
return _loader.get_attr(name, __name__)
26-
27-
28-
def clear_cache() -> None:
29-
_loader.clear_cache()
30-
31-
32-
def set_url(url: str) -> None:
33-
_loader.set_url(url)
34-
35-
36-
def set_cache_dir(cache_dir: str) -> None:
37-
_loader.set_cache_dir(cache_dir)
21+
globals().update(make_module_api(_ProviderLoader))

0 commit comments

Comments
 (0)