not1mm 25.1.29__py3-none-any.whl → 25.2.12__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.
@@ -0,0 +1,262 @@
1
+ """RandomGram plugin"""
2
+
3
+ # pylint: disable=invalid-name, unused-argument, unused-variable, c-extension-no-member, unused-import
4
+
5
+ import logging
6
+ import os
7
+
8
+ from PyQt6 import QtWidgets
9
+
10
+ from not1mm.lib.plugin_common import gen_adif
11
+ from not1mm.lib.version import __version__
12
+
13
+ logger = logging.getLogger(__name__)
14
+ EXCHANGE_HINT = ""
15
+ name = "RandomGram"
16
+ cabrillo_name = "RANDOMGRAM"
17
+ mode = "CW" # CW SSB BOTH RTTY
18
+ columns = [
19
+ "YYYY-MM-DD HH:MM:SS",
20
+ "Call",
21
+ "Freq",
22
+ "Snt",
23
+ "Rcv",
24
+ "SentNr",
25
+ "RcvNr",
26
+ ]
27
+
28
+ # 1 once per contest, 2 work each band, 3 each band/mode, 4 no dupe checking
29
+ dupe_type = 4
30
+
31
+ rgGroupsPath = os.path.join(os.path.expanduser("~"), "rg.txt")
32
+ try:
33
+ with open(rgGroupsPath, "r") as f:
34
+ rgGroups = f.readlines()
35
+ except:
36
+ rgGroups = []
37
+
38
+ def init_contest(self):
39
+ """setup plugin"""
40
+ set_tab_next(self)
41
+ set_tab_prev(self)
42
+ interface(self)
43
+ self.next_field = self.other_2
44
+
45
+
46
+ def interface(self):
47
+ """Setup user interface"""
48
+ self.field1.show()
49
+ self.field2.show()
50
+ self.field3.show()
51
+ self.field4.show()
52
+ self.snt_label.setText("SNT")
53
+ self.field1.setAccessibleName("RST Sent")
54
+ self.other_label.setText("SentRG")
55
+ self.field3.setAccessibleName("Sent RandomGram")
56
+ self.exch_label.setText("RcvRG")
57
+ self.field4.setAccessibleName("Received RandomGram")
58
+
59
+
60
+ def reset_label(self):
61
+ """reset label after field cleared"""
62
+
63
+
64
+ def set_tab_next(self):
65
+ """Set TAB Advances"""
66
+ self.tab_next = {
67
+ self.callsign: self.sent,
68
+ self.sent: self.receive,
69
+ self.receive: self.other_1,
70
+ self.other_1: self.other_2,
71
+ self.other_2: self.callsign,
72
+ }
73
+
74
+
75
+ def set_tab_prev(self):
76
+ """Set TAB Advances"""
77
+ self.tab_prev = {
78
+ self.callsign: self.other_2,
79
+ self.sent: self.callsign,
80
+ self.receive: self.sent,
81
+ self.other_1: self.receive,
82
+ self.other_2: self.other_1,
83
+ }
84
+
85
+
86
+ def set_contact_vars(self):
87
+ """Contest Specific"""
88
+ self.contact["SNT"] = self.sent.text()
89
+ self.contact["RCV"] = self.receive.text()
90
+ self.contact["Comment"] = self.other_2.text()
91
+ self.contact["SentNr"] = self.other_1.text()
92
+ self.contact["NR"] = self.other_2.text()
93
+
94
+
95
+ def predupe(self):
96
+ """called after callsign entered"""
97
+
98
+
99
+ def prefill(self):
100
+ """Fill SentNR"""
101
+ qso_count = show_qso(self)
102
+ if len(rgGroups) <= qso_count:
103
+ return
104
+
105
+ nextRG = rgGroups[qso_count]
106
+ if len(nextRG) > 0:
107
+ self.other_1.setText(nextRG)
108
+
109
+
110
+ def points(self):
111
+ """Calc point"""
112
+ return 2
113
+
114
+
115
+ def show_mults(self):
116
+ """Return display string for mults"""
117
+
118
+
119
+ def show_qso(self):
120
+ """Return qso count"""
121
+ result = self.database.fetch_qso_count()
122
+ if result:
123
+ return int(result.get("qsos", 0))
124
+ return 0
125
+
126
+
127
+ def calc_score(self):
128
+ """Return calculated score"""
129
+ result = self.database.fetch_points()
130
+
131
+
132
+ def adif(self):
133
+ """Call the generate ADIF function"""
134
+ gen_adif(self, cabrillo_name)
135
+
136
+
137
+ def cabrillo(self, file_encoding):
138
+ """Generates Cabrillo file. Maybe."""
139
+
140
+
141
+ def recalculate_mults(self):
142
+ """Recalculates multipliers after change in logged qso."""
143
+
144
+
145
+ def process_esm(self, new_focused_widget=None, with_enter=False):
146
+ """ESM State Machine"""
147
+
148
+ # self.pref["run_state"]
149
+
150
+ # -----===== Assigned F-Keys =====-----
151
+ # self.esm_dict["CQ"]
152
+ # self.esm_dict["EXCH"]
153
+ # self.esm_dict["QRZ"]
154
+ # self.esm_dict["AGN"]
155
+ # self.esm_dict["HISCALL"]
156
+ # self.esm_dict["MYCALL"]
157
+ # self.esm_dict["QSOB4"]
158
+
159
+ # ----==== text fields ====----
160
+ # self.callsign
161
+ # self.sent
162
+ # self.receive
163
+ # self.other_1
164
+ # self.other_2
165
+
166
+ if new_focused_widget is not None:
167
+ self.current_widget = self.inputs_dict.get(new_focused_widget)
168
+
169
+ # print(f"checking esm {self.current_widget=} {with_enter=} {self.pref.get("run_state")=}")
170
+
171
+ for a_button in [
172
+ self.F1,
173
+ self.F2,
174
+ self.F3,
175
+ self.F4,
176
+ self.F5,
177
+ self.F6,
178
+ self.F7,
179
+ self.F8,
180
+ self.F9,
181
+ self.F10,
182
+ self.F11,
183
+ self.F12,
184
+ ]:
185
+ self.restore_button_color(a_button)
186
+
187
+ buttons_to_send = []
188
+
189
+ if self.pref.get("run_state"):
190
+ if self.current_widget == "callsign":
191
+ if len(self.callsign.text()) < 3:
192
+ self.make_button_green(self.esm_dict["CQ"])
193
+ buttons_to_send.append(self.esm_dict["CQ"])
194
+ elif len(self.callsign.text()) > 2:
195
+ self.make_button_green(self.esm_dict["HISCALL"])
196
+ self.make_button_green(self.esm_dict["EXCH"])
197
+ buttons_to_send.append(self.esm_dict["HISCALL"])
198
+ buttons_to_send.append(self.esm_dict["EXCH"])
199
+
200
+ # elif self.current_widget in ["other_1", "other_2"]:
201
+ # if self.other_2.text() == "" and self.other_1.text() == "":
202
+ # self.make_button_green(self.esm_dict["AGN"])
203
+ # buttons_to_send.append(self.esm_dict["AGN"])
204
+ # else:
205
+ # self.make_button_green(self.esm_dict["QRZ"])
206
+ # buttons_to_send.append(self.esm_dict["QRZ"])
207
+ # buttons_to_send.append("LOGIT")
208
+
209
+ elif self.current_widget in ["other_1", "other_2"]:
210
+ buttons_to_send.append("LOGIT")
211
+
212
+ if with_enter is True and bool(len(buttons_to_send)):
213
+ for button in buttons_to_send:
214
+ if button:
215
+ if button == "LOGIT":
216
+ self.save_contact()
217
+ continue
218
+ self.process_function_key(button)
219
+ else:
220
+ if self.current_widget == "callsign":
221
+ if len(self.callsign.text()) > 2:
222
+ self.make_button_green(self.esm_dict["MYCALL"])
223
+ buttons_to_send.append(self.esm_dict["MYCALL"])
224
+
225
+ # elif self.current_widget in ["other_1", "other_2"]:
226
+ # if self.other_2.text() == "" and self.other_1.text() == "":
227
+ # self.make_button_green(self.esm_dict["AGN"])
228
+ # buttons_to_send.append(self.esm_dict["AGN"])
229
+ # else:
230
+ # self.make_button_green(self.esm_dict["EXCH"])
231
+ # buttons_to_send.append(self.esm_dict["EXCH"])
232
+ # buttons_to_send.append("LOGIT")
233
+
234
+ elif self.current_widget in ["other_1", "other_2"]:
235
+ buttons_to_send.append("LOGIT")
236
+
237
+ if with_enter is True and bool(len(buttons_to_send)):
238
+ for button in buttons_to_send:
239
+ if button:
240
+ if button == "LOGIT":
241
+ self.save_contact()
242
+ continue
243
+ self.process_function_key(button)
244
+
245
+
246
+ def populate_history_info_line(self):
247
+ result = self.database.fetch_call_history(self.callsign.text())
248
+ if result:
249
+ self.history_info.setText(
250
+ f"{result.get('Call', '')}, {result.get('Name', '')}, {result.get('UserText','...')}"
251
+ )
252
+ else:
253
+ self.history_info.setText("")
254
+
255
+
256
+ def check_call_history(self):
257
+ """"""
258
+ result = self.database.fetch_call_history(self.callsign.text())
259
+ if result:
260
+ self.history_info.setText(f"{result.get('UserText','')}")
261
+ if self.other_1.text() == "":
262
+ self.other_1.setText(f"{result.get('Name', '')}")
not1mm/voice_keying.py CHANGED
@@ -25,7 +25,7 @@ import soundfile as sf
25
25
 
