You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@liminal.apache.org by jb...@apache.org on 2020/07/20 06:24:59 UTC
[incubator-liminal] 19/43: Fix import bug
This is an automated email from the ASF dual-hosted git repository.
jbonofre pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-liminal.git
commit da4022cacb1fecf22dc3f9abfde12ff602768e24
Author: aviemzur <av...@gmail.com>
AuthorDate: Tue Mar 17 11:16:37 2020 +0200
Fix import bug
---
rainbow/core/util/class_util.py | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/rainbow/core/util/class_util.py b/rainbow/core/util/class_util.py
index 59b8543..31e1806 100644
--- a/rainbow/core/util/class_util.py
+++ b/rainbow/core/util/class_util.py
@@ -29,13 +29,14 @@ def find_subclasses_in_packages(packages, parent_class):
"""
classes = {}
- for package in [a for a in sys.path]:
- for root, directories, files in os.walk(package):
+ for py_path in [a for a in sys.path]:
+ for root, directories, files in os.walk(py_path):
for file in files:
file_path = os.path.join(root, file)
if any(p in file_path for p in packages) \
and file.endswith('.py') \
and '__pycache__' not in file_path:
+
spec = importlib.util.spec_from_file_location(file[:-3], file_path)
mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(mod)
@@ -43,7 +44,9 @@ def find_subclasses_in_packages(packages, parent_class):
if inspect.isclass(obj) and not obj.__name__.endswith('Mixin'):
module_name = mod.__name__
class_name = obj.__name__
- module = root[len(package) + 1:].replace('/', '.') + '.' + module_name
+ parent_module = root[len(py_path) + 1:].replace('/', '.')
+ module = parent_module.replace('airflow.dags.', '') + \
+ '.' + module_name
clazz = __get_class(module, class_name)
if issubclass(clazz, parent_class):
classes.update({module_name: clazz})