19
19
from typing import Dict , List , Optional
20
20
21
21
from nvflare .security .logging import secure_format_exception
22
- from nvflare .utils .components_utils import create_classes_table_static
23
22
24
23
DEPRECATED_PACKAGES = ["nvflare.app_common.pt" , "nvflare.app_common.homomorphic_encryption" ]
25
24
@@ -86,10 +85,10 @@ def __init__(self, base_pkgs: List[str], module_names: List[str], exclude_libs=T
86
85
self .exclude_libs = exclude_libs
87
86
88
87
self ._logger = logging .getLogger (self .__class__ .__name__ )
89
- self ._class_table = create_classes_table_static ()
88
+ self ._class_table : Dict [str , str ] = {}
89
+ self ._create_classes_table ()
90
90
91
91
def _create_classes_table (self ):
92
- class_table : Dict [str , str ] = {}
93
92
scan_result_table = {}
94
93
for base in self .base_pkgs :
95
94
package = importlib .import_module (base )
@@ -112,21 +111,20 @@ def _create_classes_table(self):
112
111
# same class name exists in multiple modules
113
112
if name in scan_result_table :
114
113
scan_result = scan_result_table [name ]
115
- if name in class_table :
116
- class_table .pop (name )
117
- class_table [f"{ scan_result .module_name } .{ name } " ] = module_name
118
- class_table [f"{ module_name } .{ name } " ] = module_name
114
+ if name in self . _class_table :
115
+ self . _class_table .pop (name )
116
+ self . _class_table [f"{ scan_result .module_name } .{ name } " ] = module_name
117
+ self . _class_table [f"{ module_name } .{ name } " ] = module_name
119
118
else :
120
119
scan_result = _ModuleScanResult (class_name = name , module_name = module_name )
121
120
scan_result_table [name ] = scan_result
122
- class_table [name ] = module_name
121
+ self . _class_table [name ] = module_name
123
122
except (ModuleNotFoundError , RuntimeError ) as e :
124
123
self ._logger .debug (
125
124
f"Try to import module { module_name } , but failed: { secure_format_exception (e )} . "
126
125
f"Can't use name in config to refer to classes in module: { module_name } ."
127
126
)
128
127
pass
129
- return class_table
130
128
131
129
def get_module_name (self , class_name ) -> Optional [str ]:
132
130
"""Gets the name of the module that contains this class.
0 commit comments