26
26
  from PyQt6.QtCore import QObject, pyqtSignal, QThread
27
27
 
28
- logger = logging.getLogger("cat_interface")
28
+ logger = logging.getLogger("voice_keying")
29
29
 
30
30
 
31
31
  class Voice(QObject):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: not1mm
3
- Version: 25.1.29
3
+ Version: 25.2.12
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
@@ -228,6 +228,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
228
228
  - NAQP CW, RTTY, SSB
229
229
  - Phone Weekly Test
230
230
  - RAEM
231
+ - RandomGram
231
232
  - RAC Canada Day
232
233
  - REF CW, SSB
233
234
  - Stew Perry Topband
@@ -236,19 +237,8 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
236
237
 
237
238
  ## Recent Changes
238
239
 
239
- - [25-1-29] Add password field for cluster signin.
240
- - [25-1-27-3] Add ft8 adif parser to the general logger.
241
- - [25-1-27-1] Add LABRE-RS Digi
242
- - [25-1-27] Update pop up about updates...
243
- - [25-1-26] Add macros for MARK, SPOT, WIPE, RUN, SANDP.
244
- - [25-1-25-2] Add call history to REF CW and SSB.
245
- - [25-1-25-1] Fix:ratewindow failed to change stats when contest changed.
246
- - [25-1-25] Fix app not following radio mode. Fix crash on recalc mults.
247
- - [25-1-24] Fix mismatched quotes causing crash.
248
- - [25-1-23] Added a basic rate window. Changed DB to WAL mode.
249
- - [25-1-15] Fix bug in ADIF output where mode showed as CW-R and not CW.
250
- - [25-1-6] Altered RTTY RU UDP ADIF parse.
251
- - [25-1-1] Added ARRL RTTY RU.
240
+ - [25-2-12] Merged PR from @alduhoo Adding RandomGram event.
241
+ - [25-2-6] Trimmed out newer tags from UI files, 'cause stuff be old sometimes.
252
242
 
