diff options
author | Christian Tismer <tismer@stackless.com> | 2020-04-16 17:23:55 +0200 |
---|---|---|
committer | Christian Tismer <tismer@stackless.com> | 2020-04-17 07:35:44 +0000 |
commit | b0bfeaf894344e31b5175dbbd3ce371fae5dee5b (patch) | |
tree | a40744e2e5cabf5c86415c4a9e91baef01f9e86e | |
parent | 8df43d8c9d704a3abcc58b8ba84fc6fbfee2c433 (diff) |
Support type checking with the mypy module
According to PEP 561, there needs to exist a py.typed file.
Also, the import of typing must be visible statically for mypy without
importing PySide2.
Testing.. run
mypy pyside_1100.py
and you will get the correct output without "any".
Change-Id: I1d08447161630a8c7a64eda32ff8a431e994c6a7
Fixes: PYSIDE-1100
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
-rw-r--r-- | build_scripts/platforms/unix.py | 2 | ||||
-rw-r--r-- | build_scripts/platforms/windows_desktop.py | 2 | ||||
-rw-r--r-- | sources/pyside2/PySide2/CMakeLists.txt | 3 | ||||
-rw-r--r-- | sources/pyside2/PySide2/py.typed.in | 1 | ||||
-rw-r--r-- | sources/pyside2/PySide2/support/generate_pyi.py | 4 |
5 files changed, 10 insertions, 2 deletions
diff --git a/build_scripts/platforms/unix.py b/build_scripts/platforms/unix.py index fcbd010e2..b842510ff 100644 --- a/build_scripts/platforms/unix.py +++ b/build_scripts/platforms/unix.py @@ -188,7 +188,7 @@ def prepare_packages_posix(self, vars): copydir( "{build_dir}/pyside2/{st_package_name}", "{st_build_dir}/{st_package_name}", - filter=["*.pyi"], + filter=["*.pyi", "py.typed"], vars=vars) if not OPTION["NOEXAMPLES"]: diff --git a/build_scripts/platforms/windows_desktop.py b/build_scripts/platforms/windows_desktop.py index 88114fdaa..750a064b4 100644 --- a/build_scripts/platforms/windows_desktop.py +++ b/build_scripts/platforms/windows_desktop.py @@ -197,7 +197,7 @@ def prepare_packages_win32(self, vars): copydir( "{build_dir}/pyside2/{st_package_name}", "{st_build_dir}/{st_package_name}", - filter=["*.pyi"], + filter=["*.pyi", "py.typed"], vars=vars) copydir( diff --git a/sources/pyside2/PySide2/CMakeLists.txt b/sources/pyside2/PySide2/CMakeLists.txt index e39db75a1..aa37f19bc 100644 --- a/sources/pyside2/PySide2/CMakeLists.txt +++ b/sources/pyside2/PySide2/CMakeLists.txt @@ -8,6 +8,9 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/__init__.py.in" "${CMAKE_CURRENT_BINARY_DIR}/__init__.py" @ONLY) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/_config.py.in" "${CMAKE_CURRENT_BINARY_DIR}/_config.py" @ONLY) +# typing support for mypy +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/py.typed.in" + "${CMAKE_CURRENT_BINARY_DIR}/py.typed" @ONLY) # Use absolute path instead of relative path, to avoid ninja build errors due to # duplicate file dependency inconsistency. diff --git a/sources/pyside2/PySide2/py.typed.in b/sources/pyside2/PySide2/py.typed.in new file mode 100644 index 000000000..0e76a07dc --- /dev/null +++ b/sources/pyside2/PySide2/py.typed.in @@ -0,0 +1 @@ +# this is a marker file for mypy diff --git a/sources/pyside2/PySide2/support/generate_pyi.py b/sources/pyside2/PySide2/support/generate_pyi.py index e60645701..f173ec2fc 100644 --- a/sources/pyside2/PySide2/support/generate_pyi.py +++ b/sources/pyside2/PySide2/support/generate_pyi.py @@ -138,6 +138,10 @@ class Formatter(Writer): self.print("# Module", mod_name) self.print("import PySide2") from PySide2.support.signature import typing + self.print("try:") + self.print(" import typing") + self.print("except ImportError:") + self.print(" from PySide2.support.signature import typing") self.print("from PySide2.support.signature import typing") self.print("from PySide2.support.signature.mapping import (") self.print(" Virtual, Missing, Invalid, Default, Instance)") |