def getJediProject(force=False): """Provides a jedi project""" global jediProject if force or jediProject is None: project = GlobalData().project if project.isLoaded(): jPath = project.getProjectDir() addedPaths = [] for path in project.getImportDirsAsAbsolutePaths(): if path not in addedPaths: addedPaths.append(path) projectDir = project.getProjectDir() if projectDir not in addedPaths: addedPaths.append(projectDir) else: jPath = os.path.realpath(QDir.homePath()) addedPaths = () jediProject = Project(jPath, sys_path=GlobalData().originalSysPath[:], added_sys_path=addedPaths) return jediProject
def getJediScript(source, line, column, srcPath, needSysPath=True): """Provides the jedi Script object considering the current project""" jedi.settings.additional_dynamic_modules = [] paths = GlobalData().originalSysPath[:] if needSysPath else [] # This make relative imports resolvable if os.path.isabs(srcPath): dirName = os.path.dirname(srcPath) if dirName not in paths: paths.append(dirName) project = GlobalData().project if not project.isLoaded(): # Add the other opened files if so mainWindow = GlobalData().mainWindow for path in mainWindow.editorsManager().getOpenedList(): if path[0]: if path[0].lower().endswith('.py'): jedi.settings.additional_dynamic_modules.append(path[0]) return jedi.Script(source, line, column, srcPath, sys_path=paths) for path in project.getImportDirsAsAbsolutePaths(): if path not in paths: paths.append(path) projectDir = project.getProjectDir() if projectDir not in paths: paths.append(projectDir) return jedi.Script(source, line, column, srcPath, sys_path=paths)