Example #1
0
    def __enter__(self):
        file_path = self.view.file_name()
        if file_path is None:
            # unsaved buffer
            file_path = self._create_temp_file()
        project_dir = self._find_ropeproject(file_path)
        if project_dir:
            self.project = project.Project(project_dir,
                                           fscommands=FileSystemCommands())
            self.importer = autoimport.AutoImport(project=self.project,
                                                  observe=True)
            if not os.path.exists("%s/.ropeproject/globalnames" % project_dir):
                # self.importer.generate_cache()
                self.build_cache()
            if os.path.exists("%s/__init__.py" % project_dir):
                sys.path.append(project_dir)
        else:
            # create a single-file project(ignoring other files in the folder)
            folder = os.path.dirname(file_path)
            ignored_res = os.listdir(folder)
            ignored_res.remove(os.path.basename(file_path))

            self.project = project.Project(ropefolder=None,
                                           projectroot=folder,
                                           ignored_resources=ignored_res,
                                           fscommands=FileSystemCommands())
            self.importer = autoimport.AutoImport(project=self.project,
                                                  observe=True)

        self.resource = libutils.path_to_resource(self.project, file_path)
        _update_python_path(self.project.prefs.get('python_path', []))
        self.input = self.view.substr(sublime.Region(0, self.view.size()))

        return self
Example #2
0
    def __init__(self, view, single_file=False):
        self.view = view
        self.project = None
        self.resource = None
        self.tmpfile = None
        self.input = ""
        self.building = False

        self.file_path = self.view.file_name()
        if self.file_path is None:
            # unsaved buffer
            self.file_path = self._create_temp_file()
        self.project_dir = _find_ropeproject(self.file_path)

        if not single_file and self.project_dir:
            self.project = project.Project(self.project_dir,
                                           fscommands=FileSystemCommands())
            self.importer = autoimport.AutoImport(project=self.project,
                                                  observe=False)
            if os.path.exists("%s/__init__.py" % self.project_dir):
                sys.path.append(self.project_dir)
        else:
            # create a single-file project(ignoring other files in the folder)
            folder = os.path.dirname(self.file_path)
            ignored_res = os.listdir(folder)
            ignored_res.remove(os.path.basename(self.file_path))

            self.project = project.Project(ropefolder=None,
                                           projectroot=folder,
                                           ignored_resources=ignored_res,
                                           fscommands=FileSystemCommands())
            self.importer = autoimport.AutoImport(project=self.project,
                                                  observe=False)
Example #3
0
 def setUp(self):
     super(AutoImportObservingTest, self).setUp()
     self.project = testutils.sample_project()
     self.mod1 = testutils.create_module(self.project, "mod1")
     self.pkg = testutils.create_package(self.project, "pkg")
     self.mod2 = testutils.create_module(self.project, "mod2", self.pkg)
     self.importer = autoimport.AutoImport(self.project, observe=True)
Example #4
0
 def setUp(self):
     super(AutoImportTest, self).setUp()
     self.project = testutils.sample_project(extension_modules=["sys"])
     self.mod1 = testutils.create_module(self.project, "mod1")
     self.pkg = testutils.create_package(self.project, "pkg")
     self.mod2 = testutils.create_module(self.project, "mod2", self.pkg)
     self.importer = autoimport.AutoImport(self.project, observe=False)
Example #5
0
    def __init__(self, path=None, project_path=None):
        """ Init Rope context. """
        self.path = path

        self.project = project.Project(project_path,
                                       fscommands=FileSystemCommands())

        self.importer = rope_autoimport.AutoImport(project=self.project,
                                                   observe=False)

        update_python_path(self.project.prefs.get('python_path', []))

        self.resource = None
        self.current = None
        self.options = dict(
            completeopt=env.var('&completeopt'),
            autoimport=env.var('g:pymode_rope_autoimport', True),
            autoimport_modules=env.var('g:pymode_rope_autoimport_modules'),
            goto_definition_cmd=env.var('g:pymode_rope_goto_definition_cmd'),
        )

        if os.path.exists("%s/__init__.py" % project_path):
            sys.path.append(project_path)

        if self.options.get('autoimport'):
            self.generate_autoimport_cache()

        env.debug('Context init', project_path)
        env.message('Init Rope project: %s' % project_path)
Example #6
0
    def __enter__(self):
        project_dir = os.environ.get('TM_PROJECT_DIRECTORY', None)
        file_path = os.environ['TM_FILEPATH']

        if project_dir:
            self.project = project.Project(project_dir)
            # no use to have auto import for a single file project
            if not os.path.exists("%s/.ropeproject/globalnames" % project_dir):
                importer = autoimport.AutoImport(project=self.project,
                                                 observe=True)
                importer.generate_cache()
            if os.path.exists("%s/__init__.py" % project_dir):
                sys.path.append(project_dir)

        else:
            #create a single-file project (ignoring all other files in the file's folder)
            folder = os.path.dirname(file_path)
            ignored_res = os.listdir(folder)
            ignored_res.remove(os.path.basename(file_path))
            self.project = project.Project(ropefolder=None,
                                           projectroot=folder,
                                           ignored_resources=ignored_res)

        self.resource = libutils.path_to_resource(self.project, file_path)

        update_python_path(self.project.prefs.get('python_path', []))

        self.input = sys.stdin.read()

        return self
Example #7
0
 def open_project(self, root=None):
     if not root:
         root = self.env.ask_directory('Rope project root folder: ')
     if self.project is not None:
         self.close_project()
     progress = self.env.create_progress('Opening [%s] project' % root)
     self.project = rope.base.project.Project(root)
     if self.env.get('enable_autoimport'):
         underlined = self.env.get('autoimport_underlineds')
         self.autoimport = autoimport.AutoImport(self.project,
                                                 underlined=underlined)
     progress.done()
Example #8
0
 def open_project(self, root=None):
     if not root:
         root = self.env.ask_directory('Rope project root folder: ')
     if self.project is not None:
         self.close_project()
     address = rope.base.project._realpath(
         os.path.join(root, '.ropeproject'))
     if not os.path.exists(address):
         if not self.env.y_or_n('Project not exists in %s, ' \
                                'create one?' % root):
             self.env.message("Project creation aborted")
             return
     progress = self.env.create_progress('Opening [%s] project' % root)
     self.project = rope.base.project.Project(root)
     if self.env.get('enable_autoimport'):
         underlined = self.env.get('autoimport_underlineds')
         self.autoimport = autoimport.AutoImport(self.project,
                                                 underlined=underlined)
     progress.done()
Example #9
0
def complete_import(project, resource, code, offset):
    class ImportProposal(object):
        def __init__(self, name, module):
            self.name = name
            self.display = name + " - " + module
            self.insert = module+"."+name
            self.module = module
            self.type = 'module'
    
    importer = autoimport.AutoImport(project=project, observe=False)
    # find all files with changes and index them again
    for filename in find_unindexed_files(project._address):
        importer.update_resource(libutils.path_to_resource(project, filename))
    
    proposals = importer.import_assist(starting=current_identifier())
    
    if len(proposals) == 0:
        return []
    else:
        return [ImportProposal(p[0], p[1]) for p in proposals]
Example #10
0
 def test_caching_underlined_names_passing_to_the_constructor(self):
     importer = autoimport.AutoImport(self.project, False, True)
     self.mod1.write("_myvar = None\n")
     importer.update_resource(self.mod1)
     self.assertEqual(["mod1"], importer.get_modules("_myvar"))