diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f5c3830..cb49412 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -87,3 +87,23 @@ jobs: body_path: release-notes.md generate_release_notes: true files: dist/* + + - name: Verify uploaded package (real install + import) + # Defends against silent failures where PyPI accepts the upload + # but the package isn't actually usable (renamed module, missing + # __init__, broken native binding, ABI mismatch, etc.). + # Mirrors CMF v0.1.7's step — see devcontainer reports/11. + # DCEBE's first release will exercise this; the import alone + # proves the wheel installs and the C++ binding loads. A + # representative `estimate_bat(...)` call can be added once the + # public API is finalised in the port. + run: | + # Brief delay so PyPI's CDN settles the new version. + sleep 30 + pip install --no-cache-dir --index-url https://pypi.org/simple/ dcebe + python -c " + import dcebe + from importlib.metadata import version + assert hasattr(dcebe, 'estimate_bat'), 'estimate_bat missing from public API' + print(f'dcebe {version(\"dcebe\")} verify OK') + "