mwxlib 1.3.0__py3-none-any.whl → 1.3.11__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.

Potentially problematic release.


This version of mwxlib might be problematic. Click here for more details.

mwx/nutshell.py CHANGED
@@ -27,14 +27,14 @@ from wx.py.shell import Shell
27
27
  from wx.py.editwindow import EditWindow
28
28
 
29
29
  from .utilus import funcall as _F
30
- from .utilus import ignore
30
+ from .utilus import ignore, typename
31
31
  from .utilus import split_words, split_paren, split_tokens, find_modules
32
32
  from .framework import CtrlInterface, AuiNotebook, Menu
33
33
 
34
34
 
35
35
  ## URL pattern (flag = re.M | re.A)
36
36
  ## url_re = r"https?://[\w/:%#$&?()~.=+-]+"
37
- url_re = r"https?://[\w/:%#$&?~.=+-]+" # excluding ()
37
+ url_re = r"https?://[\w/:%#$&?!@~.,;=+-]+" # excluding ()
38
38
 
39
39
  ## no-file pattern
40
40
  nofile_re = r'[\/:*?"<>|]'
@@ -321,7 +321,9 @@ class AutoCompInterfaceMixin:
321
321
  cmdl = self.GetTextRange(self.bol, self.cpos)
322
322
  hint = re.search(r"[\w.]*$", cmdl).group(0) # extract the last word
323
323
 
324
- ls = [x for x in self.fragmwords if x.startswith(hint)] # case-sensitive match
324
+ ## ls = [x for x in self.fragmwords if x.startswith(hint)] # case-sensitive match
325
+ q = hint.lower()
326
+ ls = [x for x in self.fragmwords if x.lower().startswith(q)] # case-insensitive match
325
327
  words = sorted(ls, key=lambda s:s.upper())
326
328
 
327
329
  self._gen_autocomp(0, hint, words)
@@ -360,9 +362,9 @@ class AutoCompInterfaceMixin:
360
362
  self.message("\b failed.", e)
361
363
  return
362
364
  else:
363
- ## Add unimported module names.
364
- p = "{}.{}".format(text, hint)
365
- keys = [x[len(text)+1:] for x in self.modules if x.startswith(p)]
365
+ ## Add unimported module names (case-insensitive match).
366
+ q = f"{text}.{hint}".lower()
367
+ keys = [x[len(text)+1:] for x in self.modules if x.lower().startswith(q)]
366
368
  modules.update(k for k in keys if '.' not in k)
367
369
 
368
370
  elif (m := re.match(r"(import|from)\s+(.*)", cmdl)):
@@ -1108,7 +1110,7 @@ class EditorInterface(AutoCompInterfaceMixin, CtrlInterface):
1108
1110
  self.ensureLineOnScreen(lc)
1109
1111
  return lc
1110
1112
 
1111
- def get_region(self, line):
1113
+ def get_indent_region(self, line):
1112
1114
  """Line numbers of folding head and tail containing the line."""
1113
1115
  lc = line
1114
1116
  le = lc + 1
@@ -1730,7 +1732,7 @@ class Buffer(EditorInterface, EditWindow):
1730
1732
  self.__mtime = -1
1731
1733
  else:
1732
1734
  try:
1733
- self.__path.resolve(True) # Check if the path format is valid.
1735
+ self.__path.resolve(True) # Check if the path is valid.
1734
1736
  except FileNotFoundError:
1735
1737
  self.__mtime = False # valid path (but not found)
1736
1738
  except OSError:
@@ -1895,7 +1897,7 @@ class Buffer(EditorInterface, EditWindow):
1895
1897
  '*delete pressed' : (2, skip),
1896
1898
  '*backspace pressed' : (2, skip),
1897
1899
  '*backspace released' : (2, self.call_word_autocomp),
1898
- 'C-S-backspace pressed' : (2, ),
1900
+ '*S-backspace pressed' : (0, clear_autocomp, fork),
1899
1901
  '*alt pressed' : (2, ),
1900
1902
  '*ctrl pressed' : (2, ),
1901
1903
  '*shift pressed' : (2, ),
@@ -1922,7 +1924,7 @@ class Buffer(EditorInterface, EditWindow):
1922
1924
  '*delete pressed' : (3, skip),
1923
1925
  '*backspace pressed' : (3, skip),
1924
1926
  '*backspace released' : (3, self.call_apropos_autocomp),
1925
- 'C-S-backspace pressed' : (3, ),
1927
+ '*S-backspace pressed' : (0, clear_autocomp, fork),
1926
1928
  '*alt pressed' : (3, ),
1927
1929
  '*ctrl pressed' : (3, ),
1928
1930
  '*shift pressed' : (3, ),
@@ -2022,12 +2024,11 @@ class Buffer(EditorInterface, EditWindow):
2022
2024
  ## File I/O
2023
2025
  ## --------------------------------
2024
2026
 
2025
- def _load_textfile(self, text, filename):
2027
+ def _load_textfile(self, text):
2026
2028
  with self.off_readonly():
2027
2029
  self.Text = text
2028
2030
  self.EmptyUndoBuffer()
2029
2031
  self.SetSavePoint()
2030
- self.update_filestamp(filename)
2031
2032
  self.handler('buffer_loaded', self)
2032
2033
 
2033
2034
  def _load_file(self, filename):
@@ -2213,8 +2214,7 @@ class EditorBook(AuiNotebook, CtrlInterface):
2213
2214
  evt.Skip()
2214
2215
 
2215
2216
  def OnPageClose(self, evt): #<wx._aui.AuiNotebookEvent>
2216
- nb = evt.EventObject
2217
- buf = nb.all_pages[evt.Selection]
2217
+ buf = self.GetPage(evt.Selection)
2218
2218
  if buf.need_buffer_save:
2219
2219
  if wx.MessageBox( # Confirm close.
2220
2220
  "You are closing unsaved content.\n\n"
@@ -2274,13 +2274,6 @@ class EditorBook(AuiNotebook, CtrlInterface):
2274
2274
  ## Buffer list controls
2275
2275
  ## --------------------------------
2276
2276
 
2277
- @property
2278
- def all_buffers(self): # (deprecated) for backward compatibility
2279
- """Returns all buffer pages.
2280
- cf. equiv. AuiNotebook.all_pages or get_pages()
2281
- """
2282
- return [self.GetPage(j) for j in range(self.PageCount)]
2283
-
2284
2277
  def get_all_buffers(self, fn=None):
2285
2278
  """Yields all buffers with specified fn:filename or code."""
2286
2279
  if fn is None:
@@ -2355,18 +2348,34 @@ class EditorBook(AuiNotebook, CtrlInterface):
2355
2348
  if j != -1:
2356
2349
  self.DeletePage(j) # the focus moves
2357
2350
  if not self.buffer: # no buffers
2358
- self.new_buffer()
2351
+ wx.CallAfter(self.new_buffer) # Note: post-call to avoid a crash.
2359
2352
 
2360
2353
  def delete_all_buffers(self):
2361
2354
  """Initialize list of buffers."""
2362
2355
  self.DeleteAllPages()
2363
- self.new_buffer()
2356
+ wx.CallAfter(self.new_buffer) # Note: post-call to avoid a crash.
2364
2357
 
2365
2358
  def next_buffer(self):
2366
- self.Selection += 1
2359
+ if self.Selection < self.PageCount - 1:
2360
+ self.Selection += 1
2361
+ else:
2362
+ books = list(self.Parent.get_pages(type(self)))
2363
+ k = books.index(self)
2364
+ if k < len(books) - 1:
2365
+ other_editor = books[k+1]
2366
+ other_editor.Selection = 0
2367
+ other_editor.CurrentPage.SetFocus()
2367
2368
 
2368
2369
  def previous_buffer(self):
2369
- self.Selection -= 1
2370
+ if self.Selection > 0:
2371
+ self.Selection -= 1
2372
+ else:
2373
+ books = list(self.Parent.get_pages(type(self)))
2374
+ k = books.index(self)
2375
+ if k > 0:
2376
+ other_editor = books[k-1]
2377
+ other_editor.Selection = other_editor.PageCount - 1
2378
+ other_editor.CurrentPage.SetFocus()
2370
2379
 
2371
2380
  ## --------------------------------
2372
2381
  ## File I/O
@@ -2391,7 +2400,8 @@ class EditorBook(AuiNotebook, CtrlInterface):
2391
2400
  elif not buf.need_buffer_load:
2392
2401
  self.swap_buffer(buf, lineno)
2393
2402
  return True
2394
- buf._load_textfile(''.join(lines), filename)
2403
+ buf._load_textfile(''.join(lines))
2404
+ buf.update_filestamp(filename)
2395
2405
  self.swap_buffer(buf, lineno)
2396
2406
  return True
2397
2407
  return False
@@ -2421,7 +2431,8 @@ class EditorBook(AuiNotebook, CtrlInterface):
2421
2431
  kwargs.setdefault('timeout', 3.0)
2422
2432
  res = requests.get(filename, **kwargs)
2423
2433
  if res.status_code == requests.codes.OK:
2424
- buf._load_textfile(res.text, filename)
2434
+ buf._load_textfile(res.text)
2435
+ buf.update_filestamp(filename)
2425
2436
  self.swap_buffer(buf, lineno)
2426
2437
  return True
2427
2438
  res.raise_for_status() # raise HTTP error; don't catch here.
@@ -2529,7 +2540,7 @@ class EditorBook(AuiNotebook, CtrlInterface):
2529
2540
  style=wx.YES_NO|wx.ICON_INFORMATION) != wx.YES:
