|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try: |
|
from .__info__ import __version__, __author__, __doc__, __license__ |
|
except: |
|
import os |
|
import sys |
|
parent = os.path.dirname(os.path.abspath(os.path.dirname(__file__))) |
|
sys.path.append(parent) |
|
|
|
from version import (__version__, __author__, |
|
get_license_text, get_readme_as_rst) |
|
__license__ = get_license_text(os.path.join(parent, 'LICENSE')) |
|
__license__ = "\n%s" % __license__ |
|
__doc__ = get_readme_as_rst(os.path.join(parent, 'README.md')) |
|
del os, sys, parent, get_license_text, get_readme_as_rst |
|
|
|
|
|
from ._dill import ( |
|
dump, dumps, load, loads, copy, |
|
Pickler, Unpickler, register, pickle, pickles, check, |
|
DEFAULT_PROTOCOL, HIGHEST_PROTOCOL, HANDLE_FMODE, CONTENTS_FMODE, FILE_FMODE, |
|
PickleError, PickleWarning, PicklingError, PicklingWarning, UnpicklingError, |
|
UnpicklingWarning, |
|
) |
|
from .session import ( |
|
dump_module, load_module, load_module_asdict, |
|
dump_session, load_session |
|
) |
|
from . import detect, logger, session, source, temp |
|
|
|
|
|
from .settings import settings |
|
|
|
|
|
logger.trace(False) |
|
|
|
objects = {} |
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
""" |
|
from importlib import reload |
|
|
|
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 |
|
|
|
[types.__dict__.pop(obj) for obj in list(types.__dict__.keys()) \ |
|
if obj.find('Type') != -1] |
|
|
|
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__[-491:-118]) |
|
return |
|
|
|
|
|
|