Versions are now the release date and a revision within that day, padded to two digits so they sort as text: 2026-08-21_01. Neither packaging system accepts that form, so it is converted at the edge rather than kept as a second version string that could drift out of step: PEP 440 forbids dashes and underscores in a release segment, and a Debian version may not contain an underscore at all. The date and revision in __init__.py are the single source; pyproject reads the converted form, and the tests check that pip and dpkg both order releases correctly. packaging/build-deb.sh builds a .deb with plain dpkg-deb. Every dependency is already in Debian, so apt resolves the lot; the package also blacklists the DVB-T driver that would otherwise claim the receiver. Deliberately not debhelper: the payload is pure Python with nothing to compile, and this way the build needs nothing installed beyond dpkg. The speech recognisers are not packaged for Debian and can only come from pip, so they are suggested rather than depended on -- transcription is off by default and reports plainly when no recogniser is present. README now documents every dependency with its package name on Debian, Fedora and Arch, how to let a user reach the receiver, and how to check the install worked. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
47 lines
1.5 KiB
TOML
47 lines
1.5 KiB
TOML
[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"]
|
|
dev = ["pytest>=7.0"]
|
|
# 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"
|
|
|
|
[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"]
|