Skip to content

Remove unused runtime dependencies (numba, llvmlite, cmaes) and demote cyclopts #12

Description

@Panadestein

Problem

Three packages are declared as hard runtime dependencies but are imported
nowhere in src/:

Package Imports in src/ Notes
numba 0 heavy; drags in llvmlite, constrains the supported NumPy range
llvmlite 0 only present as a numba companion
cmaes 0 a CMA-ES optimiser; unrelated to tensor compression
cyclopts 0 used only by benches/primitives/leonardo/bench_mpo_mpo.py

Verify with:

grep -rnE "import (numba|cmaes|cyclopts|llvmlite)|from (numba|cmaes|cyclopts|llvmlite)" src/
# no matches

The cost is paid by every downstream user: a much larger install, a slower
resolve, a bigger vulnerability surface, and — worst of all — numba pins the
compatible NumPy range, so it can block users from upgrading NumPy for reasons
that have nothing to do with this library.

Proposed fix

  • Remove numba, llvmlite and cmaes from [project.dependencies] entirely.
  • Move cyclopts out of the runtime dependencies into a bench dependency
    group, since only the benchmark scripts use it.
  • Regenerate uv.lock.

After this change the runtime dependency set should be just: numpy,
opt_einsum, quimb (and structlog until #1 lands, which removes it too).

Acceptance criteria

  • numba, llvmlite, cmaes removed from [project.dependencies].
  • cyclopts available to the benchmarks via a dependency group, not at runtime.
  • uv.lock regenerated.
  • Test suite still passes and the benchmark script still runs.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    dependenciesPull requests that update a dependency file

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions