diff --git a/code_generator_raw_uproot/servicex/raw_uproot_code_generator/request_translator.py b/code_generator_raw_uproot/servicex/raw_uproot_code_generator/request_translator.py index 7c77e00f..ad88da75 100644 --- a/code_generator_raw_uproot/servicex/raw_uproot_code_generator/request_translator.py +++ b/code_generator_raw_uproot/servicex/raw_uproot_code_generator/request_translator.py @@ -1,4 +1,4 @@ -# Copyright (c) 2019, IRIS-HEP +# Copyright (c) 2019-2025, IRIS-HEP # All rights reserved. # # Redistribution and use in source and binary forms, with or without @@ -62,6 +62,11 @@ def run_query(file_path): rv_arrays_trees.update(a); rv_arrays_histograms.update(b) return rv_arrays_trees, rv_arrays_histograms +def fa(func, axis=1): + # change the axis argument + import functools + return functools.partial(func, axis=axis) + def run_single_query(file_path, query): import uproot import awkward as ak @@ -69,34 +74,34 @@ def run_single_query(file_path, query): wait_exponential_jitter lang = uproot.language.python.PythonLanguage() - lang.functions.update({{ 'concatenate': ak.concatenate, + lang.functions.update({{ 'concatenate': fa(ak.concatenate), 'where': ak.where, - 'flatten': ak.flatten, + 'flatten': fa(ak.flatten, axis=2), 'num': ak.num, - 'count': ak.count, - 'count_nonzero': ak.count_nonzero, - 'sum': ak.sum, - 'nansum': ak.nansum, - 'prod': ak.prod, - 'nanprod': ak.nanprod, - 'any': ak.any, - 'all': ak.all, - 'min': ak.min, - 'nanmin': ak.nanmin, - 'max': ak.max, - 'nanmax': ak.nanmax, - 'argmin': ak.argmin, - 'nanargmin': ak.nanargmin, - 'argmax': ak.argmax, - 'nanargmax': ak.nanargmax, - 'moment': ak.moment, - 'mean': ak.mean, - 'nanmean': ak.nanmean, - 'var': ak.var, - 'nanvar': ak.nanvar, - 'std': ak.std, - 'nanstd': ak.nanstd, - 'softmax': ak.softmax, + 'count': fa(ak.count), + 'count_nonzero': fa(ak.count_nonzero), + 'sum': fa(ak.sum), + 'nansum': fa(ak.nansum), + 'prod': fa(ak.prod), + 'nanprod': fa(ak.nanprod), + 'any': fa(ak.any), + 'all': fa(ak.all), + 'min': fa(ak.min), + 'nanmin': fa(ak.nanmin), + 'max': fa(ak.max), + 'nanmax': fa(ak.nanmax), + 'argmin': fa(ak.argmin), + 'nanargmin': fa(ak.nanargmin), + 'argmax': fa(ak.argmax), + 'nanargmax': fa(ak.nanargmax), + 'moment': fa(ak.moment), + 'mean': fa(ak.mean), + 'nanmean': fa(ak.nanmean), + 'var': fa(ak.var), + 'nanvar': fa(ak.nanvar), + 'std': fa(ak.std), + 'nanstd': fa(ak.nanstd), + 'softmax': fa(ak.softmax), 'sort': ak.sort, 'argsort': ak.argsort, 'mask': ak.mask, diff --git a/code_generator_raw_uproot/tests/test_src.py b/code_generator_raw_uproot/tests/test_src.py index c0fc3d35..9fa2413b 100644 --- a/code_generator_raw_uproot/tests/test_src.py +++ b/code_generator_raw_uproot/tests/test_src.py @@ -50,7 +50,7 @@ def test_generate_code(): 'filter_name': ['lbn']}, {'copy_histograms': 'CutBookkeeper*'} ]) - expected_hash = "5c3235898f268e81080455c92b7c914e" + expected_hash = "b0bd4d7cf19f52a2ad9719233aa9982f" result = translator.generate_code(query, tmpdirname) # is the generated code at least syntactically valid Python?