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
@@ -2,5 +2,7 @@
2
2
  __init__ of the pyos module
3
3
  """
4
4
  from .ips import *
5
- from.translator import *
5
+ from .translator import *
6
6
  from .netfinder import *
7
+ from .plot import *
8
+ from .export_requirements import *
@@ -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
- upgrade()
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
- ax.errorbar(x, y, yerr=err,
37
- fmt=opt_e['Marker'],
38
- ecolor=opt_e['LineColor'],
39
- elinewidth=opt_e['LineWidth'],
40
- lw=opt_e['LineWidth'],
41
- ls=opt_e['LineStyle'],
42
- capsize=opt_e['CapSize'],
43
- capthick=opt_e['CapLineWidth'],
44
- markersize=opt_e['MarkerSize'],
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
- )
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', False)
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', 0)
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('loc', 'c')
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', opt['b']['x_width'] * 100 * 0.1)
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', 6) # Set default size for markers
265
- opt['s'].setdefault('LineWidth', 1)
266
- opt['s'].setdefault('FaceColor', opt['c'])
267
- opt['s'].setdefault('FaceAlpha', 0.6)
268
- opt['s'].setdefault('loc', 'random')
269
- opt['s'].setdefault('MarkerEdgeColor', None)
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', 1)
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.5)
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', 1.5)
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', 1.5)
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', 1.5)
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', 1.5)
299
- opt['bx'].setdefault('CapSize', 0.35)
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', 1.5)
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', 'b')
308
- opt['bx'].setdefault('MeanLineWidth', 1.5)
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', 1)
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
- xloc = opt['loc']['xloc']
336
-
337
- if opt['b']['go']:
338
- plot_bars(data_m, opt['b'], xloc, ax)
339
-
340
- if opt['e']['go']:
341
- plot_errors(data, data_m, opt['e'], xloc, ax)
342
-
343
- if opt['s']['go']:
344
- plot_scatter(data, opt['s'], xloc, ax)
345
-
346
- if opt['bx']['go']:
347
- plot_boxplot(data, opt['bx'], xloc, ax)
348
- if opt['v']['go']:
349
- plot_violin(data, opt['v'], xloc, ax)
350
- if opt['l']['go'] and opt['s']['go']:
351
- plot_lines(data, opt['l'], opt['s'], ax)
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', 1.5)
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
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) ; python_version >= "3.9" and python_version < "4.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) ; python_version >= "3.10" and python_version < "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) ; python_version >= "3.9" and python_version < "3.13"
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) ; python_version >= "3.10" and python_version < "4.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.1,<3.0.0)
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=R5OBEeK0uOULvUsY1YjIj-EAQKlVPW32uh_hQHuN5Bg,109
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=c7wH2UVfxYMQqMhODOdtblsFtU-rjeYtAKYruf-UwOU,86155
137
+ py2ls/ips.py,sha256=B88jol_EYZ4IERWAeabkHSwMkGytqyBheEbbpM_YDiQ,86146
137
138
  py2ls/netfinder.py,sha256=ZsLWGYMeRuGvxj2nqE0Z8ANoaVl18Necfw0HQfh2q7I,45548
138
- py2ls/plot.py,sha256=zDoXxFtSaVr8PP5O3ZEsjQnzqgTV8HJl_jFZriuowvM,43517
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.3.dist-info/METADATA,sha256=5qy26Nvrz9rEAyb2SER_MJxtzFeHWWONfwXWC9uDkWw,17943
145
- py2ls-0.1.6.3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
146
- py2ls-0.1.6.3.dist-info/RECORD,,
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,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.0
2
+ Generator: poetry-core 1.8.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any