-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
102 lines (92 loc) · 3.2 KB
/
pyproject.toml
File metadata and controls
102 lines (92 loc) · 3.2 KB
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
[build-system]
# setuptools 81 removed pkg_resources, which several of our runtime
# dependencies still import. Pin below 81 until they catch up.
requires = ["setuptools>=61.0,<81"]
build-backend = "setuptools.build_meta"
[project]
name = "substation"
dynamic = ["version"]
description = "A versatile SDR band scanner for RTL-SDR, HackRF, AirSpy, and SoapySDR devices"
authors = [
{ name = "Simon Holliday" }
]
license = { text = "AGPL-3.0" }
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
"numpy>=1.24.0",
"pydantic>=2.0",
# pyrtlsdr 0.4.0+ requires the rtlsdr_set_dithering symbol from the
# rtl-sdr-blog fork. Pinning below 0.4.0 keeps the package working
# against distro-packaged librtlsdr too — see INSTALL.md for
# the fork build instructions.
"pyrtlsdr>=0.3.0,<0.4.0",
"python_hackrf",
"noisereduce>=3.0.3",
"PyYAML>=6.0",
"scipy>=1.10.0",
"soundfile>=0.12.1",
"mutagen>=1.45",
# SoapySDR (for AirSpy and other devices) is a system package — install
# via apt (python3-soapysdr) and use --system-site-packages on the venv.
# See INSTALL.md section 4.
]
[project.optional-dependencies]
# Development tools — install with `pip install -e ".[dev]"`.
# pytest is used for the test suite; mypy for the type-check pass
# described in AGENT-INSTRUCTIONS.md §4. Pinned below 1.18 because
# newer releases ship a C-accelerated backend (librt) that segfaults
# on aarch64 (Raspberry Pi) at time of writing.
dev = [
"pytest>=7.0",
"mypy>=1.0,<1.18",
]
# OSC event forwarding — install with `pip install -e ".[osc]"`.
# Enables substation.osc_sender.OscEventSender to bridge scanner
# callbacks onto UDP OSC messages (e.g. Subsequence sequencer on
# port 9000, Subsample sampler on port 9002). See README section
# "OSC event forwarding" for the wire format and address table.
osc = [
"python-osc>=1.8",
]
# Supervisor dashboard — install with `pip install -e ".[supervisor]"`.
# Pulls in the supervisor package which provides the WebSocket
# broadcast server for the real-time dashboard.
supervisor = [
# SSH while repo is private; switch to git+https:// when public.
"supervisor @ git+ssh://git@github.com/simonholliday/supervisor.git",
]
[project.scripts]
substation = "substation.cli:main"
[tool.setuptools.packages.find]
include = ["substation*"]
[tool.setuptools.dynamic]
version = {attr = "substation.__version__"}
[tool.pytest.ini_options]
testpaths = ["tests"]
pythonpath = ["tests"]
filterwarnings = ["ignore::DeprecationWarning"]
[tool.mypy]
# Keep mypy strict on our own code. We only add per-module overrides
# below to silence "library stubs not installed" errors for third-party
# packages that don't ship PEP 561 stubs — scipy, SoapySDR, rtlsdr,
# noisereduce, and soundfile. Using per-module overrides instead of a
# global `ignore_missing_imports = true` keeps accidental typos in local
# imports visible as errors.
python_version = "3.10"
[[tool.mypy.overrides]]
module = [
"scipy",
"scipy.fft",
"scipy.ndimage",
"scipy.signal",
"SoapySDR",
"rtlsdr",
"mutagen",
"noisereduce",
"soundfile",
"supervisor",
"supervisor.app",
"supervisor.app.substation",
]
ignore_missing_imports = true