diff --git a/lisa/trace.py b/lisa/trace.py index d19e8a6194ab77feb8d9735e632cfb5812525427..9db083ad342b6d26c1415903733c61b831e5f5bb 100644 --- a/lisa/trace.py +++ b/lisa/trace.py @@ -252,9 +252,24 @@ def _logical_plan_update_paths(plan, update_path): except KeyError: return fixup_scans(obj.values()) else: + # Polars 1.2.0 has a slightly changed format where + # scan['paths'] is no longer a plain list[str]. It is a + # list[list[str] | bool]. This function handles both formats. + def dispatch_update(paths): + if isinstance(paths, str): + path = paths + return str(update_path(path)) + elif isinstance(paths, Iterable): + return [ + dispatch_update(path) + for path in paths + ] + else: + return paths + scan['paths'] = [ - str(update_path(path)) - for path in scan['paths'] + dispatch_update(paths) + for paths in scan['paths'] ] elif isinstance(obj, str): return