From 1c9f8de7c90a3ca62e770fdfe5a4aee6f4146d83 Mon Sep 17 00:00:00 2001 From: Christian Brodbeck Date: Tue, 28 Jan 2025 13:50:13 -0500 Subject: [PATCH] ENH load.unpickle(): handle numpy backwards bug --- eelbrain/_io/pickle.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/eelbrain/_io/pickle.py b/eelbrain/_io/pickle.py index 299330a52..2ba453a5b 100644 --- a/eelbrain/_io/pickle.py +++ b/eelbrain/_io/pickle.py @@ -1,15 +1,21 @@ # Author: Christian Brodbeck +from packaging.version import Version from pathlib import Path from pickle import dump, HIGHEST_PROTOCOL, Unpickler from itertools import chain import os from typing import Any +import numpy + from .._data_obj import Dataset, NDVar, Var, SourceSpaceBase, ismodelobject from .._types import PathArg from .._utils import IS_WINDOWS, tqdm, ui +NUMPY_1 = Version(numpy.__version__) < Version('2') + + class EelUnpickler(Unpickler): def find_class(self, module, name): @@ -31,6 +37,9 @@ def find_class(self, module, name): elif module.startswith('pathlib'): if name == 'WindowsPath' and not IS_WINDOWS: name = 'Path' + elif NUMPY_1 and module.startswith('numpy._core.numeric'): + # This affected some pickles created with numpy 2 + module = module.replace('numpy._core.numeric', 'numpy.core.numeric') return Unpickler.find_class(self, module, name)