|
|
@@ -13,17 +13,20 @@
|
|
|
# limitations under the License.
|
|
|
#
|
|
|
|
|
|
+import importlib.util
|
|
|
import os
|
|
|
-
|
|
|
-
|
|
|
-def _load_source(name, path):
|
|
|
- try:
|
|
|
- from importlib.machinery import SourceFileLoader
|
|
|
- return SourceFileLoader(name, path).load_module()
|
|
|
- except ImportError:
|
|
|
- # importlib.machinery doesn't exists in Python 2 so we will use imp (deprecated in Python 3)
|
|
|
- import imp
|
|
|
- return imp.load_source(name, path)
|
|
|
+import sys
|
|
|
+from importlib.abc import Loader
|
|
|
+from typing import Any
|
|
|
+
|
|
|
+
|
|
|
+def _load_source(name, path): # type: (str, str) -> Any
|
|
|
+ spec = importlib.util.spec_from_file_location(name, path)
|
|
|
+ module = importlib.util.module_from_spec(spec)
|
|
|
+ sys.modules[spec.name] = module
|
|
|
+ assert isinstance(spec.loader, Loader)
|
|
|
+ spec.loader.exec_module(module)
|
|
|
+ return module
|
|
|
|
|
|
|
|
|
idf_path = os.environ['IDF_PATH']
|