-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathregistry_utils.py
79 lines (61 loc) · 2.63 KB
/
registry_utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import os
import importlib
from os import path as osp
def scandir(dir_path, suffix=None, recursive=False, full_path=False):
"""Scan a directory to find the interested files.
Args:
dir_path (str): Path of the directory.
suffix (str | tuple(str), optional): File suffix that we are
interested in. Default: None.
recursive (bool, optional): If set to True, recursively scan the
directory. Default: False.
full_path (bool, optional): If set to True, include the dir_path.
Default: False.
Returns:
A generator for all the interested files with relative paths.
"""
if (suffix is not None) and not isinstance(suffix, (str, tuple)):
raise TypeError('"suffix" must be a string or tuple of strings')
root = dir_path
def _scandir(dir_path, suffix, recursive):
for entry in os.scandir(dir_path):
if not entry.name.startswith(".") and entry.is_file():
if full_path:
return_path = entry.path
else:
return_path = osp.relpath(entry.path, root)
if suffix is None:
yield return_path
elif return_path.endswith(suffix):
yield return_path
else:
if recursive:
yield from _scandir(entry.path, suffix=suffix, recursive=recursive)
else:
continue
return _scandir(dir_path, suffix=suffix, recursive=recursive)
def import_registered_modules(registration_folder="registrations"):
"""
Import all registered modules from the specified folder.
This function automatically scans all the files under the specified folder and imports all the required modules for registry.
Parameters:
registration_folder (str, optional): Path to the folder containing registration modules. Default is "registrations".
Returns:
list: List of imported modules.
"""
print("\n")
registration_modules_folder = (
osp.dirname(osp.abspath(__file__)) + f"/{registration_folder}"
)
print("registration_modules_folder = ", registration_modules_folder)
registration_modules_file_names = [
osp.splitext(osp.basename(v))[0]
for v in scandir(dir_path=registration_modules_folder)
]
print("registration_modules_file_names = ", registration_modules_file_names)
imported_modules = [
importlib.import_module(f"{registration_folder}.{file_name}")
for file_name in registration_modules_file_names
]
print("imported_modules = ", imported_modules)
print("\n")