not1mm 24.7.25__py3-none-any.whl → 24.7.28__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.
- not1mm/__main__.py +19 -11
- not1mm/lib/cat_interface.py +20 -4
- not1mm/lib/version.py +1 -1
- not1mm/plugins/arrl_field_day.py +47 -0
- not1mm/vfo.py +21 -4
- {not1mm-24.7.25.dist-info → not1mm-24.7.28.dist-info}/METADATA +3 -1
- {not1mm-24.7.25.dist-info → not1mm-24.7.28.dist-info}/RECORD +11 -11
- {not1mm-24.7.25.dist-info → not1mm-24.7.28.dist-info}/WHEEL +1 -1
- {not1mm-24.7.25.dist-info → not1mm-24.7.28.dist-info}/LICENSE +0 -0
- {not1mm-24.7.25.dist-info → not1mm-24.7.28.dist-info}/entry_points.txt +0 -0
- {not1mm-24.7.25.dist-info → not1mm-24.7.28.dist-info}/top_level.txt +0 -0
not1mm/__main__.py
CHANGED
@@ -1264,6 +1264,12 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1264
1264
|
else:
|
1265
1265
|
self.cw_speed.hide()
|
1266
1266
|
|
1267
|
+
if hasattr(self.contest, "ft8_handler"):
|
1268
|
+
self.contest.set_self(self)
|
1269
|
+
self.ft8.set_callback(self.contest.ft8_handler)
|
1270
|
+
else:
|
1271
|
+
self.ft8.set_callback(None)
|
1272
|
+
|
1267
1273
|
self.clearinputs()
|
1268
1274
|
cmd = {}
|
1269
1275
|
cmd["cmd"] = "NEWDB"
|
@@ -1655,6 +1661,12 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
1655
1661
|
if self.cw.servertype == 1:
|
1656
1662
|
self.cw.sendcw("\x1b4")
|
1657
1663
|
return
|
1664
|
+
if self.rig_control:
|
1665
|
+
if self.rig_control.online:
|
1666
|
+
if self.pref.get("cwtype") == 3 and self.rig_control is not None:
|
1667
|
+
if self.rig_control.interface == "flrig":
|
1668
|
+
self.rig_control.cat.set_flrig_cw_send(False)
|
1669
|
+
self.rig_control.cat.set_flrig_cw_send(True)
|
1658
1670
|
if event.key() == Qt.Key.Key_Up:
|
1659
1671
|
cmd = {}
|
1660
1672
|
cmd["cmd"] = "PREVSPOT"
|
@@ -2867,12 +2879,15 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
2867
2879
|
None
|
2868
2880
|
"""
|
2869
2881
|
|
2870
|
-
if mode in ("CW", "CW-U", "CW-L"):
|
2882
|
+
if mode in ("CW", "CW-U", "CW-L", "CWR"):
|
2871
2883
|
self.setmode("CW")
|
2872
2884
|
self.radio_state["mode"] = "CW"
|
2873
2885
|
if self.rig_control:
|
2874
2886
|
if self.rig_control.online:
|
2875
2887
|
self.rig_control.set_mode("CW")
|
2888
|
+
if self.pref.get("cwtype") == 3 and self.rig_control is not None:
|
2889
|
+
if self.rig_control.interface == "flrig":
|
2890
|
+
self.rig_control.cat.set_flrig_cw_send(True)
|
2876
2891
|
band = getband(str(self.radio_state.get("vfoa", "0.0")))
|
2877
2892
|
self.set_band_indicator(band)
|
2878
2893
|
self.set_window_title()
|
@@ -3019,7 +3034,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3019
3034
|
|
3020
3035
|
def setmode(self, mode: str) -> None:
|
3021
3036
|
"""Call when the mode changes."""
|
3022
|
-
if mode in ("CW", "CW-U", "CW-L"):
|
3037
|
+
if mode in ("CW", "CW-U", "CW-L", "CWR"):
|
3023
3038
|
if self.current_mode != "CW":
|
3024
3039
|
self.current_mode = "CW"
|
3025
3040
|
self.sent.setText("599")
|
@@ -3149,7 +3164,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|
3149
3164
|
info_dirty = True
|
3150
3165
|
self.radio_state["bw"] = bw
|
3151
3166
|
|
3152
|
-
if mode in ("CW", "CW-U", "CW-L"):
|
3167
|
+
if mode in ("CW", "CW-U", "CW-L", "CWR"):
|
3153
3168
|
self.setmode(mode)
|
3154
3169
|
if mode == "LSB" or mode == "USB":
|
3155
3170
|
self.setmode("SSB")
|
@@ -3379,7 +3394,6 @@ def run() -> None:
|
|
3379
3394
|
f"Resolved OS file system paths: MODULE_PATH {fsutils.MODULE_PATH}, USER_DATA_PATH {fsutils.USER_DATA_PATH}, CONFIG_PATH {fsutils.CONFIG_PATH}"
|
3380
3395
|
)
|
3381
3396
|
install_icons()
|
3382
|
-
# timer.start(250)
|
3383
3397
|
sys.exit(app.exec())
|
3384
3398
|
|
3385
3399
|
|
@@ -3403,15 +3417,9 @@ app = QtWidgets.QApplication(sys.argv)
|
|
3403
3417
|
families = load_fonts_from_dir(os.fspath(fsutils.APP_DATA_PATH))
|
3404
3418
|
logger.info(f"font families {families}")
|
3405
3419
|
window = MainWindow()
|
3406
|
-
# height = window.pref.get("window_height", 300)
|
3407
|
-
# width = window.pref.get("window_width", 700)
|
3408
|
-
# x = window.pref.get("window_x", -1)
|
3409
|
-
# y = window.pref.get("window_y", -1)
|
3410
|
-
# window.setGeometry(x, y, width, height)
|
3411
3420
|
window.callsign.setFocus()
|
3412
3421
|
window.show()
|
3413
|
-
|
3414
|
-
# timer.timeout.connect(window.poll_radio)
|
3422
|
+
|
3415
3423
|
|
3416
3424
|
if __name__ == "__main__":
|
3417
3425
|
run()
|
not1mm/lib/cat_interface.py
CHANGED
@@ -131,10 +131,9 @@ class CAT:
|
|
131
131
|
|
132
132
|
def sendcwxmlrpc(self, texttosend):
|
133
133
|
"""..."""
|
134
|
-
|
134
|
+
logger.debug(f"{texttosend=}")
|
135
135
|
try:
|
136
136
|
self.online = True
|
137
|
-
self.server.rig.cwio_send(1)
|
138
137
|
self.server.rig.cwio_text(texttosend)
|
139
138
|
return
|
140
139
|
except (
|
@@ -145,10 +144,27 @@ class CAT:
|
|
145
144
|
http.client.ResponseNotReady,
|
146
145
|
) as exception:
|
147
146
|
self.online = False
|
148
|
-
|
149
|
-
# logger.debug("sendcwxmlrpc: %s", f"{exception}")
|
147
|
+
logger.debug("%s", f"{exception}")
|
150
148
|
return False
|
151
149
|
|
150
|
+
def set_flrig_cw_send(self, send: bool):
|
151
|
+
"""..."""
|
152
|
+
if self.interface == "rigctld":
|
153
|
+
return
|
154
|
+
try:
|
155
|
+
self.online = True
|
156
|
+
self.server.rig.cwio_send(int(send))
|
157
|
+
except (
|
158
|
+
ConnectionRefusedError,
|
159
|
+
xmlrpc.client.Fault,
|
160
|
+
http.client.BadStatusLine,
|
161
|
+
http.client.CannotSendRequest,
|
162
|
+
http.client.ResponseNotReady,
|
163
|
+
ValueError,
|
164
|
+
) as exception:
|
165
|
+
self.online = False
|
166
|
+
logger.debug("%s", f"{exception}")
|
167
|
+
|
152
168
|
def get_vfo(self) -> str:
|
153
169
|
"""Poll the radio for current vfo using the interface"""
|
154
170
|
vfo = ""
|
not1mm/lib/version.py
CHANGED
not1mm/plugins/arrl_field_day.py
CHANGED
@@ -13,6 +13,8 @@ from not1mm.lib.version import __version__
|
|
13
13
|
|
14
14
|
logger = logging.getLogger(__name__)
|
15
15
|
|
16
|
+
ALTEREGO = None
|
17
|
+
|
16
18
|
EXCHANGE_HINT = "1D ORG"
|
17
19
|
|
18
20
|
name = "ARRL Field Day"
|
@@ -319,3 +321,48 @@ def cabrillo(self):
|
|
319
321
|
|
320
322
|
def recalculate_mults(self):
|
321
323
|
"""Recalculates multipliers after change in logged qso."""
|
324
|
+
|
325
|
+
|
326
|
+
def set_self(the_outie):
|
327
|
+
"""..."""
|
328
|
+
globals()["ALTEREGO"] = the_outie
|
329
|
+
|
330
|
+
|
331
|
+
def ft8_handler(the_packet: dict):
|
332
|
+
"""Process FT8 QSO packets
|
333
|
+
|
334
|
+
{
|
335
|
+
'CALL': 'KE0OG',
|
336
|
+
'GRIDSQUARE': 'DM10AT',
|
337
|
+
'MODE': 'FT8',
|
338
|
+
'RST_SENT': '',
|
339
|
+
'RST_RCVD': '',
|
340
|
+
'QSO_DATE': '20210329',
|
341
|
+
'TIME_ON': '183213',
|
342
|
+
'QSO_DATE_OFF': '20210329',
|
343
|
+
'TIME_OFF': '183213',
|
344
|
+
'BAND': '20M',
|
345
|
+
'FREQ': '14.074754',
|
346
|
+
'STATION_CALLSIGN': 'K6GTE',
|
347
|
+
'MY_GRIDSQUARE': 'DM13AT',
|
348
|
+
'CONTEST_ID': 'ARRL-FIELD-DAY',
|
349
|
+
'SRX_STRING': '1D UT',
|
350
|
+
'CLASS': '1D',
|
351
|
+
'ARRL_SECT': 'UT'
|
352
|
+
}
|
353
|
+
|
354
|
+
"""
|
355
|
+
print(f"{the_packet=}")
|
356
|
+
|
357
|
+
if ALTEREGO is not None:
|
358
|
+
|
359
|
+
ALTEREGO.callsign.setText(the_packet.get("CALL"))
|
360
|
+
ALTEREGO.contact["Call"] = the_packet.get("CALL", "")
|
361
|
+
ALTEREGO.contact["SNT"] = ALTEREGO.sent.text()
|
362
|
+
ALTEREGO.contact["RCV"] = ALTEREGO.receive.text()
|
363
|
+
ALTEREGO.contact["Exchange1"] = the_packet.get("CLASS", "ERR")
|
364
|
+
ALTEREGO.contact["Sect"] = the_packet.get("ARRL_SECT", "ERR")
|
365
|
+
ALTEREGO.contact["Mode"] = "FT8"
|
366
|
+
ALTEREGO.other_1.setText(the_packet.get("CLASS", "ERR"))
|
367
|
+
ALTEREGO.other_2.setText(the_packet.get("ARRL_SECT", "ERR"))
|
368
|
+
print(f"\n{ALTEREGO.contact=}\n")
|
not1mm/vfo.py
CHANGED
@@ -39,6 +39,7 @@ class VfoWindow(QDockWidget):
|
|
39
39
|
message_shown = False
|
40
40
|
multicast_interface = None
|
41
41
|
current_palette = None
|
42
|
+
device_reconnect = False
|
42
43
|
|
43
44
|
def __init__(self):
|
44
45
|
super().__init__()
|
@@ -64,6 +65,7 @@ class VfoWindow(QDockWidget):
|
|
64
65
|
self.poll_rig_timer = QtCore.QTimer()
|
65
66
|
self.poll_rig_timer.timeout.connect(self.poll_radio)
|
66
67
|
self.poll_rig_timer.start(500)
|
68
|
+
self.visibilityChanged.connect(self.window_state_changed)
|
67
69
|
|
68
70
|
def setDarkMode(self, dark: bool) -> None:
|
69
71
|
"""Forces a darkmode palette."""
|
@@ -178,27 +180,37 @@ class VfoWindow(QDockWidget):
|
|
178
180
|
if "vfoknob" in data.decode().strip():
|
179
181
|
return device
|
180
182
|
|
181
|
-
def
|
183
|
+
def window_state_changed(self):
|
184
|
+
"""Setup vfo knob if window is toggled on"""
|
185
|
+
|
186
|
+
if self.isVisible():
|
187
|
+
self.setup_serial()
|
188
|
+
|
189
|
+
def setup_serial(self, supress_msg=False) -> None:
|
182
190
|
"""
|
183
191
|
Setup the device returned by discover_device()
|
184
192
|
Or display message saying we didn't find one.
|
185
193
|
"""
|
186
194
|
|
195
|
+
if not self.isVisible():
|
196
|
+
return
|
197
|
+
|
187
198
|
device = self.discover_device()
|
188
199
|
if device:
|
189
200
|
try:
|
190
201
|
self.pico = serial.Serial("/dev/serial/by-id/" + device, 115200)
|
191
202
|
self.pico.timeout = 100
|
192
203
|
self.lcdNumber.setStyleSheet("QLCDNumber { color: white; }")
|
204
|
+
self.device_reconnect = True
|
193
205
|
except OSError:
|
194
|
-
if self.message_shown is False:
|
206
|
+
if self.message_shown is False and supress_msg is False:
|
195
207
|
self.message_shown = True
|
196
208
|
self.show_message_box(
|
197
209
|
"Unable to locate or open the VFO knob serial device."
|
198
210
|
)
|
199
211
|
self.lcdNumber.setStyleSheet("QLCDNumber { color: red; }")
|
200
212
|
else:
|
201
|
-
if self.message_shown is False:
|
213
|
+
if self.message_shown is False and supress_msg is False:
|
202
214
|
self.message_shown = True
|
203
215
|
self.show_message_box(
|
204
216
|
"Unable to locate or open the VFO knob serial device."
|
@@ -269,13 +281,14 @@ class VfoWindow(QDockWidget):
|
|
269
281
|
return
|
270
282
|
if vfo < 1700000 or vfo > 60000000:
|
271
283
|
return
|
272
|
-
if vfo != self.old_vfo:
|
284
|
+
if vfo != self.old_vfo or self.device_reconnect is True:
|
273
285
|
self.old_vfo = vfo
|
274
286
|
logger.debug(f"{vfo}")
|
275
287
|
self.showNumber(vfo)
|
276
288
|
# self.lcdNumber.display(dnum)
|
277
289
|
# app.processEvents()
|
278
290
|
cmd = f"F {vfo}\r"
|
291
|
+
self.device_reconnect = False
|
279
292
|
try:
|
280
293
|
if self.pico:
|
281
294
|
self.pico.write(cmd.encode())
|
@@ -302,10 +315,14 @@ class VfoWindow(QDockWidget):
|
|
302
315
|
self.showNumber(result)
|
303
316
|
# self.lcdNumber.display(result)
|
304
317
|
# app.processEvents()
|
318
|
+
else:
|
319
|
+
self.setup_serial(supress_msg=True)
|
305
320
|
except OSError:
|
306
321
|
logger.critical("Unable to write to serial device.")
|
322
|
+
self.pico = None
|
307
323
|
except AttributeError:
|
308
324
|
logger.critical("Unable to write to serial device.")
|
325
|
+
self.pico = None
|
309
326
|
# app.processEvents()
|
310
327
|
|
311
328
|
def show_message_box(self, message: str) -> None:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: not1mm
|
3
|
-
Version: 24.7.
|
3
|
+
Version: 24.7.28
|
4
4
|
Summary: NOT1MM Logger
|
5
5
|
Author-email: Michael Bridak <michael.bridak@gmail.com>
|
6
6
|
Project-URL: Homepage, https://github.com/mbridak/not1mm
|
@@ -223,6 +223,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
223
223
|
|
224
224
|
## Recent Changes
|
225
225
|
|
226
|
+
- [24-7-28] Second try at flrig CW.
|
227
|
+
- [24-7-25-1] Have VFO dock widget handle disconnect/reconnect events of the USB VFO knob more gracefully.
|
226
228
|
- [24-7-25] Updated application categories for the desktop file.
|
227
229
|
- [24-7-25] Maybe let flrig send CW... Probably not.
|
228
230
|
- [24-7-19] Use Qt's QSettings to store window and dockwidgets states.
|
@@ -1,12 +1,12 @@
|
|
1
1
|
not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
not1mm/__main__.py,sha256=
|
2
|
+
not1mm/__main__.py,sha256=3I8eJQEfM6RHZnJmXwK_VtdU1ZPcSNPlvtgziQuzGf4,121134
|
3
3
|
not1mm/bandmap.py,sha256=Ml5DDoybk_I56q2WLYDKE4lfmh6pb9XxW0qpl5nDFYY,32161
|
4
4
|
not1mm/checkwindow.py,sha256=zHxkCQ4BJ-pN80dSTQdiKq8RqY4oWzJveXZhQ2bu3PY,10436
|
5
5
|
not1mm/fsutils.py,sha256=ukHKxKTeNKxKwqRaJjtzRShL4X5Xl0jRBbADyy3Ifp8,1701
|
6
6
|
not1mm/logwindow.py,sha256=pwhiwolmGnW01LF4sjlu3ywLsgfxL6KuGuKuYKYmgeY,44403
|
7
7
|
not1mm/playsoundtest.py,sha256=_kvvOfgs-u-H4kVSiSlnDtn9HWv0RiJQybkv24CEngc,464
|
8
8
|
not1mm/radio.py,sha256=eiB04LPMPBeMrBRI021Z7VXth66EOYb0Ujh11T9877c,3362
|
9
|
-
not1mm/vfo.py,sha256=
|
9
|
+
not1mm/vfo.py,sha256=ZJYJHMUrvAWX_c4xXDOuxkbE9sFuF8THoqJXaz0e_AU,12663
|
10
10
|
not1mm/voice_keying.py,sha256=fkexCCwWcZsXxYVAk0QGcpGbLjbS10ToxWtdKihIVM4,3152
|
11
11
|
not1mm/data/JetBrainsMono-Regular.ttf,sha256=UOHctAKY_PzCGh7zy-6f6egnCcSK0wzmF0csBqO9lDY,203952
|
12
12
|
not1mm/data/MASTER.SCP,sha256=CEjRJNnjBZJlhCi3UFS1qCVMjDqQwhlfk0yZ_os6myI,366153
|
@@ -91,7 +91,7 @@ not1mm/data/phonetics/yourcall.wav,sha256=4kheHJmCiRDL2kjhlgXQ8_u_eEMgKxiNGu5UBk
|
|
91
91
|
not1mm/data/phonetics/z.wav,sha256=arafCi7fwmBLdVDI-PRyaL4U-03PIQDhffwY5noJ_2c,51768
|
92
92
|
not1mm/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
93
93
|
not1mm/lib/about.py,sha256=sWycfGcruN3SaEe4JmaJ61K6D8Itq0WxpUYT-lEcmYM,416
|
94
|
-
not1mm/lib/cat_interface.py,sha256
|
94
|
+
not1mm/lib/cat_interface.py,sha256=2Tzez8wO9ZATjheWkHRWTMi2jkt40W6tT7BNBbjVzuI,18839
|
95
95
|
not1mm/lib/cwinterface.py,sha256=Q8p3pScOHczZ8ptICfH1Yu6rCEwQJLgrNwYMN76B2i8,3389
|
96
96
|
not1mm/lib/database.py,sha256=RQoj3JsTejMiiFIN42lY3N4jrj80htftdoFeRqVKnKs,42480
|
97
97
|
not1mm/lib/edit_contact.py,sha256=Ki9bGPpqyQQBB1cU8VIBDCal3lbXeQ6qxhzklmhE2_w,353
|
@@ -109,7 +109,7 @@ not1mm/lib/plugin_common.py,sha256=AAKBPCXzTWZJb-h08uPNnHVG7bSCg7kwukc211gFivY,8
|
|
109
109
|
not1mm/lib/select_contest.py,sha256=WsptLuwkouIHeocJL3oZ6-eUfEnhpwdc-x7eMZ_TIVM,359
|
110
110
|
not1mm/lib/settings.py,sha256=MWiKXbasaFbzeHTjfzTaTqbCBrIijudP_-0a5jNmUAA,9265
|
111
111
|
not1mm/lib/super_check_partial.py,sha256=p5l3u2ZOCBtlWgbvskC50FpuoaIpR07tfC6zTdRWbh4,2334
|
112
|
-
not1mm/lib/version.py,sha256=
|
112
|
+
not1mm/lib/version.py,sha256=b0kTxuIhWdsBX0VMhy3fn3YyF3XFCxs03DFSvGpgZjU,48
|
113
113
|
not1mm/lib/versiontest.py,sha256=8vDNptuBBunn-1IGkjNaquehqBYUJyjrPSF8Igmd4_Y,1286
|
114
114
|
not1mm/plugins/10_10_fall_cw.py,sha256=IttjX1yy4nDdACGsiYlPteFG8eVseX_WtoFio6bqHE8,10953
|
115
115
|
not1mm/plugins/10_10_spring_cw.py,sha256=ThCptdM3dX4ywhoy2JRcOEyHSqcJolFaT7O_PYzM1Mg,10958
|
@@ -119,7 +119,7 @@ not1mm/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
119
119
|
not1mm/plugins/arrl_10m.py,sha256=EyNRb3Sm0Qb-GVm0p05EnadlHisVh7y-sKTBP2ddMLo,13768
|
120
120
|
not1mm/plugins/arrl_dx_cw.py,sha256=LVnYDNFEUiIpQ1TlhOCcRK7JNwH5XPO5WzUoApSUMTY,13802
|
121
121
|
not1mm/plugins/arrl_dx_ssb.py,sha256=fUFzuNbCAfA5sQSYm8ISV3P9Z_2xnuKeOdO6E66zn1k,13805
|
122
|
-
not1mm/plugins/arrl_field_day.py,sha256=
|
122
|
+
not1mm/plugins/arrl_field_day.py,sha256=bMBrww0-zBnkrLY3JsG1tXumeWGDWgLi1QZiPtriFqE,11387
|
123
123
|
not1mm/plugins/arrl_rtty_ru.py,sha256=hKUS4isjdXo3EYxQrsqsDupPp2chW8fpoWj0T1pTgJ4,7994
|
124
124
|
not1mm/plugins/arrl_ss_cw.py,sha256=4yN68xZMuJRaSUfdiY4hafC07A3lifl5q6DEUZ-oYPQ,13080
|
125
125
|
not1mm/plugins/arrl_ss_phone.py,sha256=Yzc5sNjrY8TlnozbYF6k8hbEamyDuUAD_3-BNqHgXqY,13068
|
@@ -145,9 +145,9 @@ not1mm/plugins/naqp_ssb.py,sha256=VLWVrSzI0UP1AhSXYn61eZ7or1rz6a_pS_xCKfgS4Jw,11
|
|
145
145
|
not1mm/plugins/phone_weekly_test.py,sha256=fLpMe03WB9_KgRl6vMgQQt_aktFdqfNt2Sw81CTRAUs,12325
|
146
146
|
not1mm/plugins/stew_perry_topband.py,sha256=CKBQbYl4ETxhXJd2dma4fg_C5pag_s7Nf61SCztZtqE,10668
|
147
147
|
not1mm/plugins/winter_field_day.py,sha256=4rcfRtobwjHO6BNL3WOTHzBmyyeuX79BNGBG8PfjrI8,10238
|
148
|
-
not1mm-24.7.
|
149
|
-
not1mm-24.7.
|
150
|
-
not1mm-24.7.
|
151
|
-
not1mm-24.7.
|
152
|
-
not1mm-24.7.
|
153
|
-
not1mm-24.7.
|
148
|
+
not1mm-24.7.28.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
149
|
+
not1mm-24.7.28.dist-info/METADATA,sha256=KLA7jJ_PK9Xk5W2b7U2UO451JFnOznjizaMPmMTdsDA,29447
|
150
|
+
not1mm-24.7.28.dist-info/WHEEL,sha256=Rp8gFpivVLXx-k3U95ozHnQw8yDcPxmhOpn_Gx8d5nc,91
|
151
|
+
not1mm-24.7.28.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
|
152
|
+
not1mm-24.7.28.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
|
153
|
+
not1mm-24.7.28.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|