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)
def test_imports4(self): try: tip = _pydev_imports_tipper.generate_tip( 'mx.DateTime.mxDateTime.mxDateTime') self.assert_in('now', tip) except ImportError: pass
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
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])
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])
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])
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)', )
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)
def test_imports2a(self): tips = _pydev_imports_tipper.generate_tip('%s.RuntimeError' % BUILTIN_MOD) self.assert_in('__doc__', tips)
def test_imports4(self): try: tip = _pydev_imports_tipper.generate_tip('mx.DateTime.mxDateTime.mxDateTime') self.assert_in('now', tip) except ImportError: pass
def test_imports3(self): tip = _pydev_imports_tipper.generate_tip('os') ret = self.assert_in('path', tip) self.assertEquals('', ret[2])
def test_imports3(self): tip = _pydev_imports_tipper.generate_tip('os') ret = self.assert_in('path', tip) self.assertEqual('', ret[2])
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
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)
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