def get_info(self, info): """ Find the calltip and docs Returns a dict like the following: {'note': 'Function of numpy.core.numeric...', 'argspec': "(shape, dtype=None, order='C')' 'docstring': 'Return an array of given...' 'name': 'ones', 'calltip': 'ones(shape, dtype=None, order='C')'} """ call_def = self.get_jedi_object('goto_definitions', info) for cd in call_def: if cd.doc and not cd.doc.rstrip().endswith(')'): call_def = cd break else: call_def = call_def[0] name = call_def.name if name is None: return if call_def.module_path: mod_name = get_parent_until(call_def.module_path) else: mod_name = None if not mod_name: mod_name = call_def.module_name if call_def.doc.startswith(name + '('): calltip = getsignaturefromtext(call_def.doc, name) argspec = calltip[calltip.find('('):] docstring = call_def.doc[call_def.doc.find(')') + 3:] elif '(' in call_def.doc.splitlines()[0]: calltip = call_def.doc.splitlines()[0] name = call_def.doc.split('(')[0] docstring = call_def.doc[call_def.doc.find(')') + 3:] argspec = calltip[calltip.find('('):] else: calltip = name + '(...)' argspec = '()' docstring = call_def.doc if call_def.type == 'module': note = 'Module %s' % mod_name argspec = '' calltip = name elif call_def.type == 'class': note = 'Class in %s module' % mod_name elif call_def.doc.startswith('%s(self' % name): class_name = call_def.full_name.split('.')[-2] note = 'Method of %s class in %s module' % ( class_name.capitalize(), mod_name) else: note = '%s in %s module' % (call_def.type.capitalize(), mod_name) argspec = argspec.replace(' = ', '=') calltip = calltip.replace(' = ', '=') debug_print(call_def.name) doc_info = dict(name=name, argspec=argspec, note=note, docstring=docstring, calltip=calltip) return doc_info
def get_info(self, info): """ Find the calltip and docs Returns a dict like the following: {'note': 'Function of numpy.core.numeric...', 'argspec': "(shape, dtype=None, order='C')' 'docstring': 'Return an array of given...' 'name': 'ones', 'calltip': 'ones(shape, dtype=None, order='C')'} """ call_def = self.get_jedi_object('goto_definitions', info) for cd in call_def: # For compatibility with Jedi 0.11 try: cd.doc = cd.docstring() except AttributeError: pass if cd.doc and not cd.doc.rstrip().endswith(')'): call_def = cd break else: call_def = call_def[0] name = call_def.name if name is None: return if call_def.module_path: mod_name = get_parent_until(call_def.module_path) else: mod_name = None if not mod_name: mod_name = call_def.module_name if call_def.doc.startswith(name + '('): calltip = getsignaturefromtext(call_def.doc, name) argspec = calltip[calltip.find('('):] docstring = call_def.doc[call_def.doc.find(')') + 3:] elif '(' in call_def.doc.splitlines()[0]: calltip = call_def.doc.splitlines()[0] name = call_def.doc.split('(')[0] docstring = call_def.doc[call_def.doc.find(')') + 3:] argspec = calltip[calltip.find('('):] else: calltip = name + '(...)' argspec = '()' docstring = call_def.doc if call_def.type == 'module': note = 'Module %s' % mod_name argspec = '' calltip = name elif call_def.type == 'class': note = 'Class in %s module' % mod_name elif call_def.doc.startswith('%s(self' % name): class_name = call_def.full_name.split('.')[-2] note = 'Method of %s class in %s module' % ( class_name.capitalize(), mod_name) else: note = '%s in %s module' % (call_def.type.capitalize(), mod_name) argspec = argspec.replace(' = ', '=') calltip = calltip.replace(' = ', '=') debug_print(call_def.name) doc_info = dict(name=name, argspec=argspec, note=note, docstring=docstring, calltip=calltip) return doc_info
def __init__(self): self.foo = bar t = Test() t.foo""" path, line = p.get_definition(CodeInfo('definition', code, len(code), 'dummy.py', is_python_like=True)) assert line == 4 ext = python_like_exts() assert '.py' in ext and '.pyx' in ext ext = all_editable_exts() assert '.cpp' in ext and '.html' in ext path = get_parent_until(os.path.abspath(__file__)) assert path == 'spyder.utils.introspection.fallback_plugin' line = 'from spyder.widgets.sourcecode.codeeditor import CodeEditor' path = python_like_mod_finder(line) assert path.endswith('codeeditor.py') path = python_like_mod_finder(line, stop_token='sourcecode') assert path.endswith('__init__.py') and 'sourcecode' in path path = osp.expanduser(r'~/.spyder2/temp.py') if os.path.exists(path): path = get_parent_until(path) assert path == '.spyder2.temp', path code = 'import re\n\nre' path, line = p.get_definition(CodeInfo('definition', code, len(code),
t.foo""" path, line = p.get_definition( CodeInfo('definition', code, len(code), 'dummy.py', is_python_like=True)) assert line == 4 ext = python_like_exts() assert '.py' in ext and '.pyx' in ext ext = all_editable_exts() assert '.cpp' in ext and '.html' in ext path = get_parent_until(os.path.abspath(__file__)) assert path == 'spyder.utils.introspection.fallback_plugin' line = 'from spyder.widgets.sourcecode.codeeditor import CodeEditor' path = python_like_mod_finder(line) assert path.endswith('codeeditor.py') path = python_like_mod_finder(line, stop_token='sourcecode') assert path.endswith('__init__.py') and 'sourcecode' in path path = osp.expanduser(r'~/.spyder2/temp.py') if os.path.exists(path): path = get_parent_until(path) assert path == '.spyder2.temp', path code = 'import re\n\nre' path, line = p.get_definition(