not1mm 25.6.16.1__tar.gz → 25.6.18.1__tar.gz

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 (205) hide show
  1. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/PKG-INFO +2 -1
  2. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/README.md +1 -0
  3. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/__main__.py +1 -1
  4. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/new_contest.ui +5 -0
  5. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/lookup.py +36 -25
  6. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/plugin_common.py +19 -18
  7. not1mm-25.6.18.1/not1mm/lib/version.py +3 -0
  8. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lookupservice.py +9 -8
  9. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/es_field_day.py +40 -19
  10. not1mm-25.6.18.1/not1mm/plugins/es_manual_key.py +651 -0
  11. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/es_open.py +33 -13
  12. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm.egg-info/PKG-INFO +2 -1
  13. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm.egg-info/SOURCES.txt +1 -0
  14. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/pyproject.toml +1 -1
  15. not1mm-25.6.16.1/not1mm/lib/version.py +0 -3
  16. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/LICENSE +0 -0
  17. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/__init__.py +0 -0
  18. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/bandmap.py +0 -0
  19. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/checkwindow.py +0 -0
  20. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/JetBrainsMono-Thin.ttf +0 -0
  21. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/MASTER.SCP +0 -0
  22. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/about.ui +0 -0
  23. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/alpha bravo charlie delta.txt +0 -0
  24. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/bandmap.ui +0 -0
  25. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/check.png +0 -0
  26. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/checkwindow.ui +0 -0
  27. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/cloud_green.png +0 -0
  28. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/cloud_red.png +0 -0
  29. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/configuration.ui +0 -0
  30. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/contests.sql +0 -0
  31. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/cty.json +0 -0
  32. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/cwmacros.txt +0 -0
  33. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/donors.html +0 -0
  34. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/dxcc_tracker.ui +0 -0
  35. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/editcontact.ui +0 -0
  36. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/editmacro.ui +0 -0
  37. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/greendot.png +0 -0
  38. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/k6gte-not1mm.desktop +0 -0
  39. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/k6gte.not1mm-128.png +0 -0
  40. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/k6gte.not1mm-32.png +0 -0
  41. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/k6gte.not1mm-64.png +0 -0
  42. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/logwindow.ui +0 -0
  43. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/logwindowx.ui +0 -0
  44. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/main.ui +0 -0
  45. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/map3.png +0 -0
  46. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/not1mm.html +0 -0
  47. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/opon.ui +0 -0
  48. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/0.wav +0 -0
  49. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/1.wav +0 -0
  50. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/2.wav +0 -0
  51. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/3.wav +0 -0
  52. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/4.wav +0 -0
  53. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/5.wav +0 -0
  54. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/6.wav +0 -0
  55. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/7.wav +0 -0
  56. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/73.wav +0 -0
  57. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/8.wav +0 -0
  58. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/9.wav +0 -0
  59. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/a.wav +0 -0
  60. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/again.wav +0 -0
  61. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/b.wav +0 -0
  62. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/c.wav +0 -0
  63. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/contest.wav +0 -0
  64. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/cq.wav +0 -0
  65. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/cq2.wav +0 -0
  66. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/d.wav +0 -0
  67. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/e.wav +0 -0
  68. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/f.wav +0 -0
  69. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/g.wav +0 -0
  70. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/h.wav +0 -0
  71. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/i.wav +0 -0
  72. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/j.wav +0 -0
  73. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/k.wav +0 -0
  74. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/k6gte.wav +0 -0
  75. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/l.wav +0 -0
  76. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/m.wav +0 -0
  77. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/mynumber.wav +0 -0
  78. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/n.wav +0 -0
  79. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/nil.wav +0 -0
  80. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/o.wav +0 -0
  81. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/p.wav +0 -0
  82. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/q.wav +0 -0
  83. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/r.wav +0 -0
  84. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/roger.wav +0 -0
  85. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/s.wav +0 -0
  86. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/space.wav +0 -0
  87. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/t.wav +0 -0
  88. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/thankyou.wav +0 -0
  89. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
  90. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/u.wav +0 -0
  91. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/v.wav +0 -0
  92. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/w.wav +0 -0
  93. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/x.wav +0 -0
  94. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/y.wav +0 -0
  95. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/yourcall.wav +0 -0
  96. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/phonetics/z.wav +0 -0
  97. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/pickcontest.ui +0 -0
  98. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/radio_green.png +0 -0
  99. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/radio_grey.png +0 -0
  100. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/radio_red.png +0 -0
  101. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/ratewindow.ui +0 -0
  102. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/reddot.png +0 -0
  103. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/rotator.ui +0 -0
  104. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/rttymacros.txt +0 -0
  105. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/settings.ui +0 -0
  106. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/splash.png +0 -0
  107. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/ssbmacros.txt +0 -0
  108. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/statistics.ui +0 -0
  109. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/data/vfo.ui +0 -0
  110. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/dxcc_tracker.py +0 -0
  111. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/fsutils.py +0 -0
  112. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/__init__.py +0 -0
  113. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/about.py +0 -0
  114. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/cat_interface.py +0 -0
  115. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/cwinterface.py +0 -0
  116. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/database.py +0 -0
  117. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/edit_contact.py +0 -0
  118. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/edit_macro.py +0 -0
  119. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/edit_opon.py +0 -0
  120. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/edit_station.py +0 -0
  121. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/fldigi_sendstring.py +0 -0
  122. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/ft8_watcher.py +0 -0
  123. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/ham_utility.py +0 -0
  124. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/multicast.py +0 -0
  125. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/n1mm.py +0 -0
  126. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/new_contest.py +0 -0
  127. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/rot_interface.py +0 -0
  128. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/select_contest.py +0 -0
  129. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/settings.py +0 -0
  130. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/super_check_partial.py +0 -0
  131. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/lib/versiontest.py +0 -0
  132. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/logwindow.py +0 -0
  133. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/10_10_fall_cw.py +0 -0
  134. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/10_10_spring_cw.py +0 -0
  135. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/10_10_summer_phone.py +0 -0
  136. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/10_10_winter_phone.py +0 -0
  137. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/__init__.py +0 -0
  138. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/ari_40_80.py +0 -0
  139. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/ari_dx.py +0 -0
  140. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/arrl_10m.py +0 -0
  141. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/arrl_160m.py +0 -0
  142. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/arrl_dx_cw.py +0 -0
  143. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/arrl_dx_ssb.py +0 -0
  144. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/arrl_field_day.py +0 -0
  145. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/arrl_rtty_ru.py +0 -0
  146. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/arrl_ss_cw.py +0 -0
  147. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/arrl_ss_phone.py +0 -0
  148. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/arrl_vhf_jan.py +0 -0
  149. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/arrl_vhf_jun.py +0 -0
  150. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/arrl_vhf_sep.py +0 -0
  151. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/canada_day.py +0 -0
  152. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/cq_160_cw.py +0 -0
  153. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/cq_160_ssb.py +0 -0
  154. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/cq_wpx_cw.py +0 -0
  155. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/cq_wpx_rtty.py +0 -0
  156. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/cq_wpx_ssb.py +0 -0
  157. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/cq_ww_cw.py +0 -0
  158. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/cq_ww_rtty.py +0 -0
  159. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/cq_ww_ssb.py +0 -0
  160. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/cwt.py +0 -0
  161. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/darc_vhf.py +0 -0
  162. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/darc_xmas.py +0 -0
  163. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/ea_majistad_cw.py +0 -0
  164. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/ea_majistad_ssb.py +0 -0
  165. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/ea_rtty.py +0 -0
  166. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/general_logging.py +0 -0
  167. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/helvetia.py +0 -0
  168. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
  169. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
  170. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/iaru_hf.py +0 -0
  171. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/icwc_mst.py +0 -0
  172. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/jidx_cw.py +0 -0
  173. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/jidx_ph.py +0 -0
  174. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/k1usn_sst.py +0 -0
  175. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/labre_rs_digi.py +0 -0
  176. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/lz-dx.py +0 -0
  177. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/naqp_cw.py +0 -0
  178. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/naqp_rtty.py +0 -0
  179. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/naqp_ssb.py +0 -0
  180. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/phone_weekly_test.py +0 -0
  181. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/raem.py +0 -0
  182. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/randomgram.py +0 -0
  183. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/ref_cw.py +0 -0
  184. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/ref_ssb.py +0 -0
  185. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/sac_cw.py +0 -0
  186. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/sac_ssb.py +0 -0
  187. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/spdx.py +0 -0
  188. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/stew_perry_topband.py +0 -0
  189. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/ukeidx.py +0 -0
  190. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/vhf_sprint.py +0 -0
  191. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/weekly_rtty.py +0 -0
  192. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/plugins/winter_field_day.py +0 -0
  193. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/radio.py +0 -0
  194. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/ratewindow.py +0 -0
  195. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/rotator.py +0 -0
  196. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/rtc_service.py +0 -0
  197. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/statistics.py +0 -0
  198. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/test.py +0 -0
  199. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/vfo.py +0 -0
  200. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm/voice_keying.py +0 -0
  201. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm.egg-info/dependency_links.txt +0 -0
  202. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm.egg-info/entry_points.txt +0 -0
  203. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm.egg-info/requires.txt +0 -0
  204. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/not1mm.egg-info/top_level.txt +0 -0
  205. {not1mm-25.6.16.1 → not1mm-25.6.18.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: not1mm
3
- Version: 25.6.16.1
3
+ Version: 25.6.18.1
4
4
  Summary: NOT1MM Logger
5
5
  Author-email: Michael Bridak <michael.bridak@gmail.com>
6
6
  License: GPL-3.0-or-later
@@ -246,6 +246,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
246
246
 
247
247
  ## Recent Changes
248
248
 
249
+ - [25-6-18] Merged changes from @term73, Adding ES Manual Key contest.
249
250
  - [25-6-16] Merged PR from @awandahl SM0HPL, adding ESM buttons to General DX Logging plugin.
250
251
  - [25-6-15] Corrected tab focus of rotator windows buttons.
251
252
  - [25-6-13] Polished up the Rotator window. Adding Stop and Park. Made the NSWE buttons smaller.
@@ -214,6 +214,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
214
214
 
215
215
  ## Recent Changes
216
216
 
217
+ - [25-6-18] Merged changes from @term73, Adding ES Manual Key contest.
217
218
  - [25-6-16] Merged PR from @awandahl SM0HPL, adding ESM buttons to General DX Logging plugin.
218
219
  - [25-6-15] Corrected tab focus of rotator windows buttons.
219
220
  - [25-6-13] Polished up the Rotator window. Adding Stop and Park. Made the NSWE buttons smaller.
@@ -3399,7 +3399,7 @@ class MainWindow(QtWidgets.QMainWindow):
3399
3399
  return
3400
3400
  self.cw.sendcw(self.process_macro(function_key.toolTip()))
3401
3401
  # if self.pref.get("cwtype") == 2:
3402
- time.sleep(0.3)
3402
+ # time.sleep(0.3)
3403
3403
  # return
3404
3404
 
3405
3405
  def toggle_run_sp(self) -> None:
@@ -367,6 +367,11 @@
367
367
  <string>ES FIELD DAY</string>
368
368
  </property>
369
369
  </item>
370
+ <item>
371
+ <property name="text">
372
+ <string>ES MANUAL KEY</string>
373
+ </property>
374
+ </item>
370
375
  <item>
371
376
  <property name="text">
372
377
  <string>HELVETIA</string>
@@ -74,27 +74,30 @@ class HamDBlookup:
74
74
  if root:
75
75
  messages = root.get("messages")
76
76
  callsign = root.get("callsign")
77
- if messages:
78
- error_text = messages.get("status")
79
- logger.debug("HamDB: %s", error_text)
80
- if error_text != "OK":
81
- self.error = False
82
- if callsign:
83
- logger.debug("HamDB: found callsign field")
84
- if callsign.get("grid"):
85
- grid = callsign.get("grid")
86
- if callsign.get("fname"):
87
- name = callsign.get("fname")
88
- if callsign.get("name"):
89
- if not name:
90
- name = callsign.get("name")
91
- else:
92
- name = f"{name} {callsign.get('name')}"
93
- if callsign.get("nickname"):
94
- nickname = callsign.get("nickname")
77
+ if messages is not None:
78
+ error_text = messages.get("status")
79
+ logger.debug("HamDB: %s", error_text)
80
+ if error_text != "OK":
81
+ self.error = False
82
+ if callsign is not None:
83
+ logger.debug("HamDB: found callsign field")
84
+ if callsign.get("grid"):
85
+ grid = callsign.get("grid")
86
+ if callsign.get("fname"):
87
+ name = callsign.get("fname")
88
+ if callsign.get("name"):
89
+ if not name:
90
+ name = callsign.get("name")
91
+ else:
92
+ name = f"{name} {callsign.get('name')}"
93
+ if callsign.get("nickname"):
94
+ nickname = callsign.get("nickname")
95
95
  else:
96
96
  self.error = True
97
97
  error_text = str(query_result.status_code)
98
+ logger.critical(
99
+ "HamDB-lookup: %s %s %s %s", grid, name, nickname, error_text
100
+ )
98
101
  logger.info("HamDB-lookup: %s %s %s %s", grid, name, nickname, error_text)
99
102
  return grid, name, nickname, error_text
100
103
 
@@ -166,12 +169,20 @@ class QRZlookup:
166
169
  )