2530
2541
  self.post_message("The close has been canceled.")
2531
2542
  return None
2532
- wx.CallAfter(self.delete_buffer, buf)
2543
+ self.delete_buffer(buf)
2533
2544
 
2534
2545
  def kill_all_buffers(self):
2535
2546
  for buf in self.get_all_buffers():
@@ -2542,7 +2553,7 @@ class EditorBook(AuiNotebook, CtrlInterface):
2542
2553
  style=wx.YES_NO|wx.ICON_INFORMATION) != wx.YES:
2543
2554
  self.post_message("The close has been canceled.")
2544
2555
  return None
2545
- wx.CallAfter(self.delete_all_buffers)
2556
+ self.delete_all_buffers()
2546
2557
 
2547
2558
 
2548
2559
  class Interpreter(interpreter.Interpreter):
@@ -2653,7 +2664,7 @@ class Nautilus(EditorInterface, Shell):
2653
2664
 
2654
2665
  C-up : [0] retrieve previous history
2655
2666
  C-down : [0] retrieve next history
2656
- C-j, M-j : [0] tooltip of eval (for the selected or focused word)
2667
+ C-j : [0] tooltip of eval (for the selected or focused word)
2657
2668
  C-h, M-h : [0] calltip of help (for the selected or focused func)
2658
2669
  TAB : [1] history-comp
2659
2670
  M-p : [1] retrieve previous history in history-comp mode
@@ -2904,7 +2915,7 @@ class Nautilus(EditorInterface, Shell):
2904
2915
  '*delete pressed' : (2, skip),
2905
2916
  '*backspace pressed' : (2, self.OnBackspace),
2906
2917
  '*backspace released' : (2, self.call_word_autocomp),
2907
- 'C-S-backspace pressed' : (2, ),
2918
+ '*S-backspace pressed' : (0, clear_autocomp, fork),
2908
2919
  'C-j pressed' : (2, _F(self.eval_line)),
2909
2920
  '*alt pressed' : (2, ),
2910
2921
  '*ctrl pressed' : (2, ),
@@ -2932,7 +2943,7 @@ class Nautilus(EditorInterface, Shell):
2932
2943
  '*delete pressed' : (3, skip),
2933
2944
  '*backspace pressed' : (3, self.OnBackspace),
2934
2945
  '*backspace released' : (3, self.call_apropos_autocomp),
2935
- 'C-S-backspace pressed' : (3, ),
2946
+ '*S-backspace pressed' : (0, clear_autocomp, fork),
2936
2947
  'C-j pressed' : (3, _F(self.eval_line)),
