From fc0397b30999fb632491d14c5e1ab070c85dd105 Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Thu, 10 Jun 2021 13:18:42 +0200 Subject: [PATCH] interpreter: Split Disabler from interpreterbase.py --- mesonbuild/interpreterbase/__init__.py | 8 +--- mesonbuild/interpreterbase/disabler.py | 42 +++++++++++++++++++ mesonbuild/interpreterbase/interpreterbase.py | 31 +------------- 3 files changed, 44 insertions(+), 37 deletions(-) create mode 100644 mesonbuild/interpreterbase/disabler.py diff --git a/mesonbuild/interpreterbase/__init__.py b/mesonbuild/interpreterbase/__init__.py index 0d9c4ed15..5f33848dd 100644 --- a/mesonbuild/interpreterbase/__init__.py +++ b/mesonbuild/interpreterbase/__init__.py @@ -20,8 +20,6 @@ __all__ = [ 'MutableInterpreterObject', 'Disabler', - 'is_disabler', - 'is_arg_disabled', 'is_disabled', 'InterpreterException', @@ -90,16 +88,12 @@ from .exceptions import ( BreakRequest, ) +from .disabler import Disabler, is_disabled from .helpers import check_stringlist, default_resolve_key, flatten from .interpreterbase import ( MesonVersionString, - Disabler, - is_disabler, - is_arg_disabled, - is_disabled, - noPosargs, builtinMethodNoKwargs, noKwargs, diff --git a/mesonbuild/interpreterbase/disabler.py b/mesonbuild/interpreterbase/disabler.py new file mode 100644 index 000000000..50bc5bb47 --- /dev/null +++ b/mesonbuild/interpreterbase/disabler.py @@ -0,0 +1,42 @@ +# Copyright 2013-2021 The Meson development team + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from .baseobjects import InterpreterObject +import typing as T + +class Disabler(InterpreterObject): + def __init__(self) -> None: + super().__init__() + self.methods.update({'found': self.found_method}) + + def found_method(self, args: T.Sequence[T.Any], kwargs: T.Dict[str, T.Any]) -> bool: + return False + +def _is_arg_disabled(arg: T.Any) -> bool: + if isinstance(arg, Disabler): + return True + if isinstance(arg, list): + for i in arg: + if _is_arg_disabled(i): + return True + return False + +def is_disabled(args: T.Sequence[T.Any], kwargs: T.Dict[str, T.Any]) -> bool: + for i in args: + if _is_arg_disabled(i): + return True + for i in kwargs.values(): + if _is_arg_disabled(i): + return True + return False diff --git a/mesonbuild/interpreterbase/interpreterbase.py b/mesonbuild/interpreterbase/interpreterbase.py index 8c28b7824..8181a052c 100644 --- a/mesonbuild/interpreterbase/interpreterbase.py +++ b/mesonbuild/interpreterbase/interpreterbase.py @@ -39,6 +39,7 @@ from .exceptions import ( BreakRequest ) +from .disabler import Disabler, is_disabled from .helpers import check_stringlist, default_resolve_key, flatten, get_callee_args from functools import wraps @@ -591,36 +592,6 @@ class FeatureNewKwargs(FeatureCheckKwargsBase): class FeatureDeprecatedKwargs(FeatureCheckKwargsBase): feature_check_class = FeatureDeprecated - -class Disabler(InterpreterObject): - def __init__(self) -> None: - super().__init__() - self.methods.update({'found': self.found_method}) - - def found_method(self, args: T.Sequence[T.Any], kwargs: T.Dict[str, T.Any]) -> bool: - return False - -def is_disabler(i: T.Any) -> bool: - return isinstance(i, Disabler) - -def is_arg_disabled(arg: T.Any) -> bool: - if is_disabler(arg): - return True - if isinstance(arg, list): - for i in arg: - if is_arg_disabled(i): - return True - return False - -def is_disabled(args: T.Sequence[T.Any], kwargs: T.Dict[str, T.Any]) -> bool: - for i in args: - if is_arg_disabled(i): - return True - for i in kwargs.values(): - if is_arg_disabled(i): - return True - return False - class InterpreterBase: elementary_types = (int, float, str, bool, list)