Ejemplo n.º 1
0
    def test_dot_net_libraries(self):
        if sys.platform == 'cli':
            tip = _pydev_imports_tipper.generate_tip('System.Drawing')
            self.assert_in('Brushes' , tip)

            tip = _pydev_imports_tipper.generate_tip('System.Drawing.Brushes')
            self.assert_in('Aqua' , tip)
Ejemplo n.º 2
0
        def test_dot_net_libraries(self):
            if sys.platform == 'cli':
                tip = _pydev_imports_tipper.generate_tip('System.Drawing')
                self.assert_in('Brushes' , tip)

                tip = _pydev_imports_tipper.generate_tip('System.Drawing.Brushes')
                self.assert_in('Aqua' , tip)
Ejemplo n.º 3
0
 def test_imports4(self):
     try:
         tip = _pydev_imports_tipper.generate_tip(
             'mx.DateTime.mxDateTime.mxDateTime')
         self.assert_in('now', tip)
     except ImportError:
         pass
Ejemplo n.º 4
0
 def test_imports2(self):
     try:
         tip = _pydev_imports_tipper.generate_tip('OpenGL.GLUT')
         self.assert_in('glutDisplayFunc', tip)
         self.assert_in('glutInitDisplayMode', tip)
     except ImportError:
         pass
Ejemplo n.º 5
0
 def test_imports2(self):
     try:
         tip = _pydev_imports_tipper.generate_tip('OpenGL.GLUT')
         self.assert_in('glutDisplayFunc', tip)
         self.assert_in('glutInitDisplayMode', tip)
     except ImportError:
         pass
Ejemplo n.º 6
0
 def test_imports2c(self):
     try:
         file # file is not available on py 3
     except:
         pass
     else:
         tips = _pydev_imports_tipper.generate_tip('%s.file' % BUILTIN_MOD)
         t = self.assert_in('readlines' , tips)
         self.assertTrue('->' in t[1] or 'sizehint' in t[1])
Ejemplo n.º 7
0
 def test_imports2b(self):
     try:
         file
     except:
         pass
     else:
         tips = _pydev_imports_tipper.generate_tip('%s' % BUILTIN_MOD)
         t = self.assert_in('file', tips)
         self.assert_('->' in t[1].strip() or 'file' in t[1])
Ejemplo n.º 8
0
 def test_imports2b(self):
     try:
         file
     except:
         pass
     else:
         tips = _pydev_imports_tipper.generate_tip('%s' % BUILTIN_MOD)
         t = self.assert_in('file' , tips)
         self.assertTrue('->' in t[1].strip() or 'file' in t[1])
Ejemplo n.º 9
0
 def test_imports2c(self):
     try:
         file # file is not available on py 3
     except:
         pass
     else:
         tips = _pydev_imports_tipper.generate_tip('%s.file' % BUILTIN_MOD)
         t = self.assert_in('readlines' , tips)
         self.assertTrue('->' in t[1] or 'sizehint' in t[1])
Ejemplo n.º 10
0
 def test_imports5(self):
     tip = _pydev_imports_tipper.generate_tip('%s.list' % BUILTIN_MOD)
     s = self.assert_in('sort', tip)
     self.check_args(
         s,
         '(cmp=None, key=None, reverse=False)',
         '(self, object cmp, object key, bool reverse)',
         '(self, cmp: object, key: object, reverse: bool)',
         '(key=None, reverse=False)',
     )
Ejemplo n.º 11
0
 def test_imports5(self):
     tip = _pydev_imports_tipper.generate_tip('%s.list' % BUILTIN_MOD)
     s = self.assert_in('sort', tip)
     self.check_args(
         s,
         '(cmp=None, key=None, reverse=False)',
         '(self, object cmp, object key, bool reverse)',
         '(self, cmp: object, key: object, reverse: bool)',
         '(key=None, reverse=False)',
     )