167
170
 
168
171
  logger.info("\n\n%s\n\n", root)
169
- logger.info(
170
- "key:%s error:%s message:%s",
171
- self.session,
172
- self.error,
173
- self.message,
174
- )
172
+ if self.error:
173
+ logger.critical(
174
+ "key:%s error:%s message:%s",
175
+ self.session,
176
+ self.error,
177
+ self.message,
178
+ )
179
+ else:
180
+ logger.info(
181
+ "key:%s error:%s message:%s",
182
+ self.session,
183
+ self.error,
184
+ self.message,
185
+ )
175
186
  except requests.exceptions.RequestException as exception:
176
187
  logger.info("%s", exception)
177
188
  self.session = False
@@ -209,7 +220,7 @@ class QRZlookup:
209
220
  )
210
221
  baseroot = xmltodict.parse(query_result.text)
211
222
  root = baseroot.get("QRZDatabase", {})
212
- return root.get("Callsign")
223
+ return root.get("Callsign", {})
213
224
 
214
225
 
215
226
  class HamQTH:
@@ -338,22 +338,23 @@ def gen_adif(self, cabrillo_name: str, contest_id=""):
338
338
  self.show_message_box(f"Error saving ADIF file: {error}")
339
339
 
340
340
 
341
- def get_station_arrlsection_code(self):
342
- # get the station ARRL Section in station settings
343
- query = f"SELECT ARRLSection as arrlsection from Station;"
344
- # run query
345
- result = self.database.exec_sql(query)
346
- if result:
347
- arrlsection = result.get("arrlsection", "")
348
- return arrlsection
349
- return ""
341
+ # def get_station_arrlsection_code(self):
342
+ # # get the station ARRL Section in station settings
343
+ # query = f"SELECT ARRLSection as arrlsection from Station;"
344
+ # # run query
345
+ # result = self.database.exec_sql(query)
346
+ # if result:
347
+ # arrlsection = result.get("arrlsection", "")
348
+ # return arrlsection
349
+ # return ""
350
350
 