2937
2948
  '*alt pressed' : (3, ),
2938
2949
  '*ctrl pressed' : (3, ),
@@ -2960,7 +2971,7 @@ class Nautilus(EditorInterface, Shell):
2960
2971
  '*delete pressed' : (4, skip),
2961
2972
  '*backspace pressed' : (4, self.OnBackspace),
2962
2973
  '*backspace released' : (4, self.call_text_autocomp),
2963
- 'C-S-backspace pressed' : (4, ),
2974
+ '*S-backspace pressed' : (0, clear_autocomp, fork),
2964
2975
  'C-j pressed' : (4, _F(self.eval_line)),
2965
2976
  '*alt pressed' : (4, ),
2966
2977
  '*ctrl pressed' : (4, ),
@@ -2989,7 +3000,7 @@ class Nautilus(EditorInterface, Shell):
2989
3000
  '*delete pressed' : (5, skip),
2990
3001
  '*backspace pressed' : (5, self.OnBackspace),
2991
3002
  '*backspace released' : (5, self.call_module_autocomp),
2992
- 'C-S-backspace pressed' : (5, ),
3003
+ '*S-backspace pressed' : (0, clear_autocomp, fork),
2993
3004
  '*alt pressed' : (5, ),
2994
3005
  '*ctrl pressed' : (5, ),
2995
3006
  '*shift pressed' : (5, ),
@@ -3367,7 +3378,7 @@ class Nautilus(EditorInterface, Shell):
3367
3378
  (override) Don't remove trailing ps2 + spaces.
3368
3379
  Don't invoke ``GotoLine``.
3369
3380
  """
3370
- region = self.get_region(self.cline)
3381
+ region = self.get_command_region(self.cline)
3371
3382
  if region:
3372
3383
  p, q = (self.PositionFromLine(x) for x in region)
3373
3384
  p += len(sys.ps1)
@@ -3379,7 +3390,7 @@ class Nautilus(EditorInterface, Shell):
3379
3390
  return command
3380
3391
  return ''
3381
3392
 
3382
- def get_region(self, line):
3393
+ def get_command_region(self, line):
3383
3394
  """Line numbers of prompt head and tail containing the line."""
3384
3395
  lc = line
3385
3396
  le = lc + 1
@@ -3520,13 +3531,13 @@ class Nautilus(EditorInterface, Shell):
3520
3531
  """Short information."""
3521
3532
  doc = inspect.getdoc(obj)\
3522
3533
  or "No information about {}".format(obj)
3523
- self.parent.handler('add_help', doc) or print(doc)
3534
+ self.parent.handler('add_help', doc, typename(obj)) or print(doc)
3524
3535
 
3525
3536
  def help(self, obj):
3526
3537
  """Full description."""
3527
3538
  doc = pydoc.plain(pydoc.render_doc(obj))\
3528
3539
  or "No description about {}".format(obj)
3529
- self.parent.handler('add_help', doc) or print(doc)
3540
+ self.parent.handler('add_help', doc, typename(obj)) or print(doc)
3530
3541
 
3531
3542
  def eval(self, text):
3532
3543
  return eval(text, self.globals, self.locals)
@@ -3640,7 +3651,7 @@ class Nautilus(EditorInterface, Shell):
3640
3651
  err = re.findall(py_error_re, msg, re.M)
3641
3652
  lines = [int(ln) for fn, ln in err if fn == filename]
3642
3653
  if lines:
3643
- region = self.get_region(self.cline)
3654
+ region = self.get_command_region(self.cline)
3644
3655
  lx = region[0] + lines[-1] - 1
3645
3656
  self.red_pointer = lx
3646
3657
  self.message(e)
@@ -115,7 +115,7 @@ class Plugin(Layer):
115
115
  self.layout((self.mc,), expand=2)
116
116
  self.layout((self.ss, self.to, self.rw, self.fw,
117
117
  self.snp, self.crop, self.exp),
118
- expand=0, row=7, style='button', lw=12, cw=0, tw=64)
118
+ expand=0, row=7, style='button', lw=28, cw=0, tw=64)
119
119
 
120
120
  self.menu[0:5] = [
121
121
  (1, "&Load file", Icon('open'),
mwx/wxpdb.py CHANGED
@@ -103,7 +103,7 @@ class Debugger(Pdb):
103
103
  pdb.input = _input
104
104
 
105
105
  def _help():
106
- self.parent.handler('add_help', pdb.__doc__)
106
+ self.parent.handler('add_help', pdb.__doc__, "pdb")
107
107
  pdb.help = _help
108
108
 
109
109
  def dispatch(evt):
@@ -277,7 +277,7 @@ class Debugger(Pdb):
277
277
  ## --------------------------------
278
278
 
279
279
  def _markbp(self, lineno, style):
280
- """Add a marker to lineno, with the following style markers:
280
+ """Add a mark to lineno, with the following style markers:
281
281
  [1] white-arrow for breakpoints
282
282
  [2] red-arrow for exception
283
283
  """
