not1mm 24.10.24.1__py3-none-any.whl → 24.10.26__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.
Files changed (51) hide show
  1. not1mm/__main__.py +9 -3
  2. not1mm/bandmap.py +6 -1
  3. not1mm/data/main.ui +23 -3
  4. not1mm/lib/version.py +1 -1
  5. not1mm/plugins/10_10_fall_cw.py +109 -82
  6. not1mm/plugins/10_10_spring_cw.py +109 -82
  7. not1mm/plugins/10_10_summer_phone.py +109 -82
  8. not1mm/plugins/10_10_winter_phone.py +109 -82
  9. not1mm/plugins/arrl_10m.py +109 -82
  10. not1mm/plugins/arrl_dx_cw.py +109 -82
  11. not1mm/plugins/arrl_dx_ssb.py +109 -82
  12. not1mm/plugins/arrl_field_day.py +109 -82
  13. not1mm/plugins/arrl_ss_cw.py +109 -82
  14. not1mm/plugins/arrl_ss_phone.py +109 -82
  15. not1mm/plugins/arrl_vhf_jan.py +109 -82
  16. not1mm/plugins/arrl_vhf_jun.py +109 -82
  17. not1mm/plugins/arrl_vhf_sep.py +109 -82
  18. not1mm/plugins/canada_day.py +109 -82
  19. not1mm/plugins/cq_160_cw.py +109 -74
  20. not1mm/plugins/cq_160_ssb.py +109 -74
  21. not1mm/plugins/cq_wpx_cw.py +109 -82
  22. not1mm/plugins/cq_wpx_rtty.py +109 -82
  23. not1mm/plugins/cq_wpx_ssb.py +109 -82
  24. not1mm/plugins/cq_ww_cw.py +115 -83
  25. not1mm/plugins/cq_ww_rtty.py +110 -73
  26. not1mm/plugins/cq_ww_ssb.py +109 -82
  27. not1mm/plugins/cwt.py +109 -82
  28. not1mm/plugins/general_logging.py +1 -1
  29. not1mm/plugins/helvetia.py +109 -82
  30. not1mm/plugins/iaru_fieldday_r1_cw.py +109 -82
  31. not1mm/plugins/iaru_fieldday_r1_ssb.py +109 -82
  32. not1mm/plugins/iaru_hf.py +109 -82
  33. not1mm/plugins/icwc_mst.py +109 -82
  34. not1mm/plugins/jidx_cw.py +74 -48
  35. not1mm/plugins/jidx_ph.py +74 -48
  36. not1mm/plugins/k1usn_sst.py +109 -82
  37. not1mm/plugins/naqp_cw.py +109 -82
  38. not1mm/plugins/naqp_rtty.py +109 -82
  39. not1mm/plugins/naqp_ssb.py +109 -82
  40. not1mm/plugins/phone_weekly_test.py +109 -82
  41. not1mm/plugins/ref_cw.py +109 -82
  42. not1mm/plugins/ref_ssb.py +109 -82
  43. not1mm/plugins/stew_perry_topband.py +109 -82
  44. not1mm/plugins/weekly_rtty.py +109 -82
  45. not1mm/plugins/winter_field_day.py +109 -82
  46. {not1mm-24.10.24.1.dist-info → not1mm-24.10.26.dist-info}/METADATA +3 -1
  47. {not1mm-24.10.24.1.dist-info → not1mm-24.10.26.dist-info}/RECORD +51 -51
  48. {not1mm-24.10.24.1.dist-info → not1mm-24.10.26.dist-info}/LICENSE +0 -0
  49. {not1mm-24.10.24.1.dist-info → not1mm-24.10.26.dist-info}/WHEEL +0 -0
  50. {not1mm-24.10.24.1.dist-info → not1mm-24.10.26.dist-info}/entry_points.txt +0 -0
  51. {not1mm-24.10.24.1.dist-info → not1mm-24.10.26.dist-info}/top_level.txt +0 -0
