Skip to main content

Generate QML stub files (.qmltypes) from Python modules (which use PySide6)

Project description

pyside6-qml-stubgen

Generate QML stub files (.qmltypes) from Python modules (which use PySide6)

Installation

This tool can be installed though PyPI:

pip install pyside6-qml-stubgen

If you want to use a development version, instead clone the repo and then install using pip:

git clone https://github.com/matsjoyce/pyside6-qml-stubgen.git
pip install ./pyside6-qml-stubgen

This tool has been tested on Linux, Windows and MacOS using pip-installed PySide6 (on GitHub Actions), and on Arch Linux using system packages. It does not run with PyQt6, although it should be possible in theory (send a PR if you get it working). And finally, it does not run using Qt 5 (PySide2 or PyQt5), as that version is no longer being developed, and QML in Qt 5 has less features than in Qt 6, making it a less attractive target for this sort of tool.

Simple example

As an example, we'll run this tool on https://github.com/matsjoyce/fantasia2. There are two steps to type checking your QML code when using PySide6. First generate the QML type stubs using this tool:

pyside6-qml-stubgen fantasia2 --out-dir qmltypes --ignore fantasia2/alembic/

This command will generate a folder tree containing .qmltypes files and qmldir files matching the runtime structure of QML modules registered by the Python modules.

The second step is to run qmllint on your QML files using the type stubs:

/usr/lib/qt6/bin/qmllint fantasia2/*.qml -I ./qmltypes

If you change the QML files, you can just rerun qmllint. If you change the Python interface, you should rerun both commands.

Links to other projects

This tool relies heavily on PySide6, and is inspired by the metaobjectdump.py tool, although this tool uses a runtime approach instead of static analysis, as that works better on large programs.

Command-line arguments

$ pyside6-qml-stubgen --help
Generate QML stub files (.qmltypes) from Python modules (which use PySide6)

Usage:
    pyside6-qml-stubgen <in-dir> --out-dir=<out-dir> [--ignore=<path>...] [--metatypes-dir=<dir>] [--qmltyperegistrar-path=<path>]

Options:
    --ignore=<path>                     Ignore all Python files that are children of thispath
    --metatypes-dir=<dir>               Directory of the Qt 6 metatype files for core modules (automatically detected if not provided)
    --qmltyperegistrar-path=<path>      Path of the qmltyperegistrar tool (automatically detected if not provided)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyside6_qml_stubgen-0.1.0a1.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

pyside6_qml_stubgen-0.1.0a1-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file pyside6_qml_stubgen-0.1.0a1.tar.gz.

File metadata

  • Download URL: pyside6_qml_stubgen-0.1.0a1.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for pyside6_qml_stubgen-0.1.0a1.tar.gz
Algorithm Hash digest
SHA256 bdfe75d23a4e1aefbe3e6bcbc9cb159a1d39d61a3d1e5840e33c162d38c92a2c
MD5 1f5e6f01bb58f868e8289dcf659a3925
BLAKE2b-256 687b8c458d5db1e5a44642b19cb439542eeb44e514b130a53e59187f9701c03c

See more details on using hashes here.

File details

Details for the file pyside6_qml_stubgen-0.1.0a1-py3-none-any.whl.

File metadata

File hashes

Hashes for pyside6_qml_stubgen-0.1.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 dd6db37683c8f3950ee40047c0b4d95aea7ac9e67083f2aed487253f6c2f41d6
MD5 b5e5619070f83feb75a1ff718b7ba49c
BLAKE2b-256 182ac7f297e76f908f53ab780892e6414919cc5a624a24a15408fe69cfcac110

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page