Skip to content

Contributing#

This project is hosted on GitHub.

Visit GitHub

Scripts#

We provide a Makefile which helps the developers to:

  • run tests,
  • build the documentation (Processing algorithms)

Translation#

The UI is available on Transifex, no development knowledge is required. Transifex 🗺

Code#

SQL and Python are covered by unittests with Docker.

Tests 🎳

1
2
3
pip install -r requirements/dev.txt
flake8
make tests
  • QuickOSM uses a Git submodule.
  • For a new clone, including the submodule, do git clone --recursive https://github.com/3liz/QuickOSM.git.
  • For an existing clone, do git submodule init and git submodule update.
  • These command will populate the qgis_plugin_tools.
  • For panels, you can find a quick diagram in the doc folder.
  • For tests, it's using the unittest framework.
  • They are launched on GitHub using Travis, you can check the Travis status on each commits and pull requests.
  • You can launch them locally:
    • make docker_test using Docker with the current LTR following the QGIS release schedule.
      • qgis_plugin_tools/docker_test.sh QuickOSM release-3_4 for QGIS 3.4
      • qgis_plugin_tools/docker_test.sh QuickOSM latest for QGIS Master or any other tags available on Docker Hub.
      • If you are using docker, do not forget to update your image from time to time docker pull qgis/qgis:latest.
    • Setting up your IDE to launch them by adding paths to your QGIS installation. I personally use PyCharm on Ubuntu.
    • Launching tests from QGIS Desktop app, in the Python console using :
1
2
from qgis.utils import plugins
plugins['QuickOSM'].run_tests()

Documentation#

Documentation 📚

The documentation is using MkDocs with Material :

1
2
pip install -r requirements/doc.txt
mkdocs serve
  • Processing algorithms documentation can be generated with:
1
make processing-doc

Architecture#

classDiagram BasePanel BaseProcessingPanel ConfigurationPanel BaseOverpassPanel OsmFilePanel MapPresetPanel QueryPanel QuickQueryPanel TableKeyValue BasePanel <|-- BaseProcessingPanel BasePanel <|-- ConfigurationPanel BaseProcessingPanel <|-- BaseOverpassPanel BaseProcessingPanel <|-- OsmFilePanel BaseProcessingPanel <|-- MapPresetPanel BaseOverpassPanel <|-- QueryPanel BaseOverpassPanel <|-- QuickQueryPanel TableKeyValue <|-- QuickQueryPanel TableKeyValue <|-- OsmFilePanel class BasePanel{ <<abstract>> +Panel +Dialog } class BaseProcessingPanel{ <<abstract>> run() _run() setup_panel() _start_process() _end_process() gather_values() } class BaseOverpassPanel{ <<abstract>> last_places nominatim() end_query() gather_values() }