Repository navigation
The explainer library grew from 62 to 114 pages, each one tied to a real audit with its code shipped as explainers/code/<slug>.py, and the repository's own tooling was swept five times: 213 issues closed since v2.3.0 (286 commits, 69 merged pull requests, 16 contributors), almost all of them checks, reports and guards around the results, the docs and the contributor records. The Python API, the CLI, the MCP server and the web profiler are unchanged apart from the version number.
Highlights
- Weekly reports that keep their own tracking issue. Dead external links (with a Wayback lookup for pages that answer scripts with 403, moved-link detection and
--fix-moved --rebuild), traction figures against GitHub, and who has merged since the contributors snapshot. A failedghcall is now an error annotation, and everyghcall has a timeout. - Contributor records that check themselves.
scripts/check_contributors.pycompares PR counts, first-merge dates, commit counts at the snapshot, the area table and git authors (co-author trailers included) with GitHub, and--stuband--fix --commitswrite most of an entry.scripts/draft_metrics_row.pydrafts the weekly METRICS row, figures and sweep note. - Results provenance.
results/PROVENANCE.jsonrecords what producedresults/,diff_results.pyreads it, and a test fails when a benchmark fit stops atmax_iteranywhere outside the documented cases. - Faster, steadier tests.
make test-fastruns in parallel (about 35 s instead of 95 s) when pytest-xdist is installed,make coverage-fastreports 97% in about a minute, and the timing-sensitive tests scale with the machine load. - Environment and build checks.
make doctorfinds modules that shadow the standard library, the generated-files check has timeouts, and the pre-commit hooks cover every checkmake lintruns.
Upgrade notes
make checkrunsmake doctorfirst and stops if a package in site-packages,PYTHONPATHor the working directory shadows a standard library module;make check DOCTOR=warnprints the report and goes on.make test-fastno longer runstests/browser(usemake test-browser), andpytest-xdistis in thetestextra.- The contributor check exceptions moved from the script into
scripts/contributors-exceptions.json.
Contributors since v2.3.0
@Aaqibhafeezkhan, @AnayDhawan, @Asmit-08, @ExoticA1A, @Gauravbhati2099, @bfs2021, @d4rshnn, @dxnnystyles, @isaaclimmy, @kavadiyajiya-ux, @minutechreview, @mohakmanjrekar, @prami25r, @propcgamer20-png, @sammist2, @yakew7
Install
pip install git+https://github.com/yakew7/Fair-Code.git@v2.4.0
pip install "faircode[mcp] @ git+https://github.com/yakew7/Fair-Code.git@v2.4.0"PyPI (pip install faircode) has not been republished for this release.
Full list: CHANGELOG.md. Changes after this release are collected under "Unreleased" until the next one.