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