Skip to content

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.