diff --git a/lisa/analysis/_proxy.py b/lisa/analysis/_proxy.py index b943286ef3c23fe22e177af0b27f2268bffea06e..7e43cb7dfa794c0a6f83b3b77724cc00b60964b2 100644 --- a/lisa/analysis/_proxy.py +++ b/lisa/analysis/_proxy.py @@ -33,62 +33,65 @@ class _AnalysisPreset: self._params = params def __getattr__(self, attr): - x = getattr(self._instance, attr) - try: - sig = inspect.signature(x) - except Exception: - return x + if attr == '_instance': + raise AttributeError else: - extra = { - k: v - for k, v in self._params.items() - if k in sig.parameters - } - - @functools.wraps(x) - def wrapper(*args, **kwargs): - kwargs = { - **extra, - **sig_bind( - sig, - args=args, - kwargs=kwargs, - include_defaults=False - )[0], + x = getattr(self._instance, attr) + try: + sig = inspect.signature(x) + except Exception: + return x + else: + extra = { + k: v + for k, v in self._params.items() + if k in sig.parameters } - return x(**kwargs) - - # Update the signature so it shows the effective default value - def update_default(param): - # Make it keyword-only if it does not have a default value, - # otherwise we might end up setting a parameter without a - # default after one with a default, which is unfortunately - # illegal. - if param.kind in (param.VAR_POSITIONAL, param.VAR_KEYWORD): - kind = param.kind - else: - kind = param.KEYWORD_ONLY - try: - default = extra[param.name] - except KeyError: - default = param.default - - return param.replace( - default=default, - kind=kind - ) + @functools.wraps(x) + def wrapper(*args, **kwargs): + kwargs = { + **extra, + **sig_bind( + sig, + args=args, + kwargs=kwargs, + include_defaults=False + )[0], + } + return x(**kwargs) + + # Update the signature so it shows the effective default value + def update_default(param): + # Make it keyword-only if it does not have a default value, + # otherwise we might end up setting a parameter without a + # default after one with a default, which is unfortunately + # illegal. + if param.kind in (param.VAR_POSITIONAL, param.VAR_KEYWORD): + kind = param.kind + else: + kind = param.KEYWORD_ONLY + + try: + default = extra[param.name] + except KeyError: + default = param.default + + return param.replace( + default=default, + kind=kind + ) - wrapper.__signature__ = sig.replace( - parameters=list( - map( - update_default, - sig.parameters.values() + wrapper.__signature__ = sig.replace( + parameters=list( + map( + update_default, + sig.parameters.values() + ) ) ) - ) - return wrapper + return wrapper class AnalysisProxy(Loggable): diff --git a/lisa/tests/base.py b/lisa/tests/base.py index 661e9d758fef9b62b88131e4766c0083f76896e1..5fe208eab21ef72e6693d58aa866b2492984d2ac 100644 --- a/lisa/tests/base.py +++ b/lisa/tests/base.py @@ -1372,10 +1372,6 @@ class FtraceTestBundleBase(TestBundleBase): # iterations of the tests with exekall, leading to crashes. # Therefore, disable the on-disk swap. enable_swap=False, - # The event list that gets passed has already undergone namespace - # expansion when multiple ftrace conf got merged together, so there - # is no need to repeat it again. - events_namespaces=[], ) def get_trace(self, events=None, **kwargs): diff --git a/pytest.ini b/pytest.ini index 5670132044c36c9e4a2384ee7a0e0c28ed0ec7cb..3c0b1fcc2739e3090a311e258aedff1a7e2417c7 100644 --- a/pytest.ini +++ b/pytest.ini @@ -18,3 +18,4 @@ filterwarnings = ignore::DeprecationWarning:bokeh.*: ignore::DeprecationWarning:traitlets.*: ignore::DeprecationWarning:future.*: + ignore::DeprecationWarning:pandas.*: