py2ls 0.1.6.3__py3-none-any.whl → 0.1.6.4__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
py2ls/plot.py
CHANGED
@@ -33,19 +33,34 @@ def catplot(data, *args, **kwargs):
|
|
33
33
|
if not isinstance(opt_e['MarkerEdgeColor'],list):
|
34
34
|
opt_e['MarkerEdgeColor']=[opt_e['MarkerEdgeColor']]
|
35
35
|
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
|
-
|
36
|
+
if opt_e['MarkerSize']=='auto':
|
37
|
+
ax.errorbar(x, y, yerr=err,
|
38
|
+
fmt=opt_e['Marker'],
|
39
|
+
ecolor=opt_e['LineColor'],
|
40
|
+
elinewidth=opt_e['LineWidth'],
|
41
|
+
lw=opt_e['LineWidth'],
|
42
|
+
ls=opt_e['LineStyle'],
|
43
|
+
capsize=opt_e['CapSize'],
|
44
|
+
capthick=opt_e['CapLineWidth'],
|
45
|
+
mec=opt_e['MarkerEdgeColor'][i % len(opt_e['MarkerEdgeColor'])],
|
46
|
+
mfc=opt_e['FaceColor'][i % len(opt_e['FaceColor'])],
|
47
|
+
visible=opt_e['Visible']
|
48
|
+
)
|
49
|
+
else:
|
50
|
+
ax.errorbar(x, y, yerr=err,
|
51
|
+
fmt=opt_e['Marker'],
|
52
|
+
ecolor=opt_e['LineColor'],
|
53
|
+
elinewidth=opt_e['LineWidth'],
|
54
|
+
lw=opt_e['LineWidth'],
|
55
|
+
ls=opt_e['LineStyle'],
|
56
|
+
capsize=opt_e['CapSize'],
|
57
|
+
capthick=opt_e['CapLineWidth'],
|
58
|
+
markersize=opt_e['MarkerSize'],
|
59
|
+
mec=opt_e['MarkerEdgeColor'][i % len(opt_e['MarkerEdgeColor'])],
|
60
|
+
mfc=opt_e['FaceColor'][i % len(opt_e['FaceColor'])],
|
61
|
+
visible=opt_e['Visible']
|
62
|
+
)
|
63
|
+
|
49
64
|
|
50
65
|
def plot_scatter(data, opt_s, xloc, ax):
|
51
66
|
scatter_positions = get_positions(xloc, opt_s['loc'], opt_s['x_width'], data.shape[0])
|
@@ -56,7 +71,9 @@ def catplot(data, *args, **kwargs):
|
|
56
71
|
alpha=opt_s['FaceAlpha'],
|
57
72
|
edgecolor=opt_s['MarkerEdgeColor'],
|
58
73
|
s=opt_s['MarkerSize'],
|
59
|
-
marker=opt_s['Marker']
|
74
|
+
marker=opt_s['Marker'],
|
75
|
+
linewidths=opt_s['LineWidth'],
|
76
|
+
cmap=opt_s['cmap']
|
60
77
|
)
|
61
78
|
|
62
79
|
def plot_boxplot(data, bx_opt, xloc,ax):
|
@@ -198,7 +215,30 @@ def catplot(data, *args, **kwargs):
|
|
198
215
|
return np.tile(np.concatenate([xloc[:1] - x_width, xloc[1:-1], xloc[-1:] + x_width]),(n_row,1))
|
199
216
|
else:
|
200
217
|
return np.tile(xloc,(n_row,1))
|
218
|
+
def sort_catplot_layers(custom_order, full_order= ['b', 'bx', 'e', 'v', 's', 'l']):
|
219
|
+
"""
|
220
|
+
sort layers
|
221
|
+
"""
|
222
|
+
# Ensure custom_order is a list of strings
|
223
|
+
custom_order = [str(layer) for layer in custom_order]
|
224
|
+
j = 1
|
225
|
+
layers = list(range(len(full_order)))
|
226
|
+
for i in range(len(full_order)):
|
227
|
+
if full_order[i] not in custom_order:
|
228
|
+
layers[i] = i
|
229
|
+
else:
|
230
|
+
layers[i] = None
|
231
|
+
j = 0
|
232
|
+
for i in range(len(layers)):
|
233
|
+
if layers[i] is None:
|
234
|
+
full_order[i] = custom_order[j]
|
235
|
+
j += 1
|
236
|
+
return full_order
|
237
|
+
# # Example usage:
|
238
|
+
# custom_order = ['s', 'bx', 'e']
|
239
|
+
# full_order = sort_catplot_layers(custom_order)
|
201
240
|
|
241
|
+
# full_order
|
202
242
|
opt = kwargs.get('opt',{})
|
203
243
|
ax = kwargs.get('ax',None)
|
204
244
|
if 'ax' not in locals() or ax is None:
|
@@ -223,26 +263,30 @@ def catplot(data, *args, **kwargs):
|
|
223
263
|
opt['loc'].setdefault('xloc', np.arange(1, data.shape[1] + 1))
|
224
264
|
|
225
265
|
# export setting
|
226
|
-
opt.setdefault('export',
|
266
|
+
opt.setdefault('export', {})
|
227
267
|
opt['export'].setdefault('path', None)
|
228
268
|
print(opt['export'])
|
229
269
|
|
270
|
+
# opt.setdefault('layer', {})
|
271
|
+
opt.setdefault('layer', ['b', 'bx', 'e', 'v', 's', 'l'])
|
272
|
+
|
230
273
|
opt.setdefault('b', {})
|
231
|
-
opt['b'].setdefault('go',
|
274
|
+
opt['b'].setdefault('go', 1)
|
275
|
+
opt['b'].setdefault('loc', 'c')
|
232
276
|
opt['b'].setdefault('EdgeColor', 'k')
|
233
|
-
opt['b'].setdefault('FaceAlpha',
|
277
|
+
opt['b'].setdefault('FaceAlpha', 0.65)
|
234
278
|
opt['b'].setdefault('EdgeAlpha', 1)
|
235
279
|
opt['b'].setdefault('LineStyle', '-')
|
236
280
|
opt['b'].setdefault('x_width', 0.5)
|
237
281
|
opt['b'].setdefault('ShowBaseLine', 'off')
|
238
|
-
opt['b'].setdefault('loc', 'c')
|
239
282
|
opt['b'].setdefault('FaceColor', opt['c'])
|
240
283
|
|
241
284
|
opt.setdefault('e', {})
|
242
285
|
opt['e'].setdefault('go', 1)
|
286
|
+
opt['e'].setdefault('loc', 'l')
|
243
287
|
opt['e'].setdefault('LineWidth', 1)
|
244
288
|
opt['e'].setdefault('CapLineWidth', 1)
|
245
|
-
opt['e'].setdefault('CapSize',
|
289
|
+
opt['e'].setdefault('CapSize', 2)
|
246
290
|
opt['e'].setdefault('Marker', 'none')
|
247
291
|
opt['e'].setdefault('LineStyle', 'none')
|
248
292
|
opt['e'].setdefault('LineColor', 'k')
|
@@ -253,63 +297,70 @@ def catplot(data, *args, **kwargs):
|
|
253
297
|
opt['e'].setdefault('Visible', True)
|
254
298
|
opt['e'].setdefault('Orientation', 'vertical')
|
255
299
|
opt['e'].setdefault('error', 'sem')
|
256
|
-
opt['e'].setdefault('loc', 'c')
|
257
300
|
opt['e'].setdefault('x_width', opt['b']['x_width'] / 5)
|
258
301
|
opt['e'].setdefault('cap_dir', 'b')
|
259
302
|
|
260
303
|
opt.setdefault('s', {})
|
261
304
|
opt['s'].setdefault('go', 1)
|
305
|
+
opt['s'].setdefault('loc', 'r')
|
306
|
+
opt['s'].setdefault('FaceColor', opt['c'])
|
307
|
+
opt['s'].setdefault('cmap', None)
|
308
|
+
opt['s'].setdefault('FaceAlpha', 1)
|
262
309
|
opt['s'].setdefault('x_width', opt['b']['x_width'] / 5)
|
263
310
|
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
|
-
|
311
|
+
opt['s'].setdefault('MarkerSize', 10)
|
312
|
+
opt['s'].setdefault('LineWidth', 0.5)
|
313
|
+
opt['s'].setdefault('MarkerEdgeColor', 'k')
|
314
|
+
|
315
|
+
opt.setdefault('l', {})
|
316
|
+
opt['l'].setdefault('go', 1)
|
317
|
+
opt['l'].setdefault('LineStyle', '-')
|
318
|
+
opt['l'].setdefault('LineColor', 'k')
|
319
|
+
opt['l'].setdefault('LineWidth', 0.5)
|
320
|
+
opt['l'].setdefault('LineAlpha', 0.5)
|
321
|
+
|
271
322
|
opt.setdefault('bx', {})
|
272
323
|
opt['bx'].setdefault('go', 0)
|
324
|
+
opt['bx'].setdefault('loc', 'r')
|
325
|
+
opt['bx'].setdefault('FaceColor', opt['c'])
|
273
326
|
opt['bx'].setdefault('EdgeColor', 'k')
|
274
|
-
opt['bx'].setdefault('FaceAlpha',
|
327
|
+
opt['bx'].setdefault('FaceAlpha', 0.7)
|
275
328
|
opt['bx'].setdefault('EdgeAlpha', 1)
|
276
329
|
opt['bx'].setdefault('LineStyle', '-')
|
277
|
-
opt['bx'].setdefault('x_width', 0.
|
330
|
+
opt['bx'].setdefault('x_width', 0.2)
|
278
331
|
opt['bx'].setdefault('ShowBaseLine', 'off')
|
279
|
-
opt['bx'].setdefault('loc', 'c')
|
280
|
-
opt['bx'].setdefault('FaceColor', opt['c'])
|
281
332
|
opt['bx'].setdefault('Notch', False)
|
282
|
-
opt['bx'].setdefault('MedianStyle', 'line')
|
283
333
|
opt['bx'].setdefault('Outliers', 'on')
|
284
334
|
opt['bx'].setdefault('OutlierMarker', '+')
|
285
335
|
opt['bx'].setdefault('OutlierColor', 'r')
|
286
336
|
opt['bx'].setdefault('OutlierSize', 6)
|
287
|
-
opt['bx'].setdefault('PlotStyle', 'traditional')
|
288
|
-
opt['bx'].setdefault('FactorDirection', 'auto')
|
289
|
-
opt['bx'].setdefault('Whisker',
|
337
|
+
# opt['bx'].setdefault('PlotStyle', 'traditional')
|
338
|
+
# opt['bx'].setdefault('FactorDirection', 'auto')
|
339
|
+
opt['bx'].setdefault('Whisker', 0.5)
|
290
340
|
opt['bx'].setdefault('Orientation', 'vertical')
|
291
|
-
opt['bx'].setdefault('BoxLineWidth',
|
341
|
+
opt['bx'].setdefault('BoxLineWidth', 0.5)
|
292
342
|
opt['bx'].setdefault('FaceColor', 'k')
|
293
343
|
opt['bx'].setdefault('WhiskerLineStyle', '-')
|
294
344
|
opt['bx'].setdefault('WhiskerLineColor', 'k')
|
295
|
-
opt['bx'].setdefault('WhiskerLineWidth',
|
345
|
+
opt['bx'].setdefault('WhiskerLineWidth', 0.5)
|
296
346
|
opt['bx'].setdefault('Caps', True)
|
297
347
|
opt['bx'].setdefault('CapLineColor', 'k')
|
298
|
-
opt['bx'].setdefault('CapLineWidth',
|
299
|
-
opt['bx'].setdefault('CapSize', 0.
|
348
|
+
opt['bx'].setdefault('CapLineWidth', 0.5)
|
349
|
+
opt['bx'].setdefault('CapSize', 0.2)
|
300
350
|
opt['bx'].setdefault('MedianLineStyle', '-')
|
351
|
+
opt['bx'].setdefault('MedianStyle', 'line')
|
301
352
|
opt['bx'].setdefault('MedianLineColor', 'k')
|
302
|
-
opt['bx'].setdefault('MedianLineWidth',
|
353
|
+
opt['bx'].setdefault('MedianLineWidth', 2)
|
303
354
|
opt['bx'].setdefault('MedianLineTop', False)
|
304
355
|
opt['bx'].setdefault('MeanLine', False)
|
305
356
|
opt['bx'].setdefault('showmeans', opt['bx']['MeanLine'])
|
306
357
|
opt['bx'].setdefault('MeanLineStyle', '-')
|
307
|
-
opt['bx'].setdefault('MeanLineColor', '
|
308
|
-
opt['bx'].setdefault('MeanLineWidth',
|
358
|
+
opt['bx'].setdefault('MeanLineColor', 'w')
|
359
|
+
opt['bx'].setdefault('MeanLineWidth', 2)
|
309
360
|
|
310
361
|
# Violin plot options
|
311
362
|
opt.setdefault('v', {})
|
312
|
-
opt['v'].setdefault('go',
|
363
|
+
opt['v'].setdefault('go', 0)
|
313
364
|
opt['v'].setdefault('x_width', 0.3)
|
314
365
|
opt['v'].setdefault('loc', 'r')
|
315
366
|
opt['v'].setdefault('EdgeColor', 'none')
|
@@ -321,35 +372,35 @@ def catplot(data, *args, **kwargs):
|
|
321
372
|
opt['v'].setdefault('NumPoints', 500)
|
322
373
|
opt['v'].setdefault('BoundaryCorrection', 'reflection')
|
323
374
|
|
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
375
|
|
332
376
|
data_m = np.nanmean(data, axis=0)
|
333
377
|
nr, nc = data.shape
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
378
|
+
|
379
|
+
for key in kwargs.keys():
|
380
|
+
if key in opt:
|
381
|
+
if isinstance(kwargs[key], dict):
|
382
|
+
opt[key].update(kwargs[key])
|
383
|
+
else:
|
384
|
+
opt[key] = kwargs[key]
|
385
|
+
xloc = opt['loc']['xloc']
|
386
|
+
layers = sort_catplot_layers(opt['layer'])
|
387
|
+
for layer in layers:
|
388
|
+
if layer== 'b' and opt['b']['go']:
|
389
|
+
plot_bars(data_m, opt['b'], xloc, ax)
|
390
|
+
elif layer== 'e' and opt['e']['go']:
|
391
|
+
plot_errors(data, data_m, opt['e'], xloc, ax)
|
392
|
+
elif layer== 's' and opt['s']['go']:
|
393
|
+
plot_scatter(data, opt['s'], xloc, ax)
|
394
|
+
elif layer== 'bx' and opt['bx']['go']:
|
395
|
+
plot_boxplot(data, opt['bx'], xloc, ax)
|
396
|
+
elif layer== 'v' and opt['v']['go']:
|
397
|
+
plot_violin(data, opt['v'], xloc, ax)
|
398
|
+
elif all([layer== 'l',opt['l']['go'],opt['s']['go']]):
|
399
|
+
plot_lines(data, opt['l'], opt['s'], ax)
|
400
|
+
# figsets
|
401
|
+
kw_figsets=kwargs.get('figsets',None)
|
402
|
+
if kw_figsets is not None:
|
403
|
+
figsets(ax=ax,**kw_figsets)
|
353
404
|
return ax
|
354
405
|
|
355
406
|
# from py2ls.ips import get_color,figsets
|
@@ -1036,7 +1087,7 @@ def stdshade(ax=None,*args, **kwargs):
|
|
1036
1087
|
# line_kws = kwargs.get('line_kws', {})
|
1037
1088
|
|
1038
1089
|
# setting form kwargs
|
1039
|
-
lw = kwargs.get('lw',
|
1090
|
+
lw = kwargs.get('lw', 0.5)
|
1040
1091
|
ls= kwargs.get('ls', plotStyle)
|
1041
1092
|
marker=kwargs.get("marker",plotMarker)
|
1042
1093
|
label=kwargs.get("label",None)
|
@@ -1075,6 +1126,12 @@ def stdshade(ax=None,*args, **kwargs):
|
|
1075
1126
|
|
1076
1127
|
fill = ax.fill_between(x, yMean + wings, yMean - wings, **kws_fill)
|
1077
1128
|
line = ax.plot(x, yMean, **kws_line)
|
1129
|
+
|
1130
|
+
# figsets
|
1131
|
+
kw_figsets=kwargs.get('figsets',None)
|
1132
|
+
if kw_figsets is not None:
|
1133
|
+
figsets(ax=ax,**kw_figsets)
|
1134
|
+
|
1078
1135
|
return line[0], fill
|
1079
1136
|
|
1080
1137
|
|
@@ -1106,4 +1163,67 @@ plot.stdshade(data,
|
|
1106
1163
|
plt.legend()
|
1107
1164
|
|
1108
1165
|
"""
|
1109
|
-
|
1166
|
+
|
1167
|
+
|
1168
|
+
def adjust_spines(ax=None, spines=['left', 'bottom'],distance=2):
|
1169
|
+
if ax is None:
|
1170
|
+
ax = plt.gca()
|
1171
|
+
for loc, spine in ax.spines.items():
|
1172
|
+
if loc in spines:
|
1173
|
+
spine.set_position(('outward', distance)) # outward by 2 points
|
1174
|
+
# spine.set_smart_bounds(True)
|
1175
|
+
else:
|
1176
|
+
spine.set_color('none') # don't draw spine
|
1177
|
+
# turn off ticks where there is no spine
|
1178
|
+
if 'left' in spines:
|
1179
|
+
ax.yaxis.set_ticks_position('left')
|
1180
|
+
else:
|
1181
|
+
ax.yaxis.set_ticks([])
|
1182
|
+
if 'bottom' in spines:
|
1183
|
+
ax.xaxis.set_ticks_position('bottom')
|
1184
|
+
else:
|
1185
|
+
# no xaxis ticks
|
1186
|
+
ax.xaxis.set_ticks([])
|
1187
|
+
# And then plot the data:
|
1188
|
+
|
1189
|
+
def add_colorbar(im, width=None, pad=None, **kwargs):
|
1190
|
+
# usage: add_colorbar(im, width=0.01, pad=0.005, label="PSD (dB)", shrink=0.8)
|
1191
|
+
l, b, w, h = im.axes.get_position().bounds # get boundaries
|
1192
|
+
width = width or 0.1 * w # get width of the colorbar
|
1193
|
+
pad = pad or width # get pad between im and cbar
|
1194
|
+
fig = im.axes.figure # get figure of image
|
1195
|
+
cax = fig.add_axes([l + w + pad, b, width, h]) # define cbar Axes
|
1196
|
+
return fig.colorbar(im, cax=cax, **kwargs) # draw cbar
|
1197
|
+
|
1198
|
+
def padcat(*args, fill_value=np.nan, axis=1):
|
1199
|
+
"""
|
1200
|
+
Concatenate vectors with padding.
|
1201
|
+
|
1202
|
+
Parameters:
|
1203
|
+
*args : variable number of list or 1D arrays
|
1204
|
+
Input arrays to concatenate.
|
1205
|
+
fill_value : scalar, optional
|
1206
|
+
The value to use for padding the shorter lists (default is np.nan).
|
1207
|
+
axis : int, optional
|
1208
|
+
The axis along which to concatenate (0 for rows, 1 for columns, default is 0).
|
1209
|
+
|
1210
|
+
Returns:
|
1211
|
+
np.ndarray
|
1212
|
+
A 2D array with the input arrays concatenated along the specified axis, padded with fill_value where necessary.
|
1213
|
+
"""
|
1214
|
+
if axis == 0:
|
1215
|
+
# Concatenate along rows
|
1216
|
+
max_len = max(len(lst) for lst in args)
|
1217
|
+
result = np.full((len(args), max_len), fill_value)
|
1218
|
+
for i, lst in enumerate(args):
|
1219
|
+
result[i, :len(lst)] = lst
|
1220
|
+
elif axis == 1:
|
1221
|
+
# Concatenate along columns
|
1222
|
+
max_len = max(len(lst) for lst in args)
|
1223
|
+
result = np.full((max_len, len(args)), fill_value)
|
1224
|
+
for i, lst in enumerate(args):
|
1225
|
+
result[:len(lst), i] = lst
|
1226
|
+
else:
|
1227
|
+
raise ValueError("axis must be 0 or 1")
|
1228
|
+
|
1229
|
+
return result
|
@@ -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=hwR-FIp8IUYKPrEv3zvFE07LbQ3FfeM29Ka25WZbQgY,130
|
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
|
@@ -135,12 +135,12 @@ py2ls/doc.py,sha256=xN3g1OWfoaGUhikbJ0NqbN5eKy1VZVvWwRlhHMgyVEc,4243
|
|
135
135
|
py2ls/freqanalysis.py,sha256=F4218VSPbgL5tnngh6xNCYuNnfR-F_QjECUUxrPYZss,32594
|
136
136
|
py2ls/ips.py,sha256=c7wH2UVfxYMQqMhODOdtblsFtU-rjeYtAKYruf-UwOU,86155
|
137
137
|
py2ls/netfinder.py,sha256=ZsLWGYMeRuGvxj2nqE0Z8ANoaVl18Necfw0HQfh2q7I,45548
|
138
|
-
py2ls/plot.py,sha256=
|
138
|
+
py2ls/plot.py,sha256=w6pJZMXmy8EL5HPPoS4twU3UIrvY4DEHZ7HtezE7EPU,48271
|
139
139
|
py2ls/setuptools-70.1.0-py3-none-any.whl,sha256=2bi3cUVal8ip86s0SOvgspteEF8SKLukECi-EWmFomc,882588
|
140
140
|
py2ls/sleep_events_detectors.py,sha256=36MCuRrpurn0Uvzpo3p3b3_JlVsRNHSWCXbJxCGM3mg,51546
|
141
141
|
py2ls/stats.py,sha256=Wd9yCKQ_61QD29WMEgMuEcreFxF91NmlPW65iWT2B5w,39041
|
142
142
|
py2ls/translator.py,sha256=6S7MmTZmjj8NljVmj0W5uEauu4ePxso3AMf2LvGVRQA,30516
|
143
143
|
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.
|
144
|
+
py2ls-0.1.6.4.dist-info/METADATA,sha256=R4KzPYq0T_Xk6lIAg2PaMebrVYM0VEMsw8qq49Z4IrU,17943
|
145
|
+
py2ls-0.1.6.4.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
146
|
+
py2ls-0.1.6.4.dist-info/RECORD,,
|
File without changes
|