From d41543be27fc571ff0659d5fc3078e275677e3ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Robert?= Date: Wed, 18 Dec 2024 10:48:22 +0100 Subject: [PATCH] BUG: fix an issue where np.histogramdd could create infinite recursion on some inputs --- unyt/_array_functions.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/unyt/_array_functions.py b/unyt/_array_functions.py index 62aca69b..3bd811b7 100644 --- a/unyt/_array_functions.py +++ b/unyt/_array_functions.py @@ -286,9 +286,16 @@ def _histogramdd( # don't getattr(..., "units", NULL_UNIT) because e.g. we don't want # a unyt_array if weights are not a unyt_array and not density if density: + divider_units = 1 * NULL_UNIT for s in sample: - counts /= getattr(s, "units", 1) - counts *= getattr(weights, "units", 1) + if not hasattr(s, "units"): + continue + divider_units *= s.units + if divider_units != NULL_UNIT: + counts /= divider_units + + if weights is not None and hasattr(weights, "units"): + counts *= weights.units return counts, tuple(_bin * getattr(s, "units", 1) for _bin, s in zip(bins, sample))