Skip to content

base.py suggests nonexistent poetry groups; AUTO_PRIORITY's benchmark harness is absent from the repo; assorted dead code and stale paths #311

Description

@Ramdam17

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions