Exemple #1
0
def extract_variable(_, multiproj, main_project, other_projects, file_path,
                     cursor_position_start, cursor_position_end, replacement):
    """
    Extract variable from selection
    """
    try:
        main_project.validate()
        module = libutils.path_to_resource(main_project, file_path)
        if multiproj:
            # we need to rename cross project
            crossrename = multiproject.MultiProjectRefactoring(
                ExtractVariable, other_projects)
            extractor = crossrename(main_project, module,
                                    cursor_position_start, cursor_position_end)
            pending_changes = extractor.get_all_changes(replacement)
        else:
            extractor = ExtractVariable(main_project, module,
                                        cursor_position_start,
                                        cursor_position_end)
            pending_changes = extractor.get_changes(replacement, similar=True)
        return multiproj, pending_changes
    except RopeError as e:
        error = RefactoringError()
        error.exc = str(e)
        error.traceback = traceback.format_exc()
        error.critical = False
        return error
    except Exception as e:
        error = RefactoringError()
        error.exc = str(e)
        error.traceback = traceback.format_exc()
        error.critical = True
        return error
Exemple #2
0
def rename_symbol(_, main_project, multiproj, other_projects, file_path,
                  cursor_position, replacement):
    """
    Renames symbol under cusror.
    """
    try:
        main_project.validate()
        module = libutils.path_to_resource(main_project, file_path)
        if multiproj:
            # we need to rename cross project
            crossrename = multiproject.MultiProjectRefactoring(
                Rename, other_projects)
            renamer = crossrename(main_project, module, cursor_position)
            pending_changes = renamer.get_all_changes(replacement, docs=True)
        else:
            renamer = Rename(main_project, module, cursor_position)
            pending_changes = renamer.get_changes(replacement, docs=True)
        return multiproj, pending_changes
    except RopeError as e:
        error = RefactoringError()
        error.exc = str(e)
        error.traceback = traceback.format_exc()
        error.critical = False
        return error
    except Exception as e:
        error = RefactoringError()
        error.exc = str(e)
        error.traceback = traceback.format_exc()
        error.critical = True
        return error
Exemple #3
0
 def test_rename_from_the_project_not_containing_the_change(self):
     self.project2.get_prefs().add("python_path", self.project1.address)
     self.mod1.write("var = 1\n")
     self.mod2.write(
         dedent("""\
             import mod1
             myvar = mod1.var
         """)
     )
     refactoring = multiproject.MultiProjectRefactoring(
         rename.Rename, [self.project1]
     )
     renamer = refactoring(self.project2, self.mod2, self.mod2.read().rindex("var"))
     multiproject.perform(renamer.get_all_changes("newvar"))
     self.assertEqual(
         dedent("""\
             newvar = 1
         """),
         self.mod1.read(),
     )
     self.assertEqual(
         dedent("""\
             import mod1
             myvar = mod1.newvar
         """),
         self.mod2.read(),
     )
Exemple #4
0
 def test_move(self):
     self.mod1.write(
         dedent("""\
             def a_func():
                 pass
         """)
     )
     self.mod2.write(
         dedent("""\
             import mod1
             myvar = mod1.a_func()
         """)
     )
     refactoring = multiproject.MultiProjectRefactoring(
         move.create_move, [self.project2]
     )
     renamer = refactoring(self.project1, self.mod1, self.mod1.read().index("_func"))
     multiproject.perform(renamer.get_all_changes(self.other))
     self.assertEqual("", self.mod1.read())
     self.assertEqual(
         dedent("""\
             def a_func():
                 pass
         """),
         self.other.read(),
     )
     self.assertEqual(
         dedent("""\
             import other
             myvar = other.a_func()
         """),
         self.mod2.read(),
     )
 def test_rename(self):
     self.mod1.write('var = 1\n')
     self.mod2.write('import mod1\nmyvar = mod1.var\n')
     refactoring = multiproject.MultiProjectRefactoring(
         rename.Rename, [self.project2])
     renamer = refactoring(self.project1, self.mod1, 1)
     multiproject.perform(renamer.get_all_changes('newvar'))
     self.assertEquals('newvar = 1\n', self.mod1.read())
     self.assertEquals('import mod1\nmyvar = mod1.newvar\n',
                       self.mod2.read())
 def test_rename_from_the_project_not_containing_the_change(self):
     self.project2.get_prefs().add('python_path', self.project1.address)
     self.mod1.write('var = 1\n')
     self.mod2.write('import mod1\nmyvar = mod1.var\n')
     refactoring = multiproject.MultiProjectRefactoring(
         rename.Rename, [self.project1])
     renamer = refactoring(self.project2, self.mod2,
                           self.mod2.read().rindex('var'))
     multiproject.perform(renamer.get_all_changes('newvar'))
     self.assertEquals('newvar = 1\n', self.mod1.read())
     self.assertEquals('import mod1\nmyvar = mod1.newvar\n',
                       self.mod2.read())
 def test_move(self):
     self.mod1.write('def a_func():\n    pass\n')
     self.mod2.write('import mod1\nmyvar = mod1.a_func()\n')
     refactoring = multiproject.MultiProjectRefactoring(
         move.create_move, [self.project2])
     renamer = refactoring(self.project1, self.mod1,
                           self.mod1.read().index('_func'))
     multiproject.perform(renamer.get_all_changes(self.other))
     self.assertEquals('', self.mod1.read())
     self.assertEquals('def a_func():\n    pass\n', self.other.read())
     self.assertEquals('import other\nmyvar = other.a_func()\n',
                       self.mod2.read())
Exemple #8
0
 def test_rename(self):
     self.mod1.write("var = 1\n")
     self.mod2.write(
         dedent("""\
             import mod1
             myvar = mod1.var
         """)
     )
     refactoring = multiproject.MultiProjectRefactoring(
         rename.Rename, [self.project2]
     )
     renamer = refactoring(self.project1, self.mod1, 1)
     multiproject.perform(renamer.get_all_changes("newvar"))
     self.assertEqual("newvar = 1\n", self.mod1.read())
     self.assertEqual(
         dedent("""\
             import mod1
             myvar = mod1.newvar
         """),
         self.mod2.read(),
     )
 def test_trivial_rename(self):
     self.mod1.write('var = 1\n')
     refactoring = multiproject.MultiProjectRefactoring(rename.Rename, [])
     renamer = refactoring(self.project1, self.mod1, 1)
     multiproject.perform(renamer.get_all_changes('newvar'))
     self.assertEquals('newvar = 1\n', self.mod1.read())
Exemple #10
0
 def __init__(self, project, refactoring_type, *args):
     cross_ref = multiproject.MultiProjectRefactoring(
         refactoring_type, list(project.cross_projects.values()))
     self.rope_ref = cross_ref(project.proj, *args)