aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2021-08-18 14:17:40 -0700
committerDylan Baker <dylan@pnwbakers.com>2021-08-30 18:05:02 -0700
commit43f942be34433c0668572fa830bd56c61f612870 (patch)
treef02c833f686a99cbefc3e7b6c048a0790c8a54ba
parent3731e1d8f38be0ba3360d6badae789b1078e5b5a (diff)
downloadmeson-43f942be34433c0668572fa830bd56c61f612870.zip
meson-43f942be34433c0668572fa830bd56c61f612870.tar.gz
meson-43f942be34433c0668572fa830bd56c61f612870.tar.bz2
interpreterobjects: Use typed_kwargs for EnvironmentVariablesObject
-rw-r--r--mesonbuild/interpreter/interpreterobjects.py43
1 files changed, 19 insertions, 24 deletions
diff --git a/mesonbuild/interpreter/interpreterobjects.py b/mesonbuild/interpreter/interpreterobjects.py
index 53a0666..bc9d8e7 100644
--- a/mesonbuild/interpreter/interpreterobjects.py
+++ b/mesonbuild/interpreter/interpreterobjects.py
@@ -17,7 +17,7 @@ from ..interpreterbase import (
ContainerTypeInfo, KwargInfo,
InterpreterObject, MesonInterpreterObject, ObjectHolder, MutableInterpreterObject,
FeatureCheckBase, FeatureNewKwargs, FeatureNew, FeatureDeprecated,
- typed_pos_args, typed_kwargs, stringArgs, permittedKwargs,
+ typed_pos_args, typed_kwargs, permittedKwargs,
noArgsFlattening, noPosargs, noKwargs, permissive_unholder_return, TYPE_var, TYPE_kwargs, TYPE_nvar, TYPE_nkwargs,
flatten, resolve_second_level_holders, InterpreterException, InvalidArguments, InvalidCode)
from ..interpreter.type_checking import NoneType
@@ -30,9 +30,14 @@ import typing as T
if T.TYPE_CHECKING:
from . import kwargs
from .interpreter import Interpreter
- from ..environment import Environment
from ..envconfig import MachineInfo
+ from typing_extensions import TypedDict
+
+ class EnvironmentSeparatorKW(TypedDict):
+
+ separator: str
+
def extract_required_kwarg(kwargs: 'kwargs.ExtractRequired',
subproject: str,
@@ -230,6 +235,9 @@ class RunProcess(MesonInterpreterObject):
return self.stderr
+_ENV_SEPARATOR_KW = KwargInfo('separator', str, default=os.pathsep)
+
+
class EnvironmentVariablesObject(ObjectHolder[build.EnvironmentVariables], MutableInterpreterObject):
def __init__(self, obj: build.EnvironmentVariables, interpreter: 'Interpreter'):
@@ -243,13 +251,6 @@ class EnvironmentVariablesObject(ObjectHolder[build.EnvironmentVariables], Mutab
repr_str = "<{0}: {1}>"
return repr_str.format(self.__class__.__name__, self.held_object.envvars)
- def unpack_separator(self, kwargs: T.Dict[str, T.Any]) -> str:
- separator = kwargs.get('separator', os.pathsep)
- if not isinstance(separator, str):
- raise InterpreterException("EnvironmentVariablesObject methods 'separator'"
- " argument needs to be a string.")
- return separator
-
def __deepcopy__(self, memo: T.Dict[str, object]) -> 'EnvironmentVariablesObject':
# Avoid trying to copy the intepreter
return EnvironmentVariablesObject(copy.deepcopy(self.held_object), self.interpreter)
@@ -260,31 +261,25 @@ class EnvironmentVariablesObject(ObjectHolder[build.EnvironmentVariables], Mutab
m = f'Overriding previous value of environment variable {name!r} with a new one'
FeatureNew('0.58.0', m).use(self.subproject)
- @stringArgs
- @permittedKwargs({'separator'})
@typed_pos_args('environment.set', str, varargs=str, min_varargs=1)
- def set_method(self, args: T.Tuple[str, T.List[str]], kwargs: T.Dict[str, T.Any]) -> None:
+ @typed_kwargs('environment.set', _ENV_SEPARATOR_KW)
+ def set_method(self, args: T.Tuple[str, T.List[str]], kwargs: 'EnvironmentSeparatorKW') -> None:
name, values = args
- separator = self.unpack_separator(kwargs)
- self.held_object.set(name, values, separator)
+ self.held_object.set(name, values, kwargs['separator'])
- @stringArgs
- @permittedKwargs({'separator'})
@typed_pos_args('environment.append', str, varargs=str, min_varargs=1)
- def append_method(self, args: T.Tuple[str, T.List[str]], kwargs: T.Dict[str, T.Any]) -> None:
+ @typed_kwargs('environment.append', _ENV_SEPARATOR_KW)
+ def append_method(self, args: T.Tuple[str, T.List[str]], kwargs: 'EnvironmentSeparatorKW') -> None:
name, values = args
- separator = self.unpack_separator(kwargs)
self.warn_if_has_name(name)
- self.held_object.append(name, values, separator)
+ self.held_object.append(name, values, kwargs['separator'])
- @stringArgs
- @permittedKwargs({'separator'})
@typed_pos_args('environment.prepend', str, varargs=str, min_varargs=1)
- def prepend_method(self, args: T.Tuple[str, T.List[str]], kwargs: T.Dict[str, T.Any]) -> None:
+ @typed_kwargs('environment.prepend', _ENV_SEPARATOR_KW)
+ def prepend_method(self, args: T.Tuple[str, T.List[str]], kwargs: 'EnvironmentSeparatorKW') -> None:
name, values = args
- separator = self.unpack_separator(kwargs)
self.warn_if_has_name(name)
- self.held_object.prepend(name, values, separator)
+ self.held_object.prepend(name, values, kwargs['separator'])
class ConfigurationDataObject(MutableInterpreterObject, MesonInterpreterObject):