not1mm 24.7.12__py3-none-any.whl → 24.7.19__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 CHANGED
@@ -39,7 +39,7 @@ except OSError as exception:
39
39
  print("portaudio is not installed")
40
40
  sd = None
41
41
  from PyQt6 import QtCore, QtGui, QtWidgets, uic
42
- from PyQt6.QtCore import QDir, Qt, QThread
42
+ from PyQt6.QtCore import QDir, Qt, QThread, QSettings
43
43
  from PyQt6.QtGui import QFontDatabase, QColorConstants, QPalette, QColor
44
44
  from PyQt6.QtWidgets import QFileDialog
45
45
 
@@ -120,10 +120,6 @@ class MainWindow(QtWidgets.QMainWindow):
120
120
  "cw_macros": True,
121
121
  "bands_modes": True,
122
122
  "bands": ["160", "80", "40", "20", "15", "10"],
123
- "window_height": 200,
124
- "window_width": 600,
125
- "window_x": 120,
126
- "window_y": 120,
127
123
  "current_database": "ham.db",
128
124
  "contest": "",
129
125
  "multicast_group": "239.1.1.1",
@@ -202,6 +198,14 @@ class MainWindow(QtWidgets.QMainWindow):
202
198
  def __init__(self, *args, **kwargs):
203
199
  super().__init__(*args, **kwargs)
204
200
  logger.info("MainWindow: __init__")
201
+
202
+ self.dock_loc = {
203
+ "Top": Qt.DockWidgetArea.TopDockWidgetArea,
204
+ "Right": Qt.DockWidgetArea.RightDockWidgetArea,
205
+ "Left": Qt.DockWidgetArea.LeftDockWidgetArea,
206
+ "Bottom": Qt.DockWidgetArea.BottomDockWidgetArea,
207
+ }
208
+
205
209
  self.setCorner(Qt.Corner.TopRightCorner, Qt.DockWidgetArea.RightDockWidgetArea)
206
210
  self.setCorner(
207
211
  Qt.Corner.BottomRightCorner, Qt.DockWidgetArea.RightDockWidgetArea
@@ -219,6 +223,7 @@ class MainWindow(QtWidgets.QMainWindow):
219
223
  self.mscp = SCP(fsutils.APP_DATA_PATH)
220
224
  self.next_field = self.other_2
221
225
  self.dupe_indicator.hide()
226
+
222
227
  self.cw_speed.valueChanged.connect(self.cwspeed_spinbox_changed)
223
228
 
224
229
  self.cw_entry.textChanged.connect(self.handle_text_change)
@@ -516,38 +521,47 @@ class MainWindow(QtWidgets.QMainWindow):
516
521
  if self.pref.get("contest"):
517
522
  self.load_contest()
518
523
  self.read_cw_macros()
524
+
525
+ self.log_window = LogWindow()
526
+ self.log_window.setObjectName("log-window")
527
+ self.addDockWidget(Qt.DockWidgetArea.TopDockWidgetArea, self.log_window)
528
+ self.log_window.hide()
529
+
530
+ self.bandmap_window = BandMapWindow()
531
+ self.bandmap_window.setObjectName("bandmap-window")
532
+ self.addDockWidget(Qt.DockWidgetArea.LeftDockWidgetArea, self.bandmap_window)
533
+ self.bandmap_window.hide()
534
+
535
+ self.check_window = CheckWindow()
536
+ self.check_window.setObjectName("check-window")
537
+ self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.check_window)
538
+ self.check_window.hide()
539
+
540
+ self.vfo_window = VfoWindow()
541
+ self.vfo_window.setObjectName("vfo-window")
542
+ self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.vfo_window)
543
+ self.vfo_window.hide()
544
+
545
+ self.settings = QSettings("K6GTE", "not1mm")
546
+ if self.settings.value("windowState") is not None:
547
+ self.restoreState(self.settings.value("windowState"))
548
+ if self.settings.value("geometry") is not None:
549
+ self.restoreGeometry(self.settings.value("geometry"))
550
+
519
551
  self.actionLog_Window.setChecked(self.pref.get("logwindow", False))
520
- if self.log_window:
521
- self.log_window.close()
522
552
  if self.actionLog_Window.isChecked():
523
- self.log_window = LogWindow()
524
- self.addDockWidget(Qt.DockWidgetArea.TopDockWidgetArea, self.log_window)
525
553
  self.log_window.show()
