diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2021-06-01 15:53:59 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2021-06-15 12:35:15 -0700 |
commit | ffa83f7f8a28289ada60ded86dc83e180625783b (patch) | |
tree | 85ab7876e62d9a732f8ac5a159ce6d594310ee73 /mesonbuild/modules/qt.py | |
parent | ce3a7ec19d31c977c75afe13a288bef3f6eaf9f4 (diff) | |
download | meson-ffa83f7f8a28289ada60ded86dc83e180625783b.zip meson-ffa83f7f8a28289ada60ded86dc83e180625783b.tar.gz meson-ffa83f7f8a28289ada60ded86dc83e180625783b.tar.bz2 |
modules/qt: Type anotations and cleanups
This adds a number of missing type annotations to existing functions,
and makes a few members protected instead of public, as they were never
meant to be public
Diffstat (limited to 'mesonbuild/modules/qt.py')
-rw-r--r-- | mesonbuild/modules/qt.py | 47 |
1 files changed, 30 insertions, 17 deletions
diff --git a/mesonbuild/modules/qt.py b/mesonbuild/modules/qt.py index fa8b007..e71b96a 100644 --- a/mesonbuild/modules/qt.py +++ b/mesonbuild/modules/qt.py @@ -21,7 +21,6 @@ from .. import mlog from .. import build from .. import mesonlib from ..mesonlib import MesonException, extract_as_list, File, unholder, version_compare -from ..dependencies import Dependency import xml.etree.ElementTree as ET from . import ModuleReturnValue, ExtensionModule from ..interpreterbase import ContainerTypeInfo, FeatureDeprecated, FeatureDeprecatedKwargs, KwargInfo, noPosargs, permittedKwargs, FeatureNew, FeatureNewKwargs, typed_kwargs @@ -31,11 +30,12 @@ from ..interpreter.interpreterobjects import DependencyHolder, ExternalLibraryHo if T.TYPE_CHECKING: from . import ModuleState - from ..dependencies.qt import QtBaseDependency - from ..environment import Environment + from ..dependencies.qt import QtPkgConfigDependency, QmakeQtDependency from ..interpreter import Interpreter from ..programs import ExternalProgram + QtDependencyType = T.Union[QtPkgConfigDependency, QmakeQtDependency] + from typing_extensions import TypedDict class ResourceCompilerKwArgs(TypedDict): @@ -59,19 +59,32 @@ if T.TYPE_CHECKING: """Keyword arguments for the Moc Compiler method.""" - sources: T.Optional[T.List[mesonlib.FileOrString]] - headers: T.Optional[T.List[mesonlib.FileOrString]] - extra_args: T.Optional[T.List[str]] + sources: T.List[mesonlib.FileOrString] + headers: T.List[mesonlib.FileOrString] + extra_args: T.List[str] + method: str + include_directories: T.List[IncludeDirsHolder] + dependencies: T.List[T.Union[DependencyHolder, ExternalLibraryHolder]] + + class PreprocessKwArgs(TypedDict): + + sources: T.List[mesonlib.FileOrString] + moc_sources: T.List[mesonlib.FileOrString] + qresources: T.List[mesonlib.FileOrString] + ui_files: T.List[mesonlib.FileOrString] + moc_extra_arguments: T.List[str] + rcc_extra_arguments: T.List[str] + uic_extra_arguments: T.List[str] + include_directories: T.List[IncludeDirsHolder] + dependencies: T.List[T.Union[DependencyHolder, ExternalLibraryHolder]] method: str - include_directories: T.Optional[T.List[IncludeDirsHolder]] - dependencies: T.Optional[T.List[T.Union[DependencyHolder, ExternalLibraryHolder]]] class QtBaseModule(ExtensionModule): - tools_detected = False - rcc_supports_depfiles = False + _tools_detected = False + _rcc_supports_depfiles = False - def __init__(self, interpreter: 'Interpreter', qt_version=5): + def __init__(self, interpreter: 'Interpreter', qt_version: int = 5): ExtensionModule.__init__(self, interpreter) self.qt_version = qt_version self.moc: 'ExternalProgram' = NonExistingExternalProgram('moc') @@ -87,7 +100,7 @@ class QtBaseModule(ExtensionModule): 'compile_moc': self.compile_moc, }) - def compilers_detect(self, state, qt_dep: 'QtBaseDependency') -> None: + def compilers_detect(self, state: 'ModuleState', qt_dep: 'QtDependencyType') -> None: """Detect Qt (4 or 5) moc, uic, rcc in the specified bindir or in PATH""" # It is important that this list does not change order as the order of # the returned ExternalPrograms will change as well @@ -132,9 +145,9 @@ class QtBaseModule(ExtensionModule): setattr(self, name, p) def _detect_tools(self, state: 'ModuleState', method: str, required: bool = True) -> None: - if self.tools_detected: + if self._tools_detected: return - self.tools_detected = True + self._tools_detected = True mlog.log(f'Detecting Qt{self.qt_version} tools') kwargs = {'required': required, 'modules': 'Core', 'method': method} qt = find_external_dependency(f'qt{self.qt_version}', state.environment, kwargs) @@ -142,7 +155,7 @@ class QtBaseModule(ExtensionModule): # Get all tools and then make sure that they are the right version self.compilers_detect(state, qt) if version_compare(qt.version, '>=5.14.0'): - self.rcc_supports_depfiles = True + self._rcc_supports_depfiles = True else: mlog.warning('rcc dependencies will not work properly until you move to Qt >= 5.14:', mlog.bold('https://bugreports.qt.io/browse/QTBUG-45460'), fatal=False) @@ -211,7 +224,7 @@ class QtBaseModule(ExtensionModule): @noPosargs @permittedKwargs({'method', 'required'}) @FeatureNew('qt.has_tools', '0.54.0') - def has_tools(self, state, args, kwargs): + def has_tools(self, state: 'ModuleState', args: T.Tuple, kwargs) -> bool: method = kwargs.get('method', 'auto') disabled, required, feature = extract_required_kwarg(kwargs, state.subproject, default=False) if disabled: @@ -249,7 +262,7 @@ class QtBaseModule(ExtensionModule): targets: T.List[build.CustomTarget] = [] # depfile arguments - DEPFILE_ARGS: T.List[str] = ['--depfile', '@DEPFILE@'] if self.rcc_supports_depfiles else [] + DEPFILE_ARGS: T.List[str] = ['--depfile', '@DEPFILE@'] if self._rcc_supports_depfiles else [] name = kwargs['name'] sources = kwargs['sources'] |