QGIS Python Plugin by Andrii Liekariev - This plugin rotates polygons so that they become parallel to their nearest lines
make build
make run
make install
make test
Performance smoke tests are skipped by default. Run them with make test-perf to catch order-of-magnitude regressions in the per-feature pipeline.
These instructions are specific to PyCharm.
uv Python interpreter. uv sync
make install-dev
127.0.0.153100<absolute/path/to/repo>=/pptl (replace the left side with your local clone’s absolute path)tests/test_main_functionality.py:
# pydevd_pycharm.settrace("host.docker.internal", port=53100, stdoutToServer=True, stderrToServer=True)
import pydevd_pycharm to tests/test_main_functionality.py.pydevd-pycharm and pydevd into the Python interpreter bundled with QGIS. On macOS:
/Applications/QGIS.app/Contents/MacOS/bin/python3 -m pip install pydevd-pycharm pydevd
On Linux/Windows, invoke pip from the QGIS-bundled Python (e.g., the python3 shipped under the QGIS install directory).
PolygonsParallelToLine/src/pptl.py:
# pydevd_pycharm.settrace("127.0.0.1", port=53100, stdoutToServer=True, stderrToServer=True)
import pydevd_pycharm to PolygonsParallelToLine/src/pptl.py.QGIS_PLUGINPATH<absolute/path/to/repo> (the absolute path to your local clone of this repository)CHANGELOG.md’s ## [Unreleased] section has the entries you want shipped, then on main with a clean working tree run:
make tag VERSION=X.Y.Z
This rewrites ## [Unreleased] to ## [X.Y.Z] - YYYY-MM-DD, inserts a fresh empty ## [Unreleased] above it, commits, tags, and pushes both to origin atomically. qgis-plugin-ci requires a 3-part MAJOR.MINOR.PATCH version — ## [1.2] would be silently ignored and the published changelog would be empty.
Release workflow (.github/workflows/release.yaml) runs the tests, then publishes to plugins.qgis.org and creates a GitHub Release with the .zip attached.Required GitHub Secrets (one-time setup, repo Settings → Secrets and variables → Actions):
OSGEO_USERNAME — your plugins.qgis.org account usernameOSGEO_PASSWORD — your plugins.qgis.org account password(GITHUB_TOKEN is provided automatically by Actions.)
For a staged/experimental release, use a 3-part pre-release tag suffix (e.g. 1.2.0-rc1). The portal will list it as experimental. A 2-part form like 1.2-rc1 is not detected as a pre-release by qgis-plugin-ci and will be published as stable.
The project page (_config.yml) is served by GitHub Pages with the jekyll-theme-midnight theme. To preview the site or trial other themes locally:
github-pages gem pins Jekyll 3.9 / Liquid 4.0.3, which calls String#tainted? — removed in Ruby 3.2 — so newer Rubies will not work.
brew install ruby@3.1
echo 'export PATH="/opt/homebrew/opt/ruby@3.1/bin:$PATH"' >> ~/.zshrc
exec zsh
bundle install
bundle exec jekyll serve
The site is served at http://127.0.0.1:4000.
theme: in _config.yml, and restart — Jekyll watches content but not config. The Gemfile already pulls in every GitHub-supported theme (architect, cayman, dinky, hacker, leap-day, merlot, midnight, minimal, modernist, primer, slate, tactile, time-machine).The Gemfile also lists several stdlib gems (csv, bigdecimal, base64, logger, mutex_m, ostruct, drb, webrick) that were promoted out of Ruby’s default gem set in 3.0–3.4 and are still required by Jekyll 3.9 / its dependencies.