Exemplo n.º 1
0
 def _keyword_parameters(self, pymodule, scope):
     offset = self.offset
     if offset == 0:
         return {}
     word_finder = worder.Worder(self.code, True)
     lines = SourceLinesAdapter(self.code)
     lineno = lines.get_line_number(offset)
     if word_finder.is_on_function_call_keyword(offset - 1):
         name_finder = rope.base.evaluate.ScopeNameFinder(pymodule)
         function_parens = word_finder.find_parens_start_from_inside(offset - 1)
         primary = word_finder.get_primary_at(function_parens - 1)
         try:
             function_pyname = rope.base.evaluate.eval_str(scope, primary)
         except exceptions.BadIdentifierError, e:
             return {}
         if function_pyname is not None:
             pyobject = function_pyname.get_object()
             if isinstance(pyobject, pyobjects.AbstractFunction):
                 pass
             elif isinstance(pyobject, pyobjects.AbstractClass) and "__init__" in pyobject:
                 pyobject = pyobject["__init__"].get_object()
             elif "__call__" in pyobject:
                 pyobject = pyobject["__call__"].get_object()
             if isinstance(pyobject, pyobjects.AbstractFunction):
                 param_names = []
                 param_names.extend(pyobject.get_param_names(special_args=False))
                 result = {}
                 for name in param_names:
                     if name.startswith(self.starting):
                         result[name + "="] = NamedParamProposal(name, pyobject)
                 return result
Exemplo n.º 2
0
 def _keyword_parameters(self, pymodule, scope):
     offset = self.offset
     if offset == 0:
         return {}
     word_finder = worder.Worder(self.code, True)
     lines = SourceLinesAdapter(self.code)
     lineno = lines.get_line_number(offset)
     if word_finder.is_on_function_call_keyword(offset - 1):
         name_finder = rope.base.evaluate.ScopeNameFinder(pymodule)
         function_parens = word_finder.\
             find_parens_start_from_inside(offset - 1)
         primary = word_finder.get_primary_at(function_parens - 1)
         try:
             function_pyname = rope.base.evaluate.\
                 eval_str(scope, primary)
         except exceptions.BadIdentifierError, e:
             return {}
         if function_pyname is not None:
             pyobject = function_pyname.get_object()
             if isinstance(pyobject, pyobjects.AbstractFunction):
                 pass
             elif isinstance(pyobject, pyobjects.AbstractClass) and \
                  '__init__' in pyobject:
                 pyobject = pyobject['__init__'].get_object()
             elif '__call__' in pyobject:
                 pyobject = pyobject['__call__'].get_object()
             if isinstance(pyobject, pyobjects.AbstractFunction):
                 param_names = []
                 param_names.extend(
                     pyobject.get_param_names(special_args=False))
                 result = {}
                 for name in param_names:
                     if name.startswith(self.starting):
                         result[name + '='] = NamedParamProposal(
                             name, pyobject
                         )
                 return result
Exemplo n.º 3
0
 def _logical_finder(self, code):
     lines = SourceLinesAdapter(code)
     return codeanalyze.CachingLogicalLineFinder(
         lines, codeanalyze.custom_generator)
Exemplo n.º 4
0
 def test_generating_line_starts3(self):
     code = 'a = 1\na = 2\n\na = \\ 3\n'
     line_finder = LogicalLineFinder(SourceLinesAdapter(code))
     self.assertEquals([2], list(line_finder.generate_starts(2, 3)))
Exemplo n.º 5
0
 def test_fors_and_block_start(self):
     code = 'l = range(10)\nfor i in l:\n    print i\n'
     self.assertEquals(2, get_block_start(SourceLinesAdapter(code), 2))
Exemplo n.º 6
0
 def _logical_finder(self, code):
     return LogicalLineFinder(SourceLinesAdapter(code))
Exemplo n.º 7
0
 def test_source_lines_last_line_with_no_new_line(self):
     to_lines = SourceLinesAdapter('line1')
     self.assertEquals(1, to_lines.get_line_number(5))
Exemplo n.º 8
0
 def test_source_lines_get_line_end(self):
     to_lines = SourceLinesAdapter('line1\nline2\n')
     self.assertEquals(5, to_lines.get_line_end(1))
     self.assertEquals(11, to_lines.get_line_end(2))
     self.assertEquals(12, to_lines.get_line_end(3))
Exemplo n.º 9
0
 def test_source_lines_get_line_start(self):
     to_lines = SourceLinesAdapter('line1\nline2\n')
     self.assertEquals(0, to_lines.get_line_start(1))
     self.assertEquals(6, to_lines.get_line_start(2))
     self.assertEquals(12, to_lines.get_line_start(3))
Exemplo n.º 10
0
 def test_source_lines_get_line_number(self):
     to_lines = SourceLinesAdapter('line1\nline2\n')
     self.assertEquals(1, to_lines.get_line_number(0))
     self.assertEquals(1, to_lines.get_line_number(5))
     self.assertEquals(2, to_lines.get_line_number(7))
     self.assertEquals(3, to_lines.get_line_number(12))
Exemplo n.º 11
0
 def test_source_lines_simple(self):
     to_lines = SourceLinesAdapter('line1\nline2\n')
     self.assertEquals('line1', to_lines.get_line(1))
     self.assertEquals('line2', to_lines.get_line(2))
     self.assertEquals('', to_lines.get_line(3))
     self.assertEquals(3, to_lines.length())
Exemplo n.º 12
0
 def test_source_lines_last_line_with_no_new_line(self):
     to_lines = SourceLinesAdapter('line1')
     self.assertEquals(1, to_lines.get_line_number(5))
Exemplo n.º 13
0
 def test_source_lines_get_line_end(self):
     to_lines = SourceLinesAdapter('line1\nline2\n')
     self.assertEquals(5, to_lines.get_line_end(1))
     self.assertEquals(11, to_lines.get_line_end(2))
     self.assertEquals(12, to_lines.get_line_end(3))
Exemplo n.º 14
0
 def test_source_lines_get_line_start(self):
     to_lines = SourceLinesAdapter('line1\nline2\n')
     self.assertEquals(0, to_lines.get_line_start(1))
     self.assertEquals(6, to_lines.get_line_start(2))
     self.assertEquals(12, to_lines.get_line_start(3))
Exemplo n.º 15
0
 def test_source_lines_get_line_number(self):
     to_lines = SourceLinesAdapter('line1\nline2\n')
     self.assertEquals(1, to_lines.get_line_number(0))
     self.assertEquals(1, to_lines.get_line_number(5))
     self.assertEquals(2, to_lines.get_line_number(7))
     self.assertEquals(3, to_lines.get_line_number(12))
Exemplo n.º 16
0
 def test_source_lines_simple(self):
     to_lines = SourceLinesAdapter('line1\nline2\n')
     self.assertEquals('line1', to_lines.get_line(1))
     self.assertEquals('line2', to_lines.get_line(2))
     self.assertEquals('', to_lines.get_line(3))
     self.assertEquals(3, to_lines.length())