Skip to content

Commit 8f89de7

Browse files
committed
PythonCodeCompletion: tweaks to python files (stdlib parser now records location details, flushing in completion server)
1 parent 2d04179 commit 8f89de7

3 files changed

Lines changed: 59 additions & 12 deletions

File tree

‎PythonCodeCompletion/python/jedi_example.py‎

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
import jedi
2-
import numpy
3-
numpy.
42
script = '''
53
def f(x,y,z):
64
print x,y,z
@@ -9,7 +7,35 @@ def f(x,y,z):
97
import os
108
os.
119
'''
10+
script1='''
11+
import numpy
12+
numpy.'''
13+
script2='''
14+
import pandas
15+
pandas.'''
16+
17+
jedi.settings.cache_directory = 'c:\\jedi-cache'
18+
s = jedi.Script(script1,3,6)
19+
comps = s.completions()
1220

21+
def repeated_import_test():
22+
import time
23+
for x in range(200):
24+
s = jedi.Script(script1,3,6)
25+
comps = s.completions()
26+
time.sleep(10)
27+
for c in comps:
28+
print c.name
29+
col = 6+len(c.name+'(')
30+
s=jedi.Script(script1+c.name+'(',3,col)
31+
time.sleep(10)
32+
33+
# s = jedi.Script(script2,3,7)
34+
# comps = s.completions()
35+
# for c in comps:
36+
# print c.name
37+
# col = 7+len(c.name+'(')
38+
# s=jedi.Script(script2+c.name+'(',3,col)
1339

1440
def get_definition_location(path,source,line,column):
1541
source=source.replace('\r','')
@@ -24,8 +50,6 @@ def get_definition_location(path,source,line,column):
2450
return [module_path,d.line-1]
2551
return ['',-1]
2652

27-
print get_definition_location(None,script,3,1)
28-
2953
def complete_tip(path,source,line,column):
3054
source=source.replace('\r','')
3155
script = jedi.Script(source,line=line+1,column=column,source_path=path)
@@ -42,7 +66,7 @@ def complete_tip(path,source,line,column):
4266
return calltip
4367
return ''
4468

45-
print complete_tip(None,script,3,2)
69+
#print complete_tip(None,script,3,2)
4670

4771

4872
#s = jedi.Script(script,line=4,column=2)

‎PythonCodeCompletion/python/python_completion_server.py‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ def __init__(self):
3333
self.inpipe=sys.stdin
3434
self.outpipe=sys.stdout
3535
sys.stdout=open(os.devnull,'wb')
36+
sys.stderr=open(os.devnull,'wb')
3637

3738
def register_function(self,fn,name):
3839
self.fn_dict[name]=fn
@@ -54,7 +55,7 @@ def handle_request(self):
5455
result=(result,)
5556
except:
5657
import traceback
57-
result ='Error running call'+name+'\n'+call_xml+'\n'
58+
result ='Error running call '+name+'\n'+call_xml+'\n'
5859
result += '\n'.join(traceback.format_exception(*sys.exc_info()))
5960
result = (result,)
6061
try:
@@ -64,6 +65,7 @@ def handle_request(self):
6465
size = len(res_xml)
6566
self.outpipe.write(struct.pack('I',size))
6667
self.outpipe.write(res_xml)
68+
self.outpipe.flush()
6769

6870
def __call__(self,name,*args):
6971
return self.fn_dict[name](*args)

‎PythonCodeCompletion/python/stdlib_parser.py‎

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
'#import sys whyf'
2-
#import pkgutil fdthis is a sick fucking joke
1+
import sys
2+
import pkgutil
33
import imp
44
import os,os.path
55
import types
@@ -48,10 +48,20 @@ def parse_objs(symbols,obj_list,follow=True,prefix=''):
4848
continue
4949
chsyms=None
5050
args=None
51+
path = None
52+
line = None
5153
try:
5254
doc=str(o[1].__doc__)
5355
except:
5456
doc=''
57+
try:
58+
path = inspect.getsourcefile(o[1])
59+
except TypeError:
60+
pass
61+
try:
62+
lines,line = inspect.getsourcelines(o[1])
63+
except:
64+
pass
5565
try:
5666
o[1].__bases__
5767
has_bases=True
@@ -74,7 +84,7 @@ def parse_objs(symbols,obj_list,follow=True,prefix=''):
7484
args+= ', **'+a.keywords
7585
except:
7686
pass
77-
symbols[o[0]]=(str(type(o[1])),args,doc,chsyms)
87+
symbols[o[0]]=(str(type(o[1])),args,path,line,doc,chsyms)
7888

7989
def parse_mods(mods):
8090
symbols={} ##Symbol is formatted key:value key=symbol, value=tuple(type,args,docstring,children)
@@ -152,6 +162,17 @@ def load(src='STDLIB'):
152162

153163
if __name__=='__main__':
154164
symbols=create()
155-
# syms=load()
156-
# for s in sorted(syms['os'][-1]):
157-
# print s,syms['os'][-1][s][:2]
165+
syms=load()
166+
api = syms['statsmodels'][-1]['api'][-1]
167+
for s in sorted(api):
168+
print s,api[s][:-2]
169+
ols = api['OLS'][-1]
170+
for s in sorted(ols):
171+
print s,ols[s][:-2]
172+
# datasets = api['datasets'][-1]
173+
# datasets2 = syms['statsmodels'][-1]['datasets'][-1]
174+
# for s in sorted(datasets):
175+
# print s
176+
# for s in sorted(datasets2):
177+
# print s
178+
# print datasets == datasets2

0 commit comments

Comments
 (0)