not1mm/plugins/iaru_hf.py CHANGED
@@ -188,7 +188,16 @@ def adif(self):
188
188
  gen_adif(self, cabrillo_name, "IARU-HF")
189
189
 
190
190
 
191
- def cabrillo(self):
191
+ def output_cabrillo_line(line_to_output, ending, file_descriptor, file_encoding):
192
+ """"""
193
+ print(
194
+ line_to_output.encode(file_encoding, errors="ignore").decode(),
195
+ end=ending,
196
+ file=file_descriptor,
197
+ )
198
+
199
+
200
+ def cabrillo(self, file_encoding):
192
201
  """Generates Cabrillo file. Maybe."""
193
202
  # https://www.cqwpx.com/cabrillo.htm
194
203
  logger.debug("******Cabrillo*****")
@@ -205,133 +214,150 @@ def cabrillo(self):
205
214
  log = self.database.fetch_all_contacts_asc()
206
215
  try:
207
216
  with open(filename, "w", encoding="utf-8") as file_descriptor:
208
- print("START-OF-LOG: 3.0", end="\r\n", file=file_descriptor)
209
- print(
217
+ output_cabrillo_line(
218
+ "START-OF-LOG: 3.0",
219
+ "\r\n",
220
+ file_descriptor,
221
+ file_encoding,
222
+ )
223
+ output_cabrillo_line(
210
224
  f"CREATED-BY: Not1MM v{__version__}",
211
- end="\r\n",
212
- file=file_descriptor,
225
+ "\r\n",
226
+ file_descriptor,
227
+ file_encoding,
213
228
  )
214
- print(
229
+ output_cabrillo_line(
215
230
  f"CONTEST: {cabrillo_name}",
216
- end="\r\n",
217
- file=file_descriptor,
231
+ "\r\n",
232
+ file_descriptor,
233
+ file_encoding,
218
234
  )
219
235
  if self.station.get("Club", ""):
220
- print(
236
+ output_cabrillo_line(
221
237
  f"CLUB: {self.station.get('Club', '').upper()}",
222
- end="\r\n",
223
- file=file_descriptor,
238
+ "\r\n",
239
+ file_descriptor,
240
+ file_encoding,
224
241
  )
225
- print(
242
+ output_cabrillo_line(
226
243
  f"CALLSIGN: {self.station.get('Call','')}",
227
- end="\r\n",
228
- file=file_descriptor,
244
+ "\r\n",
245
+ file_descriptor,
246
+ file_encoding,
229
247
  )
230
- print(
248
+ output_cabrillo_line(
231
249
  f"LOCATION: {self.station.get('ARRLSection', '')}",
232
- end="\r\n",
233
- file=file_descriptor,
250
+ "\r\n",
251
+ file_descriptor,
252
+ file_encoding,
234
253
  )
235
- # print(
236
- # f"ARRL-SECTION: {self.pref.get('section', '')}",
237
- # end="\r\n",
238
- # file=file_descriptor,
239
- # )
240
- print(
254
+ output_cabrillo_line(
241
255
  f"CATEGORY-OPERATOR: {self.contest_settings.get('OperatorCategory','')}",
242
- end="\r\n",
243
- file=file_descriptor,
256
+ "\r\n",
257
+ file_descriptor,
258
+ file_encoding,
244
259
  )
245
- print(
260
+ output_cabrillo_line(
246
261
  f"CATEGORY-ASSISTED: {self.contest_settings.get('AssistedCategory','')}",
247
- end="\r\n",
248
- file=file_descriptor,
262
+ "\r\n",
263
+ file_descriptor,
264
+ file_encoding,
249
265
  )
250
- print(
266
+ output_cabrillo_line(
251
267
  f"CATEGORY-BAND: {self.contest_settings.get('BandCategory','')}",
252
- end="\r\n",
253
- file=file_descriptor,
268
+ "\r\n",
269
+ file_descriptor,
270
+ file_encoding,
254
271
  )
255
- print(
272
+ output_cabrillo_line(
256
273
  f"CATEGORY-MODE: {self.contest_settings.get('ModeCategory','')}",
257
- end="\r\n",
258
- file=file_descriptor,
274
+ "\r\n",
275
+ file_descriptor,
276
+ file_encoding,
259
277
  )
260
- print(
278
+ output_cabrillo_line(
261
279
  f"CATEGORY-TRANSMITTER: {self.contest_settings.get('TransmitterCategory','')}",
262
- end="\r\n",
263
- file=file_descriptor,
280
+ "\r\n",
281
+ file_descriptor,
282
+ file_encoding,
264
283
  )
265
284
  if self.contest_settings.get("OverlayCategory", "") != "N/A":
266
- print(
285
+ output_cabrillo_line(
267
286
  f"CATEGORY-OVERLAY: {self.contest_settings.get('OverlayCategory','')}",
268
- end="\r\n",
269
- file=file_descriptor,
287
+ "\r\n",
288
+ file_descriptor,
289
+ file_encoding,
270
290
  )
271
- print(
291
+ output_cabrillo_line(
272
292
  f"GRID-LOCATOR: {self.station.get('GridSquare','')}",
273
- end="\r\n",
274
- file=file_descriptor,
293
+ "\r\n",
294
+ file_descriptor,
295
+ file_encoding,
275
296
  )
276
- # print(
277
- # f"CATEGORY: {None}",
278
- # end="\r\n",
279
- # file=file_descriptor,
280
- # )
281
- print(
297
+ output_cabrillo_line(
282
298
  f"CATEGORY-POWER: {self.contest_settings.get('PowerCategory','')}",
283
- end="\r\n",
284
- file=file_descriptor,
299
+ "\r\n",
300
+ file_descriptor,
301
+ file_encoding,
285
302
  )
286
303
 
287
- print(
304
+ output_cabrillo_line(
288
305
  f"CLAIMED-SCORE: {calc_score(self)}",
289
- end="\r\n",
290
- file=file_descriptor,
306
+ "\r\n",
307
+ file_descriptor,
308
+ file_encoding,
291
309
  )
292
310
  ops = f"@{self.station.get('Call','')}"
293
311
  list_of_ops = self.database.get_ops()
294
312
  for op in list_of_ops:
295
313
  ops += f", {op.get('Operator', '')}"
296
- print(
314
+ output_cabrillo_line(
297
315
  f"OPERATORS: {ops}",
298
- end="\r\n",
299
- file=file_descriptor,
316
+ "\r\n",
317
+ file_descriptor,
318
+ file_encoding,
300
319
  )
301
- print(
320
+ output_cabrillo_line(
302
321
  f"NAME: {self.station.get('Name', '')}",
303
- end="\r\n",
304
- file=file_descriptor,
322
+ "\r\n",
323
+ file_descriptor,
324
+ file_encoding,
305
325
  )
306
- print(
326
+ output_cabrillo_line(
307
327
  f"ADDRESS: {self.station.get('Street1', '')}",
308
- end="\r\n",
309
- file=file_descriptor,
328
+ "\r\n",
329
+ file_descriptor,
330
+ file_encoding,
310
331
  )
311
- print(
332
+ output_cabrillo_line(
312
333
  f"ADDRESS-CITY: {self.station.get('City', '')}",
313
- end="\r\n",
314
- file=file_descriptor,
334
+ "\r\n",
335
+ file_descriptor,
336
+ file_encoding,
315
337
  )
316
- print(
338
+ output_cabrillo_line(
317
339
  f"ADDRESS-STATE-PROVINCE: {self.station.get('State', '')}",
318
- end="\r\n",
319
- file=file_descriptor,
340
+ "\r\n",
341
+ file_descriptor,
342
+ file_encoding,
320
343
  )
321
- print(
344
+ output_cabrillo_line(
322
345
  f"ADDRESS-POSTALCODE: {self.station.get('Zip', '')}",
323
- end="\r\n",
324
- file=file_descriptor,
346
+ "\r\n",
347
+ file_descriptor,
348
+ file_encoding,
325
349
  )
326
- print(
350
+ output_cabrillo_line(
327
351
  f"ADDRESS-COUNTRY: {self.station.get('Country', '')}",
328
- end="\r\n",
329
- file=file_descriptor,
352
+ "\r\n",
353
+ file_descriptor,
354
+ file_encoding,
330
355
  )
331
- print(
356
+ output_cabrillo_line(
332
357
  f"EMAIL: {self.station.get('Email', '')}",
333
- end="\r\n",
334
- file=file_descriptor,
358
+ "\r\n",
359
+ file_descriptor,
360
+ file_encoding,
335
361
  )
336
362
  for contact in log:
337
363
  the_date_and_time = contact.get("TS", "")
@@ -342,7 +368,7 @@ def cabrillo(self):
342
368
 
343
369
  loggeddate = the_date_and_time[:10]
344
370
  loggedtime = the_date_and_time[11:13] + the_date_and_time[14:16]
345
- print(
371
+ output_cabrillo_line(
346
372
  f"QSO: {frequency} {themode} {loggeddate} {loggedtime} "
347
373
  f"{contact.get('StationPrefix', '').ljust(13)} "
348
374
  f"{str(contact.get('SNT', '')).ljust(3)} "
@@ -350,10 +376,11 @@ def cabrillo(self):
350
376
  f"{contact.get('Call', '').ljust(13)} "
351
377
  f"{str(contact.get('RCV', '')).ljust(3)} "
352
378
  f"{str(contact.get('ZN', '')).ljust(6)}",
353
- end="\r\n",
354
- file=file_descriptor,
379
+ "\r\n",
380
+ file_descriptor,
381
+ file_encoding,
355
382
  )
356
- print("END-OF-LOG:", end="\r\n", file=file_descriptor)
383
+ output_cabrillo_line("END-OF-LOG:", "\r\n", file_descriptor, file_encoding)
357
384
  self.show_message_box(f"Cabrillo saved to: {filename}")
358
385
  except IOError as exception:
359
386
  logger.critical("cabrillo: IO error: %s, writing to %s", exception, filename)
@@ -185,7 +185,16 @@ def adif(self):
185
185
  gen_adif(self, cabrillo_name, "ICWC-MST")
186
186
 
187
187
 
188
- def cabrillo(self):
188
+ def output_cabrillo_line(line_to_output, ending, file_descriptor, file_encoding):
189
+ """"""
190
+ print(
191
+ line_to_output.encode(file_encoding, errors="ignore").decode(),
192
+ end=ending,
193
+ file=file_descriptor,
194
+ )
195
+
196
+
197
+ def cabrillo(self, file_encoding):
189
198
  """Generates Cabrillo file. Maybe."""
190
199
  logger.debug("******Cabrillo*****")
191
200
  logger.debug("Station: %s", f"{self.station}")
@@ -201,133 +210,150 @@ def cabrillo(self):
201
210
  log = self.database.fetch_all_contacts_asc()
202
211
  try:
203
212
  with open(filename, "w", encoding="utf-8") as file_descriptor:
204
- print("START-OF-LOG: 3.0", end="\r\n", file=file_descriptor)
205
- print(
213
+ output_cabrillo_line(
214
+ "START-OF-LOG: 3.0",
215
+ "\r\n",
216
+ file_descriptor,
217
+ file_encoding,
218
+ )
219
+ output_cabrillo_line(
206
220
  f"CREATED-BY: Not1MM v{__version__}",
207
- end="\r\n",
208
- file=file_descriptor,
221
+ "\r\n",
222
+ file_descriptor,
223
+ file_encoding,
209
224
  )
210
- print(
225
+ output_cabrillo_line(
211
226
  f"CONTEST: {cabrillo_name}",
212
- end="\r\n",
213
- file=file_descriptor,
227
+ "\r\n",
228
+ file_descriptor,
229
+ file_encoding,
214
230
  )
215
231
  if self.station.get("Club", ""):
216
- print(
232
+ output_cabrillo_line(
217
233
  f"CLUB: {self.station.get('Club', '').upper()}",
218
- end="\r\n",
219
- file=file_descriptor,
234
+ "\r\n",
235
+ file_descriptor,
236
+ file_encoding,
220
237
  )
221
- print(
238
+ output_cabrillo_line(
222
239
  f"CALLSIGN: {self.station.get('Call','')}",
223
- end="\r\n",
224
- file=file_descriptor,
240
+ "\r\n",
241
+ file_descriptor,
242
+ file_encoding,
225
243
  )
226
- print(
244
+ output_cabrillo_line(
227
245
  f"LOCATION: {self.station.get('ARRLSection', '')}",
228
- end="\r\n",
229
- file=file_descriptor,
246
+ "\r\n",
247
+ file_descriptor,
248
+ file_encoding,
230
249
  )
231
- # print(
232
- # f"ARRL-SECTION: {self.pref.get('section', '')}",
233
- # end="\r\n",
234
- # file=file_descriptor,
235
- # )
236
- print(
250
+ output_cabrillo_line(
237
251
  f"CATEGORY-OPERATOR: {self.contest_settings.get('OperatorCategory','')}",
238
- end="\r\n",
239
- file=file_descriptor,
252
+ "\r\n",
253
+ file_descriptor,
254
+ file_encoding,
240
255
  )
241
- print(
256
+ output_cabrillo_line(
242
257
  f"CATEGORY-ASSISTED: {self.contest_settings.get('AssistedCategory','')}",
243
- end="\r\n",
244
- file=file_descriptor,
258
+ "\r\n",
259
+ file_descriptor,
260
+ file_encoding,
245
261
  )
246
- print(
262
+ output_cabrillo_line(
247
263
  f"CATEGORY-BAND: {self.contest_settings.get('BandCategory','')}",
248
- end="\r\n",
249
- file=file_descriptor,
264
+ "\r\n",
265
+ file_descriptor,
266
+ file_encoding,
250
267
  )
251
- print(
268
+ output_cabrillo_line(
252
269
  f"CATEGORY-MODE: {self.contest_settings.get('ModeCategory','')}",
253
- end="\r\n",
254
- file=file_descriptor,
270
+ "\r\n",
271
+ file_descriptor,
272
+ file_encoding,
255
273
  )
256
- print(
274
+ output_cabrillo_line(
257
275
  f"CATEGORY-TRANSMITTER: {self.contest_settings.get('TransmitterCategory','')}",
258
- end="\r\n",
259
- file=file_descriptor,
276
+ "\r\n",
277
+ file_descriptor,
278
+ file_encoding,
260
279
  )
261
280
  if self.contest_settings.get("OverlayCategory", "") != "N/A":
262
- print(
281
+ output_cabrillo_line(
263
282
  f"CATEGORY-OVERLAY: {self.contest_settings.get('OverlayCategory','')}",
264
- end="\r\n",
265
- file=file_descriptor,
283
+ "\r\n",
284
+ file_descriptor,
285
+ file_encoding,
266
286
  )
267
- print(
287
+ output_cabrillo_line(
268
288
  f"GRID-LOCATOR: {self.station.get('GridSquare','')}",
269
- end="\r\n",
270
- file=file_descriptor,
289
+ "\r\n",
290
+ file_descriptor,
291
+ file_encoding,
271
292
  )
272
- # print(
273
- # f"CATEGORY: {None}",
274
- # end="\r\n",
275
- # file=file_descriptor,
276
- # )
277
- print(
293
+ output_cabrillo_line(
278
294
  f"CATEGORY-POWER: {self.contest_settings.get('PowerCategory','')}",
279
- end="\r\n",
280
- file=file_descriptor,
295
+ "\r\n",
296
+ file_descriptor,
297
+ file_encoding,
281
298
  )
282
299
 
283
- print(
300
+ output_cabrillo_line(
284
301
  f"CLAIMED-SCORE: {calc_score(self)}",
285
- end="\r\n",
286
- file=file_descriptor,
302
+ "\r\n",
303
+ file_descriptor,
304
+ file_encoding,
287
305
  )
288
306
  ops = f"@{self.station.get('Call','')}"
289
307
  list_of_ops = self.database.get_ops()
290
308
  for op in list_of_ops:
291
309
  ops += f", {op.get('Operator', '')}"
292
- print(
310
+ output_cabrillo_line(
293
311
  f"OPERATORS: {ops}",
294
- end="\r\n",
295
- file=file_descriptor,
312
+ "\r\n",
313
+ file_descriptor,
314
+ file_encoding,
296
315
  )
297
- print(
316
+ output_cabrillo_line(
298
317
  f"NAME: {self.station.get('Name', '')}",
299
- end="\r\n",
300
- file=file_descriptor,
318
+ "\r\n",
319
+ file_descriptor,
320
+ file_encoding,
301
321
  )
302
- print(
322
+ output_cabrillo_line(
303
323
  f"ADDRESS: {self.station.get('Street1', '')}",
304
- end="\r\n",
305
- file=file_descriptor,
324
+ "\r\n",
325
+ file_descriptor,
326
+ file_encoding,
306
327
  )
307
- print(
328
+ output_cabrillo_line(
308
329
  f"ADDRESS-CITY: {self.station.get('City', '')}",
309
- end="\r\n",
310
- file=file_descriptor,
330
+ "\r\n",
331
+ file_descriptor,
332
+ file_encoding,
311
333
  )
312
- print(
334
+ output_cabrillo_line(
313
335
  f"ADDRESS-STATE-PROVINCE: {self.station.get('State', '')}",
314
- end="\r\n",
315
- file=file_descriptor,
336
+ "\r\n",
337
+ file_descriptor,
338
+ file_encoding,
316
339
  )
317
- print(
340
+ output_cabrillo_line(
318
341
  f"ADDRESS-POSTALCODE: {self.station.get('Zip', '')}",
319
- end="\r\n",
320
- file=file_descriptor,
342
+ "\r\n",
343
+ file_descriptor,
344
+ file_encoding,
321
345
  )
322
- print(
346
+ output_cabrillo_line(
323
347
  f"ADDRESS-COUNTRY: {self.station.get('Country', '')}",
324
- end="\r\n",
325
- file=file_descriptor,
348
+ "\r\n",
349
+ file_descriptor,
350
+ file_encoding,
326
351
  )
327
- print(
352
+ output_cabrillo_line(
328
353
  f"EMAIL: {self.station.get('Email', '')}",
329
- end="\r\n",
330
- file=file_descriptor,
354
+ "\r\n",
355
+ file_descriptor,
356
+ file_encoding,
331
357
  )
332
358
  for contact in log:
333
359
  the_date_and_time = contact.get("TS", "")
@@ -338,7 +364,7 @@ def cabrillo(self):
338
364
 
339
365
  loggeddate = the_date_and_time[:10]
340
366
  loggedtime = the_date_and_time[11:13] + the_date_and_time[14:16]
341
- print(
367
+ output_cabrillo_line(
342
368
  f"QSO: {frequency} {themode} {loggeddate} {loggedtime} "
343
369
  f"{contact.get('StationPrefix', '').ljust(13)} "
344
370
  f"{self.contest_settings.get('SentExchange', '').ljust(14).upper()}"
@@ -346,10 +372,11 @@ def cabrillo(self):
346
372
  f"{contact.get('Call', '').ljust(13)} "
347
373
  f"{str(contact.get('Name', '')).ljust(14)} "
348
374
  f"{str(contact.get('NR', '')).ljust(6)}",
349
- end="\r\n",
350
- file=file_descriptor,
375
+ "\r\n",
376
+ file_descriptor,
377
+ file_encoding,
351
378
  )
352
- print("END-OF-LOG:", end="\r\n", file=file_descriptor)
379
+ output_cabrillo_line("END-OF-LOG:", "\r\n", file_descriptor, file_encoding)
353
380
  self.show_message_box(f"Cabrillo saved to: {filename}")
354
381
  except IOError as exception:
355
382
  logger.critical("cabrillo: IO error: %s, writing to %s", exception, filename)