Cube is a Python toolkit for collecting, storing, and visualising Rubik's Cube solve history. It reads raw cstimer JSON exports, writes a parquet backing store for fast analytics, computes summary statistics, and renders exploratory matplotlib plots. Entries from the json files are deduplicated.
uv sync --dev # create the virtualenv and install runtime + pytest
uv run cube add ~/cube/*.txt
uv run cube analyze # summary + latest 15 solves
uv run cube plot
uv run cube plot --axis=solve
uv run cube infoThe CLI accepts any number of export files and consolidates them into
a single parquet file stored under your user data directory (per
platformdirs). Analysis prints a readable summary plus the latest 15
solves with Ao5/Ao12 values, and plots are rendered interactively
(choose --axis=solve for stepped x-axis by solve order) with
Ao5/Ao12 overlays. Run cube info at any time to print the resolved
dataset path.
uv add <package>manages dependencies inpyproject.tomluv run pytestexecutes the automated test suite- install prek for pre-commit hooks
The cstimer import is based on scramble-history, which does most of what I wanted (and more), but did not seem to have a parquet file backend for a single storage.