mwxlib 1.2.8__py3-none-any.whl → 1.3.0__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/bookshelf.py CHANGED
@@ -99,14 +99,14 @@ class EditorTreeCtrl(wx.TreeCtrl, CtrlInterface):
99
99
  }
100
100
  def _attach():
101
101
  if self and self.parent:
102
- for editor in self.parent.all_editors:
102
+ for editor in self.parent.get_all_editors():
103
103
  editor.handler.append(self.context)
104
104
  self.build_tree()
105
105
  wx.CallAfter(_attach)
106
106
 
107
107
  def OnDestroy(self, evt):
108
108
  if self and self.parent:
109
- for editor in self.parent.all_editors:
109
+ for editor in self.parent.get_all_editors():
110
110
  editor.handler.remove(self.context)
111
111
  evt.Skip()
112
112
 
@@ -129,8 +129,8 @@ class EditorTreeCtrl(wx.TreeCtrl, CtrlInterface):
129
129
  if clear:
130
130
  self.DeleteAllItems()
131
131
  self.AddRoot(self.Name)
132
- for editor in self.parent.all_editors:
133
- self._set_item(self.RootItem, editor.Name, editor.all_buffers)
132
+ for editor in self.parent.get_all_editors():
133
+ self._set_item(self.RootItem, editor.Name, editor.get_all_buffers())
134
134
  self.Refresh()
135
135
 
136
136
  def _gen_items(self, root, key=None):
mwx/controls.py CHANGED
@@ -337,13 +337,9 @@ class Knob(wx.Panel):
337
337
  label = self.__par.name + ' '
338
338
 
339
339
  if style == 'chkbox' or style == 'checkbox':
340
- if lw >= 0:
341
- lw += 16
342
340
  self.label = wx.CheckBox(self, label=label, size=(lw,-1))
343
341
  self.label.Bind(wx.EVT_CHECKBOX, self.OnCheck)
344
342
  elif style == 'button':
345
- if lw >= 0:
346
- lw += 16
347
343
  self.label = pb.PlateButton(self, label=label, size=(lw,-1),
348
344
  style=pb.PB_STYLE_DEFAULT|pb.PB_STYLE_SQUARE)
349
345
  self.label.Bind(wx.EVT_BUTTON, self.OnPress)
@@ -595,6 +591,7 @@ class KnobCtrlPanel(scrolled.ScrolledPanel):
595
591
  for cc in obj.Children: # child of child <wx._core.SizerItem>
596
592
  cc.Show(not cc.IsShown())
597
593
  self.Layout()
594
+ self.SendSizeEvent()
598
595
  break
599
596
  evt.Skip()
600
597
 
mwx/framework.py CHANGED
@@ -1,7 +1,7 @@
1
1
  #! python3
2
2
  """mwxlib framework.
3
3
  """
4
- __version__ = "1.2.8"
4
+ __version__ = "1.3.0"
5
5
  __author__ = "Kazuya O'moto <komoto@jeol.co.jp>"
6
6
 
7
7
  from contextlib import contextmanager
@@ -1337,8 +1337,8 @@ class ShellFrame(MiniFrame):
1337
1337
  o.write("self.SetSize({})\n".format(self.Size))
1338
1338
  o.write("self.SetPosition({})\n".format(self.Position))
1339
1339
 
1340
- for book in self.all_editors:
1341
- for buf in book.all_buffers:
1340
+ for book in self.get_all_editors():
1341
+ for buf in book.get_all_buffers():
1342
1342
  if buf.mtdelta is not None:
1343
1343
  o.write("self.{}.load_file({!r}, {})\n"
1344
1344
  .format(book.Name, buf.filename, buf.markline+1))
@@ -1446,8 +1446,8 @@ class ShellFrame(MiniFrame):
1446
1446
  "The trace pointer will be cleared.")
1447
1447
  self.debugger.unwatch() # cf. [pointer_unset] stop_trace
1448
1448
 
1449
- for book in self.all_editors:
1450
- for buf in book.all_buffers:
1449
+ for book in self.get_all_editors():
1450
+ for buf in book.get_all_buffers():
1451
1451
  if buf.need_buffer_save:
1452
1452
  self.popup_window(book)
1453
1453
  buf.SetFocus()
@@ -1473,8 +1473,8 @@ class ShellFrame(MiniFrame):
1473
1473
  elif evt.GetActivationReason() == evt.Reason_Mouse\
1474
1474
  and self.__autoload:
1475
1475
  ## Check all buffers that need to be loaded.
1476
- for book in self.all_editors:
1477
- for buf in book.all_buffers:
1476
+ for book in self.get_all_editors():
1477
+ for buf in book.get_all_buffers():
1478
1478
  if buf.need_buffer_load:
1479
1479
  if wx.MessageBox( # Confirm load.
1480
1480
  "The file has been modified externally.\n\n"
@@ -1484,7 +1484,7 @@ class ShellFrame(MiniFrame):
1484
1484
  style=wx.YES_NO|wx.ICON_INFORMATION) != wx.YES:
1485
1485
  self.__autoload = False # Don't ask any more.
1486
1486
  return
1487
- book.load_file(buf.filename)
1487
+ book.load_file(buf.filename, buf.markline+1)
1488
1488
  ## Reinitialize self-specific builtins if other instances are destroyed.
1489
1489
  if evt.Active:
1490
1490
  self.Init()
@@ -1874,12 +1874,14 @@ class ShellFrame(MiniFrame):
1874
1874
  if not hasattr(target, '__dict__'):
1875
1875
  raise TypeError("primitive objects cannot be targeted")
1876
1876
 
1877
- shell = self.rootshell.__class__(self, target, name="clone",
1878
- style=wx.CLIP_CHILDREN|wx.BORDER_NONE)
1879
- self.handler('shell_new', shell)
1880
- self.Show()
1881
- self.console.AddPage(shell, typename(shell.target))
1877
+ shell = self.find_shell(target)
1878
+ if not shell:
1879
+ shell = self.rootshell.__class__(self, target, name="clone",
1880
+ style=wx.CLIP_CHILDREN|wx.BORDER_NONE)
1881
+ self.console.AddPage(shell, typename(shell.target))
1882
+ self.handler('shell_new', shell)
1882
1883
  self.popup_window(shell)
1884
+ self.Show()
1883
1885
  shell.SetFocus()
1884
1886
  return shell
1885
1887
 
@@ -1905,8 +1907,16 @@ class ShellFrame(MiniFrame):
1905
1907
  yield from self.console.get_pages(type)
1906
1908
  yield from self.ghost.get_pages(type)
1907
1909
 
1910
+ def get_all_shells(self):
1911
+ """Yields all shells in the notebooks."""
1912
+ yield from self.console.get_pages(type(self.rootshell))
1913
+
1914
+ def get_all_editors(self):
1915
+ """Yields all editors in the notebooks."""
1916
+ yield from self.ghost.get_pages(type(self.Log))
1917
+
1908
1918
  @property
1909
- def all_shells(self):
1919
+ def all_shells(self): # (deprecated) for backward compatibility
1910
1920
  """Yields all books in the notebooks."""
1911
1921
  return self.console.get_pages(type(self.rootshell))
1912
1922
 
@@ -1915,8 +1925,17 @@ class ShellFrame(MiniFrame):
1915
1925
  """Currently selected shell or rootshell."""
1916
1926
  return self.console.CurrentPage
1917
1927
 
1928
+ def find_shell(self, target):
1929
+ """Find a shell targeting the specified object.
1930
+ If found, switch to the corresponding page.
1931
+ """
1932
+ for shell in self.get_all_shells():
1933
+ if shell.target is target:
1934
+ self.console.swap_page(shell)
1935
+ return shell
1936
+
1918
1937
  @property
1919
- def all_editors(self):
1938
+ def all_editors(self): # (deprecated) for backward compatibility
1920
1939
  """Yields all editors in the notebooks."""
1921
1940
  return self.ghost.get_pages(type(self.Log))
1922
1941
 
@@ -1926,22 +1945,17 @@ class ShellFrame(MiniFrame):
1926
1945
  editor = self.ghost.CurrentPage
