sstv 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,106 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags: ["v*"]
6
+
7
+ jobs:
8
+ check-version:
9
+ name: Check tag matches package version
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - uses: actions/checkout@v4
13
+ - name: Compare tag with Cargo.toml version
14
+ run: |
15
+ version="$(grep -m1 '^version' Cargo.toml | cut -d'"' -f2)"
16
+ if [ "v${version}" != "${GITHUB_REF_NAME}" ]; then
17
+ echo "Tag ${GITHUB_REF_NAME} does not match Cargo.toml version ${version}" >&2
18
+ exit 1
19
+ fi
20
+
21
+ build:
22
+ name: Build wheel (${{ matrix.platform.artifact }})
23
+ needs: check-version
24
+ runs-on: ${{ matrix.platform.runner }}
25
+ strategy:
26
+ matrix:
27
+ platform:
28
+ - { runner: ubuntu-latest, target: x86_64, artifact: linux-x86_64 }
29
+ - { runner: ubuntu-24.04-arm, target: aarch64, artifact: linux-aarch64 }
30
+ - { runner: macos-15-intel, target: x86_64, artifact: macos-x86_64 }
31
+ - { runner: macos-latest, target: aarch64, artifact: macos-aarch64 }
32
+ - { runner: windows-latest, target: x64, artifact: windows-x64 }
33
+ steps:
34
+ - uses: actions/checkout@v4
35
+ - uses: PyO3/maturin-action@v1
36
+ with:
37
+ target: ${{ matrix.platform.target }}
38
+ args: --release --out dist
39
+ manylinux: auto
40
+ - uses: actions/upload-artifact@v4
41
+ with:
42
+ name: wheel-${{ matrix.platform.artifact }}
43
+ path: dist
44
+
45
+ sdist:
46
+ name: Build sdist
47
+ needs: check-version
48
+ runs-on: ubuntu-latest
49
+ steps:
50
+ - uses: actions/checkout@v4
51
+ - uses: PyO3/maturin-action@v1
52
+ with:
53
+ command: sdist
54
+ args: --out dist
55
+ - uses: actions/upload-artifact@v4
56
+ with:
57
+ name: sdist
58
+ path: dist
59
+
60
+ test:
61
+ name: Test (${{ matrix.platform.artifact }}, ${{ matrix.python-version }})
62
+ needs: build
63
+ runs-on: ${{ matrix.platform.runner }}
64
+ strategy:
65
+ fail-fast: false
66
+ matrix:
67
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
68
+ platform:
69
+ - { runner: ubuntu-latest, artifact: linux-x86_64 }
70
+ - { runner: ubuntu-24.04-arm, artifact: linux-aarch64 }
71
+ - { runner: macos-15-intel, artifact: macos-x86_64 }
72
+ - { runner: macos-latest, artifact: macos-aarch64 }
73
+ - { runner: windows-latest, artifact: windows-x64 }
74
+ steps:
75
+ - uses: actions/checkout@v4
76
+ - uses: actions/setup-python@v5
77
+ with:
78
+ python-version: ${{ matrix.python-version }}
79
+ - uses: actions/download-artifact@v4
80
+ with:
81
+ name: wheel-${{ matrix.platform.artifact }}
82
+ path: dist
83
+ - name: Install the built wheel and test dependencies
84
+ shell: bash
85
+ run: |
86
+ python -m pip install dist/*.whl
87
+ python -m pip install pytest PySSTV lameenc
88
+ - name: Run the test suite against the installed wheel
89
+ shell: bash
90
+ run: python -m pytest tests
91
+
92
+ publish:
93
+ name: Publish to PyPI
94
+ needs: [test, sdist]
95
+ runs-on: ubuntu-latest
96
+ environment: pypi
97
+ permissions:
98
+ id-token: write
99
+ steps:
100
+ - uses: actions/download-artifact@v4
101
+ with:
102
+ path: dist
103
+ merge-multiple: true
104
+ - uses: pypa/gh-action-pypi-publish@release/v1
105
+ with:
106
+ packages-dir: dist
sstv-0.1.0/.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ /target
2
+ /dist
3
+ /.venv
4
+ __pycache__/
5
+ *.so
6
+ *.pyd
7
+ .pytest_cache/
@@ -0,0 +1,48 @@
1
+ default_install_hook_types: [commit-msg, pre-commit]
2
+ default_stages: [pre-commit, pre-merge-commit]
3
+ minimum_pre_commit_version: 3.2.0
4
+ repos:
5
+ - repo: https://github.com/pre-commit/pre-commit-hooks
6
+ rev: v6.0.0
7
+ hooks:
8
+ - id: check-added-large-files
9
+ - id: check-ast
10
+ - id: check-builtin-literals
11
+ - id: check-case-conflict
12
+ - id: check-executables-have-shebangs
13
+ - id: check-json
14
+ - id: check-merge-conflict
15
+ - id: check-shebang-scripts-are-executable
16
+ - id: check-symlinks
17
+ - id: check-toml
18
+ - id: check-vcs-permalinks
19
+ - id: check-xml
20
+ - id: check-yaml
21
+ - id: debug-statements
22
+ - id: destroyed-symlinks
23
+
24
+ - repo: https://github.com/astral-sh/ruff-pre-commit
25
+ rev: v0.15.5
26
+ hooks:
27
+ - id: ruff-format
28
+ name: Run Formatter
29
+ - id: ruff
30
+ name: Run Linter
31
+ args: [--fix]
32
+
33
+ - repo: https://github.com/astral-sh/ty-pre-commit
34
+ rev: v0.0.80
35
+ hooks:
36
+ - id: ty
37
+ name: Run Type Checker
38
+
39
+ - repo: local
40
+ hooks:
41
+ - id: pytest
42
+ name: Run Unit Tests
43
+ stages: [pre-commit]
44
+ types: [python]
45
+ entry: ./.venv/bin/pytest
46
+ language: system
47
+ pass_filenames: false
48
+ always_run: true
sstv-0.1.0/Cargo.lock ADDED
@@ -0,0 +1,421 @@
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.1"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
10
+
11
+ [[package]]
12
+ name = "autotools"
13
+ version = "0.2.7"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "ef941527c41b0fc0dd48511a8154cd5fc7e29200a0ff8b7203c5d777dbc795cf"
16
+ dependencies = [
17
+ "cc",
18
+ ]
19
+
20
+ [[package]]
21
+ name = "cc"
22
+ version = "1.4.5"
23
+ source = "registry+https://github.com/rust-lang/crates.io-index"
24
+ checksum = "005ec2760ca554fae18df7a11195552ec576cd665632a881bc011d5bb2fd4d80"
25
+ dependencies = [
26
+ "find-msvc-tools",
27
+ "shlex",
28
+ ]
29
+
30
+ [[package]]
31
+ name = "find-msvc-tools"
32
+ version = "0.1.12"
33
+ source = "registry+https://github.com/rust-lang/crates.io-index"
34
+ checksum = "3e0f1c7c3a72c66fd80abe965175f7523475c0489a87d3ff9d6e8c87d87a9d2d"
35
+
36
+ [[package]]
37
+ name = "heck"
38
+ version = "0.5.0"
39
+ source = "registry+https://github.com/rust-lang/crates.io-index"
40
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
41
+
42
+ [[package]]
43
+ name = "hound"
44
+ version = "3.5.1"
45
+ source = "registry+https://github.com/rust-lang/crates.io-index"
46
+ checksum = "62adaabb884c94955b19907d60019f4e145d091c75345379e70d1ee696f7854f"
47
+
48
+ [[package]]
49
+ name = "indoc"
50
+ version = "2.0.7"
51
+ source = "registry+https://github.com/rust-lang/crates.io-index"
52
+ checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
53
+ dependencies = [
54
+ "rustversion",
55
+ ]
56
+
57
+ [[package]]
58
+ name = "libc"
59
+ version = "0.2.189"
60
+ source = "registry+https://github.com/rust-lang/crates.io-index"
61
+ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
62
+
63
+ [[package]]
64
+ name = "libm"
65
+ version = "0.2.16"
66
+ source = "registry+https://github.com/rust-lang/crates.io-index"
67
+ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
68
+
69
+ [[package]]
70
+ name = "mach2"
71
+ version = "0.4.3"
72
+ source = "registry+https://github.com/rust-lang/crates.io-index"
73
+ checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44"
74
+ dependencies = [
75
+ "libc",
76
+ ]
77
+
78
+ [[package]]
79
+ name = "matrixmultiply"
80
+ version = "0.3.11"
81
+ source = "registry+https://github.com/rust-lang/crates.io-index"
82
+ checksum = "3f607c237553f086e7043417a51df26b2eb899d3caff94e6a67592ff992fedc7"
83
+ dependencies = [
84
+ "autocfg",
85
+ "rawpointer",
86
+ ]
87
+
88
+ [[package]]
89
+ name = "memoffset"
90
+ version = "0.9.1"
91
+ source = "registry+https://github.com/rust-lang/crates.io-index"
92
+ checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
93
+ dependencies = [
94
+ "autocfg",
95
+ ]
96
+
97
+ [[package]]
98
+ name = "minimp3"
99
+ version = "0.5.2"
100
+ source = "registry+https://github.com/rust-lang/crates.io-index"
101
+ checksum = "9a3ed9d34ed1a9190336a2b165bf09ac447693dfd9a61684597aaae2ee12df53"
102
+ dependencies = [
103
+ "minimp3-sys",
104
+ "slice-ring-buffer",
105
+ "thiserror",
106
+ ]
107
+
108
+ [[package]]
109
+ name = "minimp3-sys"
110
+ version = "0.3.2"
111
+ source = "registry+https://github.com/rust-lang/crates.io-index"
112
+ checksum = "e21c73734c69dc95696c9ed8926a2b393171d98b3f5f5935686a26a487ab9b90"
113
+ dependencies = [
114
+ "cc",
115
+ ]
116
+
117
+ [[package]]
118
+ name = "mp3lame-encoder"
119
+ version = "0.2.5"
120
+ source = "registry+https://github.com/rust-lang/crates.io-index"
121
+ checksum = "60cb9bdd89806317373e36ff745f264b7ed7ffc5bc5aab02dc7d1b837c16a8d4"
122
+ dependencies = [
123
+ "mp3lame-sys",
124
+ ]
125
+
126
+ [[package]]
127
+ name = "mp3lame-sys"
128
+ version = "0.1.11"
129
+ source = "registry+https://github.com/rust-lang/crates.io-index"
130
+ checksum = "54e3b1772db47828840702e5a2e05694527f731abadf9b931355d54035f019d8"
131
+ dependencies = [
132
+ "autotools",
133
+ "cc",
134
+ "libc",
135
+ ]
136
+
137
+ [[package]]
138
+ name = "ndarray"
139
+ version = "0.16.1"
140
+ source = "registry+https://github.com/rust-lang/crates.io-index"
141
+ checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841"
142
+ dependencies = [
143
+ "matrixmultiply",
144
+ "num-complex",
145
+ "num-integer",
146
+ "num-traits",
147
+ "portable-atomic",
148
+ "portable-atomic-util",
149
+ "rawpointer",
150
+ ]
151
+
152
+ [[package]]
153
+ name = "num-complex"
154
+ version = "0.4.6"
155
+ source = "registry+https://github.com/rust-lang/crates.io-index"
156
+ checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
157
+ dependencies = [
158
+ "num-traits",
159
+ ]
160
+
161
+ [[package]]
162
+ name = "num-integer"
163
+ version = "0.1.47"
164
+ source = "registry+https://github.com/rust-lang/crates.io-index"
165
+ checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b"
166
+ dependencies = [
167
+ "num-traits",
168
+ ]
169
+
170
+ [[package]]
171
+ name = "num-traits"
172
+ version = "0.2.19"
173
+ source = "registry+https://github.com/rust-lang/crates.io-index"
174
+ checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
175
+ dependencies = [
176
+ "autocfg",
177
+ ]
178
+
179
+ [[package]]
180
+ name = "numpy"
181
+ version = "0.26.0"
182
+ source = "registry+https://github.com/rust-lang/crates.io-index"
183
+ checksum = "9b2dba356160b54f5371b550575b78130a54718b4c6e46b3f33a6da74a27e78b"
184
+ dependencies = [
185
+ "libc",
186
+ "ndarray",
187
+ "num-complex",
188
+ "num-integer",
189
+ "num-traits",
190
+ "pyo3",
191
+ "pyo3-build-config",
192
+ "rustc-hash",
193
+ ]
194
+
195
+ [[package]]
196
+ name = "once_cell"
197
+ version = "1.21.4"
198
+ source = "registry+https://github.com/rust-lang/crates.io-index"
199
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
200
+
201
+ [[package]]
202
+ name = "portable-atomic"
203
+ version = "1.15.0"
204
+ source = "registry+https://github.com/rust-lang/crates.io-index"
205
+ checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
206
+
207
+ [[package]]
208
+ name = "portable-atomic-util"
209
+ version = "0.2.8"
210
+ source = "registry+https://github.com/rust-lang/crates.io-index"
211
+ checksum = "10ab3eb7f3becc3a1cbc4f2c6f20267996cfc1a6467a873763411b136a122715"
212
+ dependencies = [
213
+ "portable-atomic",
214
+ ]
215
+
216
+ [[package]]
217
+ name = "proc-macro2"
218
+ version = "1.0.107"
219
+ source = "registry+https://github.com/rust-lang/crates.io-index"
220
+ checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
221
+ dependencies = [
222
+ "unicode-ident",
223
+ ]
224
+
225
+ [[package]]
226
+ name = "pyo3"
227
+ version = "0.26.0"
228
+ source = "registry+https://github.com/rust-lang/crates.io-index"
229
+ checksum = "7ba0117f4212101ee6544044dae45abe1083d30ce7b29c4b5cbdfa2354e07383"
230
+ dependencies = [
231
+ "indoc",
232
+ "libc",
233
+ "memoffset",
234
+ "once_cell",
235
+ "portable-atomic",
236
+ "pyo3-build-config",
237
+ "pyo3-ffi",
238
+ "pyo3-macros",
239
+ "unindent",
240
+ ]
241
+
242
+ [[package]]
243
+ name = "pyo3-build-config"
244
+ version = "0.26.0"
245
+ source = "registry+https://github.com/rust-lang/crates.io-index"
246
+ checksum = "4fc6ddaf24947d12a9aa31ac65431fb1b851b8f4365426e182901eabfb87df5f"
247
+ dependencies = [
248
+ "target-lexicon",
249
+ ]
250
+
251
+ [[package]]
252
+ name = "pyo3-ffi"
253
+ version = "0.26.0"
254
+ source = "registry+https://github.com/rust-lang/crates.io-index"
255
+ checksum = "025474d3928738efb38ac36d4744a74a400c901c7596199e20e45d98eb194105"
256
+ dependencies = [
257
+ "libc",
258
+ "pyo3-build-config",
259
+ ]
260
+
261
+ [[package]]
262
+ name = "pyo3-macros"
263
+ version = "0.26.0"
264
+ source = "registry+https://github.com/rust-lang/crates.io-index"
265
+ checksum = "2e64eb489f22fe1c95911b77c44cc41e7c19f3082fc81cce90f657cdc42ffded"
266
+ dependencies = [
267
+ "proc-macro2",
268
+ "pyo3-macros-backend",
269
+ "quote",
270
+ "syn",
271
+ ]
272
+
273
+ [[package]]
274
+ name = "pyo3-macros-backend"
275
+ version = "0.26.0"
276
+ source = "registry+https://github.com/rust-lang/crates.io-index"
277
+ checksum = "100246c0ecf400b475341b8455a9213344569af29a3c841d29270e53102e0fcf"
278
+ dependencies = [
279
+ "heck",
280
+ "proc-macro2",
281
+ "pyo3-build-config",
282
+ "quote",
283
+ "syn",
284
+ ]
285
+
286
+ [[package]]
287
+ name = "quote"
288
+ version = "1.0.47"
289
+ source = "registry+https://github.com/rust-lang/crates.io-index"
290
+ checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
291
+ dependencies = [
292
+ "proc-macro2",
293
+ ]
294
+
295
+ [[package]]
296
+ name = "rawpointer"
297
+ version = "0.2.1"
298
+ source = "registry+https://github.com/rust-lang/crates.io-index"
299
+ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
300
+
301
+ [[package]]
302
+ name = "rustc-hash"
303
+ version = "2.1.3"
304
+ source = "registry+https://github.com/rust-lang/crates.io-index"
305
+ checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"
306
+
307
+ [[package]]
308
+ name = "rustversion"
309
+ version = "1.0.23"
310
+ source = "registry+https://github.com/rust-lang/crates.io-index"
311
+ checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
312
+
313
+ [[package]]
314
+ name = "shlex"
315
+ version = "2.0.1"
316
+ source = "registry+https://github.com/rust-lang/crates.io-index"
317
+ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
318
+
319
+ [[package]]
320
+ name = "slice-ring-buffer"
321
+ version = "0.3.4"
322
+ source = "registry+https://github.com/rust-lang/crates.io-index"
323
+ checksum = "84ae312bda09b2368f79f985fdb4df4a0b5cbc75546b511303972d195f8c27d6"
324
+ dependencies = [
325
+ "libc",
326
+ "mach2",
327
+ "winapi",
328
+ ]
329
+
330
+ [[package]]
331
+ name = "sstv"
332
+ version = "0.1.2"
333
+ source = "registry+https://github.com/rust-lang/crates.io-index"
334
+ checksum = "e2980fd4bb5e90d4b4faf16a9232ce42a7cf9354c1cd7b3117146ec67542a496"
335
+ dependencies = [
336
+ "hound",
337
+ "libm",
338
+ "minimp3",
339
+ "mp3lame-encoder",
340
+ ]
341
+
342
+ [[package]]
343
+ name = "sstv-py"
344
+ version = "0.1.0"
345
+ dependencies = [
346
+ "minimp3",
347
+ "numpy",
348
+ "pyo3",
349
+ "sstv",
350
+ ]
351
+
352
+ [[package]]
353
+ name = "syn"
354
+ version = "2.0.119"
355
+ source = "registry+https://github.com/rust-lang/crates.io-index"
356
+ checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
357
+ dependencies = [
358
+ "proc-macro2",
359
+ "quote",
360
+ "unicode-ident",
361
+ ]
362
+
363
+ [[package]]
364
+ name = "target-lexicon"
365
+ version = "0.13.5"
366
+ source = "registry+https://github.com/rust-lang/crates.io-index"
367
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
368
+
369
+ [[package]]
370
+ name = "thiserror"
371
+ version = "1.0.69"
372
+ source = "registry+https://github.com/rust-lang/crates.io-index"
373
+ checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
374
+ dependencies = [
375
+ "thiserror-impl",
376
+ ]
377
+
378
+ [[package]]
379
+ name = "thiserror-impl"
380
+ version = "1.0.69"
381
+ source = "registry+https://github.com/rust-lang/crates.io-index"
382
+ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
383
+ dependencies = [
384
+ "proc-macro2",
385
+ "quote",
386
+ "syn",
387
+ ]
388
+
389
+ [[package]]
390
+ name = "unicode-ident"
391
+ version = "1.0.24"
392
+ source = "registry+https://github.com/rust-lang/crates.io-index"
393
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
394
+
395
+ [[package]]
396
+ name = "unindent"
397
+ version = "0.2.4"
398
+ source = "registry+https://github.com/rust-lang/crates.io-index"
399
+ checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
400
+
401
+ [[package]]
402
+ name = "winapi"
403
+ version = "0.3.9"
404
+ source = "registry+https://github.com/rust-lang/crates.io-index"
405
+ checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
406
+ dependencies = [
407
+ "winapi-i686-pc-windows-gnu",
408
+ "winapi-x86_64-pc-windows-gnu",
409
+ ]
410
+
411
+ [[package]]
412
+ name = "winapi-i686-pc-windows-gnu"
413
+ version = "0.4.0"
414
+ source = "registry+https://github.com/rust-lang/crates.io-index"
415
+ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
416
+
417
+ [[package]]
418
+ name = "winapi-x86_64-pc-windows-gnu"
419
+ version = "0.4.0"
420
+ source = "registry+https://github.com/rust-lang/crates.io-index"
421
+ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
sstv-0.1.0/Cargo.toml ADDED
@@ -0,0 +1,20 @@
1
+ [package]
2
+ name = "sstv-py"
3
+ version = "0.1.0"
4
+ edition = "2021"
5
+ description = "Python bindings for the sstv crate: decode slow-scan television (SSTV) transmissions"
6
+ license = "MIT"
7
+ readme = "README.md"
8
+
9
+ [lib]
10
+ name = "_sstv"
11
+ crate-type = ["cdylib"]
12
+
13
+ [dependencies]
14
+ pyo3 = { version = "0.26", features = ["extension-module", "abi3-py310"] }
15
+ numpy = "0.26"
16
+ sstv = { version = "0.1.2", features = ["wav", "mp3"] }
17
+ # MP3 decoding uses minimp3 directly instead of the sstv crate's
18
+ # `Decoder::from_mp3`, so data without any MP3 frames can raise a helpful
19
+ # error instead of silently yielding no images.
20
+ minimp3 = "0.5.1"
sstv-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Tobias Klockau
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.