526
554
 
527
555
  self.actionBandmap.setChecked(self.pref.get("bandmapwindow", False))
528
- if self.bandmap_window:
529
- self.bandmap_window.close()
530
556
  if self.actionBandmap.isChecked():
531
- self.bandmap_window = BandMapWindow()
532
- self.addDockWidget(
533
- Qt.DockWidgetArea.LeftDockWidgetArea, self.bandmap_window
534
- )
535
557
  self.bandmap_window.show()
536
558
 
537
559
  self.actionCheck_Window.setChecked(self.pref.get("checkwindow", False))
538
- if self.check_window:
539
- self.check_window.close()
540
560
  if self.actionCheck_Window.isChecked():
541
- self.check_window = CheckWindow()
542
- self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.check_window)
543
561
  self.check_window.show()
544
562
 
545
563
  self.actionVFO.setChecked(self.pref.get("vfowindow", False))
546
- if self.vfo_window:
547
- self.vfo_window.close()
548
564
  if self.actionVFO.isChecked():
549
- self.vfo_window = VfoWindow()
550
- self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.vfo_window)
551
565
  self.vfo_window.show()
552
566
 
553
567
  if not DEBUG_ENABLED:
@@ -1424,47 +1438,37 @@ class MainWindow(QtWidgets.QMainWindow):
1424
1438
  """Launch the log window"""
1425
1439
  self.pref["logwindow"] = self.actionLog_Window.isChecked()
1426
1440
  self.write_preference()
1427
- if self.log_window:
1428
- self.log_window.close()
1429
1441
  if self.actionLog_Window.isChecked():
1430
- self.log_window = LogWindow()
1431
- self.addDockWidget(Qt.DockWidgetArea.TopDockWidgetArea, self.log_window)
1432
1442
  self.log_window.show()
1443
+ else:
1444
+ self.log_window.hide()
1433
1445
 
1434
1446
  def launch_bandmap_window(self) -> None:
1435
1447
  """Launch the bandmap window"""
1436
1448
  self.pref["bandmapwindow"] = self.actionBandmap.isChecked()
1437
1449
  self.write_preference()
1438
- if self.bandmap_window:
1439
- self.bandmap_window.close()
1440
1450
  if self.actionBandmap.isChecked():
1441
- self.bandmap_window = BandMapWindow()
1442
- self.addDockWidget(
1443
- Qt.DockWidgetArea.LeftDockWidgetArea, self.bandmap_window
1444
- )
1445
1451
  self.bandmap_window.show()
1452
+ else:
1453
+ self.bandmap_window.hide()
1446
1454
 
1447
1455
  def launch_check_window(self) -> None:
1448
1456
  """Launch the check window"""
1449
1457
  self.pref["checkwindow"] = self.actionCheck_Window.isChecked()
1450
1458
  self.write_preference()
1451
- if self.check_window:
1452
- self.check_window.close()
1453
1459
  if self.actionCheck_Window.isChecked():
1454
- self.check_window = CheckWindow()
1455
- self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.check_window)
1456
1460
  self.check_window.show()
1461
+ else:
1462
+ self.check_window.hide()
1457
1463
 
1458
1464
  def launch_vfo(self) -> None:
1459
1465
  """Launch the VFO window"""
1460
1466
  self.pref["vfowindow"] = self.actionVFO.isChecked()
1461
1467
  self.write_preference()
1462
- if self.vfo_window:
1463
- self.vfo_window.close()
1464
1468
  if self.actionVFO.isChecked():
1465
- self.vfo_window = VfoWindow()
1466
- self.addDockWidget(Qt.DockWidgetArea.RightDockWidgetArea, self.vfo_window)
1467
1469
  self.vfo_window.show()
1470
+ else:
1471
+ self.vfo_window.hide()
1468
1472
 
1469
1473
  def clear_band_indicators(self) -> None:
1470
1474
  """
@@ -1522,14 +1526,14 @@ class MainWindow(QtWidgets.QMainWindow):
1522
1526
  None
1523
1527
  """
1524
1528
 
1529
+ self.settings.setValue("geometry", self.saveGeometry())
1530
+ self.settings.setValue("windowState", self.saveState())
1531
+ self.settings.sync()
1532
+
1525
1533
  cmd = {}
1526
1534
  cmd["cmd"] = "HALT"