1927
1946
  if isinstance(editor, type(self.Log)):
1928
1947
  return editor
1929
- return next((x for x in self.all_editors if x.IsShown()), self.Scratch)
1948
+ return next((x for x in self.get_all_editors() if x.IsShown()), self.Scratch)
1930
1949
 
1931
1950
  def find_editor(self, fn):
1932
- """Find an editor with the specified fn:filename or code.
1933
- If found, switch to the buffer page.
1951
+ """Find an editor containing the specified fn:filename or code.
1952
+ If found, switch to the corresponding page.
1934
1953
  """
1935
- return next(self.find_editors(fn), None)
1936
-
1937
- def find_editors(self, fn):
1938
- """Yields all editors with the specified fn:filename or code."""
1939
- def _f(book):
1954
+ for book in self.get_all_editors():
1940
1955
  buf = book.find_buffer(fn)
1941
1956
  if buf:
1942
1957
  book.swap_page(buf)
1943
- return buf
1944
- return filter(_f, self.all_editors)
1958
+ return book
1945
1959
 
1946
1960
  ## --------------------------------
1947
1961
  ## Find text dialog
mwx/graphman.py CHANGED
@@ -1328,7 +1328,7 @@ class Frame(mwx.Frame):
1328
1328
  self.load_plug(plug.__module__, force=1, session=session)
1329
1329
 
1330
1330
  ## Update shell.target --> new plug
1331
- for shell in self.shellframe.all_shells:
1331
+ for shell in self.shellframe.get_all_shells():
1332
1332
  if shell.target is plug:
1333
1333
  shell.handler('shell_activated', shell)
1334
1334
 
@@ -1492,7 +1492,7 @@ class Frame(mwx.Frame):
1492
1492
  else:
1493
1493
  fn = attr.get('pathname') # if not found, try pathname
1494
1494
  if fn.startswith(r'\\'):
1495
- warn(f"The pathnme of {fn!r} contains network path, "
1495
+ warn(f"The pathname of {fn!r} contains network path, "
1496
1496
  f"so the search may take long time.", stacklevel=3)
1497
1497
  if not os.path.exists(fn):
1498
1498
  mis[name] = res.pop(name) # pop missing items
mwx/nutshell.py CHANGED
@@ -629,7 +629,7 @@ class EditorInterface(AutoCompInterfaceMixin, CtrlInterface):
629
629
  self.MarkerDefine(stc.STC_MARKNUM_FOLDEROPENMID, stc.STC_MARK_VLINE, *v)
630
630
  self.MarkerDefine(stc.STC_MARKNUM_FOLDERMIDTAIL, stc.STC_MARK_VLINE, *v)
631
631
 
632
- ## Custom indicators ([BUG] indicator=1 is reset when the buffer is udpated.)
632
+ ## Custom indicators ([BUG] indicator=1 is reset when the buffer is updated.)
633
633
  ## [10-11] filter_text
634
634
  ## [2] URL
635
635
  ## [3] match_paren
@@ -2214,7 +2214,7 @@ class EditorBook(AuiNotebook, CtrlInterface):
2214
2214
 
2215
2215
  def OnPageClose(self, evt): #<wx._aui.AuiNotebookEvent>
2216
2216
  nb = evt.EventObject
2217
- buf = nb.all_buffers[evt.Selection]
2217
+ buf = nb.all_pages[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"
@@ -2258,7 +2258,7 @@ class EditorBook(AuiNotebook, CtrlInterface):
2258
2258
  _setattribute(buf, kwargs)
2259
2259
  else:
2260
2260
  self.defaultBufferStyle.update(kwargs)
2261
- for buf in self.all_buffers:
2261
+ for buf in self.get_all_buffers():
2262
2262
  _setattribute(buf, self.defaultBufferStyle)
2263
2263
 
2264
2264
  def on_activated(self, buf):
@@ -2275,12 +2275,26 @@ class EditorBook(AuiNotebook, CtrlInterface):
2275
2275
  ## --------------------------------
2276
2276
 
2277
2277
  @property
2278
- def all_buffers(self):
2278
+ def all_buffers(self): # (deprecated) for backward compatibility
2279
2279
  """Returns all buffer pages.
