mwxlib 1.0.0__py3-none-any.whl → 1.8.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.
- mwx/__init__.py +6 -4
- mwx/bookshelf.py +144 -68
- mwx/controls.py +444 -378
- mwx/framework.py +567 -546
- mwx/graphman.py +745 -726
- mwx/images.py +16 -0
- mwx/matplot2.py +244 -235
- mwx/matplot2g.py +812 -751
- mwx/matplot2lg.py +218 -209
- mwx/mgplt.py +20 -22
- mwx/nutshell.py +1119 -1015
- mwx/plugins/ffmpeg_view.py +96 -90
- mwx/plugins/fft_view.py +13 -15
- mwx/plugins/frame_listview.py +68 -75
- mwx/plugins/line_profile.py +1 -1
- mwx/py/filling.py +13 -14
- mwx/testsuite.py +38 -0
- mwx/utilus.py +284 -219
- mwx/wxmon.py +43 -44
- mwx/wxpdb.py +83 -84
- mwx/wxwil.py +19 -18
- mwx/wxwit.py +38 -45
- {mwxlib-1.0.0.dist-info → mwxlib-1.8.0.dist-info}/METADATA +12 -5
- mwxlib-1.8.0.dist-info/RECORD +28 -0
- {mwxlib-1.0.0.dist-info → mwxlib-1.8.0.dist-info}/WHEEL +1 -1
- mwxlib-1.0.0.dist-info/LICENSE +0 -21
- mwxlib-1.0.0.dist-info/RECORD +0 -28
- {mwxlib-1.0.0.dist-info → mwxlib-1.8.0.dist-info}/top_level.txt +0 -0
mwx/wxwit.py
CHANGED
|
@@ -8,15 +8,15 @@ import wx.lib.inspection as it
|
|
|
8
8
|
|
|
9
9
|
from .controls import Icon
|
|
10
10
|
from .utilus import typename
|
|
11
|
-
from .framework import CtrlInterface, Menu
|
|
11
|
+
from .framework import CtrlInterface, Menu
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class Inspector(it.InspectionTree, CtrlInterface):
|
|
15
|
-
"""Widget inspection tool
|
|
15
|
+
"""Widget inspection tool.
|
|
16
16
|
|
|
17
17
|
Attributes:
|
|
18
|
-
parent
|
|
19
|
-
target
|
|
18
|
+
parent: shellframe
|
|
19
|
+
target: widget to inspect
|
|
20
20
|
"""
|
|
21
21
|
def __init__(self, parent, *args, **kwargs):
|
|
22
22
|
it.InspectionTree.__init__(self, parent, *args, **kwargs)
|
|
@@ -33,7 +33,7 @@ class Inspector(it.InspectionTree, CtrlInterface):
|
|
|
33
33
|
self.TopLevelParent]
|
|
34
34
|
|
|
35
35
|
self.Bind(wx.EVT_TREE_ITEM_GETTOOLTIP, self.OnItemTooltip)
|
|
36
|
-
self.Bind(wx.
|
|
36
|
+
self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnItemRightClick)
|
|
37
37
|
self.Bind(wx.EVT_SHOW, self.OnShow)
|
|
38
38
|
self.Bind(wx.EVT_TIMER, self.OnTimer)
|
|
39
39
|
self.Bind(wx.EVT_SET_FOCUS, self.OnSetFocus)
|
|
@@ -61,38 +61,35 @@ class Inspector(it.InspectionTree, CtrlInterface):
|
|
|
61
61
|
@self.handler.bind('f5 pressed')
|
|
62
62
|
def _refresh(evt):
|
|
63
63
|
self.BuildTree(self.target)
|
|
64
|
-
|
|
64
|
+
|
|
65
65
|
def OnDestroy(self, evt):
|
|
66
66
|
if evt.EventObject is self:
|
|
67
67
|
self.timer.Stop()
|
|
68
68
|
evt.Skip()
|
|
69
|
-
|
|
69
|
+
|
|
70
70
|
def OnSetFocus(self, evt):
|
|
71
71
|
title = self.__class__.__name__
|
|
72
72
|
self.parent.handler('title_window', title)
|
|
73
73
|
evt.Skip()
|
|
74
|
-
|
|
74
|
+
|
|
75
75
|
## --------------------------------
|
|
76
|
-
## InspectionTree
|
|
76
|
+
## InspectionTree interface.
|
|
77
77
|
## --------------------------------
|
|
78
|
-
|
|
78
|
+
|
|
79
79
|
def SetObj(self, obj):
|
|
80
|
-
"""Called from tree.toolFrame -> SetObj.
|
|
81
|
-
|
|
82
|
-
(override) Set target object.
|
|
83
|
-
"""
|
|
80
|
+
"""Called from tree.toolFrame -> SetObj."""
|
|
84
81
|
if self.target is obj:
|
|
85
82
|
return
|
|
86
83
|
self.target = obj
|
|
87
|
-
item = self.FindWidgetItem(obj)
|
|
84
|
+
item = self.FindWidgetItem(obj) # cf. it.InspectionTree.SelectObj
|
|
88
85
|
if item:
|
|
89
86
|
self.EnsureVisible(item)
|
|
90
87
|
self.SelectItem(item)
|
|
91
88
|
elif obj:
|
|
92
|
-
self.BuildTree(obj)
|
|
93
|
-
|
|
89
|
+
self.BuildTree(obj) # If the item for obj is missing, rebuild the tree.
|
|
90
|
+
|
|
94
91
|
def GetTextForWidget(self, obj):
|
|
95
|
-
"""
|
|
92
|
+
"""Return the string to be used in the tree for a widget.
|
|
96
93
|
|
|
97
94
|
(override) Make better object name and Id.
|
|
98
95
|
"""
|
|
@@ -100,7 +97,7 @@ class Inspector(it.InspectionTree, CtrlInterface):
|
|
|
100
97
|
if hasattr(obj, 'Name'):
|
|
101
98
|
return "{} ({!r} {})".format(clsname, obj.Name, obj.Id)
|
|
102
99
|
return clsname
|
|
103
|
-
|
|
100
|
+
|
|
104
101
|
def highlight(self, obj, msec=2000):
|
|
105
102
|
self.highlighter.highlightTime = msec
|
|
106
103
|
if isinstance(obj, wx.Window):
|
|
@@ -109,60 +106,55 @@ class Inspector(it.InspectionTree, CtrlInterface):
|
|
|
109
106
|
self.highlighter.HighlightSizer(obj)
|
|
110
107
|
elif isinstance(obj, wx.SizerItem):
|
|
111
108
|
self.highlighter.HighlightSizer(obj.Sizer)
|
|
112
|
-
|
|
109
|
+
|
|
113
110
|
def set_colour(self, obj, col):
|
|
114
111
|
item = self.FindWidgetItem(obj)
|
|
115
112
|
if item:
|
|
116
113
|
self.SetItemTextColour(item, col)
|
|
117
|
-
|
|
114
|
+
|
|
118
115
|
def watch(self, obj=None):
|
|
119
116
|
if obj is None:
|
|
120
117
|
item = self.Selection
|
|
121
118
|
if item:
|
|
122
|
-
obj = self.GetItemData(item)
|
|
123
|
-
|
|
124
|
-
if not isinstance(obj, wx.Window):
|
|
119
|
+
obj = self.GetItemData(item) # Restart
|
|
120
|
+
if not isinstance(obj, (wx.Window, type(None))):
|
|
125
121
|
wx.MessageBox("Cannot watch the widget.\n\n"
|
|
126
|
-
"- {!r} is not a wx.Object.".format(obj)
|
|
122
|
+
"- {!r} is not a wx.Object.".format(obj),
|
|
123
|
+
self.__module__)
|
|
127
124
|
return
|
|
128
125
|
self.SetObj(obj)
|
|
129
126
|
self.timer.Start(500)
|
|
130
|
-
|
|
127
|
+
|
|
131
128
|
def unwatch(self):
|
|
132
129
|
self.target = None
|
|
133
130
|
self.timer.Stop()
|
|
134
|
-
|
|
131
|
+
|
|
135
132
|
## --------------------------------
|
|
136
|
-
## Actions on tree items
|
|
133
|
+
## Actions on tree items.
|
|
137
134
|
## --------------------------------
|
|
138
|
-
|
|
135
|
+
|
|
139
136
|
def OnTimer(self, evt):
|
|
140
|
-
## wnd, pt = wx.FindWindowAtPointer()
|
|
137
|
+
## wnd, pt = wx.FindWindowAtPointer() # as HitTest
|
|
141
138
|
wnd = wx.Window.FindFocus()
|
|
142
139
|
if (wnd and wnd is not self.target
|
|
143
140
|
and wnd not in self._noWatchList):
|
|
144
141
|
self.SetObj(wnd)
|
|
145
142
|
evt.Skip()
|
|
146
|
-
|
|
143
|
+
|
|
147
144
|
def OnShow(self, evt):
|
|
148
145
|
if evt.IsShown():
|
|
149
146
|
if not self.built:
|
|
150
147
|
self.BuildTree(self.target)
|
|
151
148
|
self._noWatchList = [w for w in self._noWatchList if w]
|
|
152
149
|
evt.Skip()
|
|
153
|
-
|
|
154
|
-
def OnItemTooltip(self, evt):
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
obj = self.GetItemData(item)
|
|
158
|
-
evt.SetToolTip("id=0x{:X}".format(id(obj)))
|
|
150
|
+
|
|
151
|
+
def OnItemTooltip(self, evt): # <wx._core.TreeEvent>
|
|
152
|
+
obj = self.GetItemData(evt.Item)
|
|
153
|
+
evt.SetToolTip("id=0x{:X}".format(id(obj)))
|
|
159
154
|
evt.Skip()
|
|
160
|
-
|
|
161
|
-
def
|
|
162
|
-
|
|
163
|
-
if item: # and flags & (0x10 | 0x20 | 0x40 | 0x80):
|
|
164
|
-
self.SelectItem(item)
|
|
165
|
-
self.SetFocus()
|
|
155
|
+
|
|
156
|
+
def OnItemRightClick(self, evt): # <wx._core.TreeEvent>
|
|
157
|
+
self.SelectItem(evt.Item)
|
|
166
158
|
obj = self.target
|
|
167
159
|
Menu.Popup(self, [
|
|
168
160
|
(1, "&Dive into {!r}".format(typename(obj)), Icon('core'),
|
|
@@ -187,8 +179,8 @@ class Inspector(it.InspectionTree, CtrlInterface):
|
|
|
187
179
|
|
|
188
180
|
|
|
189
181
|
def miniIcon(key, size=(16,16)):
|
|
190
|
-
if key == 'ShowFilling':
|
|
191
|
-
|
|
182
|
+
# if key == 'ShowFilling':
|
|
183
|
+
# return wx.py.filling.images.getPyImage().Scale(16,16).ConvertToBitmap()
|
|
192
184
|
art = getattr(it, key)
|
|
193
185
|
return art.GetImage().Scale(*size).ConvertToBitmap()
|
|
194
186
|
|
|
@@ -207,6 +199,7 @@ def dumptree(self):
|
|
|
207
199
|
def dump(widget=None):
|
|
208
200
|
if not widget:
|
|
209
201
|
return [dump(w) for w in wx.GetTopLevelWindows()]
|
|
202
|
+
|
|
210
203
|
def _dump(w):
|
|
211
204
|
for obj in w.Children:
|
|
212
205
|
lc = list(_dump(obj))
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: mwxlib
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.8.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
|
|
7
7
|
Author-email: komoto@jeol.co.jp
|
|
8
8
|
License: MIT
|
|
9
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
10
9
|
Classifier: Programming Language :: Python :: 3
|
|
11
10
|
Classifier: Programming Language :: Python :: 3.8
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.9
|
|
@@ -16,11 +15,19 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
16
15
|
Classifier: Topic :: Scientific/Engineering :: Image Processing
|
|
17
16
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
18
17
|
Description-Content-Type: text/markdown
|
|
19
|
-
|
|
20
|
-
Requires-Dist: wxpython >=4.2.0
|
|
18
|
+
Requires-Dist: wxpython>=4.2.0
|
|
21
19
|
Requires-Dist: matplotlib
|
|
22
20
|
Requires-Dist: opencv-python
|
|
23
21
|
Requires-Dist: scipy
|
|
22
|
+
Dynamic: author
|
|
23
|
+
Dynamic: author-email
|
|
24
|
+
Dynamic: classifier
|
|
25
|
+
Dynamic: description
|
|
26
|
+
Dynamic: description-content-type
|
|
27
|
+
Dynamic: home-page
|
|
28
|
+
Dynamic: license
|
|
29
|
+
Dynamic: requires-dist
|
|
30
|
+
Dynamic: summary
|
|
24
31
|
|
|
25
32
|
# mwxlib
|
|
26
33
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
mwx/__init__.py,sha256=gfhefIJIV_RbXicmCLGsyX01thIZXwxQlzIH32lMtrc,715
|
|
2
|
+
mwx/bookshelf.py,sha256=CHZiXdCclqg3WcH-5KTDt1P7-SS0dxwdwcAczaD3F8w,8527
|
|
3
|
+
mwx/controls.py,sha256=oai3NAyGl0S7T6mlzPE2A28EW0CmlxjYTYrUB87T7I4,49960
|
|
4
|
+
mwx/framework.py,sha256=zC3eguEeUAAtjC31rm7aVwRusXFdTPTvuLvkb5tYXUM,77004
|
|
5
|
+
mwx/graphman.py,sha256=5o3aIqepgQTGwYLYl81Oe_sP1Kh6h05Ns_YlBBP5XGs,72270
|
|
6
|
+
mwx/images.py,sha256=Kkfy9QI_hMtwShSjUS4-ZpC_EkVuah_XhpBOR4wAKkM,49792
|
|
7
|
+
mwx/matplot2.py,sha256=HN3hXZJENtf6xrYswWlmI8O7YmpO_gnKmewKSKWsPLc,32822
|
|
8
|
+
mwx/matplot2g.py,sha256=0AD8JSOkhcQe08eyG68NXtjY4oENfeyaXm3ZlYNHq3g,66078
|
|
9
|
+
mwx/matplot2lg.py,sha256=w518ghVVU27eAMSYckf1KVHQylVW8gFLTCkJ-D4j-tw,27801
|
|
10
|
+
mwx/mgplt.py,sha256=wrBeK5neOi1tX9llKlKHhVVrSyoent7y6wIuW2fLZ5Y,5522
|
|
11
|
+
mwx/nutshell.py,sha256=J5DDxc29-bU2jYk86Raetf6HNM1703fGmcINRrwcb3w,146859
|
|
12
|
+
mwx/testsuite.py,sha256=pBB7ZNicI_thrg6LmNPgUOgfMWwRoAaYWN1nFy6t6S4,790
|
|
13
|
+
mwx/utilus.py,sha256=En_wVtSQxpBZ2PDKIwEKg3Nqti6unp9mi4m0h-FAmVs,40039
|
|
14
|
+
mwx/wxmon.py,sha256=TBAaLQGGGR8PCEofk7BVwaW_MBduQNXaNx3VnemNcao,12671
|
|
15
|
+
mwx/wxpdb.py,sha256=DZN2wq7__kXfxjKKM_pIv6WiWbMkheZmSVpVoHltsgU,18691
|
|
16
|
+
mwx/wxwil.py,sha256=uvSjm4WUAJyhGtKhQbKfXPJY93aVGmYsSkkRX2r0E0I,5385
|
|
17
|
+
mwx/wxwit.py,sha256=4pvOiZ2xQeQdhFipftbMu3PsUW1MTLkoD4YVZNfAOks,7168
|
|
18
|
+
mwx/plugins/__init__.py,sha256=jnJ-Sl9XJ_7BFDslD_r7dsbxsOT57q_IaEriV53XIGY,41
|
|
19
|
+
mwx/plugins/ffmpeg_view.py,sha256=sfRbM1UAO9AcalqOuYf1Mx26i0fIYP0lgkwz_6aIv_s,11040
|
|
20
|
+
mwx/plugins/fft_view.py,sha256=u2TMMM7rHlvvhU412fVUHcrGWslZcFL9y-iBbjIrhgQ,2728
|
|
21
|
+
mwx/plugins/frame_listview.py,sha256=cmVFmDzeVpIclhfxjQ4kDLURBR-RpVmI87j6mrtyQxU,10244
|
|
22
|
+
mwx/plugins/line_profile.py,sha256=zT9p22YCkxjGtoLwVDcfqW9M80Xn2qBEt096qq7N9QQ,815
|
|
23
|
+
mwx/py/__init__.py,sha256=xykgfOytOwNuvXsfkLoumFZSTN-iBsHOjczYXngjmUE,12
|
|
24
|
+
mwx/py/filling.py,sha256=B8SqgbSEDTN3kVkQe1jJWb3AnYSzanu_YKYBtUchGLA,16847
|
|
25
|
+
mwxlib-1.8.0.dist-info/METADATA,sha256=kz1qha1GWM_2xVADL6fxkHP2jAEXa77wqy3vsdDiVf8,7381
|
|
26
|
+
mwxlib-1.8.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
27
|
+
mwxlib-1.8.0.dist-info/top_level.txt,sha256=SI1Mh118AstnUFGPNq5aMNKiAnVNmZk1S9Ij-OwAEpY,4
|
|
28
|
+
mwxlib-1.8.0.dist-info/RECORD,,
|
mwxlib-1.0.0.dist-info/LICENSE
DELETED
|
@@ -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.
|
mwxlib-1.0.0.dist-info/RECORD
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
mwx/__init__.py,sha256=psabnAMei5VzB2TsB2qBNLrIZMX0LiqjlXCpNGmDejk,668
|
|
2
|
-
mwx/bookshelf.py,sha256=so-xSLq08sMlJBErTxOaDoKUAMa_g1CkIP2pNnff68c,5607
|
|
3
|
-
mwx/controls.py,sha256=LZqee9K8uPxs-Iqcp1zMMNBjFpGPrHbcMaIBuBOL7oo,47647
|
|
4
|
-
mwx/framework.py,sha256=vtufV2jjqdTr2CRhbJYY_NbJMtqft9uKCzZR12dfgk0,75809
|
|
5
|
-
mwx/graphman.py,sha256=1GGBk4kJYRQ7zkvO2rvHxHoINrIfHSB7cabQKWhTyaI,69669
|
|
6
|
-
mwx/images.py,sha256=oxCn0P-emiWujSS2gUgU5TUnr5cPjix2jBcjOBDr24I,48701
|
|
7
|
-
mwx/matplot2.py,sha256=zA56jIdRUdzu-wrmPai1PSOjzqV2Erqw2yFKW-jwdA8,32901
|
|
8
|
-
mwx/matplot2g.py,sha256=xQeHKHAZkLZ2tY-rlTXEIKue1Iw9Vo73l6z_3GSQVCQ,64422
|
|
9
|
-
mwx/matplot2lg.py,sha256=JRWjWnLJUytbSq6wxs4P0gbVUr3xoLSF6Wwqd5V_pJI,27404
|
|
10
|
-
mwx/mgplt.py,sha256=M5rt-H7Uq1OHnlFvMA4a3945UBvppbR9L_mw8NL_YZ0,5602
|
|
11
|
-
mwx/nutshell.py,sha256=pNGLBlVYz6D4LNjosCjXaopcITkQ2-qGVQ6zGmVJJYQ,141850
|
|
12
|
-
mwx/utilus.py,sha256=Yyw8L1f-ikhyd7wtFXYtsOswofWxmB4GAmLOZnhUXeU,37388
|
|
13
|
-
mwx/wxmon.py,sha256=yzWqrbY6LzpfRwQeytYUeqFhFuLVm_XEvrVAL_k0HBQ,12756
|
|
14
|
-
mwx/wxpdb.py,sha256=--TQr-_zs9dWPYV2V4s3Zr4abvN14o5wD8anT9frHUg,18875
|
|
15
|
-
mwx/wxwil.py,sha256=hhyB1lPrF9ixeObxCOKQv0Theu-B-kpJg_yVU3EGSNg,5406
|
|
16
|
-
mwx/wxwit.py,sha256=1hHtMi2YEy2T_LnUpwdmrIdtCuvxMOFyykqnbq6jLP0,7294
|
|
17
|
-
mwx/plugins/__init__.py,sha256=jnJ-Sl9XJ_7BFDslD_r7dsbxsOT57q_IaEriV53XIGY,41
|
|
18
|
-
mwx/plugins/ffmpeg_view.py,sha256=ZKkSLpyuzpVuRbaPib04rChzlwAifNp3pcgxABeqE4k,10693
|
|
19
|
-
mwx/plugins/fft_view.py,sha256=08A_Y73XirV7kXpwf-v0mUA0Hr0MOfdMXv3tvL1hvWA,2789
|
|
20
|
-
mwx/plugins/frame_listview.py,sha256=gowjQ-ARNonMkDSXkQgPKq4U9YBJ-vQ0jK2krBVOdCs,10420
|
|
21
|
-
mwx/plugins/line_profile.py,sha256=zzm6_7lnAnNepLbh07ordp3nRWDFQJtu719ZVjrVf8s,819
|
|
22
|
-
mwx/py/__init__.py,sha256=xykgfOytOwNuvXsfkLoumFZSTN-iBsHOjczYXngjmUE,12
|
|
23
|
-
mwx/py/filling.py,sha256=fumUG1F5M9TL-Dfqni4G85uk7TmvnUunTbdcPDV0vfo,16857
|
|
24
|
-
mwxlib-1.0.0.dist-info/LICENSE,sha256=PGtRKCaTkmUDlBQwpptJAxJtdqxIUtAmdBsaT9nUVkA,1091
|
|
25
|
-
mwxlib-1.0.0.dist-info/METADATA,sha256=IyWzRxDY-vYI_37c6GQ5WgZFAc93d5vfuqaGY8_s3dI,7259
|
|
26
|
-
mwxlib-1.0.0.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
|
|
27
|
-
mwxlib-1.0.0.dist-info/top_level.txt,sha256=SI1Mh118AstnUFGPNq5aMNKiAnVNmZk1S9Ij-OwAEpY,4
|
|
28
|
-
mwxlib-1.0.0.dist-info/RECORD,,
|
|
File without changes
|