From 00c4cf7d45c79be871295d0d77c42c92537ed387 Mon Sep 17 00:00:00 2001 From: Salamandar Date: Fri, 27 Apr 2018 12:03:03 +0200 Subject: [PATCH] Add Feature{New,Deprecated}Kwargs decorators --- mesonbuild/interpreterbase.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/mesonbuild/interpreterbase.py b/mesonbuild/interpreterbase.py index 649476dea..f80d46a52 100644 --- a/mesonbuild/interpreterbase.py +++ b/mesonbuild/interpreterbase.py @@ -199,6 +199,36 @@ class FeatureDeprecated: return f(*wrapped_args, **wrapped_kwargs) return wrapped +class FeatureNewKwargs: + def __init__(self, feature_name, feature_version, kwargs): + self.feature_name = feature_name + self.feature_version = feature_version + self.kwargs = kwargs + + def __call__(self, f): + @wraps(f) + def wrapped(*wrapped_args, **wrapped_kwargs): + for arg in self.kwargs: + if arg in wrapped_kwargs: + FeatureNew(arg + ' arg in ' + self.feature_name, self.feature_version).use() + return f(*wrapped_args, **wrapped_kwargs) + return wrapped + +class FeatureDeprecatedKwargs: + def __init__(self, feature_name, feature_version, kwargs): + self.feature_name = feature_name + self.feature_version = feature_version + self.kwargs = kwargs + + def __call__(self, f): + @wraps(f) + def wrapped(*wrapped_args, **wrapped_kwargs): + for arg in self.kwargs: + if arg in wrapped_kwargs: + FeatureDeprecated(arg + ' arg in ' + self.feature_name, self.feature_version).use() + return f(*wrapped_args, **wrapped_kwargs) + return wrapped + class InterpreterException(mesonlib.MesonException): pass