2280
- cf. equiv. AuiNotebook.all_pages
2280
+ cf. equiv. AuiNotebook.all_pages or get_pages()
2281
2281
  """
2282
2282
  return [self.GetPage(j) for j in range(self.PageCount)]
2283
2283
 
2284
+ def get_all_buffers(self, fn=None):
2285
+ """Yields all buffers with specified fn:filename or code."""
2286
+ if fn is None:
2287
+ yield from self.get_pages(Buffer)
2288
+ elif isinstance(fn, str):
2289
+ g = os.path.realpath(fn)
2290
+ for buf in self.get_pages(Buffer):
2291
+ if fn == buf.filename or g == os.path.realpath(buf.filename):
2292
+ yield buf
2293
+ else:
2294
+ for buf in self.get_pages(Buffer):
2295
+ if fn is buf or fn in buf: # check code
2296
+ yield buf
2297
+
2284
2298
  @property
2285
2299
  def menu(self):
2286
2300
  """Yields context menu."""
@@ -2290,7 +2304,7 @@ class EditorBook(AuiNotebook, CtrlInterface):
2290
2304
  lambda v: buf.SetFocus(),
2291
2305
  lambda v: v.Check(buf is self.buffer))
2292
2306
 
2293
- return (_menu(j+1, x) for j, x in enumerate(self.all_buffers))
2307
+ return (_menu(j+1, x) for j, x in enumerate(self.get_all_buffers()))
2294
2308
 
2295
2309
  @property
2296
2310
  def buffer(self):
@@ -2298,16 +2312,8 @@ class EditorBook(AuiNotebook, CtrlInterface):
2298
2312
  return self.CurrentPage
2299
2313
 
2300
2314
  def find_buffer(self, fn):
2301
- """Find buffer with specified fn:filename or code."""
2302
- if isinstance(fn, str):
2303
- g = os.path.realpath(fn)
2304
- for buf in self.all_buffers:
2305
- if fn == buf.filename or g == os.path.realpath(buf.filename):
2306
- return buf
2307
- else:
2308
- for buf in self.all_buffers:
2309
- if fn is buf or fn in buf: # check code
2310
- return buf
2315
+ """Find a buffer with specified fn:filename or code."""
2316
+ return next(self.get_all_buffers(fn), None)
2311
2317
 
2312
2318
  def swap_buffer(self, buf, lineno=0):
2313
2319
  self.swap_page(buf)
@@ -2390,7 +2396,7 @@ class EditorBook(AuiNotebook, CtrlInterface):
2390
2396
  return True
2391
2397
  return False
2392
2398
 
2393
- def load_file(self, filename, lineno=0, verbose=True):
2399
+ def load_file(self, filename, lineno=0, verbose=True, **kwargs):
2394
2400
  """Load a file into an existing or new buffer.
2395
2401
  The requests module is required to use URL extension.
2396
2402
  """
@@ -2412,18 +2418,18 @@ class EditorBook(AuiNotebook, CtrlInterface):
2412
2418
  try:
2413
2419
  if re.match(url_re, filename):
2414
2420
  import requests
2415
- res = requests.get(filename, timeout=3.0)
2416
- if res.status_code == requests.codes.ok:
2421
+ kwargs.setdefault('timeout', 3.0)
2422
+ res = requests.get(filename, **kwargs)
2423
+ if res.status_code == requests.codes.OK:
2417
2424
  buf._load_textfile(res.text, filename)
2418
2425
  self.swap_buffer(buf, lineno)
2419
2426
  return True
2420
- ## raise Exception("URL not found:", filename)
2421
- res.raise_for_status() # raise HTTP error
2427
+ res.raise_for_status() # raise HTTP error; don't catch here.
2422
2428
  if buf._load_file(filename):
2423
2429
  self.swap_buffer(buf, lineno)
2424
2430
  return True
2425
2431
  return False
2426
- except (OSError, UnicodeDecodeError) as e:
2432
+ except (OSError, UnicodeDecodeError, ModuleNotFoundError) as e:
2427
2433
  self.post_message("Failed to load:", e)
2428
2434
  self.delete_buffer(buf)
2429
2435
  return False
@@ -2436,13 +2442,14 @@ class EditorBook(AuiNotebook, CtrlInterface):
2436
2442
  wildcard='|'.join(self.wildcards),
2437
2443
  style=wx.FD_OPEN|wx.FD_MULTIPLE) as dlg:
2438
2444
  if dlg.ShowModal() == wx.ID_OK:
2439
- for fn in dlg.Paths:
2440
- self.find_file(fn)
2441
- return
2442
- if self.load_file(filename) == False: # noqa: not None
2445
+ return all([self.find_file(fn) for fn in dlg.Paths])
2446
+ return None
2447
+ retval = self.load_file(filename)
2448
+ if retval == False: # noqa: not None
2443
2449
  buf = self.create_buffer(filename)
2444
2450
  self.swap_buffer(buf)
2445
2451
  self.post_message("New file.")
2452
+ return retval
2446
2453
 
2447
2454
  def save_file(self, filename, buf=None, verbose=True):
2448
2455
  """Save the current buffer to a file.
