not1mm 24.10.6__py3-none-any.whl → 24.10.10__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 +94 -18
- not1mm/data/configuration.ui +585 -0
- not1mm/lib/settings.py +89 -5
- not1mm/lib/version.py +1 -1
- not1mm/plugins/cq_ww_cw.py +108 -0
- {not1mm-24.10.6.dist-info → not1mm-24.10.10.dist-info}/METADATA +63 -2
- {not1mm-24.10.6.dist-info → not1mm-24.10.10.dist-info}/RECORD +11 -12
- {not1mm-24.10.6.dist-info → not1mm-24.10.10.dist-info}/top_level.txt +0 -1
- test/contests.py +0 -591
- {not1mm-24.10.6.dist-info → not1mm-24.10.10.dist-info}/LICENSE +0 -0
- {not1mm-24.10.6.dist-info → not1mm-24.10.10.dist-info}/WHEEL +0 -0
- {not1mm-24.10.6.dist-info → not1mm-24.10.10.dist-info}/entry_points.txt +0 -0
not1mm/lib/settings.py
CHANGED
@@ -20,6 +20,15 @@ class Settings(QtWidgets.QDialog):
|
|
20
20
|
self.logger = logging.getLogger("settings")
|
21
21
|
uic.loadUi(app_data_path / "configuration.ui", self)
|
22
22
|
self.buttonBox.accepted.connect(self.save_changes)
|
23
|
+
self.usecwdaemon_radioButton.clicked.connect(self.set_cwdaemon_port_hint)
|
24
|
+
self.usepywinkeyer_radioButton.clicked.connect(self.set_winkeyer_port_hint)
|
25
|
+
self.usecwviacat_radioButton.clicked.connect(self.set_catforcw_port_hint)
|
26
|
+
self.cwport_field.setToolTip(
|
27
|
+
"Usually 6789 for cwdaemon and 8000 for pywinkeyer."
|
28
|
+
)
|
29
|
+
self.rigcontrolport_field.setToolTip(
|
30
|
+
"Usually 4532 for rigctld and 12345 for flrig."
|
31
|
+
)
|
23
32
|
self.preference = pref
|
24
33
|
if sd:
|
25
34
|
self.devices = sd.query_devices()
|
@@ -29,6 +38,44 @@ class Settings(QtWidgets.QDialog):
|
|
29
38
|
|
30
39
|
def setup(self):
|
31
40
|
"""setup dialog"""
|
41
|
+
|
42
|
+
self.use_esm.setChecked(bool(self.preference.get("use_esm")))
|
43
|
+
|
44
|
+
value = self.preference.get("esm_agn", "DISABLED")
|
45
|
+
index = self.esm_agn.findText(value)
|
46
|
+
if index != -1:
|
47
|
+
self.esm_agn.setCurrentIndex(index)
|
48
|
+
|
49
|
+
value = self.preference.get("esm_cq", "DISABLED")
|
50
|
+
index = self.esm_cq.findText(value)
|
51
|
+
if index != -1:
|
52
|
+
self.esm_cq.setCurrentIndex(index)
|
53
|
+
|
54
|
+
value = self.preference.get("esm_exch", "DISABLED")
|
55
|
+
index = self.esm_exch.findText(value)
|
56
|
+
if index != -1:
|
57
|
+
self.esm_exch.setCurrentIndex(index)
|
58
|
+
|
59
|
+
value = self.preference.get("esm_hiscall", "DISABLED")
|
60
|
+
index = self.esm_hiscall.findText(value)
|
61
|
+
if index != -1:
|
62
|
+
self.esm_hiscall.setCurrentIndex(index)
|
63
|
+
|
64
|
+
value = self.preference.get("esm_mycall", "DISABLED")
|
65
|
+
index = self.esm_mycall.findText(value)
|
66
|
+
if index != -1:
|
67
|
+
self.esm_mycall.setCurrentIndex(index)
|
68
|
+
|
69
|
+
value = self.preference.get("esm_qrz", "DISABLED")
|
70
|
+
index = self.esm_qrz.findText(value)
|
71
|
+
if index != -1:
|
72
|
+
self.esm_qrz.setCurrentIndex(index)
|
73
|
+
|
74
|
+
value = self.preference.get("esm_qsob4", "DISABLED")
|
75
|
+
index = self.esm_qsob4.findText(value)
|
76
|
+
if index != -1:
|
77
|
+
self.esm_qsob4.setCurrentIndex(index)
|
78
|
+
|
32
79
|
for device in self.devices:
|
33
80
|
if device.get("max_output_channels"):
|
34
81
|
self.sounddevice.addItem(device.get("name"))
|
@@ -37,7 +84,6 @@ class Settings(QtWidgets.QDialog):
|
|
37
84
|
if index != -1:
|
38
85
|
self.sounddevice.setCurrentIndex(index)
|
39
86
|
self.useqrz_radioButton.setChecked(bool(self.preference.get("useqrz")))
|
40
|
-
# self.usehamdb_radioButton.setChecked(bool(self.preference.get("usehamdb")))
|
41
87
|
self.usehamqth_radioButton.setChecked(bool(self.preference.get("usehamqth")))
|
42
88
|
self.lookup_user_name_field.setText(
|
43
89
|
str(self.preference.get("lookupusername", ""))
|
@@ -51,7 +97,10 @@ class Settings(QtWidgets.QDialog):
|
|
51
97
|
self.useflrig_radioButton.setChecked(bool(self.preference.get("useflrig")))
|
52
98
|
|
53
99
|
self.cwip_field.setText(str(self.preference.get("cwip", "")))
|
54
|
-
self.
|
100
|
+
if self.preference.get("cwport", ""):
|
101
|
+
self.cwport_field.setText(str(self.preference.get("cwport", "")))
|
102
|
+
else:
|
103
|
+
self.cwport_field.setText("")
|
55
104
|
self.usecwdaemon_radioButton.setChecked(
|
56
105
|
bool(self.preference.get("cwtype") == 1)
|
57
106
|
)
|
@@ -61,6 +110,13 @@ class Settings(QtWidgets.QDialog):
|
|
61
110
|
self.usecwviacat_radioButton.setChecked(
|
62
111
|
bool(self.preference.get("cwtype") == 3)
|
63
112
|
)
|
113
|
+
if self.preference.get("cwtype") == 1:
|
114
|
+
self.set_cwdaemon_port_hint()
|
115
|
+
elif self.preference.get("cwtype") == 2:
|
116
|
+
self.set_winkeyer_port_hint()
|
117
|
+
elif self.preference.get("cwtype") == 3:
|
118
|
+
self.set_catforcw_port_hint()
|
119
|
+
|
64
120
|
self.connect_to_server.setChecked(bool(self.preference.get("useserver")))
|
65
121
|
self.multicast_group.setText(str(self.preference.get("multicast_group", "")))
|
66
122
|
self.multicast_port.setText(str(self.preference.get("multicast_port", "")))
|
@@ -73,13 +129,14 @@ class Settings(QtWidgets.QDialog):
|
|
73
129
|
str(self.preference.get("n1mm_station_name", ""))
|
74
130
|
)
|
75
131
|
self.n1mm_operator.setText(str(self.preference.get("n1mm_operator", "")))
|
76
|
-
# self.n1mm_ip.setText(str(self.preference.get("n1mm_ip", "")))
|
77
132
|
self.n1mm_radioport.setText(str(self.preference.get("n1mm_radioport", "")))
|
78
133
|
self.n1mm_contactport.setText(str(self.preference.get("n1mm_contactport", "")))
|
79
134
|
self.n1mm_lookupport.setText(str(self.preference.get("n1mm_lookupport", "")))
|
80
135
|
self.n1mm_scoreport.setText(str(self.preference.get("n1mm_scoreport", "")))
|
81
136
|
self.send_n1mm_radio.setChecked(bool(self.preference.get("send_n1mm_radio")))
|
82
|
-
self.send_n1mm_contact.setChecked(
|
137
|
+
self.send_n1mm_contact.setChecked(
|
138
|
+
bool(self.preference.get("send_n1mm_contact"))
|
139
|
+
)
|
83
140
|
self.send_n1mm_lookup.setChecked(bool(self.preference.get("send_n1mm_lookup")))
|
84
141
|
self.send_n1mm_score.setChecked(bool(self.preference.get("send_n1mm_score")))
|
85
142
|
|
@@ -105,15 +162,41 @@ class Settings(QtWidgets.QDialog):
|
|
105
162
|
self.activate_6m.setChecked(bool("6" in self.preference.get("bands", [])))
|
106
163
|
self.activate_4m.setChecked(bool("4" in self.preference.get("bands", [])))
|
107
164
|
self.activate_2m.setChecked(bool("2" in self.preference.get("bands", [])))
|
108
|
-
self.activate_1dot25.setChecked(
|
165
|
+
self.activate_1dot25.setChecked(
|
166
|
+
bool("1.25" in self.preference.get("bands", []))
|
167
|
+
)
|
109
168
|
self.activate_70cm.setChecked(bool("70cm" in self.preference.get("bands", [])))
|
110
169
|
self.activate_33cm.setChecked(bool("33cm" in self.preference.get("bands", [])))
|
111
170
|
self.activate_23cm.setChecked(bool("23cm" in self.preference.get("bands", [])))
|
112
171
|
|
172
|
+
def set_cwdaemon_port_hint(self):
|
173
|
+
"""Sets placeholder hint for the CW interface."""
|
174
|
+
self.cwip_field.setPlaceholderText("127.0.0.1")
|
175
|
+
self.cwport_field.setPlaceholderText("6789")
|
176
|
+
|
177
|
+
def set_winkeyer_port_hint(self):
|
178
|
+
"""Sets placeholder hint for the CW interface."""
|
179
|
+
self.cwip_field.setPlaceholderText("127.0.0.1")
|
180
|
+
self.cwport_field.setPlaceholderText("8000")
|
181
|
+
|
182
|
+
def set_catforcw_port_hint(self):
|
183
|
+
"""Sets placeholder hint for the CW interface."""
|
184
|
+
self.cwip_field.setPlaceholderText("")
|
185
|
+
self.cwport_field.setPlaceholderText("")
|
186
|
+
|
113
187
|
def save_changes(self):
|
114
188
|
"""
|
115
189
|
Write preferences to json file.
|
116
190
|
"""
|
191
|
+
self.preference["use_esm"] = self.use_esm.isChecked()
|
192
|
+
self.preference["esm_cq"] = self.esm_cq.currentText()
|
193
|
+
self.preference["esm_agn"] = self.esm_agn.currentText()
|
194
|
+
self.preference["esm_exch"] = self.esm_exch.currentText()
|
195
|
+
self.preference["esm_hiscall"] = self.esm_hiscall.currentText()
|
196
|
+
self.preference["esm_mycall"] = self.esm_mycall.currentText()
|
197
|
+
self.preference["esm_qrz"] = self.esm_qrz.currentText()
|
198
|
+
self.preference["esm_qsob4"] = self.esm_qsob4.currentText()
|
199
|
+
|
117
200
|
self.preference["sounddevice"] = self.sounddevice.currentText()
|
118
201
|
self.preference["useqrz"] = self.useqrz_radioButton.isChecked()
|
119
202
|
# self.preference["usehamdb"] = self.usehamdb_radioButton.isChecked()
|
@@ -131,6 +214,7 @@ class Settings(QtWidgets.QDialog):
|
|
131
214
|
try:
|
132
215
|
self.preference["cwport"] = int(self.cwport_field.text())
|
133
216
|
except ValueError:
|
217
|
+
self.preference["cwport"] = None
|
134
218
|
...
|
135
219
|
self.preference["cwtype"] = 0
|
136
220
|
if self.usecwdaemon_radioButton.isChecked():
|
not1mm/lib/version.py
CHANGED
not1mm/plugins/cq_ww_cw.py
CHANGED
@@ -380,3 +380,111 @@ def cabrillo(self):
|
|
380
380
|
|
381
381
|
def recalculate_mults(self):
|
382
382
|
"""Recalculates multipliers after change in logged qso."""
|
383
|
+
|
384
|
+
|
385
|
+
def process_esm(self, new_focused_widget=None, with_enter=False):
|
386
|
+
"""ESM State Machine"""
|
387
|
+
|
388
|
+
# self.pref["run_state"]
|
389
|
+
|
390
|
+
# -----===== Assigned F-Keys =====-----
|
391
|
+
# self.esm_dict["CQ"]
|
392
|
+
# self.esm_dict["EXCH"]
|
393
|
+
# self.esm_dict["QRZ"]
|
394
|
+
# self.esm_dict["AGN"]
|
395
|
+
# self.esm_dict["HISCALL"]
|
396
|
+
# self.esm_dict["MYCALL"]
|
397
|
+
# self.esm_dict["QSOB4"]
|
398
|
+
|
399
|
+
# ----==== text fields ====----
|
400
|
+
# self.callsign
|
401
|
+
# self.sent
|
402
|
+
# self.receive
|
403
|
+
# self.other_1
|
404
|
+
# self.other_2
|
405
|
+
|
406
|
+
inputs = {
|
407
|
+
self.callsign: "callsign",
|
408
|
+
self.sent: "sent",
|
409
|
+
self.receive: "receive",
|
410
|
+
self.other_1: "other_1",
|
411
|
+
self.other_2: "other_2",
|
412
|
+
}
|
413
|
+
if new_focused_widget is not None:
|
414
|
+
self.current_widget = inputs.get(new_focused_widget)
|
415
|
+
|
416
|
+
# print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
|
417
|
+
|
418
|
+
for a_button in [
|
419
|
+
self.F1,
|
420
|
+
self.F2,
|
421
|
+
self.F3,
|
422
|
+
self.F4,
|
423
|
+
self.F5,
|
424
|
+
self.F6,
|
425
|
+
self.F7,
|
426
|
+
self.F8,
|
427
|
+
self.F9,
|
428
|
+
self.F10,
|
429
|
+
self.F11,
|
430
|
+
self.F12,
|
431
|
+
]:
|
432
|
+
self.restore_button_color(a_button)
|
433
|
+
|
434
|
+
buttons_to_send = []
|
435
|
+
|
436
|
+
if self.pref.get("run_state"):
|
437
|
+
if self.current_widget == "callsign":
|
438
|
+
if len(self.callsign.text()) < 3:
|
439
|
+
self.make_button_green(self.esm_dict["CQ"])
|
440
|
+
buttons_to_send.append(self.esm_dict["CQ"])
|
441
|
+
elif len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
|
442
|
+
self.make_button_green(self.esm_dict["HISCALL"])
|
443
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
444
|
+
buttons_to_send.append(self.esm_dict["HISCALL"])
|
445
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
446
|
+
|
447
|
+
if self.current_widget == "other_2":
|
448
|
+
if self.other_2.text() == "":
|
449
|
+
self.make_button_green(self.esm_dict["AGN"])
|
450
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
451
|
+
elif self.other_2.text().isnumeric():
|
452
|
+
self.make_button_green(self.esm_dict["QRZ"])
|
453
|
+
buttons_to_send.append(self.esm_dict["QRZ"])
|
454
|
+
buttons_to_send.append("LOGIT")
|
455
|
+
else:
|
456
|
+
self.make_button_green(self.esm_dict["AGN"])
|
457
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
458
|
+
|
459
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
460
|
+
for button in buttons_to_send:
|
461
|
+
if button:
|
462
|
+
if button == "LOGIT":
|
463
|
+
self.save_contact()
|
464
|
+
continue
|
465
|
+
self.process_function_key(button)
|
466
|
+
else:
|
467
|
+
if self.current_widget == "callsign":
|
468
|
+
if len(self.callsign.text()) > 2 and self.callsign.text().isalnum():
|
469
|
+
self.make_button_green(self.esm_dict["MYCALL"])
|
470
|
+
buttons_to_send.append(self.esm_dict["MYCALL"])
|
471
|
+
|
472
|
+
if self.current_widget == "other_2":
|
473
|
+
if self.other_2.text() == "":
|
474
|
+
self.make_button_green(self.esm_dict["AGN"])
|
475
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
476
|
+
elif self.other_2.text().isnumeric():
|
477
|
+
self.make_button_green(self.esm_dict["EXCH"])
|
478
|
+
buttons_to_send.append(self.esm_dict["EXCH"])
|
479
|
+
buttons_to_send.append("LOGIT")
|
480
|
+
else:
|
481
|
+
self.make_button_green(self.esm_dict["AGN"])
|
482
|
+
buttons_to_send.append(self.esm_dict["AGN"])
|
483
|
+
|
484
|
+
if with_enter is True and bool(len(buttons_to_send)):
|
485
|
+
for button in buttons_to_send:
|
486
|
+
if button:
|
487
|
+
if button == "LOGIT":
|
488
|
+
self.save_contact()
|
489
|
+
continue
|
490
|
+
self.process_function_key(button)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: not1mm
|
3
|
-
Version: 24.10.
|
3
|
+
Version: 24.10.10
|
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
|
@@ -118,6 +118,16 @@ Requires-Dist: Levenshtein
|
|
118
118
|
- [Cabrillo](#cabrillo)
|
119
119
|
- [ADIF](#adif)
|
120
120
|
- [Recalulate Mults](#recalulate-mults)
|
121
|
+
- [Testing Out ESM Currently only in CQ WW CW](#testing-out-esm-currently-only-in-cq-ww-cw)
|
122
|
+
- [Run States](#run-states)
|
123
|
+
- [CQ](#cq)
|
124
|
+
- [Call Entered send His Call and the Exchange](#call-entered-send-his-call-and-the-exchange)
|
125
|
+
- [Empty exchange field send AGN till you get it](#empty-exchange-field-send-agn-till-you-get-it)
|
126
|
+
- [Exchange field filled, send TU QRZ and logs it](#exchange-field-filled-send-tu-qrz-and-logs-it)
|
127
|
+
- [S\&P States](#sp-states)
|
128
|
+
- [With his call entered, Send your call](#with-his-call-entered-send-your-call)
|
129
|
+
- [If no exchange entered send AGN](#if-no-exchange-entered-send-agn)
|
130
|
+
- [With exchange entered, send your exchange and log it](#with-exchange-entered-send-your-exchange-and-log-it)
|
121
131
|
- [Contest specific notes](#contest-specific-notes)
|
122
132
|
- [ARRL Sweekstakes](#arrl-sweekstakes)
|
123
133
|
- [The exchange parser](#the-exchange-parser)
|
@@ -219,6 +229,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
|
|
219
229
|
|
220
230
|
## Recent Changes
|
221
231
|
|
232
|
+
- [24-10-10] Add ESM to CQ WW CW to test it out.
|
233
|
+
- [24-10-8] Fix crash on Tune to spot. Change placeholder text for the CW port for those unable to read documentation.
|
222
234
|
- [24-10-6] Removed 60, 30, 17 and 12M from the default list of bands.
|
223
235
|
- [24-10-5-1] Store the bandmap spots age timer in the preferences.
|
224
236
|
- [24-10-5] Force reselction of contest after different DB opened.
|
@@ -827,6 +839,55 @@ After editing a contact and before generating a Cabrillo file. There is a Misc
|
|
827
839
|
menu option that will recalculate the multipliers incase an edit had caused a
|
828
840
|
change.
|
829
841
|
|
842
|
+
## Testing Out ESM Currently only in CQ WW CW
|
843
|
+
|
844
|
+
I caved and started working on ESM or Enter Sends Message. Currently it is only
|
845
|
+
working in the CQ WW CW. To test it out you can go to `FILE -> Configuration Settings`
|
846
|
+
|
847
|
+

|
848
|
+
|
849
|
+
|
850
|
+
Check the mark to Use ESM and tell it which function keys do what. The keys will need
|
851
|
+
to have the same function in both Run and S&P modes. The function keys will highlight
|
852
|
+
green depending on the state of the input fields. The green keys will be sent if you
|
853
|
+
press the Enter key. You should use the Space bar to move to another field.
|
854
|
+
|
855
|
+
The contact will be automatically logged once all the needed info is collected and the
|
856
|
+
QRZ (for Run) or Exchange (for S&P) is sent.
|
857
|
+
|
858
|
+
## Run States
|
859
|
+
|
860
|
+
### CQ
|
861
|
+
|
862
|
+

|
863
|
+
|
864
|
+
### Call Entered send His Call and the Exchange
|
865
|
+
|
866
|
+

|
867
|
+
|
868
|
+
### Empty exchange field send AGN till you get it
|
869
|
+
|
870
|
+

|
871
|
+
|
872
|
+
### Exchange field filled, send TU QRZ and logs it
|
873
|
+
|
874
|
+

|
875
|
+
|
876
|
+
## S&P States
|
877
|
+
|
878
|
+
### With his call entered, Send your call
|
879
|
+
|
880
|
+

|
881
|
+
|
882
|
+
### If no exchange entered send AGN
|
883
|
+
|
884
|
+

|
885
|
+
|
886
|
+
### With exchange entered, send your exchange and log it
|
887
|
+
|
888
|
+

|
889
|
+
|
890
|
+
|
830
891
|
## Contest specific notes
|
831
892
|
|
832
893
|
I found it might be beneficial to have a section devoted to wierd quirky things
|
@@ -868,4 +929,4 @@ The best thing you can do is play around with it to see how it behaves.
|
|
868
929
|
In the `Sent Exchange` field of the New Contest dialog put in the Precidence,
|
869
930
|
Call, Check and Section. Example: `A K6GTE 17 ORG`.
|
870
931
|
|
871
|
-
For the Run Exchange macro I'd put `{HISCALL}
|
932
|
+
For the Run Exchange macro I'd put `{HISCALL} {SENTNR} {EXCH}`.
|
@@ -1,5 +1,5 @@
|
|
1
1
|
not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
not1mm/__main__.py,sha256=
|
2
|
+
not1mm/__main__.py,sha256=m9GEvmOqtLldHG6w_gk8j2oSzGXi6RqBnxnVjGvlwpQ,134547
|
3
3
|
not1mm/bandmap.py,sha256=P91rYGmd8r5K6TRNZt7kqqW6zCBVlFA1_n9-V7as1WE,31672
|
4
4
|
not1mm/checkwindow.py,sha256=aI-nr8OF90IWV7R_XRdmitvBJ9M85evCs72HoU3Jnvc,10374
|
5
5
|
not1mm/fsutils.py,sha256=ukHKxKTeNKxKwqRaJjtzRShL4X5Xl0jRBbADyy3Ifp8,1701
|
@@ -16,7 +16,7 @@ not1mm/data/alpha bravo charlie delta.txt,sha256=d5QMmSWEUAe4Rj1XbNjTPLa_5Be4Se6
|
|
16
16
|
not1mm/data/bandmap.ui,sha256=hvovf1YKyfUVVbKl6Ib2zU4RdUrFsQwm-255wVeKXZE,7180
|
17
17
|
not1mm/data/check.png,sha256=UvFOLr8V-79qnjW8wUaGItXk_OSP8m8hqPevs8NDlFY,387
|
18
18
|
not1mm/data/checkwindow.ui,sha256=Ux5EgO-JalGB9qx3M6tmMpGHO0RmuuY1w0XEbuwd1xk,4658
|
19
|
-
not1mm/data/configuration.ui,sha256=
|
19
|
+
not1mm/data/configuration.ui,sha256=VGJYL14XPuJkJVKk0FWyZWFXK5ibZ3_0_VUBXyzKnOk,68141
|
20
20
|
not1mm/data/contests.sql,sha256=4hmJCDvrbxnA_Y5S4T5o52TZieeFk6QUwFerwlFePNA,89307
|
21
21
|
not1mm/data/cty.json,sha256=sBIN1raQOKeVIO5dRaWn0Yqq8XZKpM_VCzS3kMlcwp4,4871545
|
22
22
|
not1mm/data/cwmacros.txt,sha256=PvJ7TxGILq-ErHb6Gbrm-08x76BbCdXb8AY8a7st5mg,451
|
@@ -112,9 +112,9 @@ not1mm/lib/new_contest.py,sha256=IznTDMq7yXHB6zBoGUEC_WDYPCPpsSZW4wwMJi16zK0,816
|
|
112
112
|
not1mm/lib/playsound.py,sha256=kxkcitBFbZCXJ2wxQ1lxg4rBwfxiSpuNpJSXHOPCoXA,9241
|
113
113
|
not1mm/lib/plugin_common.py,sha256=TbFUbftjELFt4QRdsjSHbqnXSngZOlSwlCTClqosDXA,9727
|
114
114
|
not1mm/lib/select_contest.py,sha256=WsptLuwkouIHeocJL3oZ6-eUfEnhpwdc-x7eMZ_TIVM,359
|
115
|
-
not1mm/lib/settings.py,sha256=
|
115
|
+
not1mm/lib/settings.py,sha256=7_JFDSKPOd35Gwzqhrbed4EfrlYUm7AEnz2xBRioc-g,13280
|
116
116
|
not1mm/lib/super_check_partial.py,sha256=p5l3u2ZOCBtlWgbvskC50FpuoaIpR07tfC6zTdRWbh4,2334
|
117
|
-
not1mm/lib/version.py,sha256
|
117
|
+
not1mm/lib/version.py,sha256=_D_ukQUdYbZSA6fI-cZ2OwXpNOQ_nr5d5rAAmQskuEQ,49
|
118
118
|
not1mm/lib/versiontest.py,sha256=8vDNptuBBunn-1IGkjNaquehqBYUJyjrPSF8Igmd4_Y,1286
|
119
119
|
not1mm/plugins/10_10_fall_cw.py,sha256=IttjX1yy4nDdACGsiYlPteFG8eVseX_WtoFio6bqHE8,10953
|
120
120
|
not1mm/plugins/10_10_spring_cw.py,sha256=ThCptdM3dX4ywhoy2JRcOEyHSqcJolFaT7O_PYzM1Mg,10958
|
@@ -137,7 +137,7 @@ not1mm/plugins/cq_160_ssb.py,sha256=zIwSMAjHSt6W2edrDzVbyTf860JowHoFkU9BKO8Enag,
|
|
137
137
|
not1mm/plugins/cq_wpx_cw.py,sha256=9aNzAR-KhznIwUlxUFjAi_hbiw_6RrCMwUBk9I2f6Hs,14037
|
138
138
|
not1mm/plugins/cq_wpx_rtty.py,sha256=PpU_PxjQGeMjzbofYNsl-No37s7IgkPyW2bKFRkN9jU,16473
|
139
139
|
not1mm/plugins/cq_wpx_ssb.py,sha256=-hGRovqHR9rfOUnG4LPOoABTb4heH8VAX6rYdJbCqsw,12687
|
140
|
-
not1mm/plugins/cq_ww_cw.py,sha256=
|
140
|
+
not1mm/plugins/cq_ww_cw.py,sha256=rtJynxy4RAYXwGOk76k6DbVN1lo-Zl9voFH5t2OgplA,16130
|
141
141
|
not1mm/plugins/cq_ww_rtty.py,sha256=WnqSfCNX6ieLZlUg_P_vx-Z2iY0lxdwEgPuT9aax1JU,16772
|
142
142
|
not1mm/plugins/cq_ww_ssb.py,sha256=hZwG88-hPLmwIGXHX_S_ty8Nhn1kIuPjSuTRpCWoN9g,12631
|
143
143
|
not1mm/plugins/cwt.py,sha256=KvvkEfQrYSra0y8qE4yThvZNLrZcslt0IqYEomDpf-M,12774
|
@@ -157,10 +157,9 @@ not1mm/plugins/ref_cw.py,sha256=aWjHHkqIKutjRUtzh09y5haFfnZK9poRQDWRQMDRxxU,1632
|
|
157
157
|
not1mm/plugins/stew_perry_topband.py,sha256=CKBQbYl4ETxhXJd2dma4fg_C5pag_s7Nf61SCztZtqE,10668
|
158
158
|
not1mm/plugins/weekly_rtty.py,sha256=DQcy3SY0Zn56EdlYGf3NxrRhTnkNa5IqRQPRQdKDSPs,14255
|
159
159
|
not1mm/plugins/winter_field_day.py,sha256=4rcfRtobwjHO6BNL3WOTHzBmyyeuX79BNGBG8PfjrI8,10238
|
160
|
-
|
161
|
-
not1mm-24.10.
|
162
|
-
not1mm-24.10.
|
163
|
-
not1mm-24.10.
|
164
|
-
not1mm-24.10.
|
165
|
-
not1mm-24.10.
|
166
|
-
not1mm-24.10.6.dist-info/RECORD,,
|
160
|
+
not1mm-24.10.10.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
161
|
+
not1mm-24.10.10.dist-info/METADATA,sha256=LAq5jcblrc5PwviH6M4bpuKNRuMiBrJA47vV93OUT5o,39215
|
162
|
+
not1mm-24.10.10.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
163
|
+
not1mm-24.10.10.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
|
164
|
+
not1mm-24.10.10.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
|
165
|
+
not1mm-24.10.10.dist-info/RECORD,,
|