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
@@ -231,7 +231,16 @@ def adif(self):
231
231
  gen_adif(self, cabrillo_name, "IARU FIELDDAY R1 DARC CW")
232
232
 
233
233
 
234
- def cabrillo(self):
234
+ def output_cabrillo_line(line_to_output, ending, file_descriptor, file_encoding):
235
+ """"""
236
+ print(
237
+ line_to_output.encode(file_encoding, errors="ignore").decode(),
238
+ end=ending,
239
+ file=file_descriptor,
240
+ )
241
+
242
+
243
+ def cabrillo(self, file_encoding):
235
244
  """Generates Cabrillo file. Maybe."""
236
245
  # https://www.cqwpx.com/cabrillo.htm
237
246
  logger.debug("******Cabrillo*****")
@@ -248,133 +257,150 @@ def cabrillo(self):
248
257
  log = self.database.fetch_all_contacts_asc()
249
258
  try:
250
259
  with open(filename, "w", encoding="utf-8") as file_descriptor:
251
- print("START-OF-LOG: 3.0", end="\r\n", file=file_descriptor)
252
- print(
260
+ output_cabrillo_line(
261
+ "START-OF-LOG: 3.0",
262
+ "\r\n",
263
+ file_descriptor,
264
+ file_encoding,
265
+ )
266
+ output_cabrillo_line(
253
267
  f"CREATED-BY: Not1MM v{__version__}",
254
- end="\r\n",
255
- file=file_descriptor,
268
+ "\r\n",
269
+ file_descriptor,
270
+ file_encoding,
256
271
  )
257
- print(
272
+ output_cabrillo_line(
258
273
  f"CONTEST: {cabrillo_name}",
259
- end="\r\n",
260
- file=file_descriptor,
274
+ "\r\n",
275
+ file_descriptor,
276
+ file_encoding,
261
277
  )
262
278
  if self.station.get("Club", ""):
263
- print(
279
+ output_cabrillo_line(
264
280
  f"CLUB: {self.station.get('Club', '').upper()}",
265
- end="\r\n",
266
- file=file_descriptor,
281
+ "\r\n",
282
+ file_descriptor,
283
+ file_encoding,
267
284
  )
268
- print(
285
+ output_cabrillo_line(
269
286
  f"CALLSIGN: {self.station.get('Call','')}",
270
- end="\r\n",
271
- file=file_descriptor,
287
+ "\r\n",
288
+ file_descriptor,
289
+ file_encoding,
272
290
  )
273
- print(
291
+ output_cabrillo_line(
274
292
  f"LOCATION: {self.station.get('ARRLSection', '')}",
275
- end="\r\n",
276
- file=file_descriptor,
293
+ "\r\n",
294
+ file_descriptor,
295
+ file_encoding,
277
296
  )
278
- # print(
279
- # f"ARRL-SECTION: {self.pref.get('section', '')}",
280
- # end="\r\n",
281
- # file=file_descriptor,
282
- # )
283
- print(
297
+ output_cabrillo_line(
284
298
  f"CATEGORY-OPERATOR: {self.contest_settings.get('OperatorCategory','')}",
285
- end="\r\n",
286
- file=file_descriptor,
299
+ "\r\n",
300
+ file_descriptor,
301
+ file_encoding,
287
302
  )
288
- print(
303
+ output_cabrillo_line(
289
304
  f"CATEGORY-ASSISTED: {self.contest_settings.get('AssistedCategory','')}",
290
- end="\r\n",
291
- file=file_descriptor,
305
+ "\r\n",
306
+ file_descriptor,
307
+ file_encoding,
292
308
  )
293
- print(
309
+ output_cabrillo_line(
294
310
  f"CATEGORY-BAND: {self.contest_settings.get('BandCategory','')}",
295
- end="\r\n",
296
- file=file_descriptor,
311
+ "\r\n",
312
+ file_descriptor,
313
+ file_encoding,
297
314
  )
298
- print(
315
+ output_cabrillo_line(
299
316
  f"CATEGORY-MODE: {self.contest_settings.get('ModeCategory','')}",
300
- end="\r\n",
301
- file=file_descriptor,
317
+ "\r\n",
318
+ file_descriptor,
319
+ file_encoding,
302
320
  )
303
- print(
321
+ output_cabrillo_line(
304
322
  f"CATEGORY-TRANSMITTER: {self.contest_settings.get('TransmitterCategory','')}",
305
- end="\r\n",
306
- file=file_descriptor,
323
+ "\r\n",
324
+ file_descriptor,
325
+ file_encoding,
307
326
  )
308
327
  if self.contest_settings.get("OverlayCategory", "") != "N/A":
309
- print(
328
+ output_cabrillo_line(
310
329
  f"CATEGORY-OVERLAY: {self.contest_settings.get('OverlayCategory','')}",
311
- end="\r\n",
312
- file=file_descriptor,
330
+ "\r\n",
331
+ file_descriptor,
332
+ file_encoding,
313
333
  )
314
- print(
334
+ output_cabrillo_line(
315
335
  f"GRID-LOCATOR: {self.station.get('GridSquare','')}",
316
- end="\r\n",
317
- file=file_descriptor,
336
+ "\r\n",
337
+ file_descriptor,
338
+ file_encoding,
318
339
  )
319
- # print(
320
- # f"CATEGORY: {None}",
321
- # end="\r\n",
322
- # file=file_descriptor,
323
- # )
324
- print(
340
+ output_cabrillo_line(
325
341
  f"CATEGORY-POWER: {self.contest_settings.get('PowerCategory','')}",
326
- end="\r\n",
327
- file=file_descriptor,
342
+ "\r\n",
343
+ file_descriptor,
344
+ file_encoding,
328
345
  )
329
346
 
330
- print(
347
+ output_cabrillo_line(
331
348
  f"CLAIMED-SCORE: {calc_score(self)}",
332
- end="\r\n",
333
- file=file_descriptor,
349
+ "\r\n",
350
+ file_descriptor,
351
+ file_encoding,
334
352
  )
335
353
  ops = f"@{self.station.get('Call','')}"
336
354
  list_of_ops = self.database.get_ops()
337
355
  for op in list_of_ops:
338
356
  ops += f", {op.get('Operator', '')}"
339
- print(
357
+ output_cabrillo_line(
340
358
  f"OPERATORS: {ops}",
341
- end="\r\n",
342
- file=file_descriptor,
359
+ "\r\n",
360
+ file_descriptor,
361
+ file_encoding,
343
362
  )
344
- print(
363
+ output_cabrillo_line(
345
364
  f"NAME: {self.station.get('Name', '')}",
346
- end="\r\n",
347
- file=file_descriptor,
365
+ "\r\n",
366
+ file_descriptor,
367
+ file_encoding,
348
368
  )
349
- print(
369
+ output_cabrillo_line(
350
370
  f"ADDRESS: {self.station.get('Street1', '')}",
351
- end="\r\n",
352
- file=file_descriptor,
371
+ "\r\n",
372
+ file_descriptor,
373
+ file_encoding,
353
374
  )
354
- print(
375
+ output_cabrillo_line(
355
376
  f"ADDRESS-CITY: {self.station.get('City', '')}",
356
- end="\r\n",
357
- file=file_descriptor,
377
+ "\r\n",
378
+ file_descriptor,
379
+ file_encoding,
358
380
  )
359
- print(
381
+ output_cabrillo_line(
360
382
  f"ADDRESS-STATE-PROVINCE: {self.station.get('State', '')}",
361
- end="\r\n",
362
- file=file_descriptor,
383
+ "\r\n",
384
+ file_descriptor,
385
+ file_encoding,
363
386
  )
364
- print(
387
+ output_cabrillo_line(
365
388
  f"ADDRESS-POSTALCODE: {self.station.get('Zip', '')}",
366
- end="\r\n",
367
- file=file_descriptor,
389
+ "\r\n",
390
+ file_descriptor,
391
+ file_encoding,
368
392
  )
369
- print(
393
+ output_cabrillo_line(
370
394
  f"ADDRESS-COUNTRY: {self.station.get('Country', '')}",
371
- end="\r\n",
372
- file=file_descriptor,
395
+ "\r\n",
396
+ file_descriptor,
397
+ file_encoding,
373
398
  )
374
- print(
399
+ output_cabrillo_line(
375
400
  f"EMAIL: {self.station.get('Email', '')}",
376
- end="\r\n",
377
- file=file_descriptor,
401
+ "\r\n",
402
+ file_descriptor,
403
+ file_encoding,
378
404
  )
379
405
  for contact in log:
380
406
  the_date_and_time = contact.get("TS", "")
@@ -385,7 +411,7 @@ def cabrillo(self):
385
411
 
386
412
  loggeddate = the_date_and_time[:10]
387
413
  loggedtime = the_date_and_time[11:13] + the_date_and_time[14:16]
388
- print(
414
+ output_cabrillo_line(
389
415
  f"QSO: {frequency} {themode} {loggeddate} {loggedtime} "
390
416
  f"{contact.get('StationPrefix', '').ljust(13)} "
391
417
  f"{str(contact.get('SNT', '')).ljust(3)} "
@@ -393,10 +419,11 @@ def cabrillo(self):
393
419
  f"{contact.get('Call', '').ljust(13)} "
394
420
  f"{str(contact.get('RCV', '')).ljust(3)} "
395
421
  f"{str(contact.get('NR', '')).ljust(6)}",
396
- end="\r\n",
397
- file=file_descriptor,
422
+ "\r\n",
423
+ file_descriptor,
424
+ file_encoding,
398
425
  )
399
- print("END-OF-LOG:", end="\r\n", file=file_descriptor)
426
+ output_cabrillo_line("END-OF-LOG:", "\r\n", file_descriptor, file_encoding)
400
427
  self.show_message_box(f"Cabrillo saved to: {filename}")
401
428
  except IOError as exception:
402
429
  logger.critical("cabrillo: IO error: %s, writing to %s", exception, filename)
@@ -231,7 +231,16 @@ def adif(self):
231
231
  gen_adif(self, cabrillo_name, "IARU FIELDDAY R1 DARC SSB")
232
232
 
233
233
 
234
- def cabrillo(self):
234
+ def output_cabrillo_line(line_to_output, ending, file_descriptor, file_encoding):
235
+ """"""
236
+ print(
237
+ line_to_output.encode(file_encoding, errors="ignore").decode(),
238
+ end=ending,
239
+ file=file_descriptor,
240
+ )
241
+
242
+
243
+ def cabrillo(self, file_encoding):
235
244
  """Generates Cabrillo file. Maybe."""
236
245
  # https://www.cqwpx.com/cabrillo.htm
237
246
  logger.debug("******Cabrillo*****")
@@ -248,133 +257,150 @@ def cabrillo(self):
248
257
  log = self.database.fetch_all_contacts_asc()
249
258
  try:
250
259
  with open(filename, "w", encoding="utf-8") as file_descriptor:
251
- print("START-OF-LOG: 3.0", end="\r\n", file=file_descriptor)
252
- print(
260
+ output_cabrillo_line(
261
+ "START-OF-LOG: 3.0",
262
+ "\r\n",
263
+ file_descriptor,
264
+ file_encoding,
265
+ )
266
+ output_cabrillo_line(
253
267
  f"CREATED-BY: Not1MM v{__version__}",
254
- end="\r\n",
255
- file=file_descriptor,
268
+ "\r\n",
269
+ file_descriptor,
270
+ file_encoding,
256
271
  )
257
- print(
272
+ output_cabrillo_line(
258
273
  f"CONTEST: {cabrillo_name}",
259
- end="\r\n",
260
- file=file_descriptor,
274
+ "\r\n",
275
+ file_descriptor,
276
+ file_encoding,
261
277
  )
262
278
  if self.station.get("Club", ""):
263
- print(
279
+ output_cabrillo_line(
264
280
  f"CLUB: {self.station.get('Club', '').upper()}",
265
- end="\r\n",
266
- file=file_descriptor,
281
+ "\r\n",
282
+ file_descriptor,
283
+ file_encoding,
267
284
  )
268
- print(
285
+ output_cabrillo_line(
269
286
  f"CALLSIGN: {self.station.get('Call','')}",
270
- end="\r\n",
271
- file=file_descriptor,
287
+ "\r\n",
288
+ file_descriptor,
289
+ file_encoding,
272
290
  )
273
- print(
291
+ output_cabrillo_line(
274
292
  f"LOCATION: {self.station.get('ARRLSection', '')}",
275
- end="\r\n",
276
- file=file_descriptor,
293
+ "\r\n",
294
+ file_descriptor,
295
+ file_encoding,
277
296
  )
278
- # print(
279
- # f"ARRL-SECTION: {self.pref.get('section', '')}",
280
- # end="\r\n",
281
- # file=file_descriptor,
282
- # )
283
- print(
297
+ output_cabrillo_line(
284
298
  f"CATEGORY-OPERATOR: {self.contest_settings.get('OperatorCategory','')}",
285
- end="\r\n",
286
- file=file_descriptor,
299
+ "\r\n",
300
+ file_descriptor,
301
+ file_encoding,
287
302
  )
288
- print(
303
+ output_cabrillo_line(
289
304
  f"CATEGORY-ASSISTED: {self.contest_settings.get('AssistedCategory','')}",
290
- end="\r\n",
291
- file=file_descriptor,
305
+ "\r\n",
306
+ file_descriptor,
307
+ file_encoding,
292
308
  )
293
- print(
309
+ output_cabrillo_line(
294
310
  f"CATEGORY-BAND: {self.contest_settings.get('BandCategory','')}",
295
- end="\r\n",
296
- file=file_descriptor,
311
+ "\r\n",
312
+ file_descriptor,
313
+ file_encoding,
297
314
  )
298
- print(
315
+ output_cabrillo_line(
299
316
  f"CATEGORY-MODE: {self.contest_settings.get('ModeCategory','')}",
300
- end="\r\n",
301
- file=file_descriptor,
317
+ "\r\n",
318
+ file_descriptor,
319
+ file_encoding,
302
320
  )
303
- print(
321
+ output_cabrillo_line(
304
322
  f"CATEGORY-TRANSMITTER: {self.contest_settings.get('TransmitterCategory','')}",
305
- end="\r\n",
306
- file=file_descriptor,
323
+ "\r\n",
324
+ file_descriptor,
325
+ file_encoding,
307
326
  )
308
327
  if self.contest_settings.get("OverlayCategory", "") != "N/A":
309
- print(
328
+ output_cabrillo_line(
310
329
  f"CATEGORY-OVERLAY: {self.contest_settings.get('OverlayCategory','')}",
311
- end="\r\n",
312
- file=file_descriptor,
330
+ "\r\n",
331
+ file_descriptor,
332
+ file_encoding,
313
333
  )
314
- print(
334
+ output_cabrillo_line(
315
335
  f"GRID-LOCATOR: {self.station.get('GridSquare','')}",
316
- end="\r\n",
317
- file=file_descriptor,
336
+ "\r\n",
337
+ file_descriptor,
338
+ file_encoding,
318
339
  )
319
- # print(
320
- # f"CATEGORY: {None}",
321
- # end="\r\n",
322
- # file=file_descriptor,
323
- # )
324
- print(
340
+ output_cabrillo_line(
325
341
  f"CATEGORY-POWER: {self.contest_settings.get('PowerCategory','')}",
326
- end="\r\n",
327
- file=file_descriptor,
342
+ "\r\n",
343
+ file_descriptor,
344
+ file_encoding,
328
345
  )
329
346
 
330
- print(
347
+ output_cabrillo_line(
331
348
  f"CLAIMED-SCORE: {calc_score(self)}",
332
- end="\r\n",
333
- file=file_descriptor,
349
+ "\r\n",
350
+ file_descriptor,
351
+ file_encoding,
334
352
  )
335
353
  ops = f"@{self.station.get('Call','')}"
336
354
  list_of_ops = self.database.get_ops()
337
355
  for op in list_of_ops:
338
356
  ops += f", {op.get('Operator', '')}"
339
- print(
357
+ output_cabrillo_line(
340
358
  f"OPERATORS: {ops}",
341
- end="\r\n",
342
- file=file_descriptor,
359
+ "\r\n",
360
+ file_descriptor,
361
+ file_encoding,
343
362
  )
344
- print(
363
+ output_cabrillo_line(
345
364
  f"NAME: {self.station.get('Name', '')}",
346
- end="\r\n",
347
- file=file_descriptor,
365
+ "\r\n",
366
+ file_descriptor,
367
+ file_encoding,
348
368
  )
349
- print(
369
+ output_cabrillo_line(
350
370
  f"ADDRESS: {self.station.get('Street1', '')}",
351
- end="\r\n",
352
- file=file_descriptor,
371
+ "\r\n",
372
+ file_descriptor,
373
+ file_encoding,
353
374
  )
354
- print(
375
+ output_cabrillo_line(
355
376
  f"ADDRESS-CITY: {self.station.get('City', '')}",
356
- end="\r\n",
357
- file=file_descriptor,
377
+ "\r\n",
378
+ file_descriptor,
379
+ file_encoding,
358
380
  )
359
- print(
381
+ output_cabrillo_line(
360
382
  f"ADDRESS-STATE-PROVINCE: {self.station.get('State', '')}",
361
- end="\r\n",
362
- file=file_descriptor,
383
+ "\r\n",
384
+ file_descriptor,
385
+ file_encoding,
363
386
  )
364
- print(
387
+ output_cabrillo_line(
365
388
  f"ADDRESS-POSTALCODE: {self.station.get('Zip', '')}",
366
- end="\r\n",
367
- file=file_descriptor,
389
+ "\r\n",
390
+ file_descriptor,
391
+ file_encoding,
368
392
  )
369
- print(
393
+ output_cabrillo_line(
370
394
  f"ADDRESS-COUNTRY: {self.station.get('Country', '')}",
371
- end="\r\n",
372
- file=file_descriptor,
395
+ "\r\n",
396
+ file_descriptor,
397
+ file_encoding,
373
398
  )
374
- print(
399
+ output_cabrillo_line(
375
400
  f"EMAIL: {self.station.get('Email', '')}",
376
- end="\r\n",
377
- file=file_descriptor,
401
+ "\r\n",
402
+ file_descriptor,
403
+ file_encoding,
378
404
  )
379
405
  for contact in log:
380
406
  the_date_and_time = contact.get("TS", "")
@@ -385,7 +411,7 @@ def cabrillo(self):
385
411
 
386
412
  loggeddate = the_date_and_time[:10]
387
413
  loggedtime = the_date_and_time[11:13] + the_date_and_time[14:16]
388
- print(
414
+ output_cabrillo_line(
389
415
  f"QSO: {frequency} {themode} {loggeddate} {loggedtime} "
390
416
  f"{contact.get('StationPrefix', '').ljust(13)} "
391
417
  f"{str(contact.get('SNT', '')).ljust(3)} "
@@ -393,10 +419,11 @@ def cabrillo(self):
393
419
  f"{contact.get('Call', '').ljust(13)} "
394
420
  f"{str(contact.get('RCV', '')).ljust(3)} "
395
421
  f"{str(contact.get('NR', '')).ljust(6)}",
396
- end="\r\n",
397
- file=file_descriptor,
422
+ "\r\n",
423
+ file_descriptor,
424
+ file_encoding,
398
425
  )
399
- print("END-OF-LOG:", end="\r\n", file=file_descriptor)
426
+ output_cabrillo_line("END-OF-LOG:", "\r\n", file_descriptor, file_encoding)
400
427
  self.show_message_box(f"Cabrillo saved to: {filename}")
401
428
  except IOError as exception:
402
429
  logger.critical("cabrillo: IO error: %s, writing to %s", exception, filename)