Metadata-Version: 2.4
Name: qgis-deployment-toolbelt
Version: 0.40.0
Summary: QGIS deployment toolbelt is a CLI (Command Line Interface) to perform redundant operations after a QGIS deployment, managing QGIS profiles, plugins, environment variables, start menu / desktop shortcuts and many things to rationalize your QGIS installations.
Author-email: "Julien Moura (Oslandia)" <qgis+qdt@oslandia.com>
Maintainer-email: "Julien Moura (Oslandia)" <qgis+qdt@oslandia.com>, "Jean-Marie Kerloch (Oslandia)" <qgis+qdt@oslandia.com>, "Nicolas Godet (ISL)" <nicolas.godet@outlook.fr>
License-Expression: Apache-2.0
Project-URL: Changelog, https://github.com/qgis-deployment/qgis-deployment-toolbelt-cli/blob/main/CHANGELOG.md
Project-URL: Documentation, https://qgis-deployment.github.io/qgis-deployment-toolbelt-cli/
Project-URL: Homepage, https://qgis-deployment.github.io/qgis-deployment-toolbelt-cli/
Project-URL: Issues, https://github.com/qgis-deployment/qgis-deployment-toolbelt-cli/issues
Project-URL: releasenotes, https://github.com/qgis-deployment/qgis-deployment-toolbelt-cli/releases/latest
Project-URL: Source, https://github.com/qgis-deployment/qgis-deployment-toolbelt-cli.git
Keywords: GIS,QGIS,cli,deployment,profiles,qdt
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Information Technology
Classifier: Operating System :: Microsoft :: Windows :: Windows 10
Classifier: Operating System :: Microsoft :: Windows :: Windows 11
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: GIS
Classifier: Topic :: System :: Installation/Setup
Requires-Python: <4,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: distro==1.9.*; sys_platform == "linux"
Requires-Dist: dulwich<0.24.7,>=0.24.1
Requires-Dist: giturlparse<0.13,>=0.12
Requires-Dist: imagesize<1.5,>=1.4
Requires-Dist: packaging<26,>=22
Requires-Dist: pypac<1,>=0.16.3
Requires-Dist: python-rule-engine<1.1,>=0.5
Requires-Dist: python-win-ad==0.6.2; sys_platform == "win32"
Requires-Dist: pywin32==311; sys_platform == "win32"
Requires-Dist: pyyaml<7,>=5.4
Requires-Dist: requests<3,>=2.32.3
Requires-Dist: truststore<1,>=0.10.1
Provides-Extra: dev
Requires-Dist: ruff>=0.13.1; extra == "dev"
Requires-Dist: pre-commit<5,>=4; extra == "dev"
Provides-Extra: doc
Requires-Dist: furo>=2024; extra == "doc"
Requires-Dist: matplotlib<4,>=3.8.2; extra == "doc"
Requires-Dist: myst-parser[linkify]>=2; extra == "doc"
Requires-Dist: sphinx-argparse-cli>=1.19; extra == "doc"
Requires-Dist: sphinx-autobuild>=2024; extra == "doc"
Requires-Dist: sphinx-copybutton<1; extra == "doc"
Requires-Dist: sphinx-design<1,>=0.5; extra == "doc"
Requires-Dist: sphinx-sitemap<3,>=2.4; extra == "doc"
Requires-Dist: sphinxcontrib-mermaid>=1; extra == "doc"
Requires-Dist: sphinxext-opengraph>=0.10; extra == "doc"
Provides-Extra: packaging
Requires-Dist: pyinstaller<6.17,>=6.13; extra == "packaging"
Requires-Dist: pyinstaller-hooks-contrib==2025.*; extra == "packaging"
Requires-Dist: pypiwin32==223; sys_platform == "win32" and extra == "packaging"
Provides-Extra: security
Requires-Dist: bandit<2,>=1.8.3; extra == "security"
Requires-Dist: safety<4,>=3.3.1; extra == "security"
Provides-Extra: test
Requires-Dist: GitPython<3.2,>=3.1; extra == "test"
Requires-Dist: Pillow<12.1,>=10.4.0; extra == "test"
Requires-Dist: pytest-cov<8,>=4; extra == "test"
Requires-Dist: validators<0.36,>=0.29.0; extra == "test"
Dynamic: license-file

<div align="center">
  <a href="https://github.com/qgis-deployment/qgis-deployment-toolbelt-cli">
    <img alt="QDT logo" src="docs/static/logo_qdt.png" height="175">
  </a>
</div>

# QGIS Deployment Toolbelt (QDT)

[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/qgis-deployment/qgis-deployment-toolbelt-cli/main.svg)](https://results.pre-commit.ci/latest/github/qgis-deployment/qgis-deployment-toolbelt-cli/main)
[![security: bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](https://github.com/PyCQA/bandit)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=Guts_qgis-deployment-cli&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=Guts_qgis-deployment-cli)

[![🎳 Tester](https://github.com/qgis-deployment/qgis-deployment-toolbelt-cli/actions/workflows/tests.yml/badge.svg)](https://github.com/qgis-deployment/qgis-deployment-toolbelt-cli/actions/workflows/tests.yml)
[![codecov](https://codecov.io/gh/qgis-deployment/qgis-deployment-toolbelt-cli/branch/main/graph/badge.svg?token=ZHGRNMA7TV)](https://codecov.io/gh/qgis-deployment/qgis-deployment-toolbelt-cli)
[![📦 Build & 🚀 Release](https://github.com/qgis-deployment/qgis-deployment-toolbelt-cli/actions/workflows/build_release.yml/badge.svg?branch=main)](https://github.com/qgis-deployment/qgis-deployment-toolbelt-cli/actions/workflows/build_release.yml)

[![PyPi version badge](https://badgen.net/pypi/v/qgis-deployment-toolbelt)](https://pypi.org/project/qgis-deployment-toolbelt/)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/qgis-deployment-toolbelt)](https://pypi.org/project/qgis-deployment-toolbelt/)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/qgis-deployment-toolbelt)](https://pypi.org/project/qgis-deployment-toolbelt/)

**QGIS Deployment Toolbelt (QDT)** is a cross-platform (primarily Windows-focused) command-line tool that streamlines the deployment and management of **QGIS profiles**, **plugins**, and related settings within organizations.

It helps **standardize** user environments, **simplify** updates, and **integrate** with IT deployment strategies like **GPO**, **SCCM**, or **InTune**.

## ⭐ Why QDT?

- Save hours of manual QGIS configuration and profile management
- Reduce configuration errors and user friction
- Scale QGIS deployments in professional environments easily
- Reconciling GIS service expectations and IT constraints
- Community driven development and developed by experienced QGIS teams (especially [Oslandia](https://oslandia.com/))

Come, talk and ask, we're a friendly (small) group of persons behind:

- GitHub [Issues](https://github.com/qgis-deployment/qgis-deployment-toolbelt-cli/issues) and [Discussions](https://github.com/qgis-deployment/qgis-deployment-toolbelt-cli/discussions)
- Matrix channel: <https://matrix.to/#/#qdt:matrix.org>

### 🚀 They use and trust QDT

Here comes some of known organization which do use QDT to deploy QGIS profiles seamlessly:

<!-- markdownlint-disable MD033 -->

| [ISL Ingénierie](https://isl.fr/) | [EP Loire](https://www.eptb-loire.fr/) | [Métropole Grand Lyon](https://www.grandlyon.com/) | [Département de la Loire](https://www.loire.fr/) | [Grenoble Alpes Métropole](https://www.grenoblealpesmetropole.fr/) | [LPO Auvergne Rhône Alpes](https://auvergne-rhone-alpes.lpo.fr/) | [ANFSI](https://www.linkedin.com/company/anfsi/about/) | [EP Eaux et Vilaine](https://www.eaux-et-vilaine.bzh/) | [Métropole Aix Marseille Provence](https://ampmetropole.fr/) |
| :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: | :----: |
| <img src="./docs/static/logo_isl.png" max-width=100 alt="logo ISL" >  | <img src="./docs/static/logo_etablissement_public_loire.png" max-width=100 alt="logo EP Loire" > | <img src="./docs/static/logo_lyon.png" max-width=100 alt="logo" > | <img src="./docs/static/logo_cd-loire.png" max-width=100 alt="logo" > | <img src="./docs/static/logo_grenoble.png" max-width=100 alt="logo" > | <img src="./docs/static/logo_lpo.png" max-width=100 alt="logo" > | <img src="./docs/static/logo_anfsi.png" max-width=100 alt="logo" > | <img src="./docs/static/logo_eaux-et-vilaine.png" max-width=100 alt="logo" > | <img src="./docs/static/logo_amp.png" max-max-width=100 alt="logo" > |

See [more in documentation](https://qgis-deployment.github.io/qgis-deployment-toolbelt-cli/misc/references.html).

<!-- markdownlint-enable MD033 -->

## ✨ Features

- **Manage QGIS profiles easily**: define, store, and deploy profiles with a simple `profile.json` file. You can also use the [Profile Manager plugin](https://plugins.qgis.org/plugins/profile_manager/) to export your existing profiles right from QGIS.
- **Version control integration**: Git-powered backend for tracking changes and enabling collaborative profile management.
- **IT-friendly**: designed to work with Active Directory, GPOs, SCCM, InTune, and other enterprise tools.
- **Seamless user experience**: deliver a consistent QGIS experience across your organization with minimal friction.
- **Advanced configuration handling**: use variabilized `QGIS3.ini` files to handle dynamic or environment-specific settings.
- **Conditional deployments**: deploy specific profiles based on rules, environment variables, or user criteria.
- **Optimized plugin management**: reduce bandwidth usage by rationalizing plugin downloads and installations.

## 🚀 Try it quickly

You have multiple options to try QDT:

- Using Python and the official modern CLI installer [pipx](https://pipx.pypa.io/):

    ```sh
    pipx run qgis-deployment-toolbelt -s https://github.com/qgis-deployment/qgis-deployment-toolbelt-cli/raw/main/examples/scenarios/demo-scenario.qdt.yml
    ```

- Using Python and the official package installer `pip`:

    ```sh
    pip install qgis-deployment-toolbelt
    qdt -s https://github.com/qgis-deployment/qgis-deployment-toolbelt-cli/raw/main/examples/scenarios/demo-scenario.qdt.yml
    ```

- Using a pre-built executable (downloadable [through releases assets](https://github.com/qgis-deployment/qgis-deployment-toolbelt-cli/releases/latest)). For example on Windows:

    ```powershell
    ./Windows_QGISDeploymentToolbelt_0-37-0.exe  -s https://github.com/qgis-deployment/qgis-deployment-toolbelt-cli/raw/main/examples/scenarios/demo-scenario.qdt.yml
    ```

Once completed, check:

- The **Start menu** / **Desktop** for new shortcuts.
- The **QGIS Profiles menu** for new profiles.

![QGIS - List of profiles with ones added by QDT demonstration scenario](./docs/static/examples_qgis_profiles_menu.png)

Splash screen when launching the **Demo Profile**:

![QGIS splash screen - QDT Demo Profile](./examples/profiles/demo/images/splash.png)

Splash screen for the **Viewer Profile**:

![QGIS splash screen - QDT Viewer Profile](./examples/profiles/Viewer%20Mode/images/splash.png)

Have you tried it on Linux? Well, you should find an additional profile simply named "QDT Only Linux".

> [!TIP]
> **Interested**? For further details, [read the documentation](https://qgis-deployment.github.io/qgis-deployment-toolbelt-cli/) :books:.

## 🤝 Contribute

Want to help? Come on it's definitely open, everything here is under [Apache 2.0 license](./LICENSE).

Check out the [contribution guide and "Development" section in the documentation](https://qgis-deployment.github.io/qgis-deployment-toolbelt-cli/development/contribute.html).
