Building & Releasing
Development setup
Yaas uses uv for environment and dependency
management. A .venv lives at the repo root.
# Run from source without installing
python -m yaas
# or, once installed in the environment
yaas
Testing
The tests use pytest, and need no network access nor display:
uv pip install --group dev
pytest
YAAS_SLOW_TESTS=1 pytest also runs a real OpenUnmix separation, which
downloads its model on first use.
Linting
CI runs flake8, then the tests, the same way you can locally:
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
Cutting a release
Versioning is managed by bumpver,
which keeps pyproject.toml, src/yaas/__init__.py, README.md, and
inno_setup_script.iss in sync.
git commit
bumpver update --patch # or --minor / --major
Pushing the version tag that bumpver creates triggers the release
workflows on GitHub Actions:
publish.ymlbuilds the sdist/wheel and publishes them to PyPI using Trusted Publishing (no API token needed).release.ymlbuilds installers for Windows, macOS, and Linux and attaches them to the corresponding GitHub Release:- Windows: PyInstaller (
yaas.spec) + Inno Setup (inno_setup_script.iss) →yaas_installer.exe. - macOS: PyInstaller +
hdiutil→yaas_installer.dmg(unsigned). - Linux: PyInstaller +
appimagetool→yaas-x86_64.AppImage(best-effort — this job is allowed to fail without blocking the rest of the release).
- Windows: PyInstaller (
Building installers locally
pyinstaller .\yaas.spec
& 'C:\Program Files (x86)\Inno Setup 6\ISCC.exe' .\inno_setup_script.iss
pyinstaller yaas.spec
hdiutil create -volname Yaas -srcfolder dist/yaas.app -ov -format UDZO yaas_installer.dmg
pyinstaller yaas.spec
# Package dist/yaas/ into an AppDir, then:
./appimagetool-x86_64.AppImage AppDir yaas-x86_64.AppImage