1527
1535
  cmd["station"] = platform.node()
1528
1536
  self.multicast_interface.send_as_json(cmd)
1529
- self.pref["window_width"] = self.size().width()
1530
- self.pref["window_height"] = self.size().height()
1531
- self.pref["window_x"] = self.pos().x()
1532
- self.pref["window_y"] = self.pos().y()
1533
1537
  self.write_preference()
1534
1538
 
1535
1539
  def cty_lookup(self, callsign: str) -> list:
@@ -2863,7 +2867,7 @@ class MainWindow(QtWidgets.QMainWindow):
2863
2867
  None
2864
2868
  """
2865
2869
 
2866
- if mode == "CW":
2870
+ if mode in ("CW", "CW-U", "CW-L"):
2867
2871
  self.setmode("CW")
2868
2872
  self.radio_state["mode"] = "CW"
2869
2873
  if self.rig_control:
@@ -3015,7 +3019,7 @@ class MainWindow(QtWidgets.QMainWindow):
3015
3019
 
3016
3020
  def setmode(self, mode: str) -> None:
3017
3021
  """Call when the mode changes."""
3018
- if mode == "CW":
3022
+ if mode in ("CW", "CW-U", "CW-L"):
3019
3023
  if self.current_mode != "CW":
3020
3024
  self.current_mode = "CW"
3021
3025
  self.sent.setText("599")
@@ -3032,7 +3036,7 @@ class MainWindow(QtWidgets.QMainWindow):
3032
3036
  self.receive.setText("59")
3033
3037
  self.read_cw_macros()
3034
3038
  return
3035
- if mode == "RTTY":
3039
+ if mode in ("RTTY", "DIGI-U", "DIGI-L"):
3036
3040
  if self.current_mode != "RTTY":
3037
3041
  self.current_mode = "RTTY"
3038
3042
  self.sent.setText("59")
@@ -3145,7 +3149,7 @@ class MainWindow(QtWidgets.QMainWindow):
3145
3149
  info_dirty = True
3146
3150
  self.radio_state["bw"] = bw
3147
3151
 
3148
- if mode == "CW":
3152
+ if mode in ("CW", "CW-U", "CW-L"):
3149
3153
  self.setmode(mode)
3150
3154
  if mode == "LSB" or mode == "USB":
3151
3155
  self.setmode("SSB")
@@ -3153,26 +3157,29 @@ class MainWindow(QtWidgets.QMainWindow):
3153
3157
  self.setmode("RTTY")
3154
3158
 
3155
3159
  if info_dirty:
3156
- logger.debug("VFO: %s MODE: %s BW: %s", vfo, mode, bw)
3157
- self.set_window_title()
3158
- cmd = {}
3159
- cmd["cmd"] = "RADIO_STATE"
3160
- cmd["station"] = platform.node()
3161
- cmd["band"] = band
3162
- cmd["vfoa"] = vfo
3163
- cmd["mode"] = mode
3164
- cmd["bw"] = bw
3165
- self.multicast_interface.send_as_json(cmd)
3166
- if self.n1mm:
3167
- if self.n1mm.send_radio_packets:
3168
- self.n1mm.radio_info["Freq"] = vfo[:-1]
3169
- self.n1mm.radio_info["TXFreq"] = vfo[:-1]
3170
- self.n1mm.radio_info["Mode"] = mode
3171
- self.n1mm.radio_info["OpCall"] = self.current_op
3172
- self.n1mm.radio_info["IsRunning"] = str(
3173
- self.pref.get("run_state", False)
3174
- )
3175
- self.n1mm.send_radio()
3160
+ try:
3161
+ logger.debug("VFO: %s MODE: %s BW: %s", vfo, mode, bw)
3162
+ self.set_window_title()
3163
+ cmd = {}
3164
+ cmd["cmd"] = "RADIO_STATE"
3165
+ cmd["station"] = platform.node()
3166
+ cmd["band"] = band
3167
+ cmd["vfoa"] = vfo
3168
+ cmd["mode"] = mode
3169
+ cmd["bw"] = bw
3170
+ self.multicast_interface.send_as_json(cmd)
3171
+ if self.n1mm:
3172
+ if self.n1mm.send_radio_packets:
3173
+ self.n1mm.radio_info["Freq"] = vfo[:-1]
3174
+ self.n1mm.radio_info["TXFreq"] = vfo[:-1]
3175
+ self.n1mm.radio_info["Mode"] = mode
3176
+ self.n1mm.radio_info["OpCall"] = self.current_op
3177
+ self.n1mm.radio_info["IsRunning"] = str(
3178
+ self.pref.get("run_state", False)
3179
+ )
3180
+ self.n1mm.send_radio()
3181
+ except TypeError as err:
3182
+ logger.debug(f"{err=} {vfo=} {the_dict=}")
3176
3183
 
3177
3184
  def edit_cw_macros(self) -> None:
3178
3185
  """
