build(nesyarena): prepare 0.1.0 PyPI release and widen CI matrix - #3
Merged
Conversation
eduardstan
added a commit
that referenced
this pull request
Jul 31, 2026
* Prepare nesyarena 0.1.0 release and extend CI matrix * no-mistakes(document): Deduplicate README docs inventory after PUBLISHING.md addition
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What Changed
nesyarenafrom0.1.0.dev0to0.1.0in bothpyproject.tomlandsrc/nesyarena/__init__.py, and added PyPI release metadata: trove classifiers (Python 3.10–3.12, Science/Research, AI) and[project.urls](Homepage, Repository, Issues).3.10 / 3.11 / 3.12matrix withfail-fast: false; 3.12 keeps the pinnedrequirements.txtinstall, while 3.10/3.11 install via extras (.[dev,oracles,reporting,learning]plusLTNtorch).docs/PUBLISHING.md(build,twine check, TestPyPI/PyPI upload, clean-venv verification), linked it from the README companion-docs line, deduplicated the READMEdocs/inventory entry, and ignoreddist//build/.Pipeline notes: build and publish path was verified —
python -m buildplustwine checkpassed for both sdist and wheel, and a clean-venv install from each importednesyarenaat0.1.0with the test subset passing (43 passed, 6 skipped) on 3.10, 3.11 and 3.12. Review flagged follow-ups left out of this change: the generatedout/artifacts still stamp0.1.0.dev0, the README has nopip install nesyarenaline yet, andbenchmarks/instances_v1.jsonis not shipped as package data soload_instances()needs a repo checkout.Risk Assessment
Testing
Exercised the release-prep intent the way a publisher and a downstream user would: built the sdist and wheel, ran twine check (both PASSED), inspected the wheel metadata to confirm version 0.1.0, MIT license expression, project URLs and the 3.10–3.12 classifiers, then installed both artifacts into fresh virtualenvs and ran the PUBLISHING.md verification import, which printed 0.1.0. To back the extended CI matrix, the core numpy-only test files were run against the installed wheel under Python 3.10, 3.11 and 3.12 (43 passed, 6 skipped on each), the workflow matrix was cross-checked against the packaging metadata and extras names, and the new 3.10/3.11 install line was resolved with a dry run to prove it is satisfiable. The TestPyPI and PyPI upload steps were deliberately not executed since they publish outward and need credentials; everything up to the upload is verified. Build leftovers (egg-info, temp venvs) were removed and the worktree is clean. One informational note: the sdist ships test files without conftest/fixtures.
Evidence: Full release verification transcript (build, twine check, metadata, clean-venv installs, 3.10/3.11/3.12 test runs, CI cross-check)
/tmp/no-mistakes-evidence/01KYTR6FHJSXXDMSXEWWYQXBZY/dist)Evidence: twine check + clean-venv install verification
Evidence: CI matrix rows exercised locally against the installed wheel
Evidence: Wheel METADATA (PyPI-facing project page fields)
Pipeline
Updates from git push no-mistakes
⏭️ **intent** - skipped
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
src/nesyarena/benchmarks.py:30- Releasing 0.1.0 to PyPI makesload_instances()unusable for installed users:DEFAULT_PATHisos.path.dirname(benchmarks.py)/../../benchmarks/instances_v1.json, which from site-packages resolves outside the installed package, and the wheel ships no data file ([tool.setuptools.packages.find] where=["src"]only, no package-data, no MANIFEST.in, no non-.py file under src/).pip install nesyarenathenfrom nesyarena.benchmarks import load_instances; load_instances()raises FileNotFoundError, while the module docstring documents that loop as the conformance entry point. Fix at the package boundary: move instances_v1.json under src/nesyarena/data/, add it as package data, and resolve via importlib.resources — or state in README/PUBLISHING.md that the frozen benchmark set requires a repo checkout..github/workflows/ci.yml:40- 3.10/3.11 legs install thelearningextra (torch>=2.4, torchvision) from default PyPI, which on Linux pulls the CUDA build plus nvidia-* wheels (~2.5 GB per leg); the 3.12 leg avoids this because requirements.txt carries--extra-index-url https://download.pytorch.org/whl/cpuand+cpupins. Two extra GB-scale downloads per CI run, with runner disk pressure. Install CPU torch first in the else branch (e.g.pip install --index-url https://download.pytorch.org/whl/cpu torch torchvisionbefore the extras install)..github/workflows/ci.yml:42-pip install -e . --no-depsruns unconditionally, but the else branch already didpip install -e ".[...]". Only the requirements.txt branch needs it; move it inside theifto drop a redundant reinstall step..github/workflows/ci.yml:40- The non-3.12 legs omit thebackendsextra (pydeeplog, deepproblog) and add only LTNtorch, so tests/test_deeplog_adapter.py and tests/test_deepproblog_standalone.pypytest.importorskipout on 3.10/3.11. The wider matrix therefore does not extend adapter-conformance coverage to those versions — green 3.10/3.11 legs are a narrower claim than the 3.12 leg. Likely deliberate (those backends are version-fragile); noting so the coverage difference is not read as full parity.README.md:24- Quickstart (and docs/OVERVIEW.md:257) still document only the source install (pip install -r requirements.txt+pip install -e .), with nopip install nesyarenapath, even though this change publishes the package. Users arriving from PyPI get no supported install line.out/RESULTS.md:1- The committed auto-generated results header still readspackage 0.1.0.dev0after the bump to 0.1.0, so the published artifact's provenance line disagrees with the released version. Regenerate viamake reportbefore tagging.pyproject.toml:37- The built sdist ships tests/test_.py but not tests/conftest.py or tests/fixtures/toy_golden.json, so the test directory inside nesyarena-0.1.0.tar.gz cannot actually run (setuptools' legacy auto-include picks up test.py only). Harmless forpip install nesyarena, but a downstream consumer building from the sdist gets a broken test tree. Fix if wanted: a MANIFEST.in, or prune tests from the sdist entirely.python -m build --outdir <evidence>/dist .— built nesyarena-0.1.0.tar.gz and nesyarena-0.1.0-py3-none-any.whltwine check dist/*— PASSED for both wheel and sdist (README renders, metadata valid)Inspected wheelMETADATA: Version 0.1.0, License-Expression MIT, Homepage/Repository/Issues URLs, 3.10/3.11/3.12 classifiers, Requires-Python >=3.10Clean venv install from wheel +python -c "import nesyarena, nesyarena.generators, nesyarena.suts; print(nesyarena.__version__)"(the exact verification command from docs/PUBLISHING.md) → 0.1.0Clean venv install from the sdist tarball + same import check → 0.1.0python -m pytest tests/test_ir.py tests/test_generators.py tests/test_engine.py tests/test_suts.py tests/test_witness_metrics.py tests/test_benchmarks.pyrun against the installed wheel under Python 3.10.20, 3.11.15 and 3.12.9 → 43 passed, 6 skipped on eachCross-checked.github/workflows/ci.ymlmatrix (3.10/3.11/3.12) against pyproject classifiers, requires-python, and extras names used by the new non-3.12 install branch (dev,oracles,reporting,learning all declared)uv pip install --dry-run --python 3.10 ".[dev,oracles,reporting,learning]" LTNtorch— the new CI 3.10/3.11 install line resolves (torch 2.13.0, problog 2.2.10, pysdd 1.0.6, ruff, pytest, …)Confirmed src/nesyarena/__init__.py __version__ matches pyproject version (0.1.0)out/RESULTS.md:1- Generated artifacts in out/ still stamp the old package version: out/RESULTS.md header reads "auto-generated, package 0.1.0.dev0" and 15 out/*.json payloads carry package_version "0.1.0.dev0". These are generated from nesyarena.version by experiments/report.py and each experiment runner, so hand-editing would falsify provenance; refreshing them requires rerunningmake all, which is behavioral validation outside this pass. Decide whether to regenerate before tagging 0.1.0 or accept that committed results record the version they were measured under.README.md:20- README Quickstart still documents only the editable dev install; it has nopip install nesyarenapath even though this change prepares a 0.1.0 PyPI release (version bump, classifiers, project URLs, docs/PUBLISHING.md). Left unchanged because the package does not appear to be published yet and documenting an unavailable install would be wrong. Add the PyPI install line to README once the upload in docs/PUBLISHING.md §3 succeeds.✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.