Ejemplo n.º 12
0
        def test_imports(self):
            '''
            You can print_ the results to check...
            '''
            if HAS_WX:
                tip = _pydev_imports_tipper.generate_tip('wxPython.wx')
                self.assert_in('wxApp', tip)

                tip = _pydev_imports_tipper.generate_tip('wxPython.wx.wxApp')

                try:
                    tip = _pydev_imports_tipper.generate_tip('qt')
                    self.assert_in('QWidget', tip)
                    self.assert_in('QDialog', tip)

                    tip = _pydev_imports_tipper.generate_tip('qt.QWidget')
                    self.assert_in('rect', tip)
                    self.assert_in('rect', tip)
                    self.assert_in('AltButton', tip)

                    tip = _pydev_imports_tipper.generate_tip(
                        'qt.QWidget.AltButton')
                    self.assert_in('__xor__', tip)

                    tip = _pydev_imports_tipper.generate_tip(
                        'qt.QWidget.AltButton.__xor__')
                    self.assert_in('__class__', tip)
                except ImportError:
                    pass

            tip = _pydev_imports_tipper.generate_tip(BUILTIN_MOD)
            #        for t in tip[1]:
            #            print_ t
            self.assert_in('object', tip)
            self.assert_in('tuple', tip)
            self.assert_in('list', tip)
            self.assert_in('RuntimeError', tip)
            self.assert_in('RuntimeWarning', tip)

            # Remove cmp as it's not available on py 3
            #t = self.assert_in('cmp' , tip)
            #self.check_args(t, '(x, y)', '(object x, object y)', '(x: object, y: object)') #args

            t = self.assert_in('isinstance', tip)
            self.check_args(t, '(object, class_or_type_or_tuple)',
                            '(object o, type typeinfo)',
                            '(o: object, typeinfo: type)')  #args

            t = self.assert_in('compile', tip)
            self.check_args(t, '(source, filename, mode)', '()',
                            '(o: object, name: str, val: object)')  #args

            t = self.assert_in('setattr', tip)
            self.check_args(t, '(object, name, value)',
                            '(object o, str name, object val)',
                            '(o: object, name: str, val: object)')  #args

            try:
                import compiler
                compiler_module = 'compiler'
            except ImportError:
                try:
                    import ast
                    compiler_module = 'ast'
                except ImportError:
                    compiler_module = None

            if compiler_module is not None:  #Not available in iron python
                tip = _pydev_imports_tipper.generate_tip(compiler_module)
                if compiler_module == 'compiler':
                    self.assert_args('parse', '(buf, mode)', tip)
                    self.assert_args('walk',
                                     '(tree, visitor, walker, verbose)', tip)
                    self.assert_in('parseFile', tip)
                else:
                    self.assert_args('parse', '(source, filename, mode)', tip)
                    self.assert_args('walk', '(node)', tip)
                self.assert_in('parse', tip)
Ejemplo n.º 13
0
 def test_imports2a(self):
     tips = _pydev_imports_tipper.generate_tip('%s.RuntimeError' % BUILTIN_MOD)
     self.assert_in('__doc__', tips)
Ejemplo n.º 14
0
 def test_imports4(self):
     try:
         tip = _pydev_imports_tipper.generate_tip('mx.DateTime.mxDateTime.mxDateTime')
         self.assert_in('now', tip)
     except ImportError:
         pass
Ejemplo n.º 15
0
 def test_imports3(self):
     tip = _pydev_imports_tipper.generate_tip('os')
     ret = self.assert_in('path', tip)
     self.assertEquals('', ret[2])
Ejemplo n.º 16
0
 def test_imports3(self):
     tip = _pydev_imports_tipper.generate_tip('os')
     ret = self.assert_in('path', tip)
     self.assertEqual('', ret[2])