@@ -3396,11 +3403,11 @@ app = QtWidgets.QApplication(sys.argv)
3396
3403
  families = load_fonts_from_dir(os.fspath(fsutils.APP_DATA_PATH))
3397
3404
  logger.info(f"font families {families}")
3398
3405
  window = MainWindow()
3399
- height = window.pref.get("window_height", 300)
3400
- width = window.pref.get("window_width", 700)
3401
- x = window.pref.get("window_x", -1)
3402
- y = window.pref.get("window_y", -1)
3403
- window.setGeometry(x, y, width, height)
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)
3404
3411
  window.callsign.setFocus()
3405
3412
  window.show()
3406
3413
  # timer = QtCore.QTimer()
not1mm/data/main.ui CHANGED
@@ -9,8 +9,8 @@
9
9
  <rect>
10
10
  <x>0</x>
11
11
  <y>0</y>
12
- <width>878</width>
13
- <height>465</height>
12
+ <width>768</width>
13
+ <height>265</height>
14
14
  </rect>
15
15
  </property>
16
16
  <property name="sizePolicy">
@@ -138,6 +138,8 @@ class CAT:
138
138
  ConnectionRefusedError,
139
139
  xmlrpc.client.Fault,
140
140
  http.client.BadStatusLine,
141
+ http.client.CannotSendRequest,
142
+ http.client.ResponseNotReady,
141
143
  ) as exception:
142
144
  self.online = False
143
145
  logger.debug("getvfo_flrig: %s", f"{exception}")
@@ -177,6 +179,8 @@ class CAT:
177
179
  ConnectionRefusedError,
178
180
  xmlrpc.client.Fault,
179
181
  http.client.BadStatusLine,
182
+ http.client.CannotSendRequest,
183
+ http.client.ResponseNotReady,
180
184
  ) as exception:
181
185
  self.online = False
182
186
  logger.debug("%s", f"{exception}")
@@ -220,6 +224,8 @@ class CAT:
220
224
  ConnectionRefusedError,
221
225
  xmlrpc.client.Fault,
222
226
  http.client.BadStatusLine,
227
+ http.client.CannotSendRequest,
228
+ http.client.ResponseNotReady,
223
229
  ) as exception:
224
230
  self.online = False
225
231
  logger.debug("getbw_flrig: %s", f"{exception}")
@@ -261,6 +267,8 @@ class CAT:
261
267
  ConnectionRefusedError,
262
268
  xmlrpc.client.Fault,
263
269
  http.client.BadStatusLine,
270
+ http.client.CannotSendRequest,
271
+ http.client.ResponseNotReady,
264
272
  ) as exception:
265
273
  self.online = False
266
274
  logger.debug("getpower_flrig: %s", f"{exception}")
@@ -295,6 +303,8 @@ class CAT:
295
303
  ConnectionRefusedError,
296
304
  xmlrpc.client.Fault,
297
305
  http.client.BadStatusLine,
306
+ http.client.CannotSendRequest,
307
+ http.client.ResponseNotReady,
298
308
  ) as exception:
299
309
  self.online = False
300
310
  logger.debug("%s", f"{exception}")
@@ -318,10 +328,13 @@ class CAT:
318
328
 
319
329
  def set_vfo(self, freq: str) -> bool:
320
330
  """Sets the radios vfo"""
321
- if self.interface == "flrig":
322
- return self.__setvfo_flrig(freq)
323
- if self.interface == "rigctld":
324
- return self.__setvfo_rigctld(freq)
331
+ try:
332
+ if self.interface == "flrig":
333
+ return self.__setvfo_flrig(freq)
334
+ if self.interface == "rigctld":
335
+ return self.__setvfo_rigctld(freq)
336
+ except ValueError:
337
+ ...
325
338
  return False
