not1mm 24.3.25.2__py3-none-any.whl → 24.4.1__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.
not1mm/__main__.py CHANGED
@@ -2456,6 +2456,7 @@ class MainWindow(QtWidgets.QMainWindow):
2456
2456
  cmd["station"] = platform.node()
2457
2457
  cmd["COLUMNS"] = self.contest.columns
2458
2458
  self.multicast_interface.send_as_json(cmd)
2459
+ continue
2459
2460
  if (
2460
2461
  json_data.get("cmd", "") == "TUNE"
2461
2462
  and json_data.get("station", "") == platform.node()
@@ -2472,6 +2473,7 @@ class MainWindow(QtWidgets.QMainWindow):
2472
2473
  self.callsign.setFocus()
2473
2474
  self.callsign.activateWindow()
2474
2475
  window.raise_()
2476
+ continue
2475
2477
 
2476
2478
  if (
2477
2479
  json_data.get("cmd", "") == "GETWORKEDLIST"
@@ -2483,6 +2485,7 @@ class MainWindow(QtWidgets.QMainWindow):
2483
2485
  cmd["station"] = platform.node()
2484
2486
  cmd["worked"] = result
2485
2487
  self.multicast_interface.send_as_json(cmd)
2488
+ continue
2486
2489
 
2487
2490
  if (
2488
2491
  json_data.get("cmd", "") == "GETCONTESTSTATUS"
@@ -2495,6 +2498,13 @@ class MainWindow(QtWidgets.QMainWindow):
2495
2498
  "operator": self.current_op,
2496
2499
  }
2497
2500
  self.multicast_interface.send_as_json(cmd)
2501
+ continue
2502
+
2503
+ if (
2504
+ json_data.get("cmd", "") == "CHANGECALL"
2505
+ and json_data.get("station", "") == platform.node()
2506
+ ):
2507
+ self.callsign.setText(json_data.get("call", ""))
2498
2508
 
2499
2509
  def dark_mode_state_changed(self) -> None:
2500
2510
  """Called when the Dark Mode menu state is changed."""
not1mm/bandmap.py CHANGED
@@ -449,13 +449,11 @@ class BandMapWindow(QtWidgets.QDockWidget):
449
449
  if self.connected is True:
450
450
  self.close_cluster()
451
451
  return
452
- # refresh settings
453
452
  self.settings = self.get_settings()
454
453
  server = self.settings.get("cluster_server", "dxc.nc7j.com")
455
454
  port = self.settings.get("cluster_port", 7373)
456
455
  logger.info(f"connecting to dx cluster {server} {port}")
457
456
  self.socket.connectToHost(server, port)
458
- # self.connectButton.setStyleSheet("color: white;")
459
457
  self.connectButton.setText("Connecting")
460
458
  self.connected = True
461
459
 
@@ -567,7 +565,6 @@ class BandMapWindow(QtWidgets.QDockWidget):
567
565
  if packet.get("cmd", "") == "CONTESTSTATUS":
568
566
  if not self.callsignField.text():
569
567
  self.callsignField.setText(packet.get("operator", "").upper())
570
- # self.callsignField.selectAll()
571
568
  continue
572
569
  if packet.get("cmd", "") == "DARKMODE":
573
570
  self.setDarkMode(packet.get("state", False))
@@ -753,9 +750,6 @@ class BandMapWindow(QtWidgets.QDockWidget):
753
750
  def update_stations(self):
754
751
  """doc"""
755
752
  self.update_timer.setInterval(UPDATE_INTERVAL)
756
- if not self.connected:
757
- return
758
-
759
753
  self.clear_all_callsign_from_scene()
760
754
  self.spot_aging()
761
755
  step, _digits = self.determine_step_digits()
@@ -908,7 +902,6 @@ class BandMapWindow(QtWidgets.QDockWidget):
908
902
  def disconnected(self) -> None:
909
903
  """Called when socket is disconnected."""
910
904
  self.connected = False
911
- # self.connectButton.setStyleSheet("color: red;")
912
905
  self.connectButton.setText("Closed")
913
906
 
914
907
  def send_command(self, cmd: str) -> None:
@@ -937,7 +930,6 @@ class BandMapWindow(QtWidgets.QDockWidget):
937
930
  logger.info("Closing dx cluster connection")
938
931
  self.socket.close()
939
932
  self.connected = False
940
- # self.connectButton.setStyleSheet("color: red;")
941
933
  self.connectButton.setText("Closed")
942
934
 
943
935
  def closeEvent(self, _event: QtGui.QCloseEvent) -> None:
not1mm/checkwindow.py CHANGED
@@ -13,7 +13,6 @@ from json import loads
13
13
 
14
14
  from PyQt5 import QtGui, uic
15
15
  from PyQt5.QtCore import Qt
16
- from PyQt5.QtWidgets import QListWidgetItem
17
16
  from PyQt5.QtWidgets import QWidget
18
17
 
19
18
  import not1mm.fsutils as fsutils
@@ -43,8 +42,11 @@ class CheckWindow(QWidget):
43
42
  uic.loadUi(fsutils.APP_DATA_PATH / "checkwindow.ui", self)
44
43
 
45
44
  self.logList.clear()
45
+ self.logList.itemClicked.connect(self.item_clicked)
46
46
  self.masterList.clear()
47
+ self.masterList.itemClicked.connect(self.item_clicked)
47
48
  self.telnetList.clear()
49
+ self.telnetList.itemClicked.connect(self.item_clicked)
48
50
  self.callhistoryList.clear()
49
51
  self.callhistoryList.hide()
50
52
  self.callhistoryListLabel.hide()
@@ -54,10 +56,19 @@ class CheckWindow(QWidget):
54
56
  self.multicast_interface = Multicast(
55
57
  self.pref.get("multicast_group", "239.1.1.1"),
56
58
  self.pref.get("multicast_port", 2239),
57
- self.pref.get("interface_ip", "127.0.0.1"),
59
+ self.pref.get("interface_ip", "0,0,0,0"),
58
60
  )
59
61
  self.multicast_interface.ready_read_connect(self.watch_udp)
60
62
 
63
+ def item_clicked(self, item):
64
+ """docstring for item_clicked"""
65
+ if item:
66
+ cmd = {}
67
+ cmd["cmd"] = "CHANGECALL"
68
+ cmd["station"] = platform.node()
69
+ cmd["call"] = item.text()
70
+ self.multicast_interface.send_as_json(cmd)
71
+
61
72
  def setDarkMode(self, dark: bool):
62
73
  """Forces a darkmode palette."""
63
74
 
@@ -189,9 +200,8 @@ class CheckWindow(QWidget):
189
200
  for item in results:
190
201
  if "#" in item:
191
202
  continue
192
- listItem = QListWidgetItem(item)
193
- self.masterList.addItem(listItem)
194
- self.masterList.show()
203
+ self.masterList.addItem(item)
204
+ self.masterList.show()
195
205
 
196
206
  def log_list(self, call: str) -> None:
197
207
  """
@@ -209,10 +219,8 @@ class CheckWindow(QWidget):
209
219
  self.logList.clear()
210
220
  if call:
211
221
  result = self.database.get_like_calls_and_bands(call)
212
- for calls in result:
213
- listItem = QListWidgetItem(calls)
214
- self.logList.addItem(listItem)
215
- self.logList.show()
222
+ self.logList.addItems(result)
223
+ self.logList.show()
216
224
 
217
225
  def telnet_list(self, spots: list) -> None:
218
226
  """
@@ -231,6 +239,5 @@ class CheckWindow(QWidget):
231
239
  if spots:
232
240
  for calls in spots:
233
241
  call = calls.get("callsign", "")
234
- listItem = QListWidgetItem(call)
235
- self.telnetList.addItem(listItem)
236
- self.telnetList.show()
242
+ self.telnetList.addItem(call)
243
+ self.telnetList.show()
not1mm/lib/version.py CHANGED
@@ -1,3 +1,3 @@
1
1
  """It's the version"""
2
2
 
3
- __version__ = "24.3.25.2"
3
+ __version__ = "24.4.1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: not1mm
3
- Version: 24.3.25.2
3
+ Version: 24.4.1
4
4
  Summary: NOT1MM Logger
5
5
  Author-email: Michael Bridak <michael.bridak@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/mbridak/not1mm
@@ -48,16 +48,20 @@ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<
48
48
  - [Our Code Contributors ✨](#our-code-contributors-)
49
49
  - [List of should be working contests](#list-of-should-be-working-contests)
50
50
  - [Recent Changes](#recent-changes)
51
+ - [Flatpak](#flatpak)
51
52
  - [Installation](#installation)
53
+ - [Prerequisites](#prerequisites)
54
+ - [Common installation recipes for Ubuntu and Fedora](#common-installation-recipes-for-ubuntu-and-fedora)
55
+ - [Ubuntu 22.04 LTS](#ubuntu-2204-lts)
56
+ - [Ubuntu 23.04](#ubuntu-2304)
57
+ - [Fedora 38 \& 39](#fedora-38--39)
52
58
  - [Python, PyPI, pip and pipx](#python-pypi-pip-and-pipx)
53
- - [Bootstrapping pipx](#bootstrapping-pipx)
54
- - [Installing with pipx](#installing-with-pipx)
55
- - [Installing portaudio](#installing-portaudio)
56
- - [After install](#after-install)
59
+ - [Bootstrapping pipx](#bootstrapping-pipx)
60
+ - [Installing with pipx](#installing-with-pipx)
61
+ - [After the install](#after-the-install)
57
62
  - [You may or may not get a warning message like](#you-may-or-may-not-get-a-warning-message-like)
58
63
  - [Or this fan favorite](#or-this-fan-favorite)
59
- - [Wayland Compositor](#wayland-compositor)
60
- - [Running from source](#running-from-source)
64
+ - [Installing from GitHub source](#installing-from-github-source)
61
65
  - [Various data file locations](#various-data-file-locations)
62
66
  - [Data](#data)
63
67
  - [Config](#config)
@@ -86,41 +90,46 @@ The worlds #1 unfinished contest logger <sup>*According to my daughter Corinna.<
86
90
  - [Macro use with voice](#macro-use-with-voice)
87
91
  - [cty.dat and QRZ lookups for distance and bearing](#ctydat-and-qrz-lookups-for-distance-and-bearing)
88
92
  - [Other uses for the call field](#other-uses-for-the-call-field)
89
- - [Windows](#windows)
93
+ - [The Windows](#the-windows)
90
94
  - [The Main Window](#the-main-window)
91
- - [Keyboard commands](#keyboard-commands)
92
- - [Log Display](#log-display)
95
+ - [Keyboard commands](#keyboard-commands)
96
+ - [The Log Window](#the-log-window)
93
97
  - [Editing a contact](#editing-a-contact)
94
- - [Recalulate Mults](#recalulate-mults)
95
- - [Bandmap](#bandmap)
96
- - [Check Window](#check-window)
97
- - [Remote VFO](#remote-vfo)
98
+ - [The Bandmap Window](#the-bandmap-window)
99
+ - [The Check Window](#the-check-window)
100
+ - [The Remote VFO Window](#the-remote-vfo-window)
98
101
  - [Cabrillo](#cabrillo)
99
102
  - [ADIF](#adif)
100
- - [Dupe checking](#dupe-checking)
103
+ - [Recalulate Mults](#recalulate-mults)
101
104
  - [Contest specific notes](#contest-specific-notes)
102
105
  - [ARRL Sweekstakes](#arrl-sweekstakes)
103
106
  - [The exchange parser](#the-exchange-parser)
104
107
  - [The exchange](#the-exchange)
105
108
 
106
- [Visit the Wiki](https://github.com/mbridak/not1mm/wiki/Not1MM)
107
-
108
109
  ## What and why is Not1MM
109
110
 
110
- Not1MM's interface is a blatant ripoff of N1MM.
111
- It is NOT N1MM and any problem you have with this software should in no way reflect on their software.
111
+ Not1MM's interface is a blatant ripoff of N1MM. It is NOT N1MM and any problem
112
+ you have with this software should in no way reflect on their software.
112
113
 
113
- If you use Windows(tm), you should run away from Not1MM and use someother program.
114
+ If you use Windows(tm), you should run away from Not1MM and use someother
115
+ program.
114
116
 
115
- I personally don't use Windows(tm). While it may be possible to get N1MM working under Wine, I haven't checked. I'd rather not have to jump thru the hoops.
117
+ I personally don't use Windows(tm). While it may be possible to get N1MM working
118
+ under Wine, I haven't checked. I'd rather not have to jump thru the hoops.
116
119
 
117
- **Currently this exists for my own personal amusement**.
118
- Something to do in my free time.
119
- While I'm not watching TV, Right vs Left political 'News' programs, mind numbing 'Reality' shows etc...
120
+ **Currently this exists for my own personal amusement**. Something to do in my
121
+ free time. While I'm not watching TV, Right vs Left political 'News' programs,
122
+ mind numbing 'Reality' shows etc...
120
123
 
121
124
  ## Current state
122
125
 
123
- The current state is "**BETA**". I've used it for a few contests, and was able to work contacts and submit a cabrillo at the end. I'm not a "Contester". So I'll add contests as/if I work them. I'm only one guy, so if you see a bug let me know. I don't do much of any Data or RTTY operating. This is why you don't see RTTY in the list of working contests. The Lord helps those who burn people at the... I mean who help themselves. Feel free to fill in that hole with a pull request.
126
+ The current state is "**BETA**". I've used it for a few contests, and was able
127
+ to work contacts and submit a cabrillo at the end. I'm not a "Contester". So
128
+ I'll add contests as/if I work them. I'm only one guy, so if you see a bug let
129
+ me know. I don't do much of any Data or RTTY operating. This is why you don't
130
+ see RTTY in the list of working contests. The Lord helps those who burn people
131
+ at the... I mean who help themselves. Feel free to fill in that hole with a pull
132
+ request.
124
133
 
125
134
  ![main screen](https://github.com/mbridak/not1mm/raw/master/pic/main.png)
126
135
 
@@ -167,36 +176,76 @@ I wish to thank those who've contributed to the project.
167
176
 
168
177
  ## Recent Changes
169
178
 
170
- - [24-3-25-1] Dark mode sorted out. Atleast for me...
171
- - [24-3-25] Yanked version 24-3-24-1. Fixed widget focus issues.
172
- - [24-3-24-1] Killed an SQL query bug causing crash when pressing arrow down.
173
- - [24-3-24] Reworked fsutil.py to correct directory paths for Linux.
174
- - [24-3-23] Yanked version 24-3-21, too many bugs for existing userbase.
175
- - [24-3-21] Merged PR from @kyleboyle for docking windows. MacOS and Windows support.
176
- - [24-3-19] Removed some useless bloat causing slow interface on FreeBSD 13/14 and maybe others.
177
- - [24-3-16] Add Save/Fail confirmation dialogs when saving ADIF of Cabrillo files.
178
- - [24-3-15] Change 'CWR' to 'CW' in the ADIF output.
179
- - [24-3-13] Added CQ 160 CW and SSB
180
- - [24-3-9] Marked calls in the bandmap window colored Blue, until worked.
181
- - [24-3-7] Merged PR from @arodland for faster fuzzy SCP lookups.
182
- - [24-3-2-1] Added marking stations on the bandmap to work later with CTRL-M.
183
- - [24-3-2] Merged PR from @arodland for fuzzy SCP lookup.
179
+ - [24-4-1] Removed some un-needed loops and widgets from the check window.
184
180
 
185
181
  See [CHANGELOG.md](CHANGELOG.md) for prior changes.
186
182
 
183
+ ## Flatpak
184
+
185
+ I've tried for a couple days to get not1mm to build as a flatpak. I've failed.
186
+ It keeps failing at building numpy. If you happen to be a flatpak savant, please
187
+ feel free to look at com.github.mbridak.not1mm.yaml and python3-modules.yaml and
188
+ clue me into the black magic needed to get it to work.
189
+
187
190
  ## Installation
188
191
 
192
+ ### Prerequisites
193
+
194
+ not1mm requires Python 3.9+, PyQt5 and libportaudio2. You should install these
195
+ through your distribution's package manager before continuing.
196
+
197
+ ### Common installation recipes for Ubuntu and Fedora
198
+
199
+ I've taken the time to install some common Linux distributions into a VM and
200
+ noted the minimum steps needed to install not1mm.
201
+
202
+ #### Ubuntu 22.04 LTS
203
+
204
+ ```bash
205
+ sudo apt update
206
+ sudo apt upgrade
207
+ sudo apt install -y libportaudio2 python3-pip python3-pyqt5 python3-numpy
208
+ pip install -U not1mm
209
+ ```
210
+
211
+ #### Ubuntu 23.04
212
+
213
+ ```bash
214
+ sudo apt update
215
+ sudo apt upgrade
216
+ sudo apt install -y libportaudio2 pipx
217
+ pipx install not1mm
218
+ pipx ensurepath
219
+ ```
220
+
221
+ #### Fedora 38 & 39
222
+
223
+ ```bash
224
+ sudo dnf upgrade --refresh
225
+ sudo dnf install python3-pip portaudio
226
+ pip install not1mm
227
+ ```
228
+
229
+ You can now open a new terminal and type not1mm. On it's first run, it may or
230
+ may not install a lovely non AI generated icon, which you can later click on to
231
+ launch the application.
232
+
189
233
  ### Python, PyPI, pip and pipx
190
234
 
191
- This software is a Python package hosted on PyPI, and installable with the pip or pipx command. If this is your first exposure to Python packaging you can get all the details from:
235
+ This software is a Python package hosted on PyPI, and installable with the pip
236
+ or pipx command. If this is your first exposure to Python packaging you can get
237
+ all the details from:
192
238
 
193
239
  - [The PyPA](https://packaging.python.org/en/latest/tutorials/installing-packages/)
194
240
  - [Install packages in a virtual environment using pip and venv](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/)
195
241
  - [Installing stand alone command line tools](https://packaging.python.org/en/latest/guides/installing-stand-alone-command-line-tools/)
196
242
 
197
- In short, You should install stuff into a Python virtual environment. Newer Linux distros will make you do this unless you include a command line argument akin to '--break-my-system' when using pip. I'm not telling you to use pipx. But... **Use pipx**.
243
+ In short, You should install stuff into a Python virtual environment. Newer
244
+ Linux distros will make you do this unless you include a command line argument
245
+ akin to '--break-my-system' when using pip. I'm not telling you to use pipx.
246
+ But... **Use pipx**.
198
247
 
199
- ### Bootstrapping pipx
248
+ #### Bootstrapping pipx
200
249
 
201
250
  Assuming you have only Python installed, your path to pipx is:
202
251
 
@@ -212,7 +261,7 @@ python3 -m pip install --user pipx
212
261
  python3 -m pipx ensurepath
213
262
  ```
214
263
 
215
- ### Installing with pipx
264
+ #### Installing with pipx
216
265
 
217
266
  Then installing not1mm is as simple as:
218
267
 
@@ -228,22 +277,11 @@ If you need to later update not1mm, you can do so with:
228
277
  pipx upgrade not1mm
229
278
  ```
230
279
 
231
- ### Installing portaudio
280
+ ## After the install
232
281
 
233
- not1mm uses portaudio to play audio. You can install it with:
234
-
235
- ```bash
236
- # Ubuntu
237
- sudo apt install -y libportaudio2
238
-
239
- # Fedora
240
- sudo dnf install python3-pip portaudio
241
- ```
242
-
243
- ## After install
244
-
245
- You can now open a new terminal and type `not1mm`. On it's first run, it may or may not install a lovely non AI generated
246
- icon, which you can later click on to launch the application.
282
+ You can now open a new terminal and type `not1mm`. On it's first run, it may or
283
+ may not install a lovely non AI generated icon, which you can later click on to
284
+ launch the application.
247
285
 
248
286
  ### You may or may not get a warning message like
249
287
 
@@ -266,15 +304,14 @@ To avoid this you can export an environment variable and launch the app like thi
266
304
 
267
305
  `mbridak@vm:~$ export QT_QPA_PLATFORM=wayland; not1mm`
268
306
 
269
- For a more permanent solution you can place the line `export QT_QPA_PLATFORM=wayland` in your home directories .bashrc file. Then after logging out and back in you should be able to launch it normally.
270
-
271
- ## Wayland Compositor
307
+ For a more permanent solution you can place the line
308
+ `export QT_QPA_PLATFORM=wayland` in your home directories .bashrc file. Then
309
+ after logging out and back in you should be able to launch it normally.
272
310
 
273
- One side effect of Wayland is that we are not able to request for a window to regain or retain focus. So if you were to click on a spot in the bandmap window to tune to that spot, you would have to then click on the main window to continue entering contest data. I'm aware of this, but I can not change it.
311
+ ### Installing from GitHub source
274
312
 
275
- ### Running from source
276
-
277
- Since this is packaged for PyPI, if you want to work on your own source branch, after cloning from github you would:
313
+ Since this is packaged for PyPI, if you want to work on your own source branch,
314
+ after cloning from github you would:
278
315
 
279
316
  ```bash
280
317
  pip install --upgrade pip
@@ -283,7 +320,8 @@ pip install build
283
320
  source rebuild.sh
284
321
  ```
285
322
 
286
- from the root directory. This installs a build chain and a local editable copy of not1mm.
323
+ from the root directory. This installs a build chain and a local editable copy
324
+ of not1mm.
287
325
 
288
326
  There's two ways to launch the program from the local editable copy.
289
327
 
@@ -303,37 +341,51 @@ not1mm
303
341
 
304
342
  ### Data
305
343
 
306
- If your system has an `XDG_DATA_HOME` environment variable set, the database and CW macro files can be found there. Otherwise they will be found at `yourhome/.local/share/not1mm`
344
+ If your system has an `XDG_DATA_HOME` environment variable set, the database and
345
+ CW macro files can be found there. Otherwise they will be found at
346
+ `yourhome/.local/share/not1mm`
307
347
 
308
348
  ### Config
309
349
 
310
- Configuration file(s) can be found at the location defined by `XDG_CONFIG_HOME`. Otherwise they will be found at `yourhome/.config/not1mm`
350
+ Configuration file(s) can be found at the location defined by `XDG_CONFIG_HOME`.
351
+ Otherwise they will be found at `yourhome/.config/not1mm`
311
352
 
312
353
  ## The database
313
354
 
314
355
  ### Why
315
356
 
316
- The database holds... wait for it... data... I know shocker right. A database can hold one or many contest logs. It also holds the station information, everything shown in the Station Settings dialog. You can have one database for the rest of your life. Filled with hundreds of contests you've logged. Or, you can create a new database to hold just one contest. You do You Boo.
357
+ The database holds... wait for it... data... I know shocker right. A database
358
+ can hold one or many contest logs. It also holds the station information,
359
+ everything shown in the Station Settings dialog. You can have one database for
360
+ the rest of your life. Filled with hundreds of contests you've logged. Or, you
361
+ can create a new database to hold just one contest. You do You Boo.
317
362
 
318
363
  ### The first one
319
364
 
320
- On the initial running, a database is created for you called `ham.db`. This, and all future databases, are located in the data directory mentioned above.
365
+ On the initial running, a database is created for you called `ham.db`. This, and
366
+ all future databases, are located in the data directory mentioned above.
321
367
 
322
368
  ### Why limit yourself
323
369
 
324
- You can create a new database by selecting `File` > `New Database` from the main window, and give it a snazzy name. Why limit yourself. Hell, create one every day for all I care. You can manage your own digital disaster.
370
+ You can create a new database by selecting `File` > `New Database` from the main
371
+ window, and give it a snazzy name. Why limit yourself. Hell, create one every
372
+ day for all I care. You can manage your own digital disaster.
325
373
 
326
374
  ### Revisiting an old friend
327
375
 
328
- You can select a previously created databases for use by selecting `File` > `Open Database`.
376
+ You can select a previously created databases for use by selecting
377
+ `File` > `Open Database`.
329
378
 
330
379
  ## Station Settings dialog (REQUIRED)
331
380
 
332
- After initial run of the program or creating a new database you will need to fill out the Station Settings dialog that will pop up.
381
+ After initial run of the program or creating a new database you will need to
382
+ fill out the Station Settings dialog that will pop up.
333
383
 
334
384
  ![settings screen](https://github.com/mbridak/not1mm/raw/master/pic/settings.png)
335
385
 
336
- You can fill it out if you want to. You can leave our friends behind. 'Cause your friends don't fill, and if they don't fill. Well, they're no friends of mine.
386
+ You can fill it out if you want to. You can leave our friends behind.
387
+ 'Cause your friends don't fill, and if they don't fill. Well, they're no friends
388
+ of mine.
337
389
 
338
390
  You can fill. You can fill. Everyone look at your keys.
339
391
 
@@ -341,7 +393,8 @@ You can fill. You can fill. Everyone look at your keys.
341
393
 
342
394
  ### Changing station information
343
395
 
344
- Station information can be changed any time by going to `File` > `Station Settings` and editing the information.
396
+ Station information can be changed any time by going to
397
+ `File` > `Station Settings` and editing the information.
345
398
 
346
399
  ## Selecting a contest (REQUIRED)
347
400
 
@@ -359,11 +412,15 @@ Select `File` > `Open Contest`
359
412
 
360
413
  ### Editing existing contest parameters
361
414
 
362
- You can edit the parameters of a previously defined contest by selecting it as the current contest. Then select `File` > `Edit Current Contest`. Click `OK` to save the new values and reload the contest. `Cancel` to keep the existing parameters.
415
+ You can edit the parameters of a previously defined contest by selecting it as
416
+ the current contest. Then select `File` > `Edit Current Contest`. Click `OK` to
417
+ save the new values and reload the contest. `Cancel` to keep the existing
418
+ parameters.
363
419
 
364
420
  ## Configuration Settings
365
421
 
366
- To setup your CAT control, CW keyer, Callsign lookups, select `File` > `Configuration Settings`
422
+ To setup your CAT control, CW keyer, Callsign lookups, select
423
+ `File` > `Configuration Settings`
367
424
 
368
425
  The tabs for groups and n1mm are disabled and are for future expansion.
369
426
 
@@ -371,7 +428,8 @@ The tabs for groups and n1mm are disabled and are for future expansion.
371
428
 
372
429
  ### Lookup
373
430
 
374
- For callsign lookup, Two services are supported. QRZ and HamQTH. They require a username and password, Enter it here.
431
+ For callsign lookup, Two services are supported. QRZ and HamQTH. They require a
432
+ username and password, Enter it here.
375
433
 
376
434
  ### Soundcard
377
435
 
@@ -379,41 +437,59 @@ Choose the sound output device for the voice keyer.
379
437
 
380
438
  ### CAT Control
381
439
 
382
- Under the `CAT` TAB, you can choose either `rigctld` normally with an IP of `127.0.0.1` and a port of `4532`. Or `flrig`, IP normally of `127.0.0.1` and a port of `12345`. `None` is always an option, but is it really? There's an onscreen icon for CAT status. Green good, Red bad, Grey neither.
440
+ Under the `CAT` TAB, you can choose either `rigctld` normally with an IP of
441
+ `127.0.0.1` and a port of `4532`. Or `flrig`, IP normally of `127.0.0.1` and a
442
+ port of `12345`. `None` is always an option, but is it really? There's an
443
+ onscreen icon for CAT status. Green good, Red bad, Grey neither.
383
444
 
384
445
  ### CW Keyer interface
385
446
 
386
- Under the `CW` TAB, There are three options. `cwdaemon`, which normally uses IP `127.0.0.1` and port `6789`. `pywinkeyer` which normally uses IP `127.0.0.1` and port `8000`. Or `None`, if you want to Morse it like it's 1899.
447
+ Under the `CW` TAB, There are three options. `cwdaemon`, which normally uses IP
448
+ `127.0.0.1` and port `6789`. `pywinkeyer` which normally uses IP `127.0.0.1` and
449
+ port `8000`. Or `None`, if you want to Morse it like it's 1899.
387
450
 
388
451
  ### Cluster
389
452
 
390
453
  ![Configuration Settings screen](https://github.com/mbridak/not1mm/raw/master/pic/configuration_cluster.png)
391
454
 
392
- Under the `Cluster` TAB you can change the default AR Cluster server, port and filter settings used for the bandmap window.
455
+ Under the `Cluster` TAB you can change the default AR Cluster server, port and
456
+ filter settings used for the bandmap window.
393
457
 
394
458
  ### N1MM Packets
395
459
 
396
- Work has started on N1MM udp packets. So far just RadioInfo, contactinfo, contactreplace and contactdelete.
460
+ Work has started on N1MM udp packets. So far just RadioInfo, contactinfo,
461
+ contactreplace and contactdelete.
397
462
 
398
463
  ![N1MM Packet Configuration Screen](https://github.com/mbridak/not1mm/blob/master/pic/n1mm_packet_config.png?raw=true)
399
464
 
400
- When entering IP and Ports, enter them with a colon ':' between them. You can enter multiple pairs on the same line if separated by a space ' '.
465
+ When entering IP and Ports, enter them with a colon ':' between them. You can
466
+ enter multiple pairs on the same line if separated by a space ' '.
401
467
 
402
468
  ### Bands
403
469
 
404
- You can define which bands appear in the main window. Those with checkmarks will appear. Those without will not.
470
+ You can define which bands appear in the main window. Those with checkmarks will
471
+ appear. Those without will not.
405
472
 
406
473
  ![Bands Configuration Screen](https://github.com/mbridak/not1mm/raw/master/pic/configure_bands.png)
407
474
 
408
475
  ## Sending CW
409
476
 
410
- Other than sending CW by hand, you can also send predefined CW text messages by pressing F1 - F12. See next section on Editing macro keys. If you need to send something freeform, you can press CTRL-SHIFT-K, this will expose an entry field at the bottom of the window which you can type directly into. When you're done you can either press CTRL-SHIFT-K again, or press the Enter Key to close the field.
477
+ Other than sending CW by hand, you can also send predefined CW text messages by
478
+ pressing F1 - F12. See next section on Editing macro keys. If you need to send
479
+ something freeform, you can press CTRL-SHIFT-K, this will expose an entry field
480
+ at the bottom of the window which you can type directly into. When you're done
481
+ you can either press CTRL-SHIFT-K again, or press the Enter Key to close the
482
+ field.
411
483
 
412
484
  ## Editing macro keys
413
485
 
414
- To edit the macros, choose `File` > `Edit Macros`. This will open your systems registered text editor with current macros loaded. When your done just save the file and close the editor. The file loaded to edit, CW or SSB, will be determined by your current operating mode.
486
+ To edit the macros, choose `File` > `Edit Macros`. This will open your systems
487
+ registered text editor with current macros loaded. When your done just save the
488
+ file and close the editor. The file loaded to edit, CW or SSB, will be
489
+ determined by your current operating mode.
415
490
 
416
- After editing and saving the macro file. You can force the logger to reload the macro file by toggeling between `Run` and `S&P` states.
491
+ After editing and saving the macro file. You can force the logger to reload the
492
+ macro file by toggeling between `Run` and `S&P` states.
417
493
 
418
494
  ### Macro substitutions
419
495
 
@@ -430,19 +506,37 @@ You can include a limited set of substitution instructions.
430
506
 
431
507
  ### Macro use with voice
432
508
 
433
- The macros when used with voice, will also accept filenames of WAV files to play, excluding the file extension. The filename must be enclosed by brackets. For example `[CQ]` will play `cq.wav`, `[again]` will play `again.wav`. The wav files are stored in the operators personal data directory. The filenames must be in lowercase. See [Various data file locations](#various-data-file-locations) above for the location of your data files. For me, the macro `[cq]` will play `/home/mbridak/.local/share/not1mm/K6GTE/cq.wav`
509
+ The macros when used with voice, will also accept filenames of WAV files to
510
+ play, excluding the file extension. The filename must be enclosed by brackets.
511
+ For example `[CQ]` will play `cq.wav`, `[again]` will play `again.wav`. The wav
512
+ files are stored in the operators personal data directory. The filenames must be
513
+ in lowercase. See [Various data file locations](#various-data-file-locations)
514
+ above for the location of your data files. For me, the macro `[cq]` will play
515
+ `/home/mbridak/.local/share/not1mm/K6GTE/cq.wav`
434
516
 
435
- **The current wav files in place are not the ones you will want to use. They sound like an idiot.** You can use something like Audacity to record new wav files in your own voice.
517
+ **The current wav files in place are not the ones you will want to use. They
518
+ sound like an idiot.** You can use something like Audacity to record new wav
519
+ files in your own voice.
436
520
 
437
- Aside from the `[filename]` wav files, there are also NATO phonetic wav files for each letter and number. So if your macro key holds `{HISCALL} {SNT} {SENTNR}` and you have entered K5TUX in callsign field during CQ WW SSB while in CQ Zone 3. You'll here Kilo 5 Tango Uniform X-ray, 5 9 9, 3. Hopefully not in an idiots voice.
521
+ Aside from the `[filename]` wav files, there are also NATO phonetic wav files
522
+ for each letter and number. So if your macro key holds
523
+ `{HISCALL} {SNT} {SENTNR}` and you have entered K5TUX in callsign field during
524
+ CQ WW SSB while in CQ Zone 3. You'll here Kilo 5 Tango Uniform X-ray, 5 9 9, 3.
525
+ Hopefully not in an idiots voice.
438
526
 
439
527
  ## cty.dat and QRZ lookups for distance and bearing
440
528
 
441
- When a callsign is entered, a look up is first done in a cty.dat file to determin the country of origin, geographic center, cq zone and ITU region. Great circle calculations are done to determin the heading and distance from your gridsquare to the grographic center. This information then displayed at the bottom left.
529
+ When a callsign is entered, a look up is first done in a cty.dat file to
530
+ determin the country of origin, geographic center, cq zone and ITU region.
531
+ Great circle calculations are done to determin the heading and distance from
532
+ your gridsquare to the grographic center. This information then displayed at the
533
+ bottom left.
442
534
 
443
535
  ![snapshot of heading and distance](https://github.com/mbridak/not1mm/raw/master/pic/heading_distance.png)
444
536
 
445
- After this, a request is made to QRZ for the gridsquare of the callsign. If there is a response the information is recalculated and displayed. You'll know is this has happened, since the gridsquare will replace the word "Regional".
537
+ After this, a request is made to QRZ for the gridsquare of the callsign. If
538
+ there is a response the information is recalculated and displayed. You'll know
539
+ is this has happened, since the gridsquare will replace the word "Regional".
446
540
 
447
541
  ![snapshot of heading and distance](https://github.com/mbridak/not1mm/raw/master/pic/heading_distance_qrz.png)
448
542
 
@@ -454,13 +548,13 @@ After this, a request is made to QRZ for the gridsquare of the callsign. If ther
454
548
 
455
549
  **You must press the SPACE bar after entering any of the above.**
456
550
 
457
- ## Windows
551
+ ## The Windows
458
552
 
459
553
  ### The Main Window
460
554
 
461
555
  ![Main screen with callouts](https://github.com/mbridak/not1mm/raw/master/pic/mainwithcallouts.png)
462
556
 
463
- ### Keyboard commands
557
+ #### Keyboard commands
464
558
 
465
559
  | Key | Result |
466
560
  | -------------- | --- |
@@ -480,15 +574,18 @@ After this, a request is made to QRZ for the gridsquare of the callsign. If ther
480
574
  | [CTRL-G] | Tune to a spot matching partial text in the callsign entry field (CAT Required). |
481
575
  | [CTRL-SHIFT-K] | Open CW text input field. |
482
576
 
483
- ### Log Display
577
+ ### The Log Window
484
578
 
485
579
  `Window`>`Log Window`
486
580
 
487
- The Log display gets updated automatically when a contact is entered. The top half is a list of all contacts.
581
+ The Log display gets updated automatically when a contact is entered. The top
582
+ half is a list of all contacts.
488
583
 
489
584
  ![Log Display Window](https://github.com/mbridak/not1mm/raw/master/pic/logdisplay.png)
490
585
 
491
- The bottom half of the log displays contacts sorted by what's currently in the call entry field. The columns displayed in the log window are dependant on what contests is currently active.
586
+ The bottom half of the log displays contacts sorted by what's currently in the
587
+ call entry field. The columns displayed in the log window are dependant on what
588
+ contests is currently active.
492
589
 
493
590
  #### Editing a contact
494
591
 
@@ -500,39 +597,48 @@ You can also Right-Click on a cell to bring up the edit dialog.
500
597
 
501
598
  ![right click edit dialog](https://github.com/mbridak/not1mm/raw/master/pic/edit_dialog.png)
502
599
 
503
- You can not directly edit the multiplier status of a contact. Instead see the next section on recalculating mults. If you change the callsign make sure the `WPX` field is still valid.
600
+ You can not directly edit the multiplier status of a contact. Instead see the
601
+ next section on recalculating mults. If you change the callsign make sure the
602
+ `WPX` field is still valid.
504
603
 
505
- ## Recalulate Mults
506
-
507
- After editing a contact and before generating a Cabrillo file. There is a Misc menu option that will recalculate the multipliers incase an edit had caused a change.
508
-
509
- ## Bandmap
604
+ ### The Bandmap Window
510
605
 
511
606
  `Window`>`Bandmap`
512
607
 
513
608
  Put your callsign in the top and press the connect button.
514
609
 
515
- The bandmap window is, as with everything, a work in progress. The bandmap now follows the VFO.
610
+ The bandmap window is, as with everything, a work in progress. The bandmap now
611
+ follows the VFO.
516
612
 
517
613
  ![Bandmap Window](https://github.com/mbridak/not1mm/raw/master/pic/bandmap.png)
518
614
 
519
- VFO indicator now displays as small triangle in the frequency tickmarks. A small blue rectangle shows the receivers bandwidth if one is reported.
615
+ VFO indicator now displays as small triangle in the frequency tickmarks. A small
616
+ blue rectangle shows the receivers bandwidth if one is reported.
520
617
 
521
618
  ![Bandmap Window](https://github.com/mbridak/not1mm/raw/master/pic/VFO_and_bandwidth_markers.png)
522
619
 
523
- Clicked on spots now tune the radio and set the callsign field. Previously worked calls are displayed in red.
620
+ Clicked on spots now tune the radio and set the callsign field. Previously
621
+ worked calls are displayed in red.
524
622
 
525
- ## Check Window
623
+ ### The Check Window
526
624
 
527
625
  `Window`>`Check Window`
528
626
 
529
- As you enter a callsign, the Check Window will show probable matches to calls either in the MASTER.SCP file, your local log or the recent telnet spots. The MASTER.SCP column will show results for strings of 3 or more matching characters from the start of the call string. The local log and telnet columns will show matches of any length appearing anywhere in the string.
627
+ As you enter a callsign, the Check Window will show probable matches to calls
628
+ either in the MASTER.SCP file, your local log or the recent telnet spots. The
629
+ MASTER.SCP column will show results for strings of 3 or more matching characters
630
+ from the start of the call string. The local log and telnet columns will show
631
+ matches of any length appearing anywhere in the string.
632
+
633
+ Clicking on any of these items will change the callsign field.
530
634
 
531
635
  ![Check Window](https://github.com/mbridak/not1mm/raw/master/pic/checkwindow.png)
532
636
 
533
- ## Remote VFO
637
+ ### The Remote VFO Window
534
638
 
535
- You can control the VFO on a remote rig by following the directions listed in the link below. It's a small hardware project with a BOM of under $20, and consisting of two parts.
639
+ You can control the VFO on a remote rig by following the directions listed in
640
+ the link below. It's a small hardware project with a BOM of under $20, and
641
+ consisting of two parts.
536
642
 
537
643
  1. Making the [VFO](https://github.com/mbridak/not1mm/blob/master/usb_vfo_knob/vfo.md)...
538
644
  2. Then... `Window`>`VFO`
@@ -553,7 +659,8 @@ K6GTE_CANADA-DAY_2023-09-04_07-47-05.log
553
659
 
554
660
  Look, a log [eh](https://www.youtube.com/watch?v=El41sHXck-E)?
555
661
 
556
- [This](https://www.youtube.com/watch?v=oMI23JJUpGE) outlines some differences between ARRL Field Day and Canada Day.
662
+ [This](https://www.youtube.com/watch?v=oMI23JJUpGE) outlines some differences
663
+ between ARRL Field Day and Canada Day.
557
664
 
558
665
  ## ADIF
559
666
 
@@ -563,32 +670,51 @@ Boom... ADIF
563
670
 
564
671
  `StationCall`\_`ContestName`\_`Date`\_`Time`.adi
565
672
 
566
- ## Dupe checking
673
+ ## Recalulate Mults
567
674
 
568
- Added dupe checking. Big Red 'Dupe' will appear if it's a dupe...
675
+ After editing a contact and before generating a Cabrillo file. There is a Misc
676
+ menu option that will recalculate the multipliers incase an edit had caused a
677
+ change.
569
678
 
570
679
  ## Contest specific notes
571
680
 
572
- I found it might be beneficial to have a section devoted to wierd quirky things about operating a specific contests.
681
+ I found it might be beneficial to have a section devoted to wierd quirky things
682
+ about operating a specific contests.
573
683
 
574
684
  ### ARRL Sweekstakes
575
685
 
576
686
  #### The exchange parser
577
687
 
578
- This was a pain in the tukus. There are so many elements to the exchange, and one input field aside from the callsign field. So I had to write sort of a 'parser'. The parser moves over your input string following some basic rules and is re-evaluated with each keypress and the parsed result will be displayed in the label over the field. The exchange looks like `124 A K6GTE 17 ORG`, a Serial number, Precidence, Callsign, Year Licenced and Section. even though the callsign is given as part of the exchange, the callsign does not have to be entered and is pulled from the callsign field. If the exchange was entered as `124 A 17 ORG` you would see:
688
+ This was a pain in the tukus. There are so many elements to the exchange, and
689
+ one input field aside from the callsign field. So I had to write sort of a
690
+ 'parser'. The parser moves over your input string following some basic rules and
691
+ is re-evaluated with each keypress and the parsed result will be displayed in
692
+ the label over the field. The exchange looks like `124 A K6GTE 17 ORG`, a Serial
693
+ number, Precidence, Callsign, Year Licenced and Section. even though the
694
+ callsign is given as part of the exchange, the callsign does not have to be
695
+ entered and is pulled from the callsign field. If the exchange was entered as
696
+ `124 A 17 ORG` you would see:
579
697
 
580
698
  ![SS Parser Result](https://github.com/mbridak/not1mm/raw/master/pic/ss_parser_1.png)
581
699
 
582
- You can enter the serial number and precidence, or the year and section as pairs. For instance `124A 17ORG`. This would ensure the values get parsed correctly.
700
+ You can enter the serial number and precidence, or the year and section as
701
+ pairs. For instance `124A 17ORG`. This would ensure the values get parsed
702
+ correctly.
583
703
 
584
- You do not have to go back to correct typing. You can just tack the correct items to the end of the field and the older values will get overwritten. So if you entered `124A 17ORG Q`, the precidence will change from A to Q. If you need to change the serial number you must append the precidence to it, `125A`.
704
+ You do not have to go back to correct typing. You can just tack the correct
705
+ items to the end of the field and the older values will get overwritten. So if
706
+ you entered `124A 17ORG Q`, the precidence will change from A to Q. If you need
707
+ to change the serial number you must append the precidence to it, `125A`.
585
708
 
586
- If the callsign was entered wrong in the callsign field, you can put the correct callsign some where in the exchange. As long as it shows up in the parsed label above correctly your good.
709
+ If the callsign was entered wrong in the callsign field, you can put the correct
710
+ callsign some where in the exchange. As long as it shows up in the parsed label
711
+ above correctly your good.
587
712
 
588
713
  The best thing you can do is play around with it to see how it behaves.
589
714
 
590
715
  #### The exchange
591
716
 
592
- In the `Sent Exchange` field of the New Contest dialog put in the Precidence, Call, Check and Section. Example: `A K6GTE 17 ORG`.
717
+ In the `Sent Exchange` field of the New Contest dialog put in the Precidence,
718
+ Call, Check and Section. Example: `A K6GTE 17 ORG`.
593
719
 
594
720
  For the Run Exchange macro I'd put `{HISCALL} # A K6GTE 17 ORG`.
@@ -1,7 +1,7 @@
1
1
  not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- not1mm/__main__.py,sha256=Y5GZ0Fc3q9VFmQLIuxfFGSTQ-GLYZ6lCvDPhEGErvwk,118020
3
- not1mm/bandmap.py,sha256=pgFxlkIAXoDyF13tl4eMRtiE668epu81nmf7Et78TAk,33715
4
- not1mm/checkwindow.py,sha256=pZKGRYF0hwyBJfSEeX2F5mCxR2tsLOagRSsYM5vtjA4,7376
2
+ not1mm/__main__.py,sha256=GhgvGedPUhRoahp924Qi6fAwbenCmuJXiE5F5pyuRHg,118379
3
+ not1mm/bandmap.py,sha256=a0QZj0HvPh8ixj207ANRHO29aKN3YMKolp_P47gSOtI,33404
4
+ not1mm/checkwindow.py,sha256=fDCKpDQ3bO_g5M88qUKO6Xz-ZuMOxphUgZcUxRh69So,7604
5
5
  not1mm/fsutils.py,sha256=Li8Tq9K7c_q7onOHOQ7u1dOOFfhIIz5Aj2LKuQtGOO4,1652
6
6
  not1mm/logwindow.py,sha256=2uy3oduImH1QNz5tBBrevsk7iMoYCUOTO7ttf92zN5w,43830
7
7
  not1mm/vfo.py,sha256=ghtTmkhrug8YxYXUlJZOk7wN8jR8XNZKYTrcs4-E4rw,11530
@@ -103,7 +103,7 @@ not1mm/lib/plugin_common.py,sha256=AAKBPCXzTWZJb-h08uPNnHVG7bSCg7kwukc211gFivY,8
103
103
  not1mm/lib/select_contest.py,sha256=Ezc7MTZXEbQ_nXK7gmghalqfbbDyxp0pAVt0-chBJOw,359
104
104
  not1mm/lib/settings.py,sha256=9dyXiUZcrR57EVemGDrO2ad3HSMQbe5ngl_bxtZtEic,8877
105
105
  not1mm/lib/super_check_partial.py,sha256=p5l3u2ZOCBtlWgbvskC50FpuoaIpR07tfC6zTdRWbh4,2334
106
- not1mm/lib/version.py,sha256=2igm7YIX4NC-lnaGlgUqlyvUh0xMhPhOcLCKnT2MEb8,50
106
+ not1mm/lib/version.py,sha256=zyPYRGlb6qNTLHKshHMd9CAwvJzBXvKiaRdBpQav138,47
107
107
  not1mm/lib/versiontest.py,sha256=8vDNptuBBunn-1IGkjNaquehqBYUJyjrPSF8Igmd4_Y,1286
108
108
  not1mm/plugins/10_10_fall_cw.py,sha256=pG0cFmTNOFO03wXcI1a3EEaT1QK83yWIsrSdqCOU-gg,10834
109
109
  not1mm/plugins/10_10_spring_cw.py,sha256=aWTohVrnZpT0SlQuqq7zxQaYe4SExEkOl3NI8xYYJWI,10840
@@ -137,9 +137,9 @@ not1mm/plugins/naqp_ssb.py,sha256=pof1k6Eg_MDQXSaCOJLh1jfVyyIri0LdHYrZQu7P_gs,11
137
137
  not1mm/plugins/phone_weekly_test.py,sha256=EfLQzKREEXO_Ljg-q3VWg87JfbPVar9ydNhCdmHCrt8,12278
138
138
  not1mm/plugins/stew_perry_topband.py,sha256=bjcImkZhBXpw4XKogs85mpShz7QgYbVohvhFMQ050DI,10546
139
139
  not1mm/plugins/winter_field_day.py,sha256=7JK-RS1abcj1xQLnTF8rIPHRpDzmp4sAFBBML8b-Lwk,10212
140
- not1mm-24.3.25.2.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
141
- not1mm-24.3.25.2.dist-info/METADATA,sha256=Fo0kdSXnMuBLlQIwWuuhUn7OkeESON4HEmAkSSGLFmg,26105
142
- not1mm-24.3.25.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
143
- not1mm-24.3.25.2.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
144
- not1mm-24.3.25.2.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
145
- not1mm-24.3.25.2.dist-info/RECORD,,
140
+ not1mm-24.4.1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
141
+ not1mm-24.4.1.dist-info/METADATA,sha256=a_dOeboBd2iCbbCsD6NFbGEV16tvyeIt2leV3jxC1-s,26175
142
+ not1mm-24.4.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
143
+ not1mm-24.4.1.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
144
+ not1mm-24.4.1.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
145
+ not1mm-24.4.1.dist-info/RECORD,,