Contributing#
This project is hosted on 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.
Code#
SQL and Python are covered by unittests with Docker.
1 2 3 |
|
- 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
andgit 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.4qgis_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 |
|
Documentation#
The documentation is using MkDocs with Material :
1 2 |
|
- Processing algorithms documentation can be generated with:
1 |
|
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()
}