PEP561 stub files for the QGIS Python wrapper
Project description
Type Stubs for QGIS
This package defines Python stub files (.pyi) for the PyQGIS wrapper module available in QGIS.
Overview
The bulk of the qgis
module is a SIP-generated wrapper over a C++ source, which cannot be introspected by the user or development utilities.
Python type stubs are a declaration-only replication of the C/C++ endpoints that can be parsed by IDEs, linters, or static type checkers to provide the same functionality available for regular Python sources.
While type stubs are primarily intended for use with static type checkers like Mypy or Pylance, they are also used by some linters like pylint and will silence error messages like import-error
or no-name-in-module
.
Installation
qgis-stubs can be installed through pip:
$ python -m pip install qgis-stubs
Alternatively, you can clone and install them straight from this repository:
$ python -m pip install git+https://github.com/leonhard-s/qgis-stubs.git
Limitations
This project is in early stages and does not yet cover the full interface. This is largely due to QGIS doing a lot of monkey-patching that are not automatically replicated in the stub files.
Here is a likely incomplete list of known limitations/omissions:
-
Compatibility fallbacks and non-standard attributes may be missing (as they are monkey patched).
-
Most methods do not contain docstrings (these too are monkey-patched).
-
None of the types and utilities defined in the
core.additions
namespace are available as they mostly serve to allow for more monkey-patching. -
QGIS enumerators clutter the parent namespace, which can lead to name collisions.
For example: The value
QgsAggregateMappingModel.ColumnDataIndex.Aggregate
instead escalates toQgsAggregateMappingModel.Aggregate
, which is subsequently overwritten by an inner class of the same qualified name.Such names are inaccessible in the stubs and possibly even at runtime. I did not yet have time to investigate further.
Contributing
If you encounter any issues such as missing or incorrect hints or other unexpected behaviour, please do not hesitate to create an issue or start hacking away.
The current version of this package was created with copious amounts of RegEx-based edits and refactoring tools, though I did end up manually merging files and adding missing types a lot.
If this utility is useful to you, please let me know and I will happily look into automating the entire workflow to keep this package synchronised with QGIS releases.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for qgis_stubs-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7dd918fbc60d5787106d4ce7acabe30dfa917be5b14ae7af31a332aeac493571 |
|
MD5 | 7504b858a2a45c1327fb5b5e88db9f95 |
|
BLAKE2b-256 | 1bf8112ff8ffbaceee6b4617e8ffe71b00a1afdcfc4222b1be5fcfc30102d0c7 |