253
243
  See [CHANGELOG.md](CHANGELOG.md) for prior changes.
254
244
 
@@ -698,7 +688,7 @@ files in your own voice.
698
688
  Aside from the `[filename]` wav files, there are also NATO phonetic wav files
699
689
  for each letter and number. So if your macro key holds
700
690
  `{HISCALL} {SNT} {SENTNR}` and you have entered K5TUX in callsign field during
701
- CQ WW SSB while in CQ Zone 3. You'll here Kilo 5 Tango Uniform X-ray, 5 9 9, 3.
691
+ CQ WW SSB while in CQ Zone 3. You'll here Kilo 5 Tango Uniform X-ray, 5 9, 3.
702
692
  Hopefully not in an idiots voice.
703
693
 
704
694
  ## cty.dat and QRZ lookups for distance and bearing
@@ -706,7 +696,7 @@ Hopefully not in an idiots voice.
706
696
  When a callsign is entered, a look up is first done in a cty.dat file to
707
697
  determin the country of origin, geographic center, cq zone and ITU region.
708
698
  Great circle calculations are done to determin the heading and distance from
709
- your gridsquare to the grographic center. This information then displayed at the
699
+ your gridsquare to the geographic center. This information then displayed at the
710
700
  bottom left.
711
701
 
712
702
  ![snapshot of heading and distance](https://github.com/mbridak/not1mm/raw/master/pic/heading_distance.png)
@@ -1,5 +1,5 @@
1
1
  not1mm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- not1mm/__main__.py,sha256=g0o9K_koq2alfJffLvSYAEB_jjRetCfy1ZyjsSe6-vw,147224
2
+ not1mm/__main__.py,sha256=fRbyVUHtGYgE9LSIMnJc6e_zQgjnHhzEvu914ZJrp50,147086
3
3
  not1mm/bandmap.py,sha256=vaOeqv_gW0-K0P3xA9JYcuiFILiKw601tjHQCwuoV-s,31260
4
4
  not1mm/checkwindow.py,sha256=VFAcKYTcoWhmIf91chwY6tyao9FQMWPiUkgDDkkWaog,9670
5
5
  not1mm/fsutils.py,sha256=ukHKxKTeNKxKwqRaJjtzRShL4X5Xl0jRBbADyy3Ifp8,1701
@@ -10,7 +10,7 @@ not1mm/ratewindow.py,sha256=UVkQt0nSB2COQlJQV6tFtsz4mP7d-Wj9jcjqvZw934Q,9891
10
10
  not1mm/rtc_service.py,sha256=axAwnCBuTr-QL0YwXtWvg9tjwhcFsiiEZFgFjOofX6k,2816
11
11
  not1mm/test.py,sha256=RN71m2S9MPIOJMaoCi0wZhwEhpEZunvtosZxaKahRB4,101
12
12
  not1mm/vfo.py,sha256=ggPyWtxMbdSE5RwdK0nDRwDNqOxdpb_pvnzZdbzZVQE,11136
13
- not1mm/voice_keying.py,sha256=sA3gw5_k7kShTg2qhG7HkKDM5M6KheJVRkAc_C7mxDk,3006
13
+ not1mm/voice_keying.py,sha256=HZImqC5NgnyW2nknNYQ3b7I8-6S_hxpq5G4RcIRXn_k,3005
14
14
  not1mm/data/JetBrainsMono-ExtraLight.ttf,sha256=g5Hn7BPounWMGDj1a8zZcyKMz03HSqW__pUluRR7Evg,274144
15
15
  not1mm/data/MASTER.SCP,sha256=FWKs4Xw3w7FNUt2npA6VzsLME7NAbHRugxaL6TnsvzU,364234
16
16
  not1mm/data/about.ui,sha256=IzbwKQZ_Ea06qGEjJgsa7g8-oYk549f-MEpLtChiLvw,2078
@@ -22,7 +22,7 @@ not1mm/data/configuration.ui,sha256=IvE0IkNdqznfo94qQHvJHQFwrYVxp-5aSbkvKnEesOQ,
22
22
  not1mm/data/contests.sql,sha256=4hmJCDvrbxnA_Y5S4T5o52TZieeFk6QUwFerwlFePNA,89307
23
23
  not1mm/data/cty.json,sha256=dPG9K1Pm4Rxd4uJom_gQ8y-sbqiZfILpl4kBAFnOveU,4877142
24
24
  not1mm/data/cwmacros.txt,sha256=NztufsX6R52gAO7VyJ2AHr7wOh41pJTwHKh5Lcs32ds,468
25
- not1mm/data/donors.html,sha256=DtH9DoDZoMLJf6adisJT8jCcnyhmj4gzHhX5UmmDgjI,239
25
+ not1mm/data/donors.html,sha256=0NEh7eu9Dsfv1Gy0_f6UMp4ZjVjm7OgoQJEQd-4whoU,267
26
26
  not1mm/data/editcontact.ui,sha256=TNOsXETYfDaON4wj6AkzCJ-n2SmbNRO2-g2SLl5m8s0,27437
27
27
  not1mm/data/editmacro.ui,sha256=Vg-S62ogKYcWlDDlza_JYyZkCQfa8mCfF-cFqpBej-w,2700
28
28
  not1mm/data/greendot.png,sha256=6h6KFMj5mmu07ppPWXXewH0PLAvbOOre-5z6rpzWLLo,474
@@ -32,18 +32,18 @@ not1mm/data/k6gte.not1mm-32.png,sha256=XdTsCa3xqwTfn26Ga7RwO_Vlbg_77RKkSc8bMxVcC
32
32
  not1mm/data/k6gte.not1mm-64.png,sha256=6ku45Gq1g5ezh04F07osoKRtanb3e4kbx5XdIEh3N90,2925
33
33
  not1mm/data/logwindow.ui,sha256=f7vULj96tHIQuR1nJMyvPHHcmVgzkhv9D1isyojsnFU,1458
34
34
  not1mm/data/logwindowx.ui,sha256=CwpI-h7cI1yqyldH9quKftsdHL5lTyL9ABOcf80nfqc,1632
35
- not1mm/data/main.ui,sha256=LEziByl_8nNTBYR0Z-6CgqDcMbsvQVgfWOfF-B9z3MQ,63537
36
- not1mm/data/new_contest.ui,sha256=UQNSl28_PrtVA6to2uKBCZTa7LCOh5peGOmuxIWHBw8,24063
35
+ not1mm/data/main.ui,sha256=CYHxO2GyI9fHvspEW4dZbd4HGnmTnDyWYn9PK8KxU9E,62454
36
+ not1mm/data/new_contest.ui,sha256=WVTVQ69vnQNKOIi88KPPLgY5hvW3DdgX-pkQtHdaovY,24170
37
37
  not1mm/data/not1mm.html,sha256=c9-mfjMwDt4f5pySUruz2gREW33CQ2_rCddM2z5CZQo,23273
38
38
  not1mm/data/opon.ui,sha256=QDicqAk2lORG2UWsHa6jHlsGn6uzrrI2R4HSAocpPes,2258
39
39
  not1mm/data/pickcontest.ui,sha256=4hPBszCglObThx_eIWtmK9CEcbr7WBjbB1rKZdI-o3I,1707
40
40
  not1mm/data/radio_green.png,sha256=PXlvRI2x0C8yLVkxRwrZe6tex8k9GtM-1Cj2Vy6KP7o,1234
41
41
  not1mm/data/radio_grey.png,sha256=9eOtMHDpQvRYY29D7_vPeacWbwotRXZTMm8EiHE9TW0,1258
42
42
  not1mm/data/radio_red.png,sha256=QvkMk7thd_hCEIyK5xGAG4xVVXivl39nwOfD8USDI20,957
43
- not1mm/data/ratewindow.ui,sha256=yUi9PS0D96W3meNWsU1jg6vcSA_FC-1A2bInshJOTIQ,37369
43
+ not1mm/data/ratewindow.ui,sha256=arTJpB81glfETq1uEXkOpE6PK3B6ULUE4AtQGQODobA,35311
44
44
  not1mm/data/reddot.png,sha256=M33jEMoU8W4rQ4_MVyzzKxDPDte1ypKBch5VnUMNLKE,565
45
45
  not1mm/data/rttymacros.txt,sha256=FQ2BnAChXF5w-tzmMnBOE8IgvviAEsd3cmmz4b8GOPk,467
46
- not1mm/data/settings.ui,sha256=NyHFUb3ZFEgZ4bYB3O7qlO_0TvZwcc9SFPr7z9nF6kk,40123
46
+ not1mm/data/settings.ui,sha256=rZmhUjFAyCA8B-cd4Ljrvz5qC3NKy6S3feYVh5WX-tw,40084
47
47
  not1mm/data/splash.png,sha256=85_BQotR1q24uCthrKm4SB_6ZOMwRjR-Jdp1XBHSTyg,5368
48
48
  not1mm/data/ssbmacros.txt,sha256=Q7MrkaBntbeg4yQSoMv3NLoM24V4y_RVati3_wmb0mY,464
49
49
  not1mm/data/vfo.ui,sha256=-fmFMJLPDz0jmsOdCljL7vfmlAQgwyHkGZjomlIN3gc,2076
@@ -114,9 +114,9 @@ not1mm/lib/n1mm.py,sha256=H54mpgJF0GAmKavM-nb5OAq2SJFWYkux4eMWWiSRxJc,6288
114
114
  not1mm/lib/new_contest.py,sha256=IznTDMq7yXHB6zBoGUEC_WDYPCPpsSZW4wwMJi16zK0,816
115
115
  not1mm/lib/plugin_common.py,sha256=M5reDYM-v5IjAa2yTROvZTeTDkXYHb3U52W9mc9GxwA,13213
116
116
  not1mm/lib/select_contest.py,sha256=WsptLuwkouIHeocJL3oZ6-eUfEnhpwdc-x7eMZ_TIVM,359
117
- not1mm/lib/settings.py,sha256=9xsf5MbjiPdELq7QtWTpkY-qPH442K3Uc8NVao57fSI,14964
117
+ not1mm/lib/settings.py,sha256=PrzLvhKz5_OySdepISdSssJ-yJne2LJODM-wXGc6uHs,14903
118
118
  not1mm/lib/super_check_partial.py,sha256=hwT2NRwobu0PLDyw6ltmbmcAtGBD02CKGFbgGWjXMqA,2334
119
- not1mm/lib/version.py,sha256=MqGntxoAGmOzNzEEaay0_uDA_SAhUe3g2GEGLUU96d4,48
119
+ not1mm/lib/version.py,sha256=jCnz7Kbwsx6niMj5heHVz2mZlvo8M_8r8yCzTmUu-RE,48
120
120
  not1mm/lib/versiontest.py,sha256=8vDNptuBBunn-1IGkjNaquehqBYUJyjrPSF8Igmd4_Y,1286
121
121
  not1mm/plugins/10_10_fall_cw.py,sha256=5QUyGMvGBC-HxcY_z9QbfuxSg3f7p6C9K4qhTxgZE7k,14719
122
122
  not1mm/plugins/10_10_spring_cw.py,sha256=XjYFM263WYyG6nVQzPObW4YC7Z9L93rixSOcVsxPvH4,14722
@@ -161,14 +161,15 @@ not1mm/plugins/naqp_rtty.py,sha256=JbjsY9DvVexXdzoPE4k9zSmcYNEMQpB9lrxdRxl_ldc,2
161
161
  not1mm/plugins/naqp_ssb.py,sha256=4ZnlvCwvuX53dvqQdsdj6ipE8U7MZBPKPkMgxdDuzF8,17814
162
162
  not1mm/plugins/phone_weekly_test.py,sha256=9Ue-n4VnZoFOc47ubaegT6ky0-38flMnm5VeieAk_UA,16308
163
163
  not1mm/plugins/raem.py,sha256=yF4WK-T8aPDxSI3pxVwYW-Q7eW9n5gvuaslEBoTYcsI,19562
164
+ not1mm/plugins/randomgram.py,sha256=h68Ul57maCRhZOou7jU4_B1Dfd3d4n5r-Qzex80yJOk,7401
164
165
  not1mm/plugins/ref_cw.py,sha256=R5W2rooxjsKvbLvEm-kr6kFLrzB6T60fVUl2ETei7ws,21319
165
166
  not1mm/plugins/ref_ssb.py,sha256=Z_XmMpYKcI5dZh4TQqvQDcz-cLpMzpDEKBnb5iHeBLQ,21530
166
167
  not1mm/plugins/stew_perry_topband.py,sha256=D1hekmMbx-i4BhaP2uzOK3OzaVVMMdgcN3RmfweNqHo,15341
167
168
  not1mm/plugins/weekly_rtty.py,sha256=rdlIrsxBeuj-RQc5OStVNF7sGCtBK5t6inN5Z7DI4tw,20066
168
169
  not1mm/plugins/winter_field_day.py,sha256=JK4r1vfxs7aADR7ZYbjZniz3f5s3_ipSQDZ0GRNWC7I,15222
169
- not1mm-25.1.29.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
170
- not1mm-25.1.29.dist-info/METADATA,sha256=1od78yzIlRAfE8C38_Ff6gFzBTnpn8NI4s9iDwKogB0,36143
171
- not1mm-25.1.29.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
172
- not1mm-25.1.29.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
173
- not1mm-25.1.29.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
174
- not1mm-25.1.29.dist-info/RECORD,,
170
+ not1mm-25.2.12.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
171
+ not1mm-25.2.12.dist-info/METADATA,sha256=-x_25J1gEO_zw6bSz28iSZl1CcpZ6Z-pZKl1Td4tu6Q,35599
172
+ not1mm-25.2.12.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
173
+ not1mm-25.2.12.dist-info/entry_points.txt,sha256=pMcZk_0dxFgLkcUkF0Q874ojpwOmF3OL6EKw9LgvocM,47
174
+ not1mm-25.2.12.dist-info/top_level.txt,sha256=0YmTxEcDzQlzXub-lXASvoLpg_mt1c2thb5cVkDf5J4,7
175
+ not1mm-25.2.12.dist-info/RECORD,,