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)
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", "")
@@ -400,7 +426,7 @@ def cabrillo(self):
400
426
 
401
427
  loggeddate = the_date_and_time[:10]
402
428
  loggedtime = the_date_and_time[11:13] + the_date_and_time[14:16]
403
- print(
429
+ output_cabrillo_line(
404
430
  f"QSO: {frequency} {themode} {loggeddate} {loggedtime} "
405
431
  f"{contact.get('StationPrefix', '').ljust(13)} "
406
432
  # f"{str(contact.get('SNT', '')).ljust(3)} "
@@ -408,10 +434,11 @@ def cabrillo(self):
408
434
  f"{contact.get('Call', '').ljust(13)} "
409
435
  # f"{str(contact.get('RCV', '')).ljust(3)} "
410
436
  f"{str(contact.get('NR', '')).ljust(6)}",
411
- end="\r\n",
412
- file=file_descriptor,
437
+ "\r\n",
438
+ file_descriptor,
439
+ file_encoding,
413
440
  )
414
- print("END-OF-LOG:", end="\r\n", file=file_descriptor)
441
+ output_cabrillo_line("END-OF-LOG:", "\r\n", file_descriptor, file_encoding)
415
442
  self.show_message_box(f"Cabrillo saved to: {filename}")
416
443
  except IOError as exception:
417
444
  logger.critical("cabrillo: IO error: %s, writing to %s", exception, filename)
@@ -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)