@@ -306,8 +306,8 @@ class Debugger(Pdb):
306
306
  module = import_module(m.group(1))
307
307
  filename = inspect.getfile(module)
308
308
 
309
- editor = self.parent.find_editor(code)\
310
- or self.parent.find_editor(filename)
309
+ editor = next(self.parent.get_all_editors(code),
310
+ next(self.parent.get_all_editors(filename), None))
311
311
  if not editor:
312
312
  editor = self.parent.Log
313
313
  ## Note: Need a post-call for a thread debugging.
@@ -324,11 +324,11 @@ class Debugger(Pdb):
324
324
  buffer = self.editor.buffer
325
325
  if filename == buffer.filename:
326
326
  if code != self.code:
327
- buffer.markline = firstlineno - 1 # (o) entry:marker
327
+ buffer.markline = firstlineno - 1 # (o) entry:mark
328
328
  buffer.goto_marker(1)
329
329
  buffer.recenter(3)
330
330
  buffer.goto_line(lineno - 1)
331
- buffer.pointer = lineno - 1 # (->) pointer:marker
331
+ buffer.pointer = lineno - 1 # (->) pointer:mark
332
332
  buffer.ensureLineMoreOnScreen(lineno - 1)
333
333
  self.code = code
334
334
  wx.CallAfter(_mark)
@@ -462,7 +462,7 @@ class Debugger(Pdb):
462
462
  """Print the stack entry frame_lineno (frame, lineno).
463
463
 
464
464
  (override) Change prompt_prefix.
465
- Add pointer:marker when step next or jump.
465
+ Add pointer:mark when step next or jump.
466
466
  """
467
467
  if self.verbose:
