Source code for paws.core.operations
import os
import pkgutil
op_modules = []
[docs]def load_ops_from_path(path_,pkg,cat_root=''):
ops = []
cats = []
mods = pkgutil.iter_modules(path_)
mods = [mod for mod in mods if mod[1] not in ['__init__','Operation','OpManager','optools']]
for modloader, modname, ispkg in mods:
if ispkg:
pkg_path = [os.path.join(path_[0],modname)]
subcat_root = modname
if cat_root:
subcat_root = cat_root+'.'+modname
pkg_ops, pkg_cats = load_ops_from_path(pkg_path,pkg+'.'+modname,subcat_root)
pkg_ops = [op for op in pkg_ops if not op in ops]
pkg_cats = [cat for cat in pkg_cats if not cat in cats]
ops = ops + pkg_ops
cats = cats + pkg_cats
else:
# assume that there is an Operation in this module
# whose class name is the same as the module name.
if not cat_root in cats:
cats.append(cat_root)
ops.append( (cat_root,modname) )
op_modules.append(cat_root+'.'+modname)
return ops, cats
cat_op_list, cat_list = load_ops_from_path(__path__,__name__)