Spaces:
Runtime error
Runtime error
import _compat_pickle | |
import pickle | |
from .importer import Importer | |
class PackageUnpickler(pickle._Unpickler): # type: ignore[name-defined] | |
"""Package-aware unpickler. | |
This behaves the same as a normal unpickler, except it uses `importer` to | |
find any global names that it encounters while unpickling. | |
""" | |
def __init__(self, importer: Importer, *args, **kwargs): | |
super().__init__(*args, **kwargs) | |
self._importer = importer | |
def find_class(self, module, name): | |
# Subclasses may override this. | |
if self.proto < 3 and self.fix_imports: # type: ignore[attr-defined] | |
if (module, name) in _compat_pickle.NAME_MAPPING: | |
module, name = _compat_pickle.NAME_MAPPING[(module, name)] | |
elif module in _compat_pickle.IMPORT_MAPPING: | |
module = _compat_pickle.IMPORT_MAPPING[module] | |
mod = self._importer.import_module(module) | |
return getattr(mod, name) | |