Open an issue before a substantial change.
- Python 3.14+
- uv
- Fork, clone, create a branch
uv sync- Make the change, with tests
- Run the checks
- Commit in Conventional Commits style:
feat:,fix:,docs:,test:,build:,ci:,refactor:,perf:,style:,chore: - Open a pull request
uv lock --check
uv run ruff check .
uv run ruff format --check .
uv run ty check
uv run pytest --cov=steamcleaner --cov-report=term-missing --cov-fail-under=100CI runs the first four on Linux and the tests on Linux, Windows and macOS.
tychecks the whole tree,tests/andscripts/included, for every platform (python-platform = "all").- A warning in the test run is an error (
filterwarnings = ["error"]). - Coverage is 100%, line and branch. A line that cannot be tested gets
# pragma: no coverwith the reason, and the pull request lists such lines. - A suppression names its rule and its reason:
# noqa: RULE,# ty: ignore[rule].# type: ignoreis not honored.
- Assertions go through
assertpy2(assert_that). FakePlatformAdapterfromtests/helpers.pystands in for the registry and the home directory.- A test that needs one OS is marked
skipif.
uv run flet build windows --yes
uv run python scripts/build_windows.py --skip-flet-build
uv run python scripts/prune_bundle.py build/windowsbuild_windows.pykeeps the window hidden until Python shows it. It stops ifhide_window_on_startfrom[tool.flet.windows.app]did not reach the generated sources.prune_bundle.pyremoves debug builds of extension modules, Tcl/Tk, SQLite and the standard-library modules it lists. A module goes on that list only after the bundled app started, scanned and ran a dry-run clean without it.