#!/usr/bin/env python
#
# Author: Mike McKerns (mmckerns @caltech and @uqfoundation)
# Copyright (c) 2008-2016 California Institute of Technology.
# Copyright (c) 2016-2019 The Uncertainty Quantification Foundation.
# License: 3-clause BSD. The full license text is available at:
# - https://github.com/uqfoundation/dill/blob/master/LICENSE
# get version numbers, license, and long description
try:
from .info import this_version as __version__
from .info import readme as __doc__, license as __license__
except ImportError:
msg = """First run 'python setup.py build' to build dill."""
raise ImportError(msg)
__author__ = 'Mike McKerns'
__doc__ = """
""" + __doc__
__license__ = """
""" + __license__
from ._dill import dump, dumps, load, loads, dump_session, load_session, \
Pickler, Unpickler, register, copy, pickle, pickles, check, \
HIGHEST_PROTOCOL, DEFAULT_PROTOCOL, PicklingError, UnpicklingError, \
HANDLE_FMODE, CONTENTS_FMODE, FILE_FMODE
from . import source, temp, detect
# get global settings
from .settings import settings
# make sure "trace" is turned off
detect.trace(False)
try:
from importlib import reload
except ImportError:
try:
from imp import reload
except ImportError:
pass
# put the objects in order, if possible
try:
from collections import OrderedDict as odict
except ImportError:
try:
from ordereddict import OrderedDict as odict
except ImportError:
odict = dict
objects = odict()
# local import of dill._objects
#from . import _objects
#objects.update(_objects.succeeds)
#del _objects
# local import of dill.objtypes
from . import objtypes as types
def load_types(pickleable=True, unpickleable=True):
"""load pickleable and/or unpickleable types to ``dill.types``
``dill.types`` is meant to mimic the ``types`` module, providing a
registry of object types. By default, the module is empty (for import
speed purposes). Use the ``load_types`` function to load selected object
types to the ``dill.types`` module.
Args:
pickleable (bool, default=True): if True, load pickleable types.
unpickleable (bool, default=True): if True, load unpickleable types.
Returns:
None
"""
# local import of dill.objects
from . import _objects
if pickleable:
objects.update(_objects.succeeds)
else:
[objects.pop(obj,None) for obj in _objects.succeeds]
if unpickleable:
objects.update(_objects.failures)
else:
[objects.pop(obj,None) for obj in _objects.failures]
objects.update(_objects.registered)
del _objects
# reset contents of types to 'empty'
[types.__dict__.pop(obj) for obj in list(types.__dict__.keys()) \
if obj.find('Type') != -1]
# add corresponding types from objects to types
reload(types)
def extend(use_dill=True):
'''add (or remove) dill types to/from the pickle registry
by default, ``dill`` populates its types to ``pickle.Pickler.dispatch``.
Thus, all ``dill`` types are available upon calling ``'import pickle'``.
To drop all ``dill`` types from the ``pickle`` dispatch, *use_dill=False*.
Args:
use_dill (bool, default=True): if True, extend the dispatch table.
Returns:
None
'''
from ._dill import _revert_extension, _extend
if use_dill: _extend()
else: _revert_extension()
return
extend()
def license():
"""print license"""
print (__license__)
return
def citation():
"""print citation"""
print (__doc__[-501:-123])
return
del odict
# end of file