326
339
 
327
340
  def __setvfo_flrig(self, freq: str) -> bool:
@@ -333,6 +346,8 @@ class CAT:
333
346
  ConnectionRefusedError,
334
347
  xmlrpc.client.Fault,
335
348
  http.client.BadStatusLine,
349
+ http.client.CannotSendRequest,
350
+ http.client.ResponseNotReady,
336
351
  ) as exception:
337
352
  self.online = False
338
353
  logger.debug("setvfo_flrig: %s", f"{exception}")
@@ -371,6 +386,8 @@ class CAT:
371
386
  ConnectionRefusedError,
372
387
  xmlrpc.client.Fault,
373
388
  http.client.BadStatusLine,
389
+ http.client.CannotSendRequest,
390
+ http.client.ResponseNotReady,
374
391
  ) as exception:
375
392
  self.online = False
376
393
  logger.debug("setmode_flrig: %s", f"{exception}")
@@ -408,6 +425,8 @@ class CAT:
408
425
  ConnectionRefusedError,
409
426
  xmlrpc.client.Fault,
410
427
  http.client.BadStatusLine,
428
+ http.client.CannotSendRequest,
429
+ http.client.ResponseNotReady,
411
430
  ) as exception:
412
431
  self.online = False
413
432
  logger.debug("setpower_flrig: %s", f"{exception}")
@@ -462,6 +481,8 @@ class CAT:
462
481
  ConnectionRefusedError,
463
482
  xmlrpc.client.Fault,
464
483
  http.client.BadStatusLine,
484
+ http.client.CannotSendRequest,
485
+ http.client.ResponseNotReady,
465
486
  ) as exception:
466
487
  self.online = False
467
488
  logger.debug("%s", f"{exception}")
@@ -496,6 +517,8 @@ class CAT:
496
517
  ConnectionRefusedError,
497
518
  xmlrpc.client.Fault,
498
519
  http.client.BadStatusLine,
520
+ http.client.CannotSendRequest,
521
+ http.client.ResponseNotReady,
499
522
  ) as exception:
500
523
  self.online = False
501
524
  logger.debug("%s", f"{exception}")
not1mm/lib/ham_utility.py CHANGED
@@ -242,7 +242,7 @@ def fakefreq(band: str, mode: str) -> str:
242
242
  "80": ["3530", "3559", "3970"],
243
243
  "60": ["5332", "5373", "5405"],
244
244
  "40": ["7030", "7040", "7250"],
245
- "30": ["10130", "10130", "0000"],
245
+ "30": ["10130", "10130", "10130"],
246
246
  "20": ["14030", "14070", "14250"],
247
247
  "17": ["18080", "18100", "18150"],
248
248
  "15": ["21065", "21070", "21200"],
not1mm/lib/version.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """It's the version"""
2
2
 
3
- __version__ = "24.7.12"
3
+ __version__ = "24.7.19"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.7.12
3
+ Version: 24.7.19
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,8 +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-6-27] Corrected ADIF contest_id for the Phone Weekly Test.
227
- - [24-6-1] Added leading zeros to S/N's less than 100.
226
+ - [24-7-19] Use Qt's QSettings to store window and dockwidgets states.
227
+ - [24-7-13] Trap Exceptions in flrig xmlrpc client.
228
228
 
229
229
  See [CHANGELOG.md](CHANGELOG.md) for prior changes.
230
230
 
@@ -1,5 +1,5 @@
1
1
  not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- not1mm/__main__.py,sha256=_TKcKM99SBbp_ut6Q8gjMHaDMOmHbN7i7fxFkTxQ4WE,120468
2
+ not1mm/__main__.py,sha256=yVBck7JN7jIc49RvxkHhMI9QphC85pLufOH7Uul738o,120573
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
@@ -29,7 +29,7 @@ not1mm/data/k6gte.not1mm-32.png,sha256=XdTsCa3xqwTfn26Ga7RwO_Vlbg_77RKkSc8bMxVcC
29
29
  not1mm/data/k6gte.not1mm-64.png,sha256=6ku45Gq1g5ezh04F07osoKRtanb3e4kbx5XdIEh3N90,2925
30
30
  not1mm/data/logwindow.ui,sha256=vfkNdzJgFs3tTOBKLDavF2zVMvNHWOZ82fAErRi6pQY,1436
