[build-system] requires = ["setuptools>=64"] build-backend = "setuptools.build_meta" [project] name = "bandsaunter" dynamic = ["version"] description = "Signal scanner, recorder and identifier for RTL-SDR receivers" readme = "README.md" requires-python = ">=3.10" license = {text = "MIT"} dependencies = [ "numpy>=1.22", "scipy>=1.8", "rich>=12.0", "PyYAML>=5.4", ] [project.optional-dependencies] plots = ["matplotlib>=3.5"] # pyte is a terminal emulator, used by the resize tests to read back what # a real terminal would show. Those tests skip without it. dev = ["pytest>=7.0", "pyte>=0.8"] # Speech recognition for --transcribe. Optional: transcription is off by # default, and the scan says so plainly when no recogniser is installed. transcribe = ["faster-whisper>=1.0"] transcribe-small = ["vosk>=0.3"] # System packages, which pip cannot install. Recorded here so packaging does # not have to rediscover them: # Depends: librtlsdr0 -- the dongle is unreachable without it # Recommends: espeak-ng -- clearer spoken timestamps; a built-in # synthesiser is used when absent [project.scripts] bandsaunter = "bandsaunter.cli:main" saunterbrowse = "bandsaunter.browse:main" [tool.setuptools.dynamic] # The displayed version (2026-08-21_01) is not valid PEP 440, so packaging # tools are given the converted form. One source of truth, converted at the # edge, rather than two version strings that can drift apart. version = {attr = "bandsaunter.pep440_version"} [tool.setuptools.packages.find] include = ["bandsaunter*"] [tool.pytest.ini_options] testpaths = ["tests"] filterwarnings = ["ignore::DeprecationWarning"]