@@ -2506,7 +2513,7 @@ class EditorBook(AuiNotebook, CtrlInterface):
2506
2513
  return self.save_file(dlg.Path, buf)
2507
2514
 
2508
2515
  def save_all_buffers(self):
2509
- for buf in self.all_buffers:
2516
+ for buf in self.get_all_buffers():
2510
2517
  if buf.need_buffer_save:
2511
2518
  self.save_buffer(buf)
2512
2519
 
@@ -2525,7 +2532,7 @@ class EditorBook(AuiNotebook, CtrlInterface):
2525
2532
  wx.CallAfter(self.delete_buffer, buf)
2526
2533
 
2527
2534
  def kill_all_buffers(self):
2528
- for buf in self.all_buffers:
2535
+ for buf in self.get_all_buffers():
2529
2536
  if buf.need_buffer_save:
2530
2537
  if wx.MessageBox( # Confirm close.
2531
2538
  "You are closing unsaved content.\n\n"
@@ -2839,8 +2846,8 @@ class Nautilus(EditorInterface, Shell):
2839
2846
  'C-S-v pressed' : (0, _F(self.Paste, rectangle=1)),
2840
2847
  'S-insert pressed' : (0, _F(self.Paste)),
2841
2848
  'C-S-insert pressed' : (0, _F(self.Paste, rectangle=1)),
2842
- 'C-j pressed' : (0, self.eval_line),
2843
- 'M-j pressed' : (0, self.exec_region),
2849
+ 'C-j pressed' : (0, _F(self.eval_line)),
2850
+ 'M-j pressed' : (0, _F(self.exec_region)),
2844
2851
  'C-h pressed' : (0, self.call_helpTip),
2845
2852
  'M-h pressed' : (0, self.call_helpDoc),
2846
2853
  '. pressed' : (2, self.OnEnterDot),
@@ -2898,7 +2905,7 @@ class Nautilus(EditorInterface, Shell):
2898
2905
  '*backspace pressed' : (2, self.OnBackspace),
2899
2906
  '*backspace released' : (2, self.call_word_autocomp),
2900
2907
  'C-S-backspace pressed' : (2, ),
2901
- 'C-j pressed' : (2, self.eval_line),
2908
+ 'C-j pressed' : (2, _F(self.eval_line)),
2902
2909
  '*alt pressed' : (2, ),
2903
2910
  '*ctrl pressed' : (2, ),
2904
2911
  '*shift pressed' : (2, ),
@@ -2926,7 +2933,7 @@ class Nautilus(EditorInterface, Shell):
2926
2933
  '*backspace pressed' : (3, self.OnBackspace),
2927
2934
  '*backspace released' : (3, self.call_apropos_autocomp),
2928
2935
  'C-S-backspace pressed' : (3, ),
2929
- 'C-j pressed' : (3, self.eval_line),
2936
+ 'C-j pressed' : (3, _F(self.eval_line)),
2930
2937
  '*alt pressed' : (3, ),
2931
2938
  '*ctrl pressed' : (3, ),
2932
2939
  '*shift pressed' : (3, ),
@@ -2954,7 +2961,7 @@ class Nautilus(EditorInterface, Shell):
2954
2961
  '*backspace pressed' : (4, self.OnBackspace),
2955
2962
  '*backspace released' : (4, self.call_text_autocomp),
2956
2963
  'C-S-backspace pressed' : (4, ),
2957
- 'C-j pressed' : (4, self.eval_line),
2964
+ 'C-j pressed' : (4, _F(self.eval_line)),
2958
2965
  '*alt pressed' : (4, ),
2959
2966
  '*ctrl pressed' : (4, ),
2960
2967
  '*shift pressed' : (4, ),
@@ -3354,7 +3361,7 @@ class Nautilus(EditorInterface, Shell):
3354
3361
  ## cf. getMultilineCommand() -> caret-multi-line that starts with a prompt
3355
3362
  ## [BUG 4.1.1] Don't use for current prompt --> Fixed in 4.2.0.
3356
3363
 
3357
- def getMultilineCommand(self):
3364
+ def getMultilineCommand(self, rstrip=True):
3358
3365
  """Extract a multi-line command which starts with a prompt.
3359
3366
 
3360
3367
  (override) Don't remove trailing ps2 + spaces.
@@ -3364,7 +3371,12 @@ class Nautilus(EditorInterface, Shell):
3364
3371
  if region:
3365
3372
  p, q = (self.PositionFromLine(x) for x in region)
3366
3373
  p += len(sys.ps1)
3367
- return self.GetTextRange(p, q)
3374
+ command = self.GetTextRange(p, q).rstrip(os.linesep) # remove the last cr/lf
3375
+ if rstrip:
3376
+ command = command.replace(os.linesep + sys.ps2, '\n')
3377
+ command = command.rstrip()
3378
+ command = command.replace('\n', os.linesep + sys.ps2)
3379
+ return command
3368
3380
  return ''
3369
3381
 
3370
3382
  def get_region(self, line):
@@ -3589,7 +3601,7 @@ class Nautilus(EditorInterface, Shell):
3589
3601
  self.cpos, self.anchor = self.anchor, self.cpos
3590
3602
  self.EnsureCaretVisible()
3591
3603
 
3592
- def eval_line(self, evt):
3604
+ def eval_line(self):
3593
3605
  """Evaluate the selected word or line."""
3594
3606
  if self.CallTipActive():
3595
3607
  self.CallTipCancel()
@@ -3609,7 +3621,7 @@ class Nautilus(EditorInterface, Shell):
3609
3621
  else:
3610
3622
  self.message("No words")
3611
3623
 
3612
- def exec_region(self, evt):
3624
+ def exec_region(self):
3613
3625
  """Execute the the selected region."""
3614
3626
  if self.CallTipActive():
3615
3627
  self.CallTipCancel()
mwx/testsuite.py CHANGED
@@ -8,7 +8,7 @@ Usage:
8
8
  frm = wx.Frame(None)
9
9
  frm.Show()
10
10
 
11
- Is equivlent to:
11
+ Is equivalent to:
12
12
  app = wx.App()
13
13
  frm = wx.Frame(None)
14
14
  frm.Show()
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: mwxlib
3
- Version: 1.2.8
3
+ Version: 1.3.0
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
@@ -21,6 +21,15 @@ Requires-Dist: wxpython>=4.2.0
21
21
  Requires-Dist: matplotlib
22
22
  Requires-Dist: opencv-python
23
23
  Requires-Dist: scipy
24
+ Dynamic: author
25
+ Dynamic: author-email
26
+ Dynamic: classifier
27
+ Dynamic: description
28
+ Dynamic: description-content-type
29
+ Dynamic: home-page
30
+ Dynamic: license
31
+ Dynamic: requires-dist
32
+ Dynamic: summary
24
33
 
25
34
  # mwxlib
26
35
 
@@ -1,15 +1,15 @@
1
1
  mwx/__init__.py,sha256=pS7ZG8QKRypiFFiaWAq_opBB6I_1viZ0zUMk2TbjzE0,667
2
- mwx/bookshelf.py,sha256=b_TMDaNIzLHoL0xbbqb3tt0BnRvhLAqaCn_pBdrigZw,7523
3
- mwx/controls.py,sha256=5PCy3zguDRuwYl89P9tOCUU7xAGUETs944qZBy5MS9g,48146
4
- mwx/framework.py,sha256=aWRouIUMqBCH3Uv1FpGC6GKfbwb79fSV_e23Limhx-E,76125
5
- mwx/graphman.py,sha256=sKwPy31H4lwtShTAui_6upe_Ys2-MwBHhdFq-3onBNE,70328
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
6
  mwx/images.py,sha256=oxCn0P-emiWujSS2gUgU5TUnr5cPjix2jBcjOBDr24I,48701
7
7
  mwx/matplot2.py,sha256=Zwte-wwzCg_OHzsBniVgKdaNLzsvJaa1gc0n7VdAqxw,33150
8
8
  mwx/matplot2g.py,sha256=ceeAjFkrDz49aSLo_9dIWZZd4HhnSjxe8u9G_ipBHek,64195
9
9
  mwx/matplot2lg.py,sha256=JRWjWnLJUytbSq6wxs4P0gbVUr3xoLSF6Wwqd5V_pJI,27404
10
10
  mwx/mgplt.py,sha256=8mXbHpCmm7lz3XbAxOg7IVC7DaSGBEby1UfTlMl9kjk,5604
11
- mwx/nutshell.py,sha256=7nQ7UUFM9kvjDjHNUEdOkkeqZPiU6zOERwamqBdJpQs,140856
12
- mwx/testsuite.py,sha256=kiM3-BVhr42LRRN7xG7pYl3at8o2vnypWSxD8KRvA7c,1228
11
+ mwx/nutshell.py,sha256=PUVlIac1HMIoaHj2m8ZUmiOIE_xcsWlTJifm9GRPAjM,141572
12
+ mwx/testsuite.py,sha256=Zk75onPSEn2tf0swS3l-vIn6yTXGB7allIyvJsPHj20,1229
13
13
  mwx/utilus.py,sha256=bDeooo2bOcZwvkIdi0ElkT-qoblqzHNFsIveb72NFOo,37528
14
14
  mwx/wxmon.py,sha256=yzWqrbY6LzpfRwQeytYUeqFhFuLVm_XEvrVAL_k0HBQ,12756
15
15
  mwx/wxpdb.py,sha256=ge4hNfeigHGcpnioU1B_BJX_QZjNdtnokUrcZOxcEcI,18814
@@ -22,8 +22,8 @@ mwx/plugins/frame_listview.py,sha256=gowjQ-ARNonMkDSXkQgPKq4U9YBJ-vQ0jK2krBVOdCs
22
22
  mwx/plugins/line_profile.py,sha256=zzm6_7lnAnNepLbh07ordp3nRWDFQJtu719ZVjrVf8s,819
23
23
  mwx/py/__init__.py,sha256=xykgfOytOwNuvXsfkLoumFZSTN-iBsHOjczYXngjmUE,12
24
24
  mwx/py/filling.py,sha256=fumUG1F5M9TL-Dfqni4G85uk7TmvnUunTbdcPDV0vfo,16857
25
- mwxlib-1.2.8.dist-info/LICENSE,sha256=PGtRKCaTkmUDlBQwpptJAxJtdqxIUtAmdBsaT9nUVkA,1091
26
- mwxlib-1.2.8.dist-info/METADATA,sha256=FKLkLzB6CRVzJ0JFJdYx3ngDSQR5aHxMm0HdQL5feTA,7258
27
- mwxlib-1.2.8.dist-info/WHEEL,sha256=A3WOREP4zgxI0fKrHUG8DC8013e3dK3n7a6HDbcEIwE,91
28
- mwxlib-1.2.8.dist-info/top_level.txt,sha256=SI1Mh118AstnUFGPNq5aMNKiAnVNmZk1S9Ij-OwAEpY,4
29
- mwxlib-1.2.8.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.7.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5