py2ls 0.1.6.3__py3-none-any.whl → 0.1.6.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
py2ls/__init__.py
CHANGED
@@ -0,0 +1,33 @@
|
|
1
|
+
import os
|
2
|
+
from datetime import datetime
|
3
|
+
import subprocess
|
4
|
+
|
5
|
+
def export_requirements(fpath="/Users/macjianfeng/Dropbox/github/python/py2ls/"):
|
6
|
+
"""
|
7
|
+
Main function to generate a timestamped requirements file and convert it to Poetry dependencies.
|
8
|
+
"""
|
9
|
+
|
10
|
+
current_time = datetime.now().strftime("%Y-%m-%d_%H_%M_%S")
|
11
|
+
fpath_requirements = f"{fpath}{current_time}_requirements.txt"
|
12
|
+
print("Current date and time:", current_time)
|
13
|
+
|
14
|
+
os.makedirs(os.path.dirname(fpath_requirements), exist_ok=True)
|
15
|
+
|
16
|
+
try:
|
17
|
+
with open(fpath_requirements, 'w') as requirements_file:
|
18
|
+
subprocess.run(['pip', 'freeze'], stdout=requirements_file, check=True)
|
19
|
+
print(f"Requirements have been saved to {fpath_requirements}")
|
20
|
+
except subprocess.CalledProcessError as e:
|
21
|
+
print(f"An error occurred while creating the requirements file: {e}")
|
22
|
+
txt_corr=[]
|
23
|
+
for txt_ in re.split('\n', txt):
|
24
|
+
if len(txt_) <=40:
|
25
|
+
txt_corr.append(txt_.replace("==",' = "^')+'"\n')
|
26
|
+
with open(fpath_requirements.replace('requirements.txt','for_poetry.txt'), 'w') as f:
|
27
|
+
f.writelines(txt_corr)
|
28
|
+
|
29
|
+
def main():
|
30
|
+
export_requirements(fpath="/Users/macjianfeng/Dropbox/github/python/py2ls/")
|
31
|
+
|
32
|
+
if __name__ == "__main__":
|
33
|
+
main()
|
py2ls/ips.py
CHANGED
@@ -71,7 +71,7 @@ def upgrade(module='py2ls'):
|
|
71
71
|
subprocess.check_call([sys.executable, "-m", "pip", "install", "--upgrade", module])
|
72
72
|
except subprocess.CalledProcessError as e:
|
73
73
|
print(f"An error occurred while upgrading py2ls: {e}")
|
74
|
-
|
74
|
+
|
75
75
|
|
76
76
|
dir_save='/Users/macjianfeng/Dropbox/Downloads/'
|
77
77
|
|
py2ls/plot.py
CHANGED
@@ -3,6 +3,11 @@ import numpy as np
|
|
3
3
|
from matplotlib.colors import to_rgba
|
4
4
|
from scipy.stats import gaussian_kde
|
5
5
|
|
6
|
+
import logging
|
7
|
+
# Suppress INFO messages from fontTools
|
8
|
+
logging.getLogger('fontTools').setLevel(logging.WARNING)
|
9
|
+
|
10
|
+
|
6
11
|
def catplot(data, *args, **kwargs):
|
7
12
|
"""
|
8
13
|
catplot(data, opt=None, ax=None)
|
@@ -19,7 +24,10 @@ def catplot(data, *args, **kwargs):
|
|
19
24
|
width=opt_b['x_width'],
|
20
25
|
color=color,
|
21
26
|
edgecolor=opt_b['EdgeColor'],
|
22
|
-
alpha=opt_b['FaceAlpha']
|
27
|
+
alpha=opt_b['FaceAlpha'],
|
28
|
+
linewidth=opt_b['LineWidth'],
|
29
|
+
hatch=opt_b['hatch']
|
30
|
+
)
|
23
31
|
|
24
32
|
def plot_errors(data, data_m, opt_e, xloc, ax):
|
25
33
|
error_positions = get_positions(xloc, opt_e['loc'], opt_e['x_width'], data.shape[0])
|
@@ -33,19 +41,34 @@ def catplot(data, *args, **kwargs):
|
|
33
41
|
if not isinstance(opt_e['MarkerEdgeColor'],list):
|
34
42
|
opt_e['MarkerEdgeColor']=[opt_e['MarkerEdgeColor']]
|
35
43
|
for i, (x, y, err) in enumerate(zip(error_positions, data_m, errors)):
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
44
|
+
if opt_e['MarkerSize']=='auto':
|
45
|
+
ax.errorbar(x, y, yerr=err,
|
46
|
+
fmt=opt_e['Marker'],
|
47
|
+
ecolor=opt_e['LineColor'],
|
48
|
+
elinewidth=opt_e['LineWidth'],
|
49
|
+
lw=opt_e['LineWidth'],
|
50
|
+
ls=opt_e['LineStyle'],
|
51
|
+
capsize=opt_e['CapSize'],
|
52
|
+
capthick=opt_e['CapLineWidth'],
|
53
|
+
mec=opt_e['MarkerEdgeColor'][i % len(opt_e['MarkerEdgeColor'])],
|
54
|
+
mfc=opt_e['FaceColor'][i % len(opt_e['FaceColor'])],
|
55
|
+
visible=opt_e['Visible']
|
56
|
+
)
|
57
|
+
else:
|
58
|
+
ax.errorbar(x, y, yerr=err,
|
59
|
+
fmt=opt_e['Marker'],
|
60
|
+
ecolor=opt_e['LineColor'],
|
61
|
+
elinewidth=opt_e['LineWidth'],
|
62
|
+
lw=opt_e['LineWidth'],
|
63
|
+
ls=opt_e['LineStyle'],
|
64
|
+
capsize=opt_e['CapSize'],
|
65
|
+
capthick=opt_e['CapLineWidth'],
|
66
|
+
markersize=opt_e['MarkerSize'],
|
67
|
+
mec=opt_e['MarkerEdgeColor'][i % len(opt_e['MarkerEdgeColor'])],
|
68
|
+
mfc=opt_e['FaceColor'][i % len(opt_e['FaceColor'])],
|
69
|
+
visible=opt_e['Visible']
|
70
|
+
)
|
71
|
+
|
49
72
|
|
50
73
|
def plot_scatter(data, opt_s, xloc, ax):
|
51
74
|
scatter_positions = get_positions(xloc, opt_s['loc'], opt_s['x_width'], data.shape[0])
|
@@ -56,7 +79,9 @@ def catplot(data, *args, **kwargs):
|
|
56
79
|
alpha=opt_s['FaceAlpha'],
|
57
80
|
edgecolor=opt_s['MarkerEdgeColor'],
|
58
81
|
s=opt_s['MarkerSize'],
|
59
|
-
marker=opt_s['Marker']
|
82
|
+
marker=opt_s['Marker'],
|
83
|
+
linewidths=opt_s['LineWidth'],
|
84
|
+
cmap=opt_s['cmap']
|
60
85
|
)
|
61
86
|
|
62
87
|
def plot_boxplot(data, bx_opt, xloc,ax):
|
@@ -198,7 +223,30 @@ def catplot(data, *args, **kwargs):
|
|
198
223
|
return np.tile(np.concatenate([xloc[:1] - x_width, xloc[1:-1], xloc[-1:] + x_width]),(n_row,1))
|
199
224
|
else:
|
200
225
|
return np.tile(xloc,(n_row,1))
|
226
|
+
def sort_catplot_layers(custom_order, full_order= ['b', 'bx', 'e', 'v', 's', 'l']):
|
227
|
+
"""
|
228
|
+
sort layers
|
229
|
+
"""
|
230
|
+
# Ensure custom_order is a list of strings
|
231
|
+
custom_order = [str(layer) for layer in custom_order]
|
232
|
+
j = 1
|
233
|
+
layers = list(range(len(full_order)))
|
234
|
+
for i in range(len(full_order)):
|
235
|
+
if full_order[i] not in custom_order:
|
236
|
+
layers[i] = i
|
237
|
+
else:
|
238
|
+
layers[i] = None
|
239
|
+
j = 0
|
240
|
+
for i in range(len(layers)):
|
241
|
+
if layers[i] is None:
|
242
|
+
full_order[i] = custom_order[j]
|
243
|
+
j += 1
|
244
|
+
return full_order
|
245
|
+
# # Example usage:
|
246
|
+
# custom_order = ['s', 'bx', 'e']
|
247
|
+
# full_order = sort_catplot_layers(custom_order)
|
201
248
|
|
249
|
+
# full_order
|
202
250
|
opt = kwargs.get('opt',{})
|
203
251
|
ax = kwargs.get('ax',None)
|
204
252
|
if 'ax' not in locals() or ax is None:
|
@@ -223,26 +271,32 @@ def catplot(data, *args, **kwargs):
|
|
223
271
|
opt['loc'].setdefault('xloc', np.arange(1, data.shape[1] + 1))
|
224
272
|
|
225
273
|
# export setting
|
226
|
-
opt.setdefault('export',
|
274
|
+
opt.setdefault('export', {})
|
227
275
|
opt['export'].setdefault('path', None)
|
228
276
|
print(opt['export'])
|
229
277
|
|
278
|
+
# opt.setdefault('layer', {})
|
279
|
+
opt.setdefault('layer', ['b', 'bx', 'e', 'v', 's', 'l'])
|
280
|
+
|
230
281
|
opt.setdefault('b', {})
|
231
|
-
opt['b'].setdefault('go',
|
282
|
+
opt['b'].setdefault('go', 1)
|
283
|
+
opt['b'].setdefault('loc', 'c')
|
284
|
+
opt['b'].setdefault('FaceColor', opt['c'])
|
285
|
+
opt['b'].setdefault('FaceAlpha', 0.65)
|
232
286
|
opt['b'].setdefault('EdgeColor', 'k')
|
233
|
-
opt['b'].setdefault('FaceAlpha', 1)
|
234
287
|
opt['b'].setdefault('EdgeAlpha', 1)
|
235
288
|
opt['b'].setdefault('LineStyle', '-')
|
289
|
+
opt['b'].setdefault('LineWidth', 0.8)
|
236
290
|
opt['b'].setdefault('x_width', 0.5)
|
237
291
|
opt['b'].setdefault('ShowBaseLine', 'off')
|
238
|
-
opt['b'].setdefault('
|
239
|
-
opt['b'].setdefault('FaceColor', opt['c'])
|
292
|
+
opt['b'].setdefault('hatch', None)
|
240
293
|
|
241
294
|
opt.setdefault('e', {})
|
242
295
|
opt['e'].setdefault('go', 1)
|
296
|
+
opt['e'].setdefault('loc', 'l')
|
243
297
|
opt['e'].setdefault('LineWidth', 1)
|
244
298
|
opt['e'].setdefault('CapLineWidth', 1)
|
245
|
-
opt['e'].setdefault('CapSize',
|
299
|
+
opt['e'].setdefault('CapSize', 2)
|
246
300
|
opt['e'].setdefault('Marker', 'none')
|
247
301
|
opt['e'].setdefault('LineStyle', 'none')
|
248
302
|
opt['e'].setdefault('LineColor', 'k')
|
@@ -253,63 +307,70 @@ def catplot(data, *args, **kwargs):
|
|
253
307
|
opt['e'].setdefault('Visible', True)
|
254
308
|
opt['e'].setdefault('Orientation', 'vertical')
|
255
309
|
opt['e'].setdefault('error', 'sem')
|
256
|
-
opt['e'].setdefault('loc', 'c')
|
257
310
|
opt['e'].setdefault('x_width', opt['b']['x_width'] / 5)
|
258
311
|
opt['e'].setdefault('cap_dir', 'b')
|
259
312
|
|
260
313
|
opt.setdefault('s', {})
|
261
314
|
opt['s'].setdefault('go', 1)
|
315
|
+
opt['s'].setdefault('loc', 'r')
|
316
|
+
opt['s'].setdefault('FaceColor', opt['c'])
|
317
|
+
opt['s'].setdefault('cmap', None)
|
318
|
+
opt['s'].setdefault('FaceAlpha', 1)
|
262
319
|
opt['s'].setdefault('x_width', opt['b']['x_width'] / 5)
|
263
320
|
opt['s'].setdefault('Marker', 'o')
|
264
|
-
opt['s'].setdefault('MarkerSize',
|
265
|
-
opt['s'].setdefault('LineWidth',
|
266
|
-
opt['s'].setdefault('
|
267
|
-
|
268
|
-
opt
|
269
|
-
opt['
|
270
|
-
|
321
|
+
opt['s'].setdefault('MarkerSize', 10)
|
322
|
+
opt['s'].setdefault('LineWidth', 0.5)
|
323
|
+
opt['s'].setdefault('MarkerEdgeColor', 'k')
|
324
|
+
|
325
|
+
opt.setdefault('l', {})
|
326
|
+
opt['l'].setdefault('go', 1)
|
327
|
+
opt['l'].setdefault('LineStyle', '-')
|
328
|
+
opt['l'].setdefault('LineColor', 'k')
|
329
|
+
opt['l'].setdefault('LineWidth', 0.5)
|
330
|
+
opt['l'].setdefault('LineAlpha', 0.5)
|
331
|
+
|
271
332
|
opt.setdefault('bx', {})
|
272
333
|
opt['bx'].setdefault('go', 0)
|
334
|
+
opt['bx'].setdefault('loc', 'r')
|
335
|
+
opt['bx'].setdefault('FaceColor', opt['c'])
|
273
336
|
opt['bx'].setdefault('EdgeColor', 'k')
|
274
|
-
opt['bx'].setdefault('FaceAlpha',
|
337
|
+
opt['bx'].setdefault('FaceAlpha', 0.7)
|
275
338
|
opt['bx'].setdefault('EdgeAlpha', 1)
|
276
339
|
opt['bx'].setdefault('LineStyle', '-')
|
277
|
-
opt['bx'].setdefault('x_width', 0.
|
340
|
+
opt['bx'].setdefault('x_width', 0.2)
|
278
341
|
opt['bx'].setdefault('ShowBaseLine', 'off')
|
279
|
-
opt['bx'].setdefault('loc', 'c')
|
280
|
-
opt['bx'].setdefault('FaceColor', opt['c'])
|
281
342
|
opt['bx'].setdefault('Notch', False)
|
282
|
-
opt['bx'].setdefault('MedianStyle', 'line')
|
283
343
|
opt['bx'].setdefault('Outliers', 'on')
|
284
344
|
opt['bx'].setdefault('OutlierMarker', '+')
|
285
345
|
opt['bx'].setdefault('OutlierColor', 'r')
|
286
346
|
opt['bx'].setdefault('OutlierSize', 6)
|
287
|
-
opt['bx'].setdefault('PlotStyle', 'traditional')
|
288
|
-
opt['bx'].setdefault('FactorDirection', 'auto')
|
289
|
-
opt['bx'].setdefault('Whisker',
|
347
|
+
# opt['bx'].setdefault('PlotStyle', 'traditional')
|
348
|
+
# opt['bx'].setdefault('FactorDirection', 'auto')
|
349
|
+
opt['bx'].setdefault('Whisker', 0.5)
|
290
350
|
opt['bx'].setdefault('Orientation', 'vertical')
|
291
|
-
opt['bx'].setdefault('BoxLineWidth',
|
351
|
+
opt['bx'].setdefault('BoxLineWidth', 0.5)
|
292
352
|
opt['bx'].setdefault('FaceColor', 'k')
|
293
353
|
opt['bx'].setdefault('WhiskerLineStyle', '-')
|
294
354
|
opt['bx'].setdefault('WhiskerLineColor', 'k')
|
295
|
-
opt['bx'].setdefault('WhiskerLineWidth',
|
355
|
+
opt['bx'].setdefault('WhiskerLineWidth', 0.5)
|
296
356
|
opt['bx'].setdefault('Caps', True)
|
297
357
|
opt['bx'].setdefault('CapLineColor', 'k')
|
298
|
-
opt['bx'].setdefault('CapLineWidth',
|
299
|
-
opt['bx'].setdefault('CapSize', 0.
|
358
|
+
opt['bx'].setdefault('CapLineWidth', 0.5)
|
359
|
+
opt['bx'].setdefault('CapSize', 0.2)
|
300
360
|
opt['bx'].setdefault('MedianLineStyle', '-')
|
361
|
+
opt['bx'].setdefault('MedianStyle', 'line')
|
301
362
|
opt['bx'].setdefault('MedianLineColor', 'k')
|
302
|
-
opt['bx'].setdefault('MedianLineWidth',
|
363
|
+
opt['bx'].setdefault('MedianLineWidth', 2)
|
303
364
|
opt['bx'].setdefault('MedianLineTop', False)
|
304
365
|
opt['bx'].setdefault('MeanLine', False)
|
305
366
|
opt['bx'].setdefault('showmeans', opt['bx']['MeanLine'])
|
306
367
|
opt['bx'].setdefault('MeanLineStyle', '-')
|
307
|
-
opt['bx'].setdefault('MeanLineColor', '
|
308
|
-
opt['bx'].setdefault('MeanLineWidth',
|
368
|
+
opt['bx'].setdefault('MeanLineColor', 'w')
|
369
|
+
opt['bx'].setdefault('MeanLineWidth', 2)
|
309
370
|
|
310
371
|
# Violin plot options
|
311
372
|
opt.setdefault('v', {})
|
312
|
-
opt['v'].setdefault('go',
|
373
|
+
opt['v'].setdefault('go', 0)
|
313
374
|
opt['v'].setdefault('x_width', 0.3)
|
314
375
|
opt['v'].setdefault('loc', 'r')
|
315
376
|
opt['v'].setdefault('EdgeColor', 'none')
|
@@ -321,35 +382,35 @@ def catplot(data, *args, **kwargs):
|
|
321
382
|
opt['v'].setdefault('NumPoints', 500)
|
322
383
|
opt['v'].setdefault('BoundaryCorrection', 'reflection')
|
323
384
|
|
324
|
-
# line plot options
|
325
|
-
opt.setdefault('l', {})
|
326
|
-
opt['l'].setdefault('go', 0)
|
327
|
-
opt['l'].setdefault('LineStyle', '-')
|
328
|
-
opt['l'].setdefault('LineColor', 'k')
|
329
|
-
opt['l'].setdefault('LineWidth', 0.5)
|
330
|
-
opt['l'].setdefault('LineAlpha', 0.5)
|
331
385
|
|
332
386
|
data_m = np.nanmean(data, axis=0)
|
333
387
|
nr, nc = data.shape
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
388
|
+
|
389
|
+
for key in kwargs.keys():
|
390
|
+
if key in opt:
|
391
|
+
if isinstance(kwargs[key], dict):
|
392
|
+
opt[key].update(kwargs[key])
|
393
|
+
else:
|
394
|
+
opt[key] = kwargs[key]
|
395
|
+
xloc = opt['loc']['xloc']
|
396
|
+
layers = sort_catplot_layers(opt['layer'])
|
397
|
+
for layer in layers:
|
398
|
+
if layer== 'b' and opt['b']['go']:
|
399
|
+
plot_bars(data_m, opt['b'], xloc, ax)
|
400
|
+
elif layer== 'e' and opt['e']['go']:
|
401
|
+
plot_errors(data, data_m, opt['e'], xloc, ax)
|
402
|
+
elif layer== 's' and opt['s']['go']:
|
403
|
+
plot_scatter(data, opt['s'], xloc, ax)
|
404
|
+
elif layer== 'bx' and opt['bx']['go']:
|
405
|
+
plot_boxplot(data, opt['bx'], xloc, ax)
|
406
|
+
elif layer== 'v' and opt['v']['go']:
|
407
|
+
plot_violin(data, opt['v'], xloc, ax)
|
408
|
+
elif all([layer== 'l',opt['l']['go'],opt['s']['go']]):
|
409
|
+
plot_lines(data, opt['l'], opt['s'], ax)
|
410
|
+
# figsets
|
411
|
+
kw_figsets=kwargs.get('figsets',None)
|
412
|
+
if kw_figsets is not None:
|
413
|
+
figsets(ax=ax,**kw_figsets)
|
353
414
|
return ax
|
354
415
|
|
355
416
|
# from py2ls.ips import get_color,figsets
|
@@ -1036,7 +1097,7 @@ def stdshade(ax=None,*args, **kwargs):
|
|
1036
1097
|
# line_kws = kwargs.get('line_kws', {})
|
1037
1098
|
|
1038
1099
|
# setting form kwargs
|
1039
|
-
lw = kwargs.get('lw',
|
1100
|
+
lw = kwargs.get('lw', 0.5)
|
1040
1101
|
ls= kwargs.get('ls', plotStyle)
|
1041
1102
|
marker=kwargs.get("marker",plotMarker)
|
1042
1103
|
label=kwargs.get("label",None)
|
@@ -1075,6 +1136,12 @@ def stdshade(ax=None,*args, **kwargs):
|
|
1075
1136
|
|
1076
1137
|
fill = ax.fill_between(x, yMean + wings, yMean - wings, **kws_fill)
|
1077
1138
|
line = ax.plot(x, yMean, **kws_line)
|
1139
|
+
|
1140
|
+
# figsets
|
1141
|
+
kw_figsets=kwargs.get('figsets',None)
|
1142
|
+
if kw_figsets is not None:
|
1143
|
+
figsets(ax=ax,**kw_figsets)
|
1144
|
+
|
1078
1145
|
return line[0], fill
|
1079
1146
|
|
1080
1147
|
|
@@ -1106,4 +1173,67 @@ plot.stdshade(data,
|
|
1106
1173
|
plt.legend()
|
1107
1174
|
|
1108
1175
|
"""
|
1109
|
-
|
1176
|
+
|
1177
|
+
|
1178
|
+
def adjust_spines(ax=None, spines=['left', 'bottom'],distance=2):
|
1179
|
+
if ax is None:
|
1180
|
+
ax = plt.gca()
|
1181
|
+
for loc, spine in ax.spines.items():
|
1182
|
+
if loc in spines:
|
1183
|
+
spine.set_position(('outward', distance)) # outward by 2 points
|
1184
|
+
# spine.set_smart_bounds(True)
|
1185
|
+
else:
|
1186
|
+
spine.set_color('none') # don't draw spine
|
1187
|
+
# turn off ticks where there is no spine
|
1188
|
+
if 'left' in spines:
|
1189
|
+
ax.yaxis.set_ticks_position('left')
|
1190
|
+
else:
|
1191
|
+
ax.yaxis.set_ticks([])
|
1192
|
+
if 'bottom' in spines:
|
1193
|
+
ax.xaxis.set_ticks_position('bottom')
|
1194
|
+
else:
|
1195
|
+
# no xaxis ticks
|
1196
|
+
ax.xaxis.set_ticks([])
|
1197
|
+
# And then plot the data:
|
1198
|
+
|
1199
|
+
def add_colorbar(im, width=None, pad=None, **kwargs):
|
1200
|
+
# usage: add_colorbar(im, width=0.01, pad=0.005, label="PSD (dB)", shrink=0.8)
|
1201
|
+
l, b, w, h = im.axes.get_position().bounds # get boundaries
|
1202
|
+
width = width or 0.1 * w # get width of the colorbar
|
1203
|
+
pad = pad or width # get pad between im and cbar
|
1204
|
+
fig = im.axes.figure # get figure of image
|
1205
|
+
cax = fig.add_axes([l + w + pad, b, width, h]) # define cbar Axes
|
1206
|
+
return fig.colorbar(im, cax=cax, **kwargs) # draw cbar
|
1207
|
+
|
1208
|
+
def padcat(*args, fill_value=np.nan, axis=1):
|
1209
|
+
"""
|
1210
|
+
Concatenate vectors with padding.
|
1211
|
+
|
1212
|
+
Parameters:
|
1213
|
+
*args : variable number of list or 1D arrays
|
1214
|
+
Input arrays to concatenate.
|
1215
|
+
fill_value : scalar, optional
|
1216
|
+
The value to use for padding the shorter lists (default is np.nan).
|
1217
|
+
axis : int, optional
|
1218
|
+
The axis along which to concatenate (0 for rows, 1 for columns, default is 0).
|
1219
|
+
|
1220
|
+
Returns:
|
1221
|
+
np.ndarray
|
1222
|
+
A 2D array with the input arrays concatenated along the specified axis, padded with fill_value where necessary.
|
1223
|
+
"""
|
1224
|
+
if axis == 0:
|
1225
|
+
# Concatenate along rows
|
1226
|
+
max_len = max(len(lst) for lst in args)
|
1227
|
+
result = np.full((len(args), max_len), fill_value)
|
1228
|
+
for i, lst in enumerate(args):
|
1229
|
+
result[i, :len(lst)] = lst
|
1230
|
+
elif axis == 1:
|
1231
|
+
# Concatenate along columns
|
1232
|
+
max_len = max(len(lst) for lst in args)
|
1233
|
+
result = np.full((max_len, len(args)), fill_value)
|
1234
|
+
for i, lst in enumerate(args):
|
1235
|
+
result[:len(lst), i] = lst
|
1236
|
+
else:
|
1237
|
+
raise ValueError("axis must be 0 or 1")
|
1238
|
+
|
1239
|
+
return result
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: py2ls
|
3
|
-
Version: 0.1.6.
|
3
|
+
Version: 0.1.6.6
|
4
4
|
Summary: py(thon)2(too)ls
|
5
5
|
Author: Jianfeng
|
6
6
|
Author-email: Jianfeng.Liu0413@gmail.com
|
@@ -9,39 +9,65 @@ Classifier: Programming Language :: Python :: 3
|
|
9
9
|
Classifier: Programming Language :: Python :: 3.10
|
10
10
|
Classifier: Programming Language :: Python :: 3.11
|
11
11
|
Classifier: Programming Language :: Python :: 3.12
|
12
|
+
Requires-Dist: CacheControl (>=0.13.1,<0.14.0)
|
13
|
+
Requires-Dist: CairoSVG (>=2.7.1,<3.0.0)
|
12
14
|
Requires-Dist: Deprecated (>=1.2.14,<2.0.0)
|
13
15
|
Requires-Dist: Jinja2 (>=3.1.4,<4.0.0)
|
16
|
+
Requires-Dist: Levenshtein (>=0.25.1,<0.26.0)
|
14
17
|
Requires-Dist: MarkupSafe (>=2.1.5,<3.0.0)
|
18
|
+
Requires-Dist: MechanicalSoup (>=1.3.0,<2.0.0)
|
15
19
|
Requires-Dist: PyMatting (>=1.1.12,<2.0.0)
|
16
20
|
Requires-Dist: PyPDF2 (>=3.0.1,<4.0.0)
|
17
21
|
Requires-Dist: PySocks (>=1.7.1,<2.0.0)
|
18
22
|
Requires-Dist: PyYAML (>=6.0.1,<7.0.0)
|
19
23
|
Requires-Dist: Pygments (>=2.18.0,<3.0.0)
|
20
24
|
Requires-Dist: SciencePlots (>=2.1.1,<3.0.0)
|
25
|
+
Requires-Dist: Wand (>=0.6.13,<0.7.0)
|
26
|
+
Requires-Dist: XlsxWriter (>=3.2.0,<4.0.0)
|
27
|
+
Requires-Dist: ae-ffmpeg (>=1.2.0,<2.0.0)
|
28
|
+
Requires-Dist: altgraph (>=0.17.4,<0.18.0)
|
21
29
|
Requires-Dist: appnope (>=0.1.4,<0.2.0)
|
22
30
|
Requires-Dist: appscript (>=1.2.5,<2.0.0)
|
31
|
+
Requires-Dist: asciitree (>=0.3.3,<0.4.0)
|
23
32
|
Requires-Dist: asttokens (>=2.4.1,<3.0.0)
|
24
33
|
Requires-Dist: attrs (>=23.2.0,<24.0.0)
|
34
|
+
Requires-Dist: auto-editor (>=24.24.1,<25.0.0)
|
25
35
|
Requires-Dist: beautifulsoup4 (>=4.12.3,<5.0.0)
|
36
|
+
Requires-Dist: bleach (>=6.1.0,<7.0.0)
|
37
|
+
Requires-Dist: build (>=1.2.1,<2.0.0)
|
38
|
+
Requires-Dist: cairocffi (>=1.7.0,<2.0.0)
|
26
39
|
Requires-Dist: certifi (>=2024.6.2,<2025.0.0)
|
40
|
+
Requires-Dist: cffi (>=1.16.0,<2.0.0)
|
27
41
|
Requires-Dist: chardet (>=3.0.4,<4.0.0)
|
28
42
|
Requires-Dist: charset-normalizer (>=3.3.2,<4.0.0)
|
43
|
+
Requires-Dist: cleo (>=2.1.0,<3.0.0)
|
29
44
|
Requires-Dist: click (>=8.1.7,<9.0.0)
|
30
45
|
Requires-Dist: colorcet (>=3.1.0,<4.0.0)
|
31
46
|
Requires-Dist: coloredlogs (>=15.0.1,<16.0.0)
|
32
47
|
Requires-Dist: comm (>=0.2.2,<0.3.0)
|
33
48
|
Requires-Dist: contourpy (>=1.2.1,<2.0.0)
|
49
|
+
Requires-Dist: crashtest (>=0.4.1,<0.5.0)
|
50
|
+
Requires-Dist: cssselect2 (>=0.7.0,<0.8.0)
|
34
51
|
Requires-Dist: cycler (>=0.12.1,<0.13.0)
|
52
|
+
Requires-Dist: db2ls (>=0.1.3,<0.2.0)
|
35
53
|
Requires-Dist: debugpy (>=1.8.1,<2.0.0)
|
36
54
|
Requires-Dist: decorator (>=5.1.1,<6.0.0)
|
37
55
|
Requires-Dist: defusedxml (>=0.7.1,<0.8.0)
|
56
|
+
Requires-Dist: distlib (>=0.3.8,<0.4.0)
|
38
57
|
Requires-Dist: docx (>=0.2.4,<0.3.0)
|
39
58
|
Requires-Dist: docx2pdf (>=0.1.8,<0.2.0)
|
59
|
+
Requires-Dist: duckduckgo_search (>=6.1.12,<7.0.0)
|
60
|
+
Requires-Dist: dulwich (>=0.21.7,<0.22.0)
|
61
|
+
Requires-Dist: et-xmlfile (>=1.1.0,<2.0.0)
|
40
62
|
Requires-Dist: executing (>=2.0.1,<3.0.0)
|
41
63
|
Requires-Dist: fake-useragent (>=1.5.1,<2.0.0)
|
64
|
+
Requires-Dist: fasteners (>=0.19,<0.20)
|
65
|
+
Requires-Dist: fastjsonschema (>=2.20.0,<3.0.0)
|
66
|
+
Requires-Dist: filelock (>=3.15.4,<4.0.0)
|
42
67
|
Requires-Dist: flatbuffers (>=24.3.25,<25.0.0)
|
43
68
|
Requires-Dist: fonttools (>=4.53.0,<5.0.0)
|
44
69
|
Requires-Dist: fpdf (>=1.7.2,<2.0.0)
|
70
|
+
Requires-Dist: fuzzywuzzy (>=0.18.0,<0.19.0)
|
45
71
|
Requires-Dist: googletrans (>=4.0.0rc1,<5.0.0)
|
46
72
|
Requires-Dist: h11 (>=0.9.0,<0.10.0)
|
47
73
|
Requires-Dist: h2 (>=3.2.0,<4.0.0)
|
@@ -54,38 +80,56 @@ Requires-Dist: hyperframe (>=5.2.0,<6.0.0)
|
|
54
80
|
Requires-Dist: idna (>=2.10,<3.0)
|
55
81
|
Requires-Dist: imageio (>=2.34.1,<3.0.0)
|
56
82
|
Requires-Dist: img2pdf (>=0.5.1,<0.6.0)
|
83
|
+
Requires-Dist: installer (>=0.7.0,<0.8.0)
|
57
84
|
Requires-Dist: ipykernel (>=6.29.4,<7.0.0)
|
58
|
-
Requires-Dist: ipython (>=8.25.0,<9.0.0)
|
85
|
+
Requires-Dist: ipython (>=8.25.0,<9.0.0)
|
86
|
+
Requires-Dist: ipywidgets (>=8.1.3,<9.0.0)
|
59
87
|
Requires-Dist: jedi (>=0.19.1,<0.20.0)
|
60
88
|
Requires-Dist: joblib (>=1.3.2,<2.0.0)
|
61
89
|
Requires-Dist: jsonschema (>=4.22.0,<5.0.0)
|
62
90
|
Requires-Dist: jsonschema-specifications (>=2023.12.1,<2024.0.0)
|
63
91
|
Requires-Dist: jupyter_client (>=8.6.2,<9.0.0)
|
64
92
|
Requires-Dist: jupyter_core (>=5.7.2,<6.0.0)
|
93
|
+
Requires-Dist: jupyterlab_pygments (>=0.3.0,<0.4.0)
|
94
|
+
Requires-Dist: jupyterlab_widgets (>=3.0.11,<4.0.0)
|
95
|
+
Requires-Dist: keyring (>=24.3.1,<25.0.0)
|
65
96
|
Requires-Dist: kiwisolver (>=1.4.5,<2.0.0)
|
66
97
|
Requires-Dist: langdetect (>=1.0.9,<2.0.0)
|
67
98
|
Requires-Dist: lazy_loader (>=0.4,<0.5)
|
68
99
|
Requires-Dist: libretranslatepy (>=2.1.1,<3.0.0)
|
69
100
|
Requires-Dist: llvmlite (>=0.42.0,<0.43.0)
|
70
101
|
Requires-Dist: lxml (>=4.9.4,<5.0.0)
|
102
|
+
Requires-Dist: macholib (>=1.16.3,<2.0.0)
|
71
103
|
Requires-Dist: matplotlib (>=3.8.4,<4.0.0)
|
72
104
|
Requires-Dist: matplotlib-inline (>=0.1.7,<0.2.0)
|
105
|
+
Requires-Dist: mistune (>=3.0.2,<4.0.0)
|
73
106
|
Requires-Dist: mne (>=1.6.0,<2.0.0)
|
107
|
+
Requires-Dist: modulegraph (>=0.19.6,<0.20.0)
|
108
|
+
Requires-Dist: more-itertools (>=10.3.0,<11.0.0)
|
74
109
|
Requires-Dist: mpmath (>=1.3.0,<2.0.0)
|
110
|
+
Requires-Dist: msgpack (>=1.0.8,<2.0.0)
|
111
|
+
Requires-Dist: nbclient (>=0.10.0,<0.11.0)
|
112
|
+
Requires-Dist: nbconvert (>=7.16.4,<8.0.0)
|
113
|
+
Requires-Dist: nbformat (>=5.10.4,<6.0.0)
|
114
|
+
Requires-Dist: neo (>=0.13.1,<0.14.0)
|
75
115
|
Requires-Dist: nest-asyncio (>=1.6.0,<2.0.0)
|
76
|
-
Requires-Dist: networkx (>=3.3,<4.0)
|
116
|
+
Requires-Dist: networkx (>=3.3,<4.0)
|
77
117
|
Requires-Dist: nltk (>=3.8.1,<4.0.0)
|
78
118
|
Requires-Dist: numba (>=0.59.1,<0.60.0)
|
119
|
+
Requires-Dist: numcodecs (>=0.12.1,<0.13.0)
|
79
120
|
Requires-Dist: numerizer (>=0.2.3,<0.3.0)
|
80
121
|
Requires-Dist: numpy (>=1.26.4,<2.0.0)
|
81
122
|
Requires-Dist: onnxruntime (>=1.18.0,<2.0.0)
|
82
123
|
Requires-Dist: opencv-contrib-python (>=4.9.0.80,<5.0.0.0)
|
83
124
|
Requires-Dist: opencv-python (>=4.9.0.80,<5.0.0.0)
|
84
125
|
Requires-Dist: opencv-python-headless (>=4.9.0.80,<5.0.0.0)
|
126
|
+
Requires-Dist: openpyxl (>=3.1.5,<4.0.0)
|
127
|
+
Requires-Dist: orjson (>=3.10.6,<4.0.0)
|
85
128
|
Requires-Dist: outcome (>=1.3.0.post0,<2.0.0)
|
86
129
|
Requires-Dist: packaging (>=24.1,<25.0)
|
87
130
|
Requires-Dist: pandas (>=2.2.2,<3.0.0)
|
88
131
|
Requires-Dist: pandas-flavor (>=0.6.0,<0.7.0)
|
132
|
+
Requires-Dist: pandocfilters (>=1.5.1,<2.0.0)
|
89
133
|
Requires-Dist: parso (>=0.8.4,<0.9.0)
|
90
134
|
Requires-Dist: patsy (>=0.5.6,<0.6.0)
|
91
135
|
Requires-Dist: pdf2image (>=1.17.0,<2.0.0)
|
@@ -94,56 +138,87 @@ Requires-Dist: pexpect (>=4.9.0,<5.0.0)
|
|
94
138
|
Requires-Dist: pikepdf (>=9.0.0,<10.0.0)
|
95
139
|
Requires-Dist: pillow (>=10.3.0,<11.0.0)
|
96
140
|
Requires-Dist: pingouin (>=0.5.4,<0.6.0)
|
141
|
+
Requires-Dist: pkginfo (>=1.11.1,<2.0.0)
|
97
142
|
Requires-Dist: platformdirs (>=4.2.2,<5.0.0)
|
143
|
+
Requires-Dist: poetry (>=1.7.0,<2.0.0)
|
144
|
+
Requires-Dist: poetry-core (>=1.8.1,<2.0.0)
|
145
|
+
Requires-Dist: poetry-plugin-export (>=1.6.0,<2.0.0)
|
98
146
|
Requires-Dist: pooch (>=1.8.2,<2.0.0)
|
147
|
+
Requires-Dist: probeinterface (>=0.2.21,<0.3.0)
|
99
148
|
Requires-Dist: prompt_toolkit (>=3.0.47,<4.0.0)
|
100
149
|
Requires-Dist: protobuf (>=5.27.1,<6.0.0)
|
101
150
|
Requires-Dist: psutil (>=5.9.8,<6.0.0)
|
102
151
|
Requires-Dist: ptyprocess (>=0.7.0,<0.8.0)
|
103
152
|
Requires-Dist: pure-eval (>=0.2.2,<0.3.0)
|
153
|
+
Requires-Dist: py2app (>=0.28.8,<0.29.0)
|
154
|
+
Requires-Dist: pyav (>=12.1.0,<13.0.0)
|
155
|
+
Requires-Dist: pycairo (>=1.26.0,<2.0.0)
|
156
|
+
Requires-Dist: pycparser (>=2.22,<3.0)
|
157
|
+
Requires-Dist: pypandoc (>=1.13,<2.0)
|
104
158
|
Requires-Dist: pyparsing (>=3.1.2,<4.0.0)
|
159
|
+
Requires-Dist: pyproject_hooks (>=1.1.0,<2.0.0)
|
160
|
+
Requires-Dist: pyreqwest_impersonate (>=0.4.9,<0.5.0)
|
161
|
+
Requires-Dist: python-Levenshtein (>=0.25.1,<0.26.0)
|
105
162
|
Requires-Dist: python-box (>=7.2.0,<8.0.0)
|
106
163
|
Requires-Dist: python-dateutil (>=2.9.0.post0,<3.0.0)
|
107
164
|
Requires-Dist: python-docx (>=1.1.0,<2.0.0)
|
108
165
|
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
|
166
|
+
Requires-Dist: python-pptx (>=0.6.23,<0.7.0)
|
109
167
|
Requires-Dist: pytz (>=2024.1,<2025.0)
|
110
168
|
Requires-Dist: pyzmq (>=26.0.3,<27.0.0)
|
169
|
+
Requires-Dist: quantities (>=0.15.0,<0.16.0)
|
170
|
+
Requires-Dist: rapidfuzz (>=3.9.3,<4.0.0)
|
111
171
|
Requires-Dist: referencing (>=0.35.1,<0.36.0)
|
112
172
|
Requires-Dist: regex (>=2024.5.15,<2025.0.0)
|
113
|
-
Requires-Dist: rembg (>=2.0.56,<3.0.0)
|
173
|
+
Requires-Dist: rembg (>=2.0.56,<3.0.0)
|
174
|
+
Requires-Dist: reportlab (>=4.2.0,<5.0.0)
|
114
175
|
Requires-Dist: requests (>=2.32.3,<3.0.0)
|
176
|
+
Requires-Dist: requests-toolbelt (>=1.0.0,<2.0.0)
|
115
177
|
Requires-Dist: rfc3986 (>=1.5.0,<2.0.0)
|
116
178
|
Requires-Dist: rpds-py (>=0.18.1,<0.19.0)
|
117
|
-
Requires-Dist: scikit-image (>=0.23.2,<0.24.0)
|
179
|
+
Requires-Dist: scikit-image (>=0.23.2,<0.24.0)
|
118
180
|
Requires-Dist: scikit-learn (>=1.3.2,<2.0.0)
|
119
181
|
Requires-Dist: scipy (>=1.13.1,<2.0.0)
|
120
182
|
Requires-Dist: seaborn (>=0.13.2,<0.14.0)
|
121
183
|
Requires-Dist: selenium (>=4.21.0,<5.0.0)
|
184
|
+
Requires-Dist: setuptools (>=65.0.0,<66.0.0)
|
185
|
+
Requires-Dist: shellingham (>=1.5.4,<2.0.0)
|
122
186
|
Requires-Dist: six (>=1.16.0,<2.0.0)
|
123
187
|
Requires-Dist: sniffio (>=1.3.1,<2.0.0)
|
124
188
|
Requires-Dist: sortedcontainers (>=2.4.0,<3.0.0)
|
125
189
|
Requires-Dist: soupsieve (>=2.5,<3.0)
|
190
|
+
Requires-Dist: spikeinterface (>=0.100.7,<0.101.0)
|
126
191
|
Requires-Dist: stack-data (>=0.6.3,<0.7.0)
|
127
192
|
Requires-Dist: statsmodels (>=0.14.1,<0.15.0)
|
128
193
|
Requires-Dist: stem (>=1.8.2,<2.0.0)
|
194
|
+
Requires-Dist: svglib (>=1.5.1,<2.0.0)
|
129
195
|
Requires-Dist: sympy (>=1.12.1,<2.0.0)
|
130
196
|
Requires-Dist: tabulate (>=0.9.0,<0.10.0)
|
197
|
+
Requires-Dist: thekey (>=2.0.2,<3.0.0)
|
131
198
|
Requires-Dist: threadpoolctl (>=3.5.0,<4.0.0)
|
132
199
|
Requires-Dist: tifffile (>=2024.5.22,<2025.0.0)
|
200
|
+
Requires-Dist: tinycss2 (>=1.3.0,<2.0.0)
|
201
|
+
Requires-Dist: tomlkit (>=0.12.5,<0.13.0)
|
133
202
|
Requires-Dist: tornado (>=6.4.1,<7.0.0)
|
134
203
|
Requires-Dist: tqdm (>=4.66.4,<5.0.0)
|
135
204
|
Requires-Dist: traitlets (>=5.14.3,<6.0.0)
|
136
205
|
Requires-Dist: translate (>=3.6.1,<4.0.0)
|
137
206
|
Requires-Dist: trio (>=0.25.1,<0.26.0)
|
138
207
|
Requires-Dist: trio-websocket (>=0.11.1,<0.12.0)
|
208
|
+
Requires-Dist: trove-classifiers (>=2024.5.22,<2025.0.0)
|
139
209
|
Requires-Dist: typing_extensions (>=4.12.2,<5.0.0)
|
140
210
|
Requires-Dist: tzdata (>=2024.1,<2025.0)
|
141
|
-
Requires-Dist: urllib3 (>=2.2.
|
211
|
+
Requires-Dist: urllib3 (>=2.2.2,<3.0.0)
|
212
|
+
Requires-Dist: virtualenv (>=20.26.3,<21.0.0)
|
142
213
|
Requires-Dist: wcwidth (>=0.2.13,<0.3.0)
|
143
214
|
Requires-Dist: webdriver-manager (>=4.0.1,<5.0.0)
|
215
|
+
Requires-Dist: webencodings (>=0.5.1,<0.6.0)
|
216
|
+
Requires-Dist: widgetsnbextension (>=4.0.11,<5.0.0)
|
144
217
|
Requires-Dist: wrapt (>=1.16.0,<2.0.0)
|
145
218
|
Requires-Dist: wsproto (>=1.2.0,<2.0.0)
|
146
219
|
Requires-Dist: xarray (>=2024.6.0,<2025.0.0)
|
220
|
+
Requires-Dist: xattr (>=0.10.1,<0.11.0)
|
221
|
+
Requires-Dist: zarr (>=2.17.2,<3.0.0)
|
147
222
|
Description-Content-Type: text/markdown
|
148
223
|
|
149
224
|
# Install
|
@@ -122,7 +122,7 @@ py2ls/.gitattributes,sha256=Gh2-F2vCM7SZ01pX23UT8pQcmauXWfF3gwyRSb6ZAFs,66
|
|
122
122
|
py2ls/.gitignore,sha256=y7GvbD_zZkjPVVIue8AyiuFkDMuUbvMaV65Lgu89To8,2763
|
123
123
|
py2ls/LICENSE,sha256=UOZ1F5fFDe3XXvG4oNnkL1-Ecun7zpHzRxjp-XsMeAo,11324
|
124
124
|
py2ls/README.md,sha256=CwvJWAnSXnCnrVHlnEbrxxi6MbjbE_MT6DH2D53S818,11572
|
125
|
-
py2ls/__init__.py,sha256=
|
125
|
+
py2ls/__init__.py,sha256=Nn8jTIvySX7t7DMJ8VNRVctTStgXGjHldOIdZ35PdW8,165
|
126
126
|
py2ls/brain_atlas.py,sha256=w1o5EelRjq89zuFJUNSz4Da8HnTCwAwDAZ4NU4a-bAY,5486
|
127
127
|
py2ls/chat.py,sha256=Yr22GoIvoWhpV3m4fdwV_I0Mn77La346_ymSinR-ORA,3793
|
128
128
|
py2ls/correlators.py,sha256=RbOaJIPLCHJtUm5SFi_4dCJ7VFUPWR0PErfK3K26ad4,18243
|
@@ -132,15 +132,16 @@ py2ls/data/docs_links.json,sha256=kXgbbWo0b8bfV4n6iuuUNLnZipIyLzokUO6Lzmf7nO4,10
|
|
132
132
|
py2ls/data/lang_code_iso639.json,sha256=qZiU7H2RLJjDMXK22C-jhwzLJCI5vKmampjB1ys4ek4,2157
|
133
133
|
py2ls/db2ls.py,sha256=MMfFX47aIPIyu7fU9aPvX9lbPRPYOpJ_VXwlnWk-8qo,13615
|
134
134
|
py2ls/doc.py,sha256=xN3g1OWfoaGUhikbJ0NqbN5eKy1VZVvWwRlhHMgyVEc,4243
|
135
|
+
py2ls/export_requirements.py,sha256=qsyYrT_fnBlaMuWRYr3EnDyAKT52yJJBlW0Em_rlvrU,1265
|
135
136
|
py2ls/freqanalysis.py,sha256=F4218VSPbgL5tnngh6xNCYuNnfR-F_QjECUUxrPYZss,32594
|
136
|
-
py2ls/ips.py,sha256=
|
137
|
+
py2ls/ips.py,sha256=B88jol_EYZ4IERWAeabkHSwMkGytqyBheEbbpM_YDiQ,86146
|
137
138
|
py2ls/netfinder.py,sha256=ZsLWGYMeRuGvxj2nqE0Z8ANoaVl18Necfw0HQfh2q7I,45548
|
138
|
-
py2ls/plot.py,sha256=
|
139
|
+
py2ls/plot.py,sha256=8_33-1wpkGZrDUuvRBfTPUi_BRKdf1njoR725OLSLSY,48579
|
139
140
|
py2ls/setuptools-70.1.0-py3-none-any.whl,sha256=2bi3cUVal8ip86s0SOvgspteEF8SKLukECi-EWmFomc,882588
|
140
141
|
py2ls/sleep_events_detectors.py,sha256=36MCuRrpurn0Uvzpo3p3b3_JlVsRNHSWCXbJxCGM3mg,51546
|
141
142
|
py2ls/stats.py,sha256=Wd9yCKQ_61QD29WMEgMuEcreFxF91NmlPW65iWT2B5w,39041
|
142
143
|
py2ls/translator.py,sha256=6S7MmTZmjj8NljVmj0W5uEauu4ePxso3AMf2LvGVRQA,30516
|
143
144
|
py2ls/wb_detector.py,sha256=7y6TmBUj9exCZeIgBAJ_9hwuhkDh1x_-yg4dvNY1_GQ,6284
|
144
|
-
py2ls-0.1.6.
|
145
|
-
py2ls-0.1.6.
|
146
|
-
py2ls-0.1.6.
|
145
|
+
py2ls-0.1.6.6.dist-info/METADATA,sha256=L7E5_PaUNRXQzUiwKTqHFTNjDPSA7iUu_wCYOs6SHHE,20998
|
146
|
+
py2ls-0.1.6.6.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
147
|
+
py2ls-0.1.6.6.dist-info/RECORD,,
|