468
468
  Pdb.print_stack_entry(self, frame_lineno,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mwxlib
3
- Version: 1.3.0
3
+ Version: 1.3.11
4
4
  Summary: A wrapper of matplotlib and wxPython (phoenix)
5
5
  Home-page: https://github.com/komoto48g/mwxlib
6
6
  Author: Kazuya O'moto
@@ -16,7 +16,6 @@ Classifier: Programming Language :: Python :: 3.12
16
16
  Classifier: Topic :: Scientific/Engineering :: Image Processing
17
17
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
18
18
  Description-Content-Type: text/markdown
19
- License-File: LICENSE
20
19
  Requires-Dist: wxpython>=4.2.0
21
20
  Requires-Dist: matplotlib
22
21
  Requires-Dist: opencv-python
@@ -0,0 +1,28 @@
1
+ mwx/__init__.py,sha256=pS7ZG8QKRypiFFiaWAq_opBB6I_1viZ0zUMk2TbjzE0,667
2
+ mwx/bookshelf.py,sha256=MXjrm_ryRGHvOFKu8wb10qz_oka70xW2yFbYjBMYfns,8140
3
+ mwx/controls.py,sha256=RssTROprNfgnRMiWVOoSSd8Fy0qwZ8DCrYM2f5Wgr4E,48610
4
+ mwx/framework.py,sha256=9H26L5rF3rxpBm0wInvt3oNhB9si6xNR-K5PbIoVx5c,76778
5
+ mwx/graphman.py,sha256=qA_tNq_9A5eNuujzmxha8ponAIQxZmMtJQkRkojuVYo,70398
6
+ mwx/images.py,sha256=oxCn0P-emiWujSS2gUgU5TUnr5cPjix2jBcjOBDr24I,48701
7
+ mwx/matplot2.py,sha256=Htwegq6N5G7oKSRCuajik5Dixd93i8PKVbkL7Azy99M,33150
8
+ mwx/matplot2g.py,sha256=H1PeLJk5P0KKMT6tmocpli5RSPNjnteA5GhbJTKEqIg,64869
9
+ mwx/matplot2lg.py,sha256=cb0EZXivccDQu4oFj5ddSUF9pEE4f5UuFJJK2ELItww,27404
10
+ mwx/mgplt.py,sha256=8mXbHpCmm7lz3XbAxOg7IVC7DaSGBEby1UfTlMl9kjk,5604
11
+ mwx/nutshell.py,sha256=XrPBcOCeUbnKi5-JjlpmZinkIJINimNsS82SXRxfv_s,142391
12
+ mwx/testsuite.py,sha256=Zk75onPSEn2tf0swS3l-vIn6yTXGB7allIyvJsPHj20,1229
13
+ mwx/utilus.py,sha256=bDeooo2bOcZwvkIdi0ElkT-qoblqzHNFsIveb72NFOo,37528
14
+ mwx/wxmon.py,sha256=yzWqrbY6LzpfRwQeytYUeqFhFuLVm_XEvrVAL_k0HBQ,12756
15
+ mwx/wxpdb.py,sha256=ih2iLcOgYnUX849YXO4niIYue6amuoG7nWdpr-X1jFw,18839
16
+ mwx/wxwil.py,sha256=hhyB1lPrF9ixeObxCOKQv0Theu-B-kpJg_yVU3EGSNg,5406
17
+ mwx/wxwit.py,sha256=1hHtMi2YEy2T_LnUpwdmrIdtCuvxMOFyykqnbq6jLP0,7294
18
+ mwx/plugins/__init__.py,sha256=jnJ-Sl9XJ_7BFDslD_r7dsbxsOT57q_IaEriV53XIGY,41
19
+ mwx/plugins/ffmpeg_view.py,sha256=r7cQPe8anAWoIn3HU_YyWRpsTJrvzji97LNIO1Gw0e0,11031
20
+ mwx/plugins/fft_view.py,sha256=08A_Y73XirV7kXpwf-v0mUA0Hr0MOfdMXv3tvL1hvWA,2789
21
+ mwx/plugins/frame_listview.py,sha256=gowjQ-ARNonMkDSXkQgPKq4U9YBJ-vQ0jK2krBVOdCs,10420
22
+ mwx/plugins/line_profile.py,sha256=zzm6_7lnAnNepLbh07ordp3nRWDFQJtu719ZVjrVf8s,819
23
+ mwx/py/__init__.py,sha256=xykgfOytOwNuvXsfkLoumFZSTN-iBsHOjczYXngjmUE,12
24
+ mwx/py/filling.py,sha256=fumUG1F5M9TL-Dfqni4G85uk7TmvnUunTbdcPDV0vfo,16857
25
+ mwxlib-1.3.11.dist-info/METADATA,sha256=q5aFmjTSmVGQcb9lCf1xvhagruldOzi0LgMAJi3yClI,7434
26
+ mwxlib-1.3.11.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
27
+ mwxlib-1.3.11.dist-info/top_level.txt,sha256=SI1Mh118AstnUFGPNq5aMNKiAnVNmZk1S9Ij-OwAEpY,4
28
+ mwxlib-1.3.11.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.8.0)
2
+ Generator: setuptools (75.8.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2021 Kazuya O'moto
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,29 +0,0 @@
1
- mwx/__init__.py,sha256=pS7ZG8QKRypiFFiaWAq_opBB6I_1viZ0zUMk2TbjzE0,667
2
- mwx/bookshelf.py,sha256=REBMiiC2IE4MUtoDu5T8klFizBr4G0tdFrZinR2yVUg,7547
3
- mwx/controls.py,sha256=ojMUTl-1YRVVEH32WBIK_NUED6UWAil6EGAYigqh5ak,48090
4
- mwx/framework.py,sha256=TOKFx4epSTgHClbKtL--K_8gRSc7OwAHjl6tZpSDtlo,76805
5
- mwx/graphman.py,sha256=knoleskaSdwu65jHNfzrnaCEaN1wHtr3ouQg4tM2doE,70335
6
- mwx/images.py,sha256=oxCn0P-emiWujSS2gUgU5TUnr5cPjix2jBcjOBDr24I,48701
7
- mwx/matplot2.py,sha256=Zwte-wwzCg_OHzsBniVgKdaNLzsvJaa1gc0n7VdAqxw,33150
8
- mwx/matplot2g.py,sha256=ceeAjFkrDz49aSLo_9dIWZZd4HhnSjxe8u9G_ipBHek,64195
9
- mwx/matplot2lg.py,sha256=JRWjWnLJUytbSq6wxs4P0gbVUr3xoLSF6Wwqd5V_pJI,27404
10
- mwx/mgplt.py,sha256=8mXbHpCmm7lz3XbAxOg7IVC7DaSGBEby1UfTlMl9kjk,5604
11
- mwx/nutshell.py,sha256=PUVlIac1HMIoaHj2m8ZUmiOIE_xcsWlTJifm9GRPAjM,141572
12
- mwx/testsuite.py,sha256=Zk75onPSEn2tf0swS3l-vIn6yTXGB7allIyvJsPHj20,1229
13
- mwx/utilus.py,sha256=bDeooo2bOcZwvkIdi0ElkT-qoblqzHNFsIveb72NFOo,37528
14
- mwx/wxmon.py,sha256=yzWqrbY6LzpfRwQeytYUeqFhFuLVm_XEvrVAL_k0HBQ,12756
15
- mwx/wxpdb.py,sha256=ge4hNfeigHGcpnioU1B_BJX_QZjNdtnokUrcZOxcEcI,18814
16
- mwx/wxwil.py,sha256=hhyB1lPrF9ixeObxCOKQv0Theu-B-kpJg_yVU3EGSNg,5406
17
- mwx/wxwit.py,sha256=1hHtMi2YEy2T_LnUpwdmrIdtCuvxMOFyykqnbq6jLP0,7294
18
- mwx/plugins/__init__.py,sha256=jnJ-Sl9XJ_7BFDslD_r7dsbxsOT57q_IaEriV53XIGY,41
19
- mwx/plugins/ffmpeg_view.py,sha256=NIHFJLPeliOXH3ke0NvQzYBhY0oeEP6dgZQofB5Ry1c,11031
20
- mwx/plugins/fft_view.py,sha256=08A_Y73XirV7kXpwf-v0mUA0Hr0MOfdMXv3tvL1hvWA,2789
21
- mwx/plugins/frame_listview.py,sha256=gowjQ-ARNonMkDSXkQgPKq4U9YBJ-vQ0jK2krBVOdCs,10420
22
- mwx/plugins/line_profile.py,sha256=zzm6_7lnAnNepLbh07ordp3nRWDFQJtu719ZVjrVf8s,819
23
- mwx/py/__init__.py,sha256=xykgfOytOwNuvXsfkLoumFZSTN-iBsHOjczYXngjmUE,12
24
- mwx/py/filling.py,sha256=fumUG1F5M9TL-Dfqni4G85uk7TmvnUunTbdcPDV0vfo,16857
25
- mwxlib-1.3.0.dist-info/LICENSE,sha256=PGtRKCaTkmUDlBQwpptJAxJtdqxIUtAmdBsaT9nUVkA,1091
26
- mwxlib-1.3.0.dist-info/METADATA,sha256=0Q6nnQK4gPzt6Kgg98OVyzhNbMDIN9xwfy9tL3xYlY0,7456
27
- mwxlib-1.3.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
28
- mwxlib-1.3.0.dist-info/top_level.txt,sha256=SI1Mh118AstnUFGPNq5aMNKiAnVNmZk1S9Ij-OwAEpY,4
29
- mwxlib-1.3.0.dist-info/RECORD,,