Housekeeping items found while auditing hypyp/sync. Grouped since each is small.
1. Install hints name a package manager and groups that do not exist.
hypyp/sync/base.py:348 and :358:
"Install with: poetry install --with optim_numba"
"Install with: poetry install --with optim_torch"
The project is uv-native: uv.lock is committed, there is no poetry.lock and no [tool.poetry] table (pyproject.toml uses PEP 621 [project] with a setuptools backend), and CI runs uv sync. So poetry install cannot run at all. Additionally the groups optim_numba / optim_torch exist nowhere — the only [dependency-groups] are dev and benchmark. The correct incantation is uv sync --extra numba / --extra torch (extras, not groups).
Good news: the four extras advertised in hypyp/sync/README.md:255-267 (numba, torch, metal, cupy) all exist verbatim in pyproject.toml:37-42. But the root README.md:87-101 documents only shiny, numba and torch — omitting metal and cupy, the two newest backends, which makes them undiscoverable from the front door.
Stale poetry references also survive in tests/run-test-watch.sh:10 (a shipped dev script that cannot work), plus hypyp/wavelet/implementations/matlab_wavelet.py:4, hypyp/wavelet/implementations/pycwt_wavelet.py:3, hypyp/fnirs/preprocessor/implementations/cedalion_preprocessor.py:5.
2. The AUTO_PRIORITY benchmark harness is not in the repository.
The table is justified by "Mac M4 Max (131 runs) and Narval A100 (111 runs)", cited in four places (hypyp/sync/base.py:31-32, base.py:76, hypyp/sync/README.md:196, CHANGELOG.md:19). But there is no dodo.py despite benchmark = ["doit>=0.36.0"] being declared (pyproject.toml:71-72), no benchmarks/ directory, and no results file of any format. Searching all refs finds no file matching bench, dodo or realistic ever committed.
Meanwhile base.py:41-42 instructs contributors that a table change "should be a code edit (with a tests/benchmarks update)" — a path that does not exist. So AUTO_PRIORITY is currently neither reproducible nor falsifiable from the repo, and no test verifies that the backend declared optimal is in fact faster. Committing the harness (or removing the orphan benchmark group and softening the provenance claims) would resolve this.
3. Dead code in hypyp/analyses.py.
_accorr_hybrid (analyses.py:1232-1351) — zero callers. Numerically equivalent to ACCorr._compute_numpy, but note it does its own swapaxes(0,1) + nanmean internally (:1345-1350), so it is not a drop-in comparison oracle: anyone restoring it as a sanity check gets a differently-shaped result, not a numeric mismatch.
_multiply_conjugate_time (analyses.py:1128-1177) — zero callers.
Both are deprecated with removal announced for 1.0.0 (CHANGELOG.md:30), so this is mostly a note that they can go.
4. Stale absolute path in a shipped script.
scripts/run_notebooks.sh:8 hardcodes .../20260329/HyPyP, a path from a previous working copy.
5. Dead code in hypyp/sync/ccorr.py.
_compute_torch_cpu_circmean (ccorr.py:160-190) is never called from compute() — the docstring says it is "kept for comparison" with the angle-free reformulation. If it is worth keeping it belongs in the benchmark harness of item 2, not in the shipped module.
Housekeeping items found while auditing
hypyp/sync. Grouped since each is small.1. Install hints name a package manager and groups that do not exist.
hypyp/sync/base.py:348and:358:The project is uv-native:
uv.lockis committed, there is nopoetry.lockand no[tool.poetry]table (pyproject.tomluses PEP 621[project]with a setuptools backend), and CI runsuv sync. Sopoetry installcannot run at all. Additionally the groupsoptim_numba/optim_torchexist nowhere — the only[dependency-groups]aredevandbenchmark. The correct incantation isuv sync --extra numba/--extra torch(extras, not groups).Good news: the four extras advertised in
hypyp/sync/README.md:255-267(numba,torch,metal,cupy) all exist verbatim inpyproject.toml:37-42. But the rootREADME.md:87-101documents onlyshiny,numbaandtorch— omittingmetalandcupy, the two newest backends, which makes them undiscoverable from the front door.Stale poetry references also survive in
tests/run-test-watch.sh:10(a shipped dev script that cannot work), plushypyp/wavelet/implementations/matlab_wavelet.py:4,hypyp/wavelet/implementations/pycwt_wavelet.py:3,hypyp/fnirs/preprocessor/implementations/cedalion_preprocessor.py:5.2. The AUTO_PRIORITY benchmark harness is not in the repository.
The table is justified by "Mac M4 Max (131 runs) and Narval A100 (111 runs)", cited in four places (
hypyp/sync/base.py:31-32,base.py:76,hypyp/sync/README.md:196,CHANGELOG.md:19). But there is nododo.pydespitebenchmark = ["doit>=0.36.0"]being declared (pyproject.toml:71-72), nobenchmarks/directory, and no results file of any format. Searching all refs finds no file matchingbench,dodoorrealisticever committed.Meanwhile
base.py:41-42instructs contributors that a table change "should be a code edit (with a tests/benchmarks update)" — a path that does not exist. SoAUTO_PRIORITYis currently neither reproducible nor falsifiable from the repo, and no test verifies that the backend declared optimal is in fact faster. Committing the harness (or removing the orphanbenchmarkgroup and softening the provenance claims) would resolve this.3. Dead code in
hypyp/analyses.py._accorr_hybrid(analyses.py:1232-1351) — zero callers. Numerically equivalent toACCorr._compute_numpy, but note it does its ownswapaxes(0,1)+nanmeaninternally (:1345-1350), so it is not a drop-in comparison oracle: anyone restoring it as a sanity check gets a differently-shaped result, not a numeric mismatch._multiply_conjugate_time(analyses.py:1128-1177) — zero callers.Both are deprecated with removal announced for 1.0.0 (
CHANGELOG.md:30), so this is mostly a note that they can go.4. Stale absolute path in a shipped script.
scripts/run_notebooks.sh:8hardcodes.../20260329/HyPyP, a path from a previous working copy.5. Dead code in
hypyp/sync/ccorr.py._compute_torch_cpu_circmean(ccorr.py:160-190) is never called fromcompute()— the docstring says it is "kept for comparison" with the angle-free reformulation. If it is worth keeping it belongs in the benchmark harness of item 2, not in the shipped module.