diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2025-08-01 15:40:44 -0700 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-10-20 15:15:53 -0700 |
| commit | 035b8e4c013d686da7ab433b643338f696e15500 (patch) | |
| tree | bf3fc4dcbf4e7e2f3014dfcdbf95efc7fcb34039 /mesonbuild/dependencies/mpi.py | |
| parent | ae89ca1015fd1d8306bbb78c31f1bde53375a712 (diff) | |
| download | meson-035b8e4c013d686da7ab433b643338f696e15500.tar.gz | |
dependency: Use a TypedDict to describe the keyword arguments to Dependency
This allows us to check that all of the keyword arguments are of the
correct type.
Diffstat (limited to 'mesonbuild/dependencies/mpi.py')
| -rw-r--r-- | mesonbuild/dependencies/mpi.py | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/mesonbuild/dependencies/mpi.py b/mesonbuild/dependencies/mpi.py index a259972b0..8d8ead86d 100644 --- a/mesonbuild/dependencies/mpi.py +++ b/mesonbuild/dependencies/mpi.py @@ -20,14 +20,15 @@ if T.TYPE_CHECKING: from .factory import DependencyGenerator from ..environment import Environment from ..mesonlib import MachineChoice + from .base import DependencyObjectKWs @factory_methods({DependencyMethods.PKGCONFIG, DependencyMethods.CONFIG_TOOL, DependencyMethods.SYSTEM}) def mpi_factory(env: 'Environment', for_machine: 'MachineChoice', - kwargs: T.Dict[str, T.Any], + kwargs: DependencyObjectKWs, methods: T.List[DependencyMethods]) -> T.List['DependencyGenerator']: - language = kwargs.get('language') + language = T.cast('T.Optional[str]', kwargs.get('language')) if language is None: language = 'c' if language not in {'c', 'cpp', 'fortran'}: @@ -58,7 +59,7 @@ def mpi_factory(env: 'Environment', if compiler_is_intel: if env.machines[for_machine].is_windows(): - nwargs['returncode_value'] = 3 + nwargs['returncode_value'] = 3 # type: ignore[typeddict-unknown-key] if language == 'c': tool_names.append('mpiicc') @@ -75,7 +76,7 @@ def mpi_factory(env: 'Environment', elif language == 'fortran': tool_names.extend(['mpifort', 'mpif90', 'mpif77']) - nwargs['tools'] = tool_names + nwargs['tools'] = tool_names # type: ignore[typeddict-unknown-key] candidates.append(functools.partial( MPIConfigToolDependency, tool_names[0], env, nwargs, language=language)) @@ -104,7 +105,7 @@ packages['mpi'] = mpi_factory class MPIConfigToolDependency(ConfigToolDependency): """Wrapper around mpicc, Intel's mpiicc and friends.""" - def __init__(self, name: str, env: 'Environment', kwargs: T.Dict[str, T.Any], + def __init__(self, name: str, env: 'Environment', kwargs: DependencyObjectKWs, language: T.Optional[str] = None): super().__init__(name, env, kwargs, language=language) if not self.is_found: @@ -214,7 +215,7 @@ class MSMPIDependency(SystemDependency): """The Microsoft MPI.""" - def __init__(self, name: str, env: 'Environment', kwargs: T.Dict[str, T.Any], + def __init__(self, name: str, env: 'Environment', kwargs: DependencyObjectKWs, language: T.Optional[str] = None): super().__init__(name, env, kwargs, language=language) # MSMPI only supports the C API |
