def load_file(filename, export_default_namespace=True): """ Loads a Python file into a new module-like object and returns it. The *filename* is assumed relative to the currently executed module's directory (NOT the project directory which can be different). """ module = session.module __name__ = module.ident + ':' + filename if not path.isabs(filename): filename = path.join(module.directory, filename) filename = path.norm(filename) module.dependent_files.append(filename) with open(filename, 'r') as fp: code = compile(fp.read(), filename, 'exec') scope = Namespace() if export_default_namespace: vars(scope).update(module.get_init_globals()) scope.__module__ = module.namespace scope.__file__ = filename scope.__name__ = __name__ exec(code, vars(scope)) return scope
def load_file(filename, export_default_namespace=True): """ Loads a Python file into a new module-like object and returns it. The *filename* is assumed relative to the currently executed module's directory (NOT the project directory which can be different). """ module = session.module __name__ = module.ident + ':' + filename if not path.isabs(filename): filename = path.join(module.directory, filename) filename = path.norm(filename) with open(filename, 'r') as fp: code = compile(fp.read(), filename, 'exec') scope = Namespace() if export_default_namespace: vars(scope).update(module.get_init_globals()) scope.__module__ = module.namespace scope.__file__ = filename scope.__name__ = __name__ exec(code, vars(scope)) return scope
def buildlocal(rel_path): """ Given a relative path, returns the path (still relative) to the build directory for the current module. This is basically a shorthand for prepending the module name and version to *path*. """ if path.isabs(rel_path): return rel_path return path.canonical(path.join(session.module.ident, rel_path))
def load_file(filename): """ Loads a Python file into a new module-like object and returns it. The *filename* is assumed relative to the currently executed module's directory (NOT the project directory which can be different). """ if not path.isabs(filename): filename = path.join(session.module.directory, filename) with open(filename, 'r') as fp: code = compile(fp.read(), filename, 'exec') scope = Namespace() vars(scope).update(globals()) exec(code, vars(scope)) return scope
def __call__(self, value): from craftr.core.session import session if not path.isabs(value): value = path.join(session.maindir, value) return path.norm(value)