Ejemplo n.º 17
0
    def run(self):
        # Echo server program
        try:
            from _pydev_bundle import _pydev_log
            log = _pydev_log.Log()

            dbg(
                SERVER_NAME + ' connecting to java server on %s (%s)' %
                (HOST, self.port), INFO1)
            # after being connected, create a socket as a client.
            self.connect_to_server()

            dbg(SERVER_NAME + ' Connected to java server', INFO1)

            while not self.ended:
                data = ''

                while data.find(MSG_END) == -1:
                    received = self.socket.recv(BUFFER_SIZE)
                    if len(received) == 0:
                        raise Exit()  # ok, connection ended
                    if IS_PYTHON3K:
                        data = data + received.decode('utf-8')
                    else:
                        data = data + received

                try:
                    try:
                        if data.find(MSG_KILL_SERVER) != -1:
                            dbg(SERVER_NAME + ' kill message received', INFO1)
                            # break if we received kill message.
                            self.ended = True
                            raise Exit()

                        dbg(SERVER_NAME + ' starting keep alive thread', INFO2)

                        if data.find(MSG_PYTHONPATH) != -1:
                            comps = []
                            for p in _sys_path:
                                comps.append((p, ' '))
                            self.send(self.get_completions_message(
                                None, comps))

                        else:
                            data = data[:data.rfind(MSG_END)]

                            if data.startswith(MSG_IMPORTS):
                                data = data[len(MSG_IMPORTS):]
                                data = unquote_plus(data)
                                defFile, comps = _pydev_imports_tipper.generate_tip(
                                    data, log)
                                self.send(
                                    self.get_completions_message(
                                        defFile, comps))

                            elif data.startswith(MSG_CHANGE_PYTHONPATH):
                                data = data[len(MSG_CHANGE_PYTHONPATH):]
                                data = unquote_plus(data)
                                change_python_path(data)
                                self.send(MSG_OK)

                            elif data.startswith(MSG_JEDI):
                                data = data[len(MSG_JEDI):]
                                data = unquote_plus(data)
                                line, column, encoding, path, source = data.split(
                                    '|', 4)
                                try:
                                    import jedi  # @UnresolvedImport
                                except:
                                    self.send(
                                        self.get_completions_message(
                                            None,
                                            [('Error on import jedi',
                                              'Error importing jedi', '')]))
                                else:
                                    script = jedi.Script(
                                        # Line +1 because it expects lines 1-based (and col 0-based)
                                        source=source,
                                        line=int(line) + 1,
                                        column=int(column),
                                        source_encoding=encoding,
                                        path=path,
                                    )
                                    lst = []
                                    for completion in script.completions():
                                        t = completion.type
                                        if t == 'class':
                                            t = '1'

                                        elif t == 'function':
                                            t = '2'

                                        elif t == 'import':
                                            t = '0'

                                        elif t == 'keyword':
                                            continue  # Keywords are already handled in PyDev

                                        elif t == 'statement':
                                            t = '3'

                                        else:
                                            t = '-1'

                                        # gen list(tuple(name, doc, args, type))
                                        lst.append(
                                            (completion.name, '', '', t))
                                    self.send(
                                        self.get_completions_message(
                                            'empty', lst))

                            elif data.startswith(MSG_SEARCH):
                                data = data[len(MSG_SEARCH):]
                                data = unquote_plus(data)
                                (
                                    f, line, col
                                ), foundAs = _pydev_imports_tipper.search_definition(
                                    data)
                                self.send(
                                    self.get_completions_message(
                                        f, [(line, col, foundAs)]))

                            elif data.startswith(MSG_CHANGE_DIR):
                                data = data[len(MSG_CHANGE_DIR):]
                                data = unquote_plus(data)
                                complete_from_dir(data)
                                self.send(MSG_OK)

                            else:
                                self.send(MSG_INVALID_REQUEST)
                    except Exit:
                        self.send(
                            self.get_completions_message(
                                None, [('Exit:', 'SystemExit', '')]))
                        raise

                    except:
                        dbg(SERVER_NAME + ' exception occurred', ERROR)
                        s = StringIO.StringIO()
                        traceback.print_exc(file=s)

                        err = s.getvalue()
                        dbg(SERVER_NAME + ' received error: ' + str(err),
                            ERROR)
                        self.send(
                            self.get_completions_message(
                                None, [('ERROR:', '%s\nLog:%s' %
                                        (err, log.get_contents()), '')]))

                finally:
                    log.clear_log()

            self.socket.close()
            self.ended = True
            raise Exit()  # connection broken

        except Exit:
            if self.exit_process_on_kill:
                sys.exit(0)
            # No need to log SystemExit error
        except:
            s = StringIO.StringIO()
            exc_info = sys.exc_info()

            traceback.print_exception(exc_info[0],
                                      exc_info[1],
                                      exc_info[2],
                                      limit=None,
                                      file=s)
            err = s.getvalue()
            dbg(SERVER_NAME + ' received error: ' + str(err), ERROR)
            raise
