diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2024-12-06 12:47:56 -0800 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-10-20 15:15:53 -0700 |
| commit | 8f21b6ea7f92ece7b59334bd9e762d57aac778ad (patch) | |
| tree | 1e44f77ace976f8ba959ede162483019778e35b1 | |
| parent | 8b1c5c9944ba0b28524d11a8d274f81733e4149b (diff) | |
| download | meson-8f21b6ea7f92ece7b59334bd9e762d57aac778ad.tar.gz | |
interpreter: port dependency language to typed_kwargs
| -rw-r--r-- | mesonbuild/dependencies/base.py | 1 | ||||
| -rw-r--r-- | mesonbuild/dependencies/detect.py | 4 | ||||
| -rw-r--r-- | mesonbuild/dependencies/hdf5.py | 2 | ||||
| -rw-r--r-- | mesonbuild/dependencies/misc.py | 4 | ||||
| -rw-r--r-- | mesonbuild/dependencies/mpi.py | 2 | ||||
| -rw-r--r-- | mesonbuild/interpreter/kwargs.py | 1 | ||||
| -rw-r--r-- | mesonbuild/interpreter/type_checking.py | 2 |
7 files changed, 10 insertions, 6 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index 96ec78159..50cb470ed 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -47,6 +47,7 @@ if T.TYPE_CHECKING: cmake_package_version: str components: T.List[str] include_type: IncludeType + language: T.Optional[str] _MissingCompilerBase = Compiler else: diff --git a/mesonbuild/dependencies/detect.py b/mesonbuild/dependencies/detect.py index 6dc0299ca..92ee0c137 100644 --- a/mesonbuild/dependencies/detect.py +++ b/mesonbuild/dependencies/detect.py @@ -93,7 +93,7 @@ def find_external_dependency(name: str, env: 'Environment', kwargs: DependencyOb if not isinstance(kwargs.get('method', ''), str): raise DependencyException('Keyword "method" must be a string.') lname = name.lower() - if lname not in _packages_accept_language and 'language' in kwargs: + if lname not in _packages_accept_language and kwargs.get('language') is not None: raise DependencyException(f'{name} dependency does not accept "language" keyword argument') if not isinstance(kwargs.get('version', ''), (str, list)): raise DependencyException('Keyword "Version" must be string or list.') @@ -130,7 +130,7 @@ def find_external_dependency(name: str, env: 'Environment', kwargs: DependencyOb details = d.log_details() if details: details = '(' + details + ') ' - if 'language' in kwargs: + if kwargs.get('language') is not None: details += 'for ' + d.language + ' ' # if the dependency was found diff --git a/mesonbuild/dependencies/hdf5.py b/mesonbuild/dependencies/hdf5.py index 2bb31807f..3d868bf30 100644 --- a/mesonbuild/dependencies/hdf5.py +++ b/mesonbuild/dependencies/hdf5.py @@ -146,7 +146,7 @@ class HDF5ConfigToolDependency(ConfigToolDependency): @factory_methods({DependencyMethods.PKGCONFIG, DependencyMethods.CONFIG_TOOL}) def hdf5_factory(env: 'Environment', for_machine: 'MachineChoice', kwargs: DependencyObjectKWs, methods: T.List[DependencyMethods]) -> T.List['DependencyGenerator']: - language = T.cast('T.Optional[str]', kwargs.get('language')) + language = kwargs.get('language') candidates: T.List['DependencyGenerator'] = [] if DependencyMethods.PKGCONFIG in methods: diff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py index 9f6746328..2b1871311 100644 --- a/mesonbuild/dependencies/misc.py +++ b/mesonbuild/dependencies/misc.py @@ -30,7 +30,7 @@ def netcdf_factory(env: 'Environment', for_machine: 'mesonlib.MachineChoice', kwargs: DependencyObjectKWs, methods: T.List[DependencyMethods]) -> T.List['DependencyGenerator']: - language = T.cast('T.Optional[str]', kwargs.get('language')) + language = kwargs.get('language') if language is None: language = 'c' if language not in ('c', 'cpp', 'fortran'): @@ -113,7 +113,7 @@ class OpenMPDependency(SystemDependency): } def __init__(self, environment: 'Environment', kwargs: DependencyObjectKWs) -> None: - language = T.cast('T.Optional[str]', kwargs.get('language')) + language = kwargs.get('language') super().__init__('openmp', environment, kwargs, language=language) self.is_found = False if self.clib_compiler.get_id() == 'nagfor': diff --git a/mesonbuild/dependencies/mpi.py b/mesonbuild/dependencies/mpi.py index 8d8ead86d..ce497372a 100644 --- a/mesonbuild/dependencies/mpi.py +++ b/mesonbuild/dependencies/mpi.py @@ -28,7 +28,7 @@ def mpi_factory(env: 'Environment', for_machine: 'MachineChoice', kwargs: DependencyObjectKWs, methods: T.List[DependencyMethods]) -> T.List['DependencyGenerator']: - language = T.cast('T.Optional[str]', kwargs.get('language')) + language = kwargs.get('language') if language is None: language = 'c' if language not in {'c', 'cpp', 'fortran'}: diff --git a/mesonbuild/interpreter/kwargs.py b/mesonbuild/interpreter/kwargs.py index 6e524885d..dcdd39cb1 100644 --- a/mesonbuild/interpreter/kwargs.py +++ b/mesonbuild/interpreter/kwargs.py @@ -501,3 +501,4 @@ class FuncDependency(TypedDict): default_options: T.Dict[OptionKey, options.ElementaryOptionValues] fallback: T.Union[str, T.List[str], None] include_type: IncludeType + language: T.Optional[str] diff --git a/mesonbuild/interpreter/type_checking.py b/mesonbuild/interpreter/type_checking.py index 20fa7c04d..e8752d55a 100644 --- a/mesonbuild/interpreter/type_checking.py +++ b/mesonbuild/interpreter/type_checking.py @@ -912,4 +912,6 @@ DEPENDENCY_KWS: T.List[KwargInfo] = [ KwargInfo('cmake_package_version', str, default='', since='0.57.0'), KwargInfo('components', ContainerTypeInfo(list, str), listify=True, default=[], since='0.54.0'), KwargInfo('fallback', (ContainerTypeInfo(list, str), str, NoneType), since='0.54.0'), + KwargInfo('language', (str, NoneType), convertor=lambda x: x.lower() if x is not None else x, + validator=lambda x: 'Must be a valid language if set' if (x is not None and x not in compilers.all_languages) else None), ] |
