Compare commits

..

10 Commits

Author SHA1 Message Date
ben
c043eb0377 Merge clifix fixes: lint, onnxruntime py3.10, hackrf test, poetry.lock
Some checks failed
Build Project / Build Project (3.10) (pull_request) Successful in 14m39s
Build Sphinx Docs Set / Build Docs (pull_request) Successful in 20m16s
Build Project / Build Project (3.12) (pull_request) Successful in 20m9s
Build Project / Build Project (3.11) (pull_request) Successful in 20m31s
Test with tox / Test with tox (3.11) (pull_request) Successful in 18m1s
Test with tox / Test with tox (3.12) (pull_request) Successful in 8m34s
Test with tox / Test with tox (3.10) (pull_request) Failing after 31m15s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 14:47:00 -04:00
414597e940 Merge pull request 'updated tags for new release' (#25) from clifix into main
All checks were successful
Test with tox / Test with tox (3.11) (push) Successful in 6m10s
Build Project / Build Project (3.10) (push) Successful in 15m3s
Build Sphinx Docs Set / Build Docs (push) Successful in 20m10s
Test with tox / Test with tox (3.10) (push) Successful in 20m10s
Build Project / Build Project (3.11) (push) Successful in 21m38s
Build Project / Build Project (3.12) (push) Successful in 21m40s
Test with tox / Test with tox (3.12) (push) Successful in 15m26s
Reviewed-on: #25
Reviewed-by: madrigal <madrigal@qoherent.ai>
2026-04-20 14:36:59 -04:00
ben
1fa9ab2495 Fix onnxruntime Python 3.10 incompatibility and hackrf test import failure
All checks were successful
Build Project / Build Project (3.10) (pull_request) Successful in 13m7s
Build Sphinx Docs Set / Build Docs (pull_request) Successful in 16m5s
Test with tox / Test with tox (3.10) (pull_request) Successful in 16m2s
Build Project / Build Project (3.11) (pull_request) Successful in 16m29s
Build Project / Build Project (3.12) (pull_request) Successful in 16m28s
Test with tox / Test with tox (3.11) (pull_request) Successful in 16m44s
Test with tox / Test with tox (3.12) (pull_request) Successful in 3m59s
- Restrict onnxruntime to Python >=3.11 (1.24.3+ dropped cp310 wheels)
- Fix hackrf tests to mock sys.modules instead of using patch(), which
  triggered a CDLL import of libhackrf.so.0 at module load time in CI

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 14:18:04 -04:00
ben
ab4cb0ea5a Remove poetry.toml system-site-packages workaround; regenerate lock file
Some checks failed
Build Sphinx Docs Set / Build Docs (pull_request) Successful in 7m9s
Test with tox / Test with tox (3.10) (pull_request) Failing after 8m38s
Test with tox / Test with tox (3.11) (pull_request) Failing after 9m24s
Build Project / Build Project (3.12) (pull_request) Successful in 9m40s
Build Project / Build Project (3.11) (pull_request) Successful in 9m53s
Test with tox / Test with tox (3.12) (pull_request) Failing after 3m1s
Build Project / Build Project (3.10) (pull_request) Successful in 10m17s
system-site-packages = true caused poetry install to fail in CI due to
conflicting system packages. Lock file regenerated without that constraint.
2026-04-20 13:56:18 -04:00
ben
ae07eef885 Regenerate poetry.lock to sync with pyproject.toml paramiko addition
Some checks failed
Build Sphinx Docs Set / Build Docs (pull_request) Successful in 22s
Build Project / Build Project (3.10) (pull_request) Successful in 2m54s
Test with tox / Test with tox (3.10) (pull_request) Failing after 3m24s
Build Project / Build Project (3.12) (pull_request) Successful in 4m55s
Build Project / Build Project (3.11) (pull_request) Successful in 10m10s
Test with tox / Test with tox (3.11) (pull_request) Has been cancelled
Test with tox / Test with tox (3.12) (pull_request) Has been cancelled
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-20 13:33:00 -04:00
e506d26450 Replaces the getting_started.rst placeholder with a full CLI reference
Some checks failed
Build Sphinx Docs Set / Build Docs (pull_request) Successful in 19s
Test with tox / Test with tox (3.11) (pull_request) Failing after 17s
Test with tox / Test with tox (3.12) (pull_request) Failing after 16s
Test with tox / Test with tox (3.10) (pull_request) Failing after 33s
Build Project / Build Project (3.10) (pull_request) Successful in 1m5s
Build Project / Build Project (3.12) (pull_request) Successful in 1m4s
Build Project / Build Project (3.11) (pull_request) Successful in 1m6s
covering installation, commands, YAML config patterns, and a cheat sheet.
Adds custom CSS/JS for heading colours, warning admonition styling, code
block colours, and ria command highlighting. Fixes .gitignore to exclude
docs/_build/.
2026-04-20 13:10:31 -04:00
138fdeb68b Added getting started guide 2026-04-20 13:06:54 -04:00
0642dcc2db Added paramiko to dependencies
Some checks failed
Build Sphinx Docs Set / Build Docs (pull_request) Successful in 8m50s
Test with tox / Test with tox (3.11) (pull_request) Failing after 18s
Test with tox / Test with tox (3.10) (pull_request) Failing after 8m16s
Test with tox / Test with tox (3.12) (pull_request) Failing after 16s
Build Project / Build Project (3.10) (pull_request) Successful in 9m23s
Build Project / Build Project (3.11) (pull_request) Successful in 8m52s
Build Project / Build Project (3.12) (pull_request) Successful in 8m53s
2026-04-20 11:51:57 -04:00
84a7893c8f Updated poetry.lock, linting
Some checks failed
Build Sphinx Docs Set / Build Docs (pull_request) Successful in 17s
Test with tox / Test with tox (3.12) (pull_request) Failing after 2m24s
Test with tox / Test with tox (3.11) (pull_request) Failing after 2m12s
Build Project / Build Project (3.12) (pull_request) Successful in 8m59s
Build Project / Build Project (3.10) (pull_request) Successful in 9m17s
Build Project / Build Project (3.11) (pull_request) Successful in 9m16s
Test with tox / Test with tox (3.10) (pull_request) Failing after 16m0s
2026-04-20 11:43:03 -04:00
8e542919a8 updated tags for new release
Some checks failed
Build Sphinx Docs Set / Build Docs (pull_request) Successful in 18s
Test with tox / Test with tox (3.10) (pull_request) Failing after 13m9s
Build Project / Build Project (3.11) (pull_request) Successful in 13m21s
Build Project / Build Project (3.12) (pull_request) Successful in 13m19s
Build Project / Build Project (3.10) (pull_request) Successful in 13m26s
Test with tox / Test with tox (3.11) (pull_request) Failing after 13m40s
Test with tox / Test with tox (3.12) (pull_request) Failing after 13m33s
2026-04-20 11:21:36 -04:00
11 changed files with 2773 additions and 366 deletions

1
.gitignore vendored
View File

@ -52,6 +52,7 @@ tests/sdr/
# Sphinx documentation # Sphinx documentation
docs/build/ docs/build/
docs/_build/
# Jupyter Notebook # Jupyter Notebook
.ipynb_checkpoints .ipynb_checkpoints

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,29 @@
/* Change the hex values below to customize heading colours */
.rst-content h1 { color: #2c3e50; }
.rst-content h2,
.rst-content h2 a { color: #ffffff !important; font-size: 22px !important; }
.rst-content h3,
.rst-content h3 a { color: #ffffff !important; font-size: 16px !important; }
.rst-content h3 code { font-size: inherit !important; }
.rst-content .admonition.warning {
background: #1a1a2e !important;
border-left: 4px solid #c0392b !important;
}
.rst-content .admonition.warning .admonition-title {
background: #c0392b !important;
color: #ffffff !important;
}
.rst-content .admonition.warning p {
color: #ffffff !important;
}
.rst-content h4 { color: #404040; }
.highlight * { color: #ffffff !important; }
.ria-cmd { color: #2980b9 !important; }

View File

@ -0,0 +1,8 @@
document.addEventListener('DOMContentLoaded', function () {
document.querySelectorAll('.highlight pre').forEach(function (pre) {
pre.innerHTML = pre.innerHTML.replace(
/((?:^|\n|>))(ria)(?=[ \t]|<)/g,
'$1<span class="ria-cmd">$2</span>'
);
});
});

View File

@ -14,7 +14,7 @@ sys.path.insert(0, os.path.abspath(os.path.join('..', '..')))
project = 'ria-toolkit-oss' project = 'ria-toolkit-oss'
copyright = '2025, Qoherent Inc' copyright = '2025, Qoherent Inc'
author = 'Qoherent Inc.' author = 'Qoherent Inc.'
release = '0.1.4' release = '0.1.5'
# -- General configuration --------------------------------------------------- # -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
@ -73,3 +73,6 @@ def setup(app):
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
html_theme = 'sphinx_rtd_theme' html_theme = 'sphinx_rtd_theme'
html_static_path = ['_static']
html_css_files = ['custom.css']
html_js_files = ['custom.js']

File diff suppressed because it is too large Load Diff

901
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,2 +0,0 @@
[virtualenvs.options]
system-site-packages = true

View File

@ -1,6 +1,6 @@
[project] [project]
name = "ria-toolkit-oss" name = "ria-toolkit-oss"
version = "0.1.4" version = "0.1.5"
description = "An open-source version of the RIA Toolkit, including the fundamental tools to get started developing, testing, and deploying radio intelligence applications" description = "An open-source version of the RIA Toolkit, including the fundamental tools to get started developing, testing, and deploying radio intelligence applications"
license = { text = "AGPL-3.0-only" } license = { text = "AGPL-3.0-only" }
readme = "README.md" readme = "README.md"
@ -49,7 +49,8 @@ dependencies = [
"pyzmq (>=27.1.0,<28.0.0)", "pyzmq (>=27.1.0,<28.0.0)",
"pyyaml (>=6.0.3,<7.0.0)", "pyyaml (>=6.0.3,<7.0.0)",
"click (>=8.1.0,<9.0.0)", "click (>=8.1.0,<9.0.0)",
"matplotlib (>=3.8.0,<4.0.0)" "matplotlib (>=3.8.0,<4.0.0)",
"paramiko (>=4.0.0)"
] ]
# [project.optional-dependencies] Commented out to prevent Tox tests from failing # [project.optional-dependencies] Commented out to prevent Tox tests from failing
@ -87,7 +88,7 @@ pytest = "^8.0.0"
tox = "^4.19.0" tox = "^4.19.0"
fastapi = ">=0.111,<1.0" fastapi = ">=0.111,<1.0"
uvicorn = {version = ">=0.29,<1.0", extras = ["standard"]} uvicorn = {version = ">=0.29,<1.0", extras = ["standard"]}
onnxruntime = ">=1.17,<2.0" onnxruntime = {version = ">=1.17,<2.0", python = ">=3.11"}
httpx = ">=0.27,<1.0" httpx = ">=0.27,<1.0"
[tool.poetry.group.docs.dependencies] [tool.poetry.group.docs.dependencies]
@ -123,7 +124,7 @@ ria-app = "ria_toolkit_oss.app.cli:main"
[tool.poetry.group.server.dependencies] [tool.poetry.group.server.dependencies]
fastapi = ">=0.111,<1.0" fastapi = ">=0.111,<1.0"
uvicorn = {version = ">=0.29,<1.0", extras = ["standard"]} uvicorn = {version = ">=0.29,<1.0", extras = ["standard"]}
onnxruntime = ">=1.17,<2.0" onnxruntime = {version = ">=1.17,<2.0", python = ">=3.11"}
[tool.black] [tool.black]
line-length = 119 line-length = 119

View File

@ -19,6 +19,9 @@ if TYPE_CHECKING:
import paramiko import paramiko
import zmq import zmq
import paramiko
import zmq
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
_STARTUP_WAIT_S = 2.0 # seconds to wait for remote ZMQ server to bind _STARTUP_WAIT_S = 2.0 # seconds to wait for remote ZMQ server to bind

View File

@ -62,14 +62,18 @@ class TestSetRadio:
def test_hackrf_alias(self): def test_hackrf_alias(self):
tx = RemoteTransmitter() tx = RemoteTransmitter()
mock_sdr = _make_mock_sdr() mock_sdr = _make_mock_sdr()
with patch("ria_toolkit_oss.sdr.hackrf.HackRF", return_value=mock_sdr): mock_module = MagicMock()
mock_module.HackRF = MagicMock(return_value=mock_sdr)
with patch.dict("sys.modules", {"ria_toolkit_oss.sdr.hackrf": mock_module}):
tx.set_radio("hackrf", "") tx.set_radio("hackrf", "")
assert tx._sdr is mock_sdr assert tx._sdr is mock_sdr
def test_hackrf_one_alias(self): def test_hackrf_one_alias(self):
tx = RemoteTransmitter() tx = RemoteTransmitter()
mock_sdr = _make_mock_sdr() mock_sdr = _make_mock_sdr()
with patch("ria_toolkit_oss.sdr.hackrf.HackRF", return_value=mock_sdr): mock_module = MagicMock()
mock_module.HackRF = MagicMock(return_value=mock_sdr)
with patch.dict("sys.modules", {"ria_toolkit_oss.sdr.hackrf": mock_module}):
tx.set_radio("hackrf_one", "") tx.set_radio("hackrf_one", "")
assert tx._sdr is mock_sdr assert tx._sdr is mock_sdr