Ejemplo n.º 18
0
 def test_imports2a(self):
     tips = _pydev_imports_tipper.generate_tip('%s.RuntimeError' %
                                               BUILTIN_MOD)
     self.assert_in('__doc__', tips)
Ejemplo n.º 19
0
        def test_imports(self):
            '''
            You can print_ the results to check...
            '''
            if HAS_WX:
                tip = _pydev_imports_tipper.generate_tip('wxPython.wx')
                self.assert_in('wxApp'        , tip)

                tip = _pydev_imports_tipper.generate_tip('wxPython.wx.wxApp')

                try:
                    tip = _pydev_imports_tipper.generate_tip('qt')
                    self.assert_in('QWidget'        , tip)
                    self.assert_in('QDialog'        , tip)

                    tip = _pydev_imports_tipper.generate_tip('qt.QWidget')
                    self.assert_in('rect'           , tip)
                    self.assert_in('rect'           , tip)
                    self.assert_in('AltButton'      , tip)

                    tip = _pydev_imports_tipper.generate_tip('qt.QWidget.AltButton')
                    self.assert_in('__xor__'      , tip)

                    tip = _pydev_imports_tipper.generate_tip('qt.QWidget.AltButton.__xor__')
                    self.assert_in('__class__'      , tip)
                except ImportError:
                    pass

            tip = _pydev_imports_tipper.generate_tip(BUILTIN_MOD)
    #        for t in tip[1]:
    #            print_ t
            self.assert_in('object'         , tip)
            self.assert_in('tuple'          , tip)
            self.assert_in('list'          , tip)
            self.assert_in('RuntimeError'   , tip)
            self.assert_in('RuntimeWarning' , tip)

            # Remove cmp as it's not available on py 3
            #t = self.assert_in('cmp' , tip)
            #self.check_args(t, '(x, y)', '(object x, object y)', '(x: object, y: object)') #args

            t = self.assert_in('isinstance' , tip)
            self.check_args(t, '(object, class_or_type_or_tuple)', '(object o, type typeinfo)', '(o: object, typeinfo: type)', '(obj, class_or_tuple)') #args

            t = self.assert_in('compile' , tip)
            self.check_args(t, '(source, filename, mode)', '()', '(o: object, name: str, val: object)', '(source, filename, mode, flags, dont_inherit, optimize)') #args

            t = self.assert_in('setattr' , tip)
            self.check_args(t, '(object, name, value)', '(object o, str name, object val)', '(o: object, name: str, val: object)', '(obj, name, value)') #args

            try:
                import compiler
                compiler_module = 'compiler'
            except ImportError:
                try:
                    import ast
                    compiler_module = 'ast'
                except ImportError:
                    compiler_module = None

            if compiler_module is not None: #Not available in iron python
                tip = _pydev_imports_tipper.generate_tip(compiler_module)
                if compiler_module == 'compiler':
                    self.assert_args('parse', '(buf, mode)', tip)
                    self.assert_args('walk', '(tree, visitor, walker, verbose)', tip)
                    self.assert_in('parseFile'      , tip)
                else:
                    self.assert_args('parse', '(source, filename, mode)', tip)
                    self.assert_args('walk', '(node)', tip)
                self.assert_in('parse'          , tip)
