lp1379 0.1.0__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.
@@ -0,0 +1,14 @@
1
+ name: lint
2
+ on: [push, pull_request]
3
+ jobs:
4
+ ruff:
5
+ runs-on: ubuntu-latest
6
+ steps:
7
+ - uses: actions/checkout@v4
8
+ - uses: astral-sh/ruff-action@v1
9
+ clippy_check:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+ - name: Run Clippy
14
+ run: cargo clippy
@@ -0,0 +1,169 @@
1
+ name: pypi
2
+
3
+ on:
4
+ push:
5
+
6
+ permissions:
7
+ contents: read
8
+
9
+ jobs:
10
+ linux:
11
+ runs-on: ${{ matrix.platform.runner }}
12
+ strategy:
13
+ matrix:
14
+ platform:
15
+ - runner: ubuntu-22.04
16
+ target: x86_64
17
+ - runner: ubuntu-22.04
18
+ target: x86
19
+ - runner: ubuntu-22.04
20
+ target: aarch64
21
+ - runner: ubuntu-22.04
22
+ target: armv7
23
+ - runner: ubuntu-22.04
24
+ target: s390x
25
+ - runner: ubuntu-22.04
26
+ target: ppc64le
27
+ steps:
28
+ - uses: actions/checkout@v4
29
+ - uses: actions/setup-python@v5
30
+ with:
31
+ python-version: 3.14
32
+ - name: Build wheels
33
+ uses: PyO3/maturin-action@v1
34
+ with:
35
+ target: ${{ matrix.platform.target }}
36
+ args: --release --out dist --find-interpreter
37
+ sccache: 'true'
38
+ manylinux: auto
39
+ - name: Upload wheels
40
+ uses: actions/upload-artifact@v4
41
+ with:
42
+ name: wheels-linux-${{ matrix.platform.target }}
43
+ path: dist
44
+
45
+ musllinux:
46
+ runs-on: ${{ matrix.platform.runner }}
47
+ strategy:
48
+ matrix:
49
+ platform:
50
+ - runner: ubuntu-22.04
51
+ target: x86_64
52
+ - runner: ubuntu-22.04
53
+ target: x86
54
+ - runner: ubuntu-22.04
55
+ target: aarch64
56
+ - runner: ubuntu-22.04
57
+ target: armv7
58
+ steps:
59
+ - uses: actions/checkout@v4
60
+ - uses: actions/setup-python@v5
61
+ with:
62
+ python-version: 3.14
63
+ - name: Build wheels
64
+ uses: PyO3/maturin-action@v1
65
+ with:
66
+ target: ${{ matrix.platform.target }}
67
+ args: --release --out dist --find-interpreter
68
+ sccache: 'true'
69
+ manylinux: musllinux_1_2
70
+ - name: Upload wheels
71
+ uses: actions/upload-artifact@v4
72
+ with:
73
+ name: wheels-musllinux-${{ matrix.platform.target }}
74
+ path: dist
75
+
76
+ windows:
77
+ runs-on: ${{ matrix.platform.runner }}
78
+ strategy:
79
+ matrix:
80
+ platform:
81
+ - runner: windows-latest
82
+ target: x64
83
+ - runner: windows-latest
84
+ target: x86
85
+ steps:
86
+ - uses: actions/checkout@v4
87
+ - uses: actions/setup-python@v5
88
+ with:
89
+ python-version: 3.14
90
+ architecture: ${{ matrix.platform.target }}
91
+ - name: Build wheels
92
+ uses: PyO3/maturin-action@v1
93
+ with:
94
+ target: ${{ matrix.platform.target }}
95
+ args: --release --out dist --find-interpreter
96
+ sccache: 'true'
97
+ - name: Upload wheels
98
+ uses: actions/upload-artifact@v4
99
+ with:
100
+ name: wheels-windows-${{ matrix.platform.target }}
101
+ path: dist
102
+
103
+ macos:
104
+ runs-on: ${{ matrix.platform.runner }}
105
+ strategy:
106
+ matrix:
107
+ platform:
108
+ - runner: macos-13
109
+ target: x86_64
110
+ - runner: macos-14
111
+ target: aarch64
112
+ steps:
113
+ - uses: actions/checkout@v4
114
+ - uses: actions/setup-python@v5
115
+ with:
116
+ python-version: 3.14
117
+ - name: Build wheels
118
+ uses: PyO3/maturin-action@v1
119
+ with:
120
+ target: ${{ matrix.platform.target }}
121
+ args: --release --out dist --find-interpreter
122
+ sccache: 'true'
123
+ - name: Upload wheels
124
+ uses: actions/upload-artifact@v4
125
+ with:
126
+ name: wheels-macos-${{ matrix.platform.target }}
127
+ path: dist
128
+
129
+ sdist:
130
+ runs-on: ubuntu-latest
131
+ steps:
132
+ - uses: actions/checkout@v4
133
+ - name: Build sdist
134
+ uses: PyO3/maturin-action@v1
135
+ with:
136
+ command: sdist
137
+ args: --out dist
138
+ - name: Upload sdist
139
+ uses: actions/upload-artifact@v4
140
+ with:
141
+ name: wheels-sdist
142
+ path: dist
143
+
144
+ release:
145
+ name: Release
146
+ runs-on: ubuntu-latest
147
+ if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
148
+ needs: [linux, musllinux, windows, macos, sdist]
149
+ permissions:
150
+ # Use to sign the release artifacts
151
+ id-token: write
152
+ # Used to upload release artifacts
153
+ contents: write
154
+ # Used to generate artifact attestation
155
+ attestations: write
156
+ steps:
157
+ - uses: actions/download-artifact@v4
158
+ - name: Generate artifact attestation
159
+ uses: actions/attest-build-provenance@v1
160
+ with:
161
+ subject-path: 'wheels-*/*'
162
+ - name: Publish to PyPI
163
+ if: "startsWith(github.ref, 'refs/tags/')"
164
+ uses: PyO3/maturin-action@v1
165
+ env:
166
+ MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
167
+ with:
168
+ command: upload
169
+ args: --non-interactive --skip-existing wheels-*/*
@@ -0,0 +1,19 @@
1
+ on:
2
+ push:
3
+ branches:
4
+ - main
5
+
6
+ permissions:
7
+ contents: write
8
+ pull-requests: write
9
+
10
+ name: release-please
11
+
12
+ jobs:
13
+ release-please:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: googleapis/release-please-action@v4
17
+ with:
18
+ token: ${{ secrets.RELEASE_PLEASE }}
19
+ release-type: rust
@@ -0,0 +1,3 @@
1
+ /target
2
+ *__pycache__*
3
+ *.so
@@ -0,0 +1,8 @@
1
+ # Changelog
2
+
3
+ ## 0.1.0 (2025-11-14)
4
+
5
+
6
+ ### Features
7
+
8
+ * importable rust function ([da79800](https://github.com/WardDeb/listening_post_1379/commit/da79800194f76e417374670fc1203e8f6a07b95b))
@@ -0,0 +1,399 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "autocfg"
7
+ version = "1.5.0"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
10
+
11
+ [[package]]
12
+ name = "bitflags"
13
+ version = "1.3.2"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
16
+
17
+ [[package]]
18
+ name = "bitflags"
19
+ version = "2.10.0"
20
+ source = "registry+https://github.com/rust-lang/crates.io-index"
21
+ checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
22
+
23
+ [[package]]
24
+ name = "fsevent-sys"
25
+ version = "4.1.0"
26
+ source = "registry+https://github.com/rust-lang/crates.io-index"
27
+ checksum = "76ee7a02da4d231650c7cea31349b889be2f45ddb3ef3032d2ec8185f6313fd2"
28
+ dependencies = [
29
+ "libc",
30
+ ]
31
+
32
+ [[package]]
33
+ name = "heck"
34
+ version = "0.5.0"
35
+ source = "registry+https://github.com/rust-lang/crates.io-index"
36
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
37
+
38
+ [[package]]
39
+ name = "indoc"
40
+ version = "2.0.7"
41
+ source = "registry+https://github.com/rust-lang/crates.io-index"
42
+ checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
43
+ dependencies = [
44
+ "rustversion",
45
+ ]
46
+
47
+ [[package]]
48
+ name = "inotify"
49
+ version = "0.11.0"
50
+ source = "registry+https://github.com/rust-lang/crates.io-index"
51
+ checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3"
52
+ dependencies = [
53
+ "bitflags 2.10.0",
54
+ "inotify-sys",
55
+ "libc",
56
+ ]
57
+
58
+ [[package]]
59
+ name = "inotify-sys"
60
+ version = "0.1.5"
61
+ source = "registry+https://github.com/rust-lang/crates.io-index"
62
+ checksum = "e05c02b5e89bff3b946cedeca278abc628fe811e604f027c45a8aa3cf793d0eb"
63
+ dependencies = [
64
+ "libc",
65
+ ]
66
+
67
+ [[package]]
68
+ name = "kqueue"
69
+ version = "1.1.1"
70
+ source = "registry+https://github.com/rust-lang/crates.io-index"
71
+ checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a"
72
+ dependencies = [
73
+ "kqueue-sys",
74
+ "libc",
75
+ ]
76
+
77
+ [[package]]
78
+ name = "kqueue-sys"
79
+ version = "1.0.4"
80
+ source = "registry+https://github.com/rust-lang/crates.io-index"
81
+ checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b"
82
+ dependencies = [
83
+ "bitflags 1.3.2",
84
+ "libc",
85
+ ]
86
+
87
+ [[package]]
88
+ name = "libc"
89
+ version = "0.2.177"
90
+ source = "registry+https://github.com/rust-lang/crates.io-index"
91
+ checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
92
+
93
+ [[package]]
94
+ name = "log"
95
+ version = "0.4.28"
96
+ source = "registry+https://github.com/rust-lang/crates.io-index"
97
+ checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
98
+
99
+ [[package]]
100
+ name = "lp1379"
101
+ version = "0.1.0"
102
+ dependencies = [
103
+ "notify",
104
+ "pyo3",
105
+ ]
106
+
107
+ [[package]]
108
+ name = "memoffset"
109
+ version = "0.9.1"
110
+ source = "registry+https://github.com/rust-lang/crates.io-index"
111
+ checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
112
+ dependencies = [
113
+ "autocfg",
114
+ ]
115
+
116
+ [[package]]
117
+ name = "mio"
118
+ version = "1.1.0"
119
+ source = "registry+https://github.com/rust-lang/crates.io-index"
120
+ checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873"
121
+ dependencies = [
122
+ "libc",
123
+ "log",
124
+ "wasi",
125
+ "windows-sys 0.61.2",
126
+ ]
127
+
128
+ [[package]]
129
+ name = "notify"
130
+ version = "8.2.0"
131
+ source = "registry+https://github.com/rust-lang/crates.io-index"
132
+ checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3"
133
+ dependencies = [
134
+ "bitflags 2.10.0",
135
+ "fsevent-sys",
136
+ "inotify",
137
+ "kqueue",
138
+ "libc",
139
+ "log",
140
+ "mio",
141
+ "notify-types",
142
+ "walkdir",
143
+ "windows-sys 0.60.2",
144
+ ]
145
+
146
+ [[package]]
147
+ name = "notify-types"
148
+ version = "2.0.0"
149
+ source = "registry+https://github.com/rust-lang/crates.io-index"
150
+ checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d"
151
+
152
+ [[package]]
153
+ name = "once_cell"
154
+ version = "1.21.3"
155
+ source = "registry+https://github.com/rust-lang/crates.io-index"
156
+ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
157
+
158
+ [[package]]
159
+ name = "portable-atomic"
160
+ version = "1.11.1"
161
+ source = "registry+https://github.com/rust-lang/crates.io-index"
162
+ checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
163
+
164
+ [[package]]
165
+ name = "proc-macro2"
166
+ version = "1.0.103"
167
+ source = "registry+https://github.com/rust-lang/crates.io-index"
168
+ checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
169
+ dependencies = [
170
+ "unicode-ident",
171
+ ]
172
+
173
+ [[package]]
174
+ name = "pyo3"
175
+ version = "0.27.1"
176
+ source = "registry+https://github.com/rust-lang/crates.io-index"
177
+ checksum = "37a6df7eab65fc7bee654a421404947e10a0f7085b6951bf2ea395f4659fb0cf"
178
+ dependencies = [
179
+ "indoc",
180
+ "libc",
181
+ "memoffset",
182
+ "once_cell",
183
+ "portable-atomic",
184
+ "pyo3-build-config",
185
+ "pyo3-ffi",
186
+ "pyo3-macros",
187
+ "unindent",
188
+ ]
189
+
190
+ [[package]]
191
+ name = "pyo3-build-config"
192
+ version = "0.27.1"
193
+ source = "registry+https://github.com/rust-lang/crates.io-index"
194
+ checksum = "f77d387774f6f6eec64a004eac0ed525aab7fa1966d94b42f743797b3e395afb"
195
+ dependencies = [
196
+ "target-lexicon",
197
+ ]
198
+
199
+ [[package]]
200
+ name = "pyo3-ffi"
201
+ version = "0.27.1"
202
+ source = "registry+https://github.com/rust-lang/crates.io-index"
203
+ checksum = "2dd13844a4242793e02df3e2ec093f540d948299a6a77ea9ce7afd8623f542be"
204
+ dependencies = [
205
+ "libc",
206
+ "pyo3-build-config",
207
+ ]
208
+
209
+ [[package]]
210
+ name = "pyo3-macros"
211
+ version = "0.27.1"
212
+ source = "registry+https://github.com/rust-lang/crates.io-index"
213
+ checksum = "eaf8f9f1108270b90d3676b8679586385430e5c0bb78bb5f043f95499c821a71"
214
+ dependencies = [
215
+ "proc-macro2",
216
+ "pyo3-macros-backend",
217
+ "quote",
218
+ "syn",
219
+ ]
220
+
221
+ [[package]]
222
+ name = "pyo3-macros-backend"
223
+ version = "0.27.1"
224
+ source = "registry+https://github.com/rust-lang/crates.io-index"
225
+ checksum = "70a3b2274450ba5288bc9b8c1b69ff569d1d61189d4bff38f8d22e03d17f932b"
226
+ dependencies = [
227
+ "heck",
228
+ "proc-macro2",
229
+ "pyo3-build-config",
230
+ "quote",
231
+ "syn",
232
+ ]
233
+
234
+ [[package]]
235
+ name = "quote"
236
+ version = "1.0.42"
237
+ source = "registry+https://github.com/rust-lang/crates.io-index"
238
+ checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
239
+ dependencies = [
240
+ "proc-macro2",
241
+ ]
242
+
243
+ [[package]]
244
+ name = "rustversion"
245
+ version = "1.0.22"
246
+ source = "registry+https://github.com/rust-lang/crates.io-index"
247
+ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
248
+
249
+ [[package]]
250
+ name = "same-file"
251
+ version = "1.0.6"
252
+ source = "registry+https://github.com/rust-lang/crates.io-index"
253
+ checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
254
+ dependencies = [
255
+ "winapi-util",
256
+ ]
257
+
258
+ [[package]]
259
+ name = "syn"
260
+ version = "2.0.110"
261
+ source = "registry+https://github.com/rust-lang/crates.io-index"
262
+ checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea"
263
+ dependencies = [
264
+ "proc-macro2",
265
+ "quote",
266
+ "unicode-ident",
267
+ ]
268
+
269
+ [[package]]
270
+ name = "target-lexicon"
271
+ version = "0.13.3"
272
+ source = "registry+https://github.com/rust-lang/crates.io-index"
273
+ checksum = "df7f62577c25e07834649fc3b39fafdc597c0a3527dc1c60129201ccfcbaa50c"
274
+
275
+ [[package]]
276
+ name = "unicode-ident"
277
+ version = "1.0.22"
278
+ source = "registry+https://github.com/rust-lang/crates.io-index"
279
+ checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
280
+
281
+ [[package]]
282
+ name = "unindent"
283
+ version = "0.2.4"
284
+ source = "registry+https://github.com/rust-lang/crates.io-index"
285
+ checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
286
+
287
+ [[package]]
288
+ name = "walkdir"
289
+ version = "2.5.0"
290
+ source = "registry+https://github.com/rust-lang/crates.io-index"
291
+ checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
292
+ dependencies = [
293
+ "same-file",
294
+ "winapi-util",
295
+ ]
296
+
297
+ [[package]]
298
+ name = "wasi"
299
+ version = "0.11.1+wasi-snapshot-preview1"
300
+ source = "registry+https://github.com/rust-lang/crates.io-index"
301
+ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
302
+
303
+ [[package]]
304
+ name = "winapi-util"
305
+ version = "0.1.11"
306
+ source = "registry+https://github.com/rust-lang/crates.io-index"
307
+ checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
308
+ dependencies = [
309
+ "windows-sys 0.61.2",
310
+ ]
311
+
312
+ [[package]]
313
+ name = "windows-link"
314
+ version = "0.2.1"
315
+ source = "registry+https://github.com/rust-lang/crates.io-index"
316
+ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
317
+
318
+ [[package]]
319
+ name = "windows-sys"
320
+ version = "0.60.2"
321
+ source = "registry+https://github.com/rust-lang/crates.io-index"
322
+ checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
323
+ dependencies = [
324
+ "windows-targets",
325
+ ]
326
+
327
+ [[package]]
328
+ name = "windows-sys"
329
+ version = "0.61.2"
330
+ source = "registry+https://github.com/rust-lang/crates.io-index"
331
+ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
332
+ dependencies = [
333
+ "windows-link",
334
+ ]
335
+
336
+ [[package]]
337
+ name = "windows-targets"
338
+ version = "0.53.5"
339
+ source = "registry+https://github.com/rust-lang/crates.io-index"
340
+ checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
341
+ dependencies = [
342
+ "windows-link",
343
+ "windows_aarch64_gnullvm",
344
+ "windows_aarch64_msvc",
345
+ "windows_i686_gnu",
346
+ "windows_i686_gnullvm",
347
+ "windows_i686_msvc",
348
+ "windows_x86_64_gnu",
349
+ "windows_x86_64_gnullvm",
350
+ "windows_x86_64_msvc",
351
+ ]
352
+
353
+ [[package]]
354
+ name = "windows_aarch64_gnullvm"
355
+ version = "0.53.1"
356
+ source = "registry+https://github.com/rust-lang/crates.io-index"
357
+ checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
358
+
359
+ [[package]]
360
+ name = "windows_aarch64_msvc"
361
+ version = "0.53.1"
362
+ source = "registry+https://github.com/rust-lang/crates.io-index"
363
+ checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
364
+
365
+ [[package]]
366
+ name = "windows_i686_gnu"
367
+ version = "0.53.1"
368
+ source = "registry+https://github.com/rust-lang/crates.io-index"
369
+ checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
370
+
371
+ [[package]]
372
+ name = "windows_i686_gnullvm"
373
+ version = "0.53.1"
374
+ source = "registry+https://github.com/rust-lang/crates.io-index"
375
+ checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
376
+
377
+ [[package]]
378
+ name = "windows_i686_msvc"
379
+ version = "0.53.1"
380
+ source = "registry+https://github.com/rust-lang/crates.io-index"
381
+ checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
382
+
383
+ [[package]]
384
+ name = "windows_x86_64_gnu"
385
+ version = "0.53.1"
386
+ source = "registry+https://github.com/rust-lang/crates.io-index"
387
+ checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
388
+
389
+ [[package]]
390
+ name = "windows_x86_64_gnullvm"
391
+ version = "0.53.1"
392
+ source = "registry+https://github.com/rust-lang/crates.io-index"
393
+ checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
394
+
395
+ [[package]]
396
+ name = "windows_x86_64_msvc"
397
+ version = "0.53.1"
398
+ source = "registry+https://github.com/rust-lang/crates.io-index"
399
+ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
@@ -0,0 +1,13 @@
1
+ [package]
2
+ name = "lp1379"
3
+ version = "0.1.0"
4
+ edition = "2024"
5
+ readme = "README.md"
6
+
7
+ [lib]
8
+ name = "lp1379"
9
+ crate-type = ["cdylib"]
10
+
11
+ [dependencies]
12
+ pyo3 = { version = "*", features = ["extension-module"] }
13
+ notify = "*"
lp1379-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,22 @@
1
+ Metadata-Version: 2.4
2
+ Name: lp1379
3
+ Version: 0.1.0
4
+ Summary: A common framework to analyse multi-modal single-cell data.
5
+ Author-email: Ward Deboutte <w@rddeboutte.com>
6
+ Requires-Python: >3.10
7
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
8
+ Project-URL: Homepage, https://github.com/WardDeb/listening_post_1379
9
+ Project-URL: Repository, https://github.com/WardDeb/listening_post_1379
10
+
11
+ # listening_post_1379
12
+
13
+ <img src="imgs/lp1379.png" width="100" alt="lp1379">
14
+
15
+ This repository mainly acts as a bridge between [notify](https://github.com/notify-rs/notify) and python.
16
+ Ultimate goal is a _lightweight_ python importable function that watches a directory for changes.
17
+
18
+ ```python
19
+ from lp1379.lp1379 import rswatcher
20
+ ```
21
+
22
+ Example usage available under [examples](examples) folder.
lp1379-0.1.0/README.md ADDED
@@ -0,0 +1,12 @@
1
+ # listening_post_1379
2
+
3
+ <img src="imgs/lp1379.png" width="100" alt="lp1379">
4
+
5
+ This repository mainly acts as a bridge between [notify](https://github.com/notify-rs/notify) and python.
6
+ Ultimate goal is a _lightweight_ python importable function that watches a directory for changes.
7
+
8
+ ```python
9
+ from lp1379.lp1379 import rswatcher
10
+ ```
11
+
12
+ Example usage available under [examples](examples) folder.
@@ -0,0 +1,22 @@
1
+ from pathlib import Path
2
+ from lp1379.lp1379 import rswatcher
3
+
4
+ def watch(path: str = None) -> None:
5
+ '''
6
+ Watch either the current directory (no path given), or the given path.
7
+ If the latter, it needs to exist.
8
+ '''
9
+ if path is None:
10
+ path = Path.cwd()
11
+ else:
12
+ path = Path(path)
13
+ if not path.exists():
14
+ raise FileNotFoundError(f"Given path does not exist: {path}")
15
+ print(f"Watching path: {path}")
16
+
17
+ def handle_event(event):
18
+ print(event)
19
+
20
+ rswatcher(str(path), handle_event)
21
+
22
+ watch()
Binary file
lp1379-0.1.0/pixi.lock ADDED
@@ -0,0 +1,406 @@
1
+ version: 6
2
+ environments:
3
+ default:
4
+ channels:
5
+ - url: https://conda.anaconda.org/conda-forge/
6
+ - url: https://conda.anaconda.org/bioconda/
7
+ indexes:
8
+ - https://pypi.org/simple
9
+ packages:
10
+ linux-64:
11
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
12
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
13
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda
14
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda
15
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda
16
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1aa0949_5.conda
17
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda
18
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda
19
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-h767d61c_7.conda
20
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_7.conda
21
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-h767d61c_7.conda
22
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda
23
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda
24
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda
25
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.0-hee844dc_0.conda
26
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h8f9b012_7.conda
27
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-h4852527_7.conda
28
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-he9a06e4_0.conda
29
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
30
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
31
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda
32
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.0-h9ebbce0_101_cp313.conda
33
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda
34
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
35
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
36
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
37
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda
38
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda
39
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda
40
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda
41
+ - pypi: ./
42
+ packages:
43
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
44
+ sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726
45
+ md5: d7c89558ba9fa0495403155b64376d81
46
+ license: None
47
+ purls: []
48
+ size: 2562
49
+ timestamp: 1578324546067
50
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2
51
+ build_number: 16
52
+ sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22
53
+ md5: 73aaf86a425cc6e73fcf236a5a46396d
54
+ depends:
55
+ - _libgcc_mutex 0.1 conda_forge
56
+ - libgomp >=7.5.0
57
+ constrains:
58
+ - openmp_impl 9999
59
+ license: BSD-3-Clause
60
+ license_family: BSD
61
+ purls: []
62
+ size: 23621
63
+ timestamp: 1650670423406
64
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda
65
+ sha256: c30daba32ddebbb7ded490f0e371eae90f51e72db620554089103b4a6934b0d5
66
+ md5: 51a19bba1b8ebfb60df25cde030b7ebc
67
+ depends:
68
+ - __glibc >=2.17,<3.0.a0
69
+ - libgcc >=14
70
+ license: bzip2-1.0.6
71
+ license_family: BSD
72
+ purls: []
73
+ size: 260341
74
+ timestamp: 1757437258798
75
+ - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda
76
+ sha256: 3b5ad78b8bb61b6cdc0978a6a99f8dfb2cc789a451378d054698441005ecbdb6
77
+ md5: f9e5fbc24009179e8b0409624691758a
78
+ depends:
79
+ - __unix
80
+ license: ISC
81
+ purls: []
82
+ size: 155907
83
+ timestamp: 1759649036195
84
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda
85
+ sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e
86
+ md5: 8b189310083baabfb622af68fd9d3ae3
87
+ depends:
88
+ - __glibc >=2.17,<3.0.a0
89
+ - libgcc-ng >=12
90
+ - libstdcxx-ng >=12
91
+ license: MIT
92
+ license_family: MIT
93
+ purls: []
94
+ size: 12129203
95
+ timestamp: 1720853576813
96
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-h1aa0949_5.conda
97
+ sha256: dab1fbf65abb05d3f2ee49dff90d60eeb2e02039fcb561343c7cea5dea523585
98
+ md5: 511ed8935448c1875776b60ad3daf3a1
99
+ depends:
100
+ - __glibc >=2.17,<3.0.a0
101
+ - zstd >=1.5.7,<1.6.0a0
102
+ constrains:
103
+ - binutils_impl_linux-64 2.44
104
+ license: GPL-3.0-only
105
+ purls: []
106
+ size: 741516
107
+ timestamp: 1762674665675
108
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda
109
+ sha256: da2080da8f0288b95dd86765c801c6e166c4619b910b11f9a8446fb852438dc2
110
+ md5: 4211416ecba1866fab0c6470986c22d6
111
+ depends:
112
+ - __glibc >=2.17,<3.0.a0
113
+ - libgcc >=14
114
+ constrains:
115
+ - expat 2.7.1.*
116
+ license: MIT
117
+ license_family: MIT
118
+ purls: []
119
+ size: 74811
120
+ timestamp: 1752719572741
121
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda
122
+ sha256: 25cbdfa65580cfab1b8d15ee90b4c9f1e0d72128f1661449c9a999d341377d54
123
+ md5: 35f29eec58405aaf55e01cb470d8c26a
124
+ depends:
125
+ - __glibc >=2.17,<3.0.a0
126
+ - libgcc >=14
127
+ license: MIT
128
+ license_family: MIT
129
+ purls: []
130
+ size: 57821
131
+ timestamp: 1760295480630
132
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-h767d61c_7.conda
133
+ sha256: 08f9b87578ab981c7713e4e6a7d935e40766e10691732bba376d4964562bcb45
134
+ md5: c0374badb3a5d4b1372db28d19462c53
135
+ depends:
136
+ - __glibc >=2.17,<3.0.a0
137
+ - _openmp_mutex >=4.5
138
+ constrains:
139
+ - libgomp 15.2.0 h767d61c_7
140
+ - libgcc-ng ==15.2.0=*_7
141
+ license: GPL-3.0-only WITH GCC-exception-3.1
142
+ license_family: GPL
143
+ purls: []
144
+ size: 822552
145
+ timestamp: 1759968052178
146
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_7.conda
147
+ sha256: 2045066dd8e6e58aaf5ae2b722fb6dfdbb57c862b5f34ac7bfb58c40ef39b6ad
148
+ md5: 280ea6eee9e2ddefde25ff799c4f0363
149
+ depends:
150
+ - libgcc 15.2.0 h767d61c_7
151
+ license: GPL-3.0-only WITH GCC-exception-3.1
152
+ license_family: GPL
153
+ purls: []
154
+ size: 29313
155
+ timestamp: 1759968065504
156
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-h767d61c_7.conda
157
+ sha256: e9fb1c258c8e66ee278397b5822692527c5f5786d372fe7a869b900853f3f5ca
158
+ md5: f7b4d76975aac7e5d9e6ad13845f92fe
159
+ depends:
160
+ - __glibc >=2.17,<3.0.a0
161
+ license: GPL-3.0-only WITH GCC-exception-3.1
162
+ license_family: GPL
163
+ purls: []
164
+ size: 447919
165
+ timestamp: 1759967942498
166
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda
167
+ sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8
168
+ md5: 1a580f7796c7bf6393fddb8bbbde58dc
169
+ depends:
170
+ - __glibc >=2.17,<3.0.a0
171
+ - libgcc >=13
172
+ constrains:
173
+ - xz 5.8.1.*
174
+ license: 0BSD
175
+ purls: []
176
+ size: 112894
177
+ timestamp: 1749230047870
178
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.1-hb9d3cd8_2.conda
179
+ sha256: 329e66330a8f9cbb6a8d5995005478188eb4ba8a6b6391affa849744f4968492
180
+ md5: f61edadbb301530bd65a32646bd81552
181
+ depends:
182
+ - __glibc >=2.17,<3.0.a0
183
+ - libgcc >=13
184
+ - liblzma 5.8.1 hb9d3cd8_2
185
+ license: 0BSD
186
+ purls: []
187
+ size: 439868
188
+ timestamp: 1749230061968
189
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda
190
+ sha256: 3aa92d4074d4063f2a162cd8ecb45dccac93e543e565c01a787e16a43501f7ee
191
+ md5: c7e925f37e3b40d893459e625f6a53f1
192
+ depends:
193
+ - __glibc >=2.17,<3.0.a0
194
+ - libgcc >=13
195
+ license: BSD-2-Clause
196
+ license_family: BSD
197
+ purls: []
198
+ size: 91183
199
+ timestamp: 1748393666725
200
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.0-hee844dc_0.conda
201
+ sha256: 4c992dcd0e34b68f843e75406f7f303b1b97c248d18f3c7c330bdc0bc26ae0b3
202
+ md5: 729a572a3ebb8c43933b30edcc628ceb
203
+ depends:
204
+ - __glibc >=2.17,<3.0.a0
205
+ - icu >=75.1,<76.0a0
206
+ - libgcc >=14
207
+ - libzlib >=1.3.1,<2.0a0
208
+ license: blessing
209
+ purls: []
210
+ size: 945576
211
+ timestamp: 1762299687230
212
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h8f9b012_7.conda
213
+ sha256: 1b981647d9775e1cdeb2fab0a4dd9cd75a6b0de2963f6c3953dbd712f78334b3
214
+ md5: 5b767048b1b3ee9a954b06f4084f93dc
215
+ depends:
216
+ - __glibc >=2.17,<3.0.a0
217
+ - libgcc 15.2.0 h767d61c_7
218
+ constrains:
219
+ - libstdcxx-ng ==15.2.0=*_7
220
+ license: GPL-3.0-only WITH GCC-exception-3.1
221
+ license_family: GPL
222
+ purls: []
223
+ size: 3898269
224
+ timestamp: 1759968103436
225
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-h4852527_7.conda
226
+ sha256: 024fd46ac3ea8032a5ec3ea7b91c4c235701a8bf0e6520fe5e6539992a6bd05f
227
+ md5: f627678cf829bd70bccf141a19c3ad3e
228
+ depends:
229
+ - libstdcxx 15.2.0 h8f9b012_7
230
+ license: GPL-3.0-only WITH GCC-exception-3.1
231
+ license_family: GPL
232
+ purls: []
233
+ size: 29343
234
+ timestamp: 1759968157195
235
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-he9a06e4_0.conda
236
+ sha256: e5ec6d2ad7eef538ddcb9ea62ad4346fde70a4736342c4ad87bd713641eb9808
237
+ md5: 80c07c68d2f6870250959dcc95b209d1
238
+ depends:
239
+ - __glibc >=2.17,<3.0.a0
240
+ - libgcc >=14
241
+ license: BSD-3-Clause
242
+ license_family: BSD
243
+ purls: []
244
+ size: 37135
245
+ timestamp: 1758626800002
246
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
247
+ sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4
248
+ md5: edb0dca6bc32e4f4789199455a1dbeb8
249
+ depends:
250
+ - __glibc >=2.17,<3.0.a0
251
+ - libgcc >=13
252
+ constrains:
253
+ - zlib 1.3.1 *_2
254
+ license: Zlib
255
+ license_family: Other
256
+ purls: []
257
+ size: 60963
258
+ timestamp: 1727963148474
259
+ - pypi: ./
260
+ name: lp1379
261
+ version: 0.1.0
262
+ sha256: df90072ae1c9b8c381e1a007427ecfbfabf14602947b88d8fb865b78af677ca3
263
+ requires_python: '>3.10'
264
+ editable: true
265
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
266
+ sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586
267
+ md5: 47e340acb35de30501a76c7c799c41d7
268
+ depends:
269
+ - __glibc >=2.17,<3.0.a0
270
+ - libgcc >=13
271
+ license: X11 AND BSD-3-Clause
272
+ purls: []
273
+ size: 891641
274
+ timestamp: 1738195959188
275
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda
276
+ sha256: a47271202f4518a484956968335b2521409c8173e123ab381e775c358c67fe6d
277
+ md5: 9ee58d5c534af06558933af3c845a780
278
+ depends:
279
+ - __glibc >=2.17,<3.0.a0
280
+ - ca-certificates
281
+ - libgcc >=14
282
+ license: Apache-2.0
283
+ license_family: Apache
284
+ purls: []
285
+ size: 3165399
286
+ timestamp: 1762839186699
287
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.0-h9ebbce0_101_cp313.conda
288
+ build_number: 101
289
+ sha256: 66a7997b24b2dca636df11402abec7bd2199ddf6971eb47a3ee6b1d27d4faee9
290
+ md5: f4fea9d5bb3f2e61a39950a7ab70ee4e
291
+ depends:
292
+ - __glibc >=2.17,<3.0.a0
293
+ - bzip2 >=1.0.8,<2.0a0
294
+ - ld_impl_linux-64 >=2.36.1
295
+ - libexpat >=2.6.4,<3.0a0
296
+ - libffi >=3.4,<4.0a0
297
+ - libgcc >=13
298
+ - libmpdec >=4.0.0,<5.0a0
299
+ - libsqlite >=3.47.0,<4.0a0
300
+ - libuuid >=2.38.1,<3.0a0
301
+ - libzlib >=1.3.1,<2.0a0
302
+ - ncurses >=6.5,<7.0a0
303
+ - openssl >=3.4.0,<4.0a0
304
+ - python_abi 3.13.* *_cp313
305
+ - readline >=8.2,<9.0a0
306
+ - tk >=8.6.13,<8.7.0a0
307
+ - tzdata
308
+ - xz >=5.2.6,<6.0a0
309
+ license: Python-2.0
310
+ purls: []
311
+ size: 33054218
312
+ timestamp: 1732736838043
313
+ - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda
314
+ build_number: 8
315
+ sha256: 210bffe7b121e651419cb196a2a63687b087497595c9be9d20ebe97dd06060a7
316
+ md5: 94305520c52a4aa3f6c2b1ff6008d9f8
317
+ constrains:
318
+ - python 3.13.* *_cp313
319
+ license: BSD-3-Clause
320
+ license_family: BSD
321
+ purls: []
322
+ size: 7002
323
+ timestamp: 1752805902938
324
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
325
+ sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c
326
+ md5: 283b96675859b20a825f8fa30f311446
327
+ depends:
328
+ - libgcc >=13
329
+ - ncurses >=6.5,<7.0a0
330
+ license: GPL-3.0-only
331
+ license_family: GPL
332
+ purls: []
333
+ size: 282480
334
+ timestamp: 1740379431762
335
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
336
+ sha256: a84ff687119e6d8752346d1d408d5cf360dee0badd487a472aa8ddedfdc219e1
337
+ md5: a0116df4f4ed05c303811a837d5b39d8
338
+ depends:
339
+ - __glibc >=2.17,<3.0.a0
340
+ - libgcc >=13
341
+ - libzlib >=1.3.1,<2.0a0
342
+ license: TCL
343
+ license_family: BSD
344
+ purls: []
345
+ size: 3285204
346
+ timestamp: 1748387766691
347
+ - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
348
+ sha256: 5aaa366385d716557e365f0a4e9c3fca43ba196872abbbe3d56bb610d131e192
349
+ md5: 4222072737ccff51314b5ece9c7d6f5a
350
+ license: LicenseRef-Public-Domain
351
+ purls: []
352
+ size: 122968
353
+ timestamp: 1742727099393
354
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.1-hbcc6ac9_2.conda
355
+ sha256: 802725371682ea06053971db5b4fb7fbbcaee9cb1804ec688f55e51d74660617
356
+ md5: 68eae977d7d1196d32b636a026dc015d
357
+ depends:
358
+ - __glibc >=2.17,<3.0.a0
359
+ - libgcc >=13
360
+ - liblzma 5.8.1 hb9d3cd8_2
361
+ - liblzma-devel 5.8.1 hb9d3cd8_2
362
+ - xz-gpl-tools 5.8.1 hbcc6ac9_2
363
+ - xz-tools 5.8.1 hb9d3cd8_2
364
+ license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later
365
+ purls: []
366
+ size: 23987
367
+ timestamp: 1749230104359
368
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.1-hbcc6ac9_2.conda
369
+ sha256: 840838dca829ec53f1160f3fca6dbfc43f2388b85f15d3e867e69109b168b87b
370
+ md5: bf627c16aa26231720af037a2709ab09
371
+ depends:
372
+ - __glibc >=2.17,<3.0.a0
373
+ - libgcc >=13
374
+ - liblzma 5.8.1 hb9d3cd8_2
375
+ constrains:
376
+ - xz 5.8.1.*
377
+ license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later
378
+ purls: []
379
+ size: 33911
380
+ timestamp: 1749230090353
381
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.1-hb9d3cd8_2.conda
382
+ sha256: 58034f3fca491075c14e61568ad8b25de00cb3ae479de3e69be6d7ee5d3ace28
383
+ md5: 1bad2995c8f1c8075c6c331bf96e46fb
384
+ depends:
385
+ - __glibc >=2.17,<3.0.a0
386
+ - libgcc >=13
387
+ - liblzma 5.8.1 hb9d3cd8_2
388
+ constrains:
389
+ - xz 5.8.1.*
390
+ license: 0BSD AND LGPL-2.1-or-later
391
+ purls: []
392
+ size: 96433
393
+ timestamp: 1749230076687
394
+ - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda
395
+ sha256: a4166e3d8ff4e35932510aaff7aa90772f84b4d07e9f6f83c614cba7ceefe0eb
396
+ md5: 6432cb5d4ac0046c3ac0a8a0f95842f9
397
+ depends:
398
+ - __glibc >=2.17,<3.0.a0
399
+ - libgcc >=13
400
+ - libstdcxx >=13
401
+ - libzlib >=1.3.1,<2.0a0
402
+ license: BSD-3-Clause
403
+ license_family: BSD
404
+ purls: []
405
+ size: 567578
406
+ timestamp: 1742433379869
@@ -0,0 +1,32 @@
1
+ [build-system]
2
+ requires = ["maturin>=1.0,<2.0"]
3
+ build-backend = "maturin"
4
+
5
+ [tool.maturin]
6
+ python-source = "python"
7
+ module-name = "lp1379"
8
+ bindings = "pyo3"
9
+
10
+ [project]
11
+ description = "A common framework to analyse multi-modal single-cell data."
12
+ dynamic = ["version"]
13
+ name = "lp1379"
14
+ authors = [
15
+ {name = "Ward Deboutte", email = "w@rddeboutte.com"},
16
+ ]
17
+ readme = "README.md"
18
+ requires-python = "> 3.10"
19
+
20
+ [project.urls]
21
+ Homepage = "https://github.com/WardDeb/listening_post_1379"
22
+ Repository = "https://github.com/WardDeb/listening_post_1379"
23
+ [tool.ruff]
24
+ exclude = [
25
+ "docs",
26
+ "tests"
27
+ ]
28
+ [tool.pixi.workspace]
29
+ channels = ["conda-forge", "bioconda"]
30
+ platforms = ["linux-64"]
31
+ [tool.pixi.pypi-dependencies]
32
+ lp1379 = { path = ".", editable = true }
File without changes
@@ -0,0 +1,48 @@
1
+ use notify::{Config, RecommendedWatcher, RecursiveMode, Watcher};
2
+ use pyo3::prelude::*;
3
+ use pyo3::types::{PyDict};
4
+ use std::{path::Path, time::Duration};
5
+
6
+ #[pyfunction]
7
+ fn rswatcher(py: Python<'_>, path: String, callback: Py<PyAny>) -> PyResult<()> {
8
+ let (tx, rx) = std::sync::mpsc::channel();
9
+ let mut watcher: Box<dyn Watcher> = Box::new(RecommendedWatcher::new(tx, Config::default()).unwrap());
10
+
11
+ // watch some stuff
12
+ watcher
13
+ .watch(Path::new(&path), RecursiveMode::Recursive)
14
+ .unwrap();
15
+
16
+ loop {
17
+ py.check_signals()?;
18
+
19
+ match rx.recv_timeout(Duration::from_millis(100)) {
20
+ Ok(Ok(event)) => {
21
+ let dict = PyDict::new(py);
22
+ dict.set_item("kind", format!("{:?}", event.kind))?;
23
+ dict.set_item("paths",
24
+ event.paths.iter()
25
+ .map(|p| p.display().to_string())
26
+ .collect::<Vec<String>>()
27
+ )?;
28
+ callback.call1(py, (dict,))?;
29
+ }
30
+ Ok(Err(e)) => {
31
+ println!("watch error: {:?}", e);
32
+ }
33
+ Err(std::sync::mpsc::RecvTimeoutError::Timeout) => {
34
+ continue;
35
+ }
36
+ Err(std::sync::mpsc::RecvTimeoutError::Disconnected) => {
37
+ break;
38
+ }
39
+ }
40
+ }
41
+ Ok(())
42
+ }
43
+
44
+ #[pymodule]
45
+ fn lp1379(_py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> {
46
+ m.add_function(wrap_pyfunction!(rswatcher, m)?)?;
47
+ Ok(())
48
+ }