File size: 2,041 Bytes
b388a7f 068059e b388a7f 068059e b388a7f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | [project]
name = "sstvae"
version = "0.1.0"
description = "Hybrid-digital SSTV: image transmission over HF via radio-autoencoder latents on OFDM"
requires-python = ">=3.10"
dependencies = [
"numpy>=1.24",
"scipy>=1.10",
"pillow>=10.0",
]
[project.optional-dependencies]
# Encode/decode/simulate from the command line. torch is needed because
# the encoder and decoder *are* the image codec -- only sstvae_simulate.py
# runs on the base deps alone.
cli = [
"torch>=2.0",
"huggingface_hub>=0.20",
]
# Live receive off a soundcard: everything in `cli`, plus PortAudio
# bindings and the waterfall/preview window.
listen = [
"torch>=2.0",
"huggingface_hub>=0.20",
"sounddevice>=0.4.6",
"matplotlib>=3.7",
]
train = [
"torch>=2.13.0",
"lpips>=0.1.4",
"datasets>=2.18",
"trackio",
]
dev = [
"pytest>=8.0",
]
# ROCm torch wheels (RX 9070 XT / gfx1201), local dev only — explicit so
# cloud/CUDA machines resolve torch from PyPI instead. Local install:
# uv pip install --reinstall --index-url https://download.pytorch.org/whl/rocm7.2 torch torchvision
# NOTE: `uv sync`/`uv add` will replace the ROCm build with plain PyPI
# torch (uv.lock pins it); re-run the install command above afterwards.
[[tool.uv.index]]
name = "pytorch-rocm"
url = "https://download.pytorch.org/whl/rocm7.2"
explicit = true
[[tool.uv.index]]
name = "rocm-nightlies"
url = "https://rocm.nightlies.amd.com/v2/gfx120X-all/"
explicit = true
[build-system]
requires = ["setuptools>=68"]
build-backend = "setuptools.build_meta"
[tool.setuptools.packages.find]
include = ["sstvae*"]
[tool.pytest.ini_options]
testpaths = ["tests"]
# The listener state-machine tests synthesize whole transmissions and run
# the real decode loop over them, so they take minutes rather than the
# ~2 s the rest of the suite does. Excluded by default to keep `pytest`
# the fast check it is documented as; run them with `pytest -m slow`.
markers = ["slow: multi-minute end-to-end tests (run with -m slow)"]
addopts = "-m 'not slow'"
|