Ejemplo n.º 20
0
    def run(self):
        # Echo server program
        try:
            from _pydev_bundle import _pydev_log
            log = _pydev_log.Log()

            dbg(SERVER_NAME + ' connecting to java server on %s (%s)' % (HOST, self.port) , INFO1)
            # after being connected, create a socket as a client.
            self.connect_to_server()

            dbg(SERVER_NAME + ' Connected to java server', INFO1)


            while not self.ended:
                data = ''

                while data.find(MSG_END) == -1:
                    received = self.socket.recv(BUFFER_SIZE)
                    if len(received) == 0:
                        raise Exit()  # ok, connection ended
                    if IS_PYTHON3K:
                        data = data + received.decode('utf-8')
                    else:
                        data = data + received

                try:
                    try:
                        if data.find(MSG_KILL_SERVER) != -1:
                            dbg(SERVER_NAME + ' kill message received', INFO1)
                            # break if we received kill message.
                            self.ended = True
                            raise Exit()

                        dbg(SERVER_NAME + ' starting keep alive thread', INFO2)

                        if data.find(MSG_PYTHONPATH) != -1:
                            comps = []
                            for p in _sys_path:
                                comps.append((p, ' '))
                            self.send(self.get_completions_message(None, comps))

                        else:
                            data = data[:data.rfind(MSG_END)]

                            if data.startswith(MSG_IMPORTS):
                                data = data[len(MSG_IMPORTS):]
                                data = unquote_plus(data)
                                defFile, comps = _pydev_imports_tipper.generate_tip(data, log)
                                self.send(self.get_completions_message(defFile, comps))

                            elif data.startswith(MSG_CHANGE_PYTHONPATH):
                                data = data[len(MSG_CHANGE_PYTHONPATH):]
                                data = unquote_plus(data)
                                change_python_path(data)
                                self.send(MSG_OK)

                            elif data.startswith(MSG_JEDI):
                                data = data[len(MSG_JEDI):]
                                data = unquote_plus(data)
                                line, column, encoding, path, source = data.split('|', 4)
                                try:
                                    import jedi  # @UnresolvedImport
                                except:
                                    self.send(self.get_completions_message(None, [('Error on import jedi', 'Error importing jedi', '')]))
                                else:
                                    script = jedi.Script(
                                        # Line +1 because it expects lines 1-based (and col 0-based)
                                        source=source,
                                        line=int(line) + 1,
                                        column=int(column),
                                        source_encoding=encoding,
                                        path=path,
                                    )
                                    lst = []
                                    for completion in script.completions():
                                        t = completion.type
                                        if t == 'class':
                                            t = '1'

                                        elif t == 'function':
                                            t = '2'

                                        elif t == 'import':
                                            t = '0'

                                        elif t == 'keyword':
                                            continue  # Keywords are already handled in PyDev

                                        elif t == 'statement':
                                            t = '3'

                                        else:
                                            t = '-1'

                                        # gen list(tuple(name, doc, args, type))
                                        lst.append((completion.name, '', '', t))
                                    self.send(self.get_completions_message('empty', lst))

                            elif data.startswith(MSG_SEARCH):
                                data = data[len(MSG_SEARCH):]
                                data = unquote_plus(data)
                                (f, line, col), foundAs = _pydev_imports_tipper.search_definition(data)
                                self.send(self.get_completions_message(f, [(line, col, foundAs)]))

                            elif data.startswith(MSG_CHANGE_DIR):
                                data = data[len(MSG_CHANGE_DIR):]
                                data = unquote_plus(data)
                                complete_from_dir(data)
                                self.send(MSG_OK)

                            else:
                                self.send(MSG_INVALID_REQUEST)
                    except Exit:
                        self.send(self.get_completions_message(None, [('Exit:', 'SystemExit', '')]))
                        raise

                    except:
                        dbg(SERVER_NAME + ' exception occurred', ERROR)
                        s = StringIO.StringIO()
                        traceback.print_exc(file=s)

                        err = s.getvalue()
                        dbg(SERVER_NAME + ' received error: ' + str(err), ERROR)
                        self.send(self.get_completions_message(None, [('ERROR:', '%s\nLog:%s' % (err, log.get_contents()), '')]))


                finally:
                    log.clear_log()

            self.socket.close()
            self.ended = True
            raise Exit()  # connection broken


        except Exit:
            if self.exit_process_on_kill:
                sys.exit(0)
            # No need to log SystemExit error
        except:
            s = StringIO.StringIO()
            exc_info = sys.exc_info()

            traceback.print_exception(exc_info[0], exc_info[1], exc_info[2], limit=None, file=s)
            err = s.getvalue()
            dbg(SERVER_NAME + ' received error: ' + str(err), ERROR)
            raise