Developer scripts
Standalone executables live in packages/qgis-sdk-python/scripts/ next to src/: they are runnable
tools rather than test data, so they stay out of tests/, and they must stay out
of src/qgis_sdk/ because a wheel cannot ship a command that imports a display
server. Each script is covered by a module in tests/scripts/, and the harnesses
themselves are opt-in through the environment flags below. scripts/ is not an
importable package: the repository root already owns that top-level name, so
tests import a harness by module name via tests/conftest.py.
None of it is shipped. [tool.hatch.build.targets.wheel].packages packs
src/qgis_sdk (the runtime a plugin vendors) and src/qgis_sdk_tools (the
developer tools; decision-35) and nothing else, and recipe.yaml builds the Conda package by
pip-installing that same project, so neither the wheel nor the Conda artifact can
carry a harness, a generator or a test path. The one executable-shaped file inside
the package is qgis_sdk_tools/__main__.py, and it belongs there because it is the
distributed command; scripts/ would be the wrong home for it, since a user who
installed the wheel has no scripts/ directory to point at.