live, rebuilt hourly

Soup in numbers

The four figures below are fetched from the service that produces each one, hourly. The two tables are transcribed from upstream's own release notes and say so where they sit. Anything rounded is marked as rounded, anything we cannot fetch says unavailable rather than showing you a remembered value, and the numbers we refuse to publish at all are listed at the bottom rather than left out quietly.

Downloads per day, last 180 days

2026-03-27downloads per day · 7-day mean over the daily line · hairlines at 2,040 and 1,020· peak on 2026-05-132026-09-23

This is not the all-time total above it. PyPI keeps roughly 180 days of daily history and no more, so this window holds 87,939 downloads and can fall as old days drop out of it. Both counts include mirrors and continuous-integration traffic, which is normal for PyPI and worth knowing before reading a single day as demand.

Who writes it

The contributor count above says how many people have ever landed a commit. This says something narrower and more useful: of the pull requests merged into each release, how many came from somebody other than the maintainer. These four rows are transcribed from upstream's own release notes, because no API reports it.

ReleaseFrom outsidePeopleNote
v0.75.1none0A security backport onto v0.75.0, written by the maintainer alone
v0.75.060 of 6022Every pull request came from outside
v0.74.0116 of 12025The maintainer's own four were CI and guard work
v0.73.324 of 248Five of them appearing for the first time

Scroll the table sideways to read the note on each row.

Release cadence

The eight most recent, newest first, straight from the GitHub releases API. Each one links to its notes.

What ships in it

Counted in the source of the current release rather than on the development branch, which runs ahead of anything you can install. Transcribed here at each release, not fetched.

ready-made recipes, all offline
167
training tasks in one schema
23
test files
500
current release
v0.75.1

Apache-2.0 since v0.29.0. Every performance number this project publishes is measured rather than estimated, and the working records are public including the runs that failed: see the preprint and the measurement records.

Where these come from, and what is not here

Sources

  • Downloads, all time: pepy.tech. With a pepy API key configured this is the exact total; without one it falls back to the badge endpoint the README renders, which shields rounds to two significant figures, and the card then shows a + rather than pretending a rounded figure is precise.
  • Downloads, daily: the pypistats overall feed, which keeps about 180 days.
  • Stars, forks, contributors, releases: the GitHub REST API, unauthenticated.
  • Recipes, tasks, test files, authorship: counted in the source at the released tag, or read from that release's own notes, and transcribed here.

Deliberately absent

  • User counts. Soup sends nothing about your runs unless you opt in, and as shipped it sends nothing even then. We cannot count users, so we do not estimate them.
  • Revenue, pricing and funding status. Soup is Apache-2.0 and free. There is nothing to report here and this page will not invent a funnel.
  • A test total. The file count is reproducible at a tag; the total is not published at one, so only the file count appears.
  • Anything a static page cannot keep honest, which is why no Product Hunt rank, subscriber count or channel membership appears anywhere on this site.

Every number here can be re-derived by a stranger

That is the only claim this page makes for itself, and it is the same standard the project holds its measurements to: the benchmark records are published with the runs that failed still in them. The fastest way to check any of it is to install the thing and look.

pip install "soup-cli[train]"