351
- def get_station_state_code(self):
352
- # get the station state code in station settings
353
- query = f"SELECT state as state from Station;"
354
- # run query
355
- result = self.database.exec_sql(query)
356
- if result:
357
- state = result.get("state", "")
358
- return state
359
- return ""
351
+
352
+ # def get_station_state_code(self):
353
+ # # get the station state code in station settings
354
+ # query = f"SELECT state as state from Station;"
355
+ # # run query
356
+ # result = self.database.exec_sql(query)
357
+ # if result:
358
+ # state = result.get("state", "")
359
+ # return state
360
+ # return ""
@@ -0,0 +1,3 @@
1
+ """It's the version"""
2
+
3
+ __version__ = "25.6.18.1"
@@ -40,14 +40,14 @@ class LookupService(QDockWidget):
40
40
 
41
41
  if self.settings.get("useqrz"):
42
42
  self.look_up = QRZlookup(
43
- self.settings.get("lookupusername"),
44
- self.settings.get("lookuppassword"),
43
+ self.settings.get("lookupusername", ""),
44
+ self.settings.get("lookuppassword", ""),
45
45
  )
46
46
 
47
47
  if self.settings.get("usehamqth"):
48
48
  self.look_up = HamQTH(
49
- self.settings.get("lookupusername"),
50
- self.settings.get("lookuppassword"),
49
+ self.settings.get("lookupusername", ""),
50
+ self.settings.get("lookuppassword", ""),
51
51
  )
52
52
 
53
53
  def get_settings(self) -> dict:
@@ -55,6 +55,7 @@ class LookupService(QDockWidget):
55
55
  if os.path.exists(fsutils.CONFIG_FILE):
56
56
  with open(fsutils.CONFIG_FILE, "rt", encoding="utf-8") as file_descriptor:
57
57
  return loads(file_descriptor.read())
58
+ return {}
58
59
 
59
60
  def msg_from_main(self, packet):
60
61
  """"""
@@ -74,12 +75,12 @@ class LookupService(QDockWidget):
74
75
  self.look_up = None
75
76
  if self.settings.get("useqrz"):
76
77
  self.look_up = QRZlookup(
77
- self.settings.get("lookupusername"),
78
- self.settings.get("lookuppassword"),
78
+ self.settings.get("lookupusername", ""),
79
+ self.settings.get("lookuppassword", ""),
79
80
  )
80
81
 
81
82
  if self.settings.get("usehamqth"):
82
83
  self.look_up = HamQTH(
83
- self.settings.get("lookupusername"),
84
- self.settings.get("lookuppassword"),
84
+ self.settings.get("lookupusername", ""),
85
+ self.settings.get("lookuppassword", ""),
85
86
  )
@@ -10,9 +10,11 @@ from pathlib import Path
10
10
 
11
11
  from PyQt6 import QtWidgets
12
12
 
13
- from not1mm.lib.plugin_common import gen_adif, get_points, get_station_state_code, get_station_arrlsection_code
13
+ from not1mm.lib.plugin_common import (
14
+ gen_adif,
15
+ get_points,
16
+ )
14
17
 
15
- from not1mm.lib.ham_utility import calculate_wpx_prefix
16
18
  from not1mm.lib.version import __version__
17
19
 
18
20
  logger = logging.getLogger(__name__)
@@ -56,9 +58,10 @@ estonian_regions = [
56
58
  "TL",
57
59
  "VC",
58
60
  "VO",
59
- "VP"
61
+ "VP",
60
62
  ]
61
63
 
64
+
62
65
  def specific_contest_check_dupe(self, call):
63
66
  """"""
64
67
  # get mode from radio state
@@ -85,7 +88,7 @@ def specific_contest_check_dupe(self, call):
85
88
  time_period_1 = time_periods[0] if len(time_periods) > 0 else None
86
89
  time_period_2 = time_periods[1] if len(time_periods) > 1 else None
87
90
  time_period_3 = time_periods[2] if len(time_periods) > 2 else None
88
-
91
+
89
92
  # get current time in UTC
90
93
  iso_current_time = datetime.now(timezone.utc)
91
94
  current_time = iso_current_time.replace(tzinfo=None)
@@ -93,7 +96,11 @@ def specific_contest_check_dupe(self, call):
93
96
  result = {}
94
97
  result["isdupe"] = False
95
98
 
96
- if current_time < time_period_1 and current_time >= start_date_init_date:
99
+ if (
100
+ time_period_1 is not None
101
+ and current_time < time_period_1
102
+ and current_time >= start_date_init_date
103
+ ):
97
104
 
98
105
  result = self.database.check_dupe_on_period_mode(
99
106
  call,
@@ -103,7 +110,12 @@ def specific_contest_check_dupe(self, call):
103
110
  time_period_1.strftime("%Y-%m-%d %H:%M:%S"),
104
111
  )
105
112
 
106
- if current_time < time_period_2 and current_time >= time_period_1:
113
+ if (
114
+ time_period_1 is not None
115
+ and time_period_2 is not None
116
+ and current_time < time_period_2
117
+ and current_time >= time_period_1
118
+ ):
107
119
 
108
120
  result = self.database.check_dupe_on_period_mode(
109
121
  call,
@@ -113,7 +125,12 @@ def specific_contest_check_dupe(self, call):
113
125
  time_period_2.strftime("%Y-%m-%d %H:%M:%S"),
114
126
  )
115
127
 
116
- if current_time < time_period_3 and current_time >= time_period_2:
128
+ if (
129
+ time_period_2 is not None
130
+ and time_period_3 is not None
131
+ and current_time < time_period_3
132
+ and current_time >= time_period_2
133
+ ):
117
134
 
118
135
  result = self.database.check_dupe_on_period_mode(
119
136
  call,
@@ -131,6 +148,7 @@ def specific_contest_check_dupe(self, call):
131
148
 
132
149
  return result
133
150
 
151
+
134
152
  def init_contest(self):
135
153
  """setup plugin"""
136
154
  set_tab_next(self)
@@ -195,13 +213,13 @@ def predupe(self):
195
213
 
196
214
  def prefill(self):
197
215
  """Fill SentNR"""
198
-
216
+
199
217
  sent_sxchange_setting = self.contest_settings.get("SentExchange", "")
200
218
  if sent_sxchange_setting.strip() == "#":
201
219
  result = self.database.get_serial()
202
220
  serial_nr = str(result.get("serial_nr", "1")).zfill(3)
203
221
  # get station region code from setup ARRLSection field
204
- serial_nr = serial_nr + " " + get_station_state_code(self)
222
+ serial_nr = serial_nr + " " + self.station.get("State", "")
205
223
 
206
224
  if serial_nr == "None":
207
225
  serial_nr = "001"
@@ -228,15 +246,17 @@ def points(self):
228
246
  else:
229
247
  return 1
230
248
 
249
+
231
250
  def show_mults(self, rtc=None):
232
251
  """Return display string for mults"""
233
252
 
234
253
  # implement here multipliers checks
235
254
  # get received number and region code
236
255
 
237
- call_result = str(self.contact.get("NR", ""))
256
+ # call_result never used, so commenting it out.
257
+ # call_result = str(self.contact.get("NR", ""))
238
258
  # create placeholders
239
- placeholders = ','.join(['?'] * len(estonian_regions))
259
+ placeholders = ",".join(["?"] * len(estonian_regions))
240
260
  # main query to filter by regions
241
261
  query = f"SELECT count(distinct(SUBSTR(NR, -2)) || ':' || Band || ':' || Mode) as mults from DXLOG where ContestNR = {self.pref.get('contest', '1')} AND CountryPrefix = 'ES' AND NR GLOB '*[A-Z]*' AND substr(NR,-2) IN ({placeholders});"
242
262
  # apply params
@@ -248,6 +268,7 @@ def show_mults(self, rtc=None):
248
268
  return mult_count
249
269
  return 0
250
270
 
271
+
251
272
  def show_qso(self):
252
273
  """Return qso count"""
253
274
  result = self.database.fetch_qso_count()
@@ -592,13 +613,13 @@ def process_esm(self, new_focused_widget=None, with_enter=False):
592
613
  self.process_function_key(button)
593
614
 
594
615
 
595
- def get_mults(self):
596
- """Get mults for RTC XML"""
597
- mults = {}
598
- mults["country"], mults["state"] = show_mults(self, rtc=True)
599
- return mults
616
+ # def get_mults(self):
617
+ # """Get mults for RTC XML"""
618
+ # mults = {}
619
+ # mults["country"], mults["state"] = show_mults(self, rtc=True)
620
+ # return mults
600
621
 
601
622
 
602
- def just_points(self):
603
- """Get points for RTC XML"""
604
- return get_points(self)
623
+ # def just_points(self):
624
+ # """Get points for RTC XML"""
625
+ # return get_points(self)