31
31
  not1mm/data/logwindowx.ui,sha256=9FzDJtLRpagvAWcDjFdB9NnvNZ4bVxdTNHy1Jit2ido,1610
32
- not1mm/data/main.ui,sha256=l8SpMHLl7Nra3FCZVDQ9H33NUGs4_UY4ttN9omY3Zzw,56506
32
+ not1mm/data/main.ui,sha256=Y8F0gOqMTcsxBmc3QvWkJMxhYFpxUJQl-btGiM1-31w,56506
33
33
  not1mm/data/new_contest.ui,sha256=qP4v6el5mZrIuHUcIZXDkNviuGJk09ZtnpwpgxzQ6TY,21928
34
34
  not1mm/data/not1mm.html,sha256=c9-mfjMwDt4f5pySUruz2gREW33CQ2_rCddM2z5CZQo,23273
35
35
  not1mm/data/opon.ui,sha256=mC4OhoVIfR1H9IqHAKXliPMm8VOVmxSEadpsFQ7XnS4,2247
@@ -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=GP06hWIFrM_6hFQCJEq6QuNF8HaZn4UojIOlt_iWLDA,16042
94
+ not1mm/lib/cat_interface.py,sha256=NDlS4vdlH18oCgvXNjqFVymCAKJKyUNh6g1hmKwoV7k,16964
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
@@ -99,7 +99,7 @@ not1mm/lib/edit_macro.py,sha256=raKWBwsHInj5EUKmvyLQ6gqc3ZFDlstsD3xqoM4PC8E,517
99
99
  not1mm/lib/edit_opon.py,sha256=j3qJ1aBsQoIOnQ9yiBl3lyeISvKTP0I_rtBYBPAfgeI,359
100
100
  not1mm/lib/edit_station.py,sha256=doL21Hs6jzIE43ohAopdFt_iqnRJZHFcqzcnCS0-iio,1965
101
101
  not1mm/lib/ft8_watcher.py,sha256=ISfXjs-Mgbz_lE5SThEnFoCe8apNLElgSuECAMCH18I,4080
102
- not1mm/lib/ham_utility.py,sha256=pUrysod3wGk4BYOWDAKJxZZTiUNDE4ZzRk8S5ZnllNA,10978
102
+ not1mm/lib/ham_utility.py,sha256=rHYTHxeoMhpzmh_J6jEqCPJmVLpJbM2o4mbvydGLyvE,10979
103
103
  not1mm/lib/lookup.py,sha256=F2fl5QkMxaGSxl1XMWnLUub3T9Mt7LhCX4acOlAsks4,13952
104
104
  not1mm/lib/multicast.py,sha256=bnFUNHyy82GmIb3_88EPBVVssj7-HzkJPaH671cK8Qw,3249
105
105
  not1mm/lib/n1mm.py,sha256=H54mpgJF0GAmKavM-nb5OAq2SJFWYkux4eMWWiSRxJc,6288
@@ -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=GU472NlfU4i1_wp9gzGVF_EUTCzxGbutRBhtobYOBUM,48
112
+ not1mm/lib/version.py,sha256=X7UsWTkmHNoMFl40ndtGBSQuMBMqWBxeRhSrC6sjElw,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
@@ -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.12.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
149
- not1mm-24.7.12.dist-info/METADATA,sha256=-XcWXP18GZTwcOb-VHquXOxgK1sfvIFx12-UdFhz4TY,29183
150
- not1mm-24.7.12.dist-info/WHEEL,sha256=Z4pYXqR_rTB7OWNDYFOm1qRk0RX6GFP2o8LgvP453Hk,91
151
- not1mm-24.7.12.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
152
- not1mm-24.7.12.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
153
- not1mm-24.7.12.dist-info/RECORD,,
148
+ not1mm-24.7.19.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
149
+ not1mm-24.7.19.dist-info/METADATA,sha256=EdsnUz2o1LrulLIrNHTDLohqKB56-4s8S5VNWk5bWDw,29186
150
+ not1mm-24.7.19.dist-info/WHEEL,sha256=rWxmBtp7hEUqVLOnTaDOPpR-cZpCDkzhhcBce-Zyd5k,91
151
+ not1mm-24.7.19.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
152
+ not1mm-24.7.19.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
153
+ not1mm-24.7.19.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (70.3.0)
2
+ Generator: setuptools (71.0.4)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5