def loadTransformationsDict(parentModule): # transformationsDict = { # 'NodeName': [...transformation functions...] # } d = {} astNames = list(getPythonAstNames()) filenames = rfilter(r'^[^.]+\.py$', os.listdir(parentOf(parentModule.__file__))) for filename in filenames: if filename != '__init__.py': modName = 'pj.transformations.%s' % filename.split('.')[0] __import__(modName) mod = sys.modules[modName] for name in dir(mod): if name in astNames: assert name not in d value = getattr(mod, name) if not isinstance(value, list) or isinstance(value, tuple): value = [value] d[name] = value return d
def loadTransformationsDict(parentModule): # transformationsDict = { # 'NodeName': [...transformation functions...] # } d = {} astNames = list(getPythonAstNames()) filenames = rfilter( r'^[^.]+\.py$', os.listdir(parentOf(parentModule.__file__))) for filename in filenames: if filename != '__init__.py': modName = 'pj.transformations.%s' % filename.split('.')[0] __import__(modName) mod = sys.modules[modName] for name in dir(mod): if name in astNames: assert name not in d value = getattr(mod, name) if not isinstance(value, list) or isinstance(value, tuple): value = [value] d[name] = value return d
def getPythonAstNames(): #LATER: do this properly return rfilter(r'[A-Z][a-zA-Z]+', dir(ast))