def generate_completions(frame, act_tok): ''' :return list(tuple(method_name, docstring, parameters, completion_type)) method_name: str docstring: str parameters: str -- i.e.: "(a, b)" completion_type is an int See: _pydev_bundle._pydev_imports_tipper for TYPE_ constants ''' if frame is None: return [] # Not using frame.f_globals because of https://sourceforge.net/tracker2/?func=detail&aid=2541355&group_id=85796&atid=577329 # (Names not resolved in generator expression in method) # See message: http://mail.python.org/pipermail/python-list/2009-January/526522.html updated_globals = {} updated_globals.update(frame.f_globals) updated_globals.update( frame.f_locals ) # locals later because it has precedence over the actual globals if pydevconsole.IPYTHON: completions = pydevconsole.get_completions(act_tok, act_tok, updated_globals, frame.f_locals) else: completer = Completer(updated_globals, None) # list(tuple(name, descr, parameters, type)) completions = completer.complete(act_tok) return completions
def generate_completions(frame, act_tok): ''' :return list(tuple(method_name, docstring, parameters, completion_type)) method_name: str docstring: str parameters: str -- i.e.: "(a, b)" completion_type is an int See: _pydev_bundle._pydev_imports_tipper for TYPE_ constants ''' if frame is None: return [] # Not using frame.f_globals because of https://sourceforge.net/tracker2/?func=detail&aid=2541355&group_id=85796&atid=577329 # (Names not resolved in generator expression in method) # See message: http://mail.python.org/pipermail/python-list/2009-January/526522.html updated_globals = {} updated_globals.update(frame.f_globals) updated_globals.update(frame.f_locals) # locals later because it has precedence over the actual globals if pydevconsole.IPYTHON: completions = pydevconsole.get_completions(act_tok, act_tok, updated_globals, frame.f_locals) else: completer = Completer(updated_globals, None) # list(tuple(name, descr, parameters, type)) completions = completer.complete(act_tok) return completions
def generate_completions_as_xml(frame, act_tok): if frame is None: return '<xml></xml>' #Not using frame.f_globals because of https://sourceforge.net/tracker2/?func=detail&aid=2541355&group_id=85796&atid=577329 #(Names not resolved in generator expression in method) #See message: http://mail.python.org/pipermail/python-list/2009-January/526522.html updated_globals = {} updated_globals.update(frame.f_globals) updated_globals.update( frame.f_locals ) #locals later because it has precedence over the actual globals if pydevconsole.IPYTHON: completions = pydevconsole.get_completions(act_tok, act_tok, updated_globals, frame.f_locals) else: completer = Completer(updated_globals, None) #list(tuple(name, descr, parameters, type)) completions = completer.complete(act_tok) valid_xml = pydevd_xml.make_valid_xml_value quote = pydevd_xml.quote msg = ["<xml>"] for comp in completions: msg.append('<comp p0="') msg.append(valid_xml(quote(comp[0], '/>_= \t'))) msg.append('" p1="') msg.append(valid_xml(quote(comp[1], '/>_= \t'))) msg.append('" p2="') msg.append(valid_xml(quote(comp[2], '/>_= \t'))) msg.append('" p3="') msg.append(valid_xml(quote(comp[3], '/>_= \t'))) msg.append('"/>') msg.append("</xml>") return ''.join(msg)
def generate_completions_as_xml(frame, act_tok): if frame is None: return '<xml></xml>' #Not using frame.f_globals because of https://sourceforge.net/tracker2/?func=detail&aid=2541355&group_id=85796&atid=577329 #(Names not resolved in generator expression in method) #See message: http://mail.python.org/pipermail/python-list/2009-January/526522.html updated_globals = {} updated_globals.update(frame.f_globals) updated_globals.update(frame.f_locals) #locals later because it has precedence over the actual globals if pydevconsole.IPYTHON: completions = pydevconsole.get_completions(act_tok, act_tok, updated_globals, frame.f_locals) else: completer = Completer(updated_globals, None) #list(tuple(name, descr, parameters, type)) completions = completer.complete(act_tok) valid_xml = pydevd_xml.make_valid_xml_value quote = pydevd_xml.quote msg = ["<xml>"] for comp in completions: msg.append('<comp p0="') msg.append(valid_xml(quote(comp[0], '/>_= \t'))) msg.append('" p1="') msg.append(valid_xml(quote(comp[1], '/>_= \t'))) msg.append('" p2="') msg.append(valid_xml(quote(comp[2], '/>_= \t'))) msg.append('" p3="') msg.append(valid_xml(quote(comp[3], '/>_= \t'))) msg.append('"/>') msg.append("</xml>") return ''.join(msg)
def doIt(self, dbg): """ Converts request into completions """ try: remove_path = None try: import _completer except: try: path = os.environ['PYDEV_COMPLETER_PYTHONPATH'] except : path = os.path.dirname(__file__) sys.path.append(path) remove_path = path try: import _completer except : pass try: frame = pydevd_vars.findFrame(self.thread_id, self.frame_id) if frame is not None: #Not using frame.f_globals because of https://sourceforge.net/tracker2/?func=detail&aid=2541355&group_id=85796&atid=577329 #(Names not resolved in generator expression in method) #See message: http://mail.python.org/pipermail/python-list/2009-January/526522.html updated_globals = {} updated_globals.update(frame.f_globals) updated_globals.update(frame.f_locals) #locals later because it has precedence over the actual globals locals = frame.f_locals else: updated_globals = {} locals = {} if pydevconsole.IPYTHON: completions = pydevconsole.get_completions(self.act_tok, self.act_tok, updated_globals, locals) else: try: completer = _completer.Completer(updated_globals, None) #list(tuple(name, descr, parameters, type)) completions = completer.complete(self.act_tok) except : completions = [] def makeValid(s): return pydevd_vars.makeValidXmlValue(pydevd_vars.quote(s, '/>_= \t')) msg = "<xml>" for comp in completions: msg += '<comp p0="%s" p1="%s" p2="%s" p3="%s"/>' % (makeValid(comp[0]), makeValid(comp[1]), makeValid(comp[2]), makeValid(comp[3]),) msg += "</xml>" cmd = dbg.cmdFactory.makeGetCompletionsMessage(self.sequence, msg) dbg.writer.addCommand(cmd) finally: if remove_path is not None: sys.path.remove(remove_path) except: exc = GetExceptionTracebackStr() sys.stderr.write('%s\n' % (exc,)) cmd = dbg.cmdFactory.makeErrorMessage(self.sequence, "Error getting completion " + exc) dbg.writer.addCommand(cmd)