mirror of
https://gitlab.com/qemu-project/meson.git
synced 2025-09-16 14:41:54 +08:00
fix broken type annotation imports being ignored
If an annotation could not be resolved, it's classified as a "missing import" and our configuration ignored it: ``` Skipping analyzing "mesonbuild.backends": module is installed, but missing library stubs or py.typed marker ``` As far as mypy is concerned, this library may or may not exist, but it doesn't have any typing information at all (may need to be installed first). We ignored this because of our docs/ and tools/ thirdparty dependencies, but we really should not. It is trivial to install them, and then enforce that this "just works". By enforcing it, we also make sure typos get caught.
This commit is contained in:

committed by
Xavier Claessens

parent
319b41b4c9
commit
caa38dad45
2
.github/workflows/lint.yml
vendored
2
.github/workflows/lint.yml
vendored
@ -46,7 +46,7 @@ jobs:
|
||||
- uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: '3.x'
|
||||
- run: python -m pip install mypy types-PyYAML
|
||||
- run: python -m pip install mypy coverage types-PyYAML types-tqdm types-chevron
|
||||
- run: python run_mypy.py --allver
|
||||
env:
|
||||
PYTHONUNBUFFERED: 1
|
||||
|
@ -2,7 +2,7 @@
|
||||
strict_optional = False
|
||||
show_error_context = False
|
||||
show_column_numbers = True
|
||||
ignore_missing_imports = True
|
||||
ignore_missing_imports = False
|
||||
implicit_reexport = False
|
||||
|
||||
follow_imports = silent
|
||||
|
@ -41,7 +41,7 @@ class Template:
|
||||
|
||||
class StrictTemplate(Template):
|
||||
def __init__(self) -> None:
|
||||
from strictyaml import Map, MapPattern, Optional, Str, Seq, Int, Bool, EmptyList, OrValidator
|
||||
from strictyaml import Map, MapPattern, Optional, Str, Seq, Int, Bool, EmptyList, OrValidator # type: ignore[import-untyped]
|
||||
|
||||
d_named_object = {
|
||||
'name': Str(),
|
||||
|
@ -20,7 +20,7 @@ import re
|
||||
import typing as T
|
||||
|
||||
if T.TYPE_CHECKING:
|
||||
from envconfig import MachineInfo
|
||||
from ...envconfig import MachineInfo
|
||||
from ...environment import Environment
|
||||
from ...compilers.compilers import Compiler
|
||||
else:
|
||||
|
@ -30,7 +30,7 @@ if T.TYPE_CHECKING:
|
||||
from ..compilers import Compiler, RunResult
|
||||
from ..interpreterbase import TYPE_var, TYPE_kwargs
|
||||
from .kwargs import ExtractRequired, ExtractSearchDirs
|
||||
from .interpreter.interpreter import SourceOutputs
|
||||
from .interpreter import SourceOutputs
|
||||
from ..mlog import TV_LoggableList
|
||||
|
||||
from typing_extensions import TypedDict, Literal
|
||||
@ -856,7 +856,8 @@ class CompilerHolder(ObjectHolder['Compiler']):
|
||||
)
|
||||
def preprocess_method(self, args: T.Tuple[T.List['mesonlib.FileOrString']], kwargs: 'PreprocessKW') -> T.List[build.CustomTargetIndex]:
|
||||
compiler = self.compiler.get_preprocessor()
|
||||
sources: 'SourceOutputs' = self.interpreter.source_strings_to_files(args[0])
|
||||
_sources: T.List[mesonlib.File] = self.interpreter.source_strings_to_files(args[0])
|
||||
sources = T.cast('T.List[SourceOutputs]', _sources)
|
||||
if any(isinstance(s, (build.CustomTarget, build.CustomTargetIndex, build.GeneratedList)) for s in sources):
|
||||
FeatureNew.single_use('compiler.preprocess with generated sources', '1.1.0', self.subproject,
|
||||
location=self.current_node)
|
||||
|
@ -5,6 +5,7 @@ import argparse
|
||||
import tempfile
|
||||
import shutil
|
||||
import itertools
|
||||
import typing as T
|
||||
|
||||
from pathlib import Path
|
||||
from . import build, minstall
|
||||
@ -12,9 +13,9 @@ from .mesonlib import (EnvironmentVariables, MesonException, is_windows, setup_v
|
||||
get_wine_shortpath, MachineChoice)
|
||||
from . import mlog
|
||||
|
||||
import typing as T
|
||||
|
||||
if T.TYPE_CHECKING:
|
||||
from .backends import InstallData
|
||||
from .backend.backends import InstallData
|
||||
|
||||
POWERSHELL_EXES = {'pwsh.exe', 'powershell.exe'}
|
||||
|
||||
|
Reference in New Issue
Block a user