ó
ê™xTc           @   sS   d  Z  d d l m Z d „  Z d „  Z d „  Z e d „ Z d „  Z d „  Z	 d	 S(
   sî   
Utility functions for automatically opening and serializing a python object into
a file using the latest pickling protocol. Can optionally compress the output if
file_name ends with .gz. Also provides functions to read that object back.
iÿÿÿÿ(   t   divisionc         C   s”   d d l  } | j j |  ƒ }  d d l m } d d l m } y | j d |  d | ƒ SWn5 t k
 r� } t d | |  ƒ t	 | ƒ f ƒ ‚ n Xd S(   st   
  Wraps libtbx.smart_open.

  Parameters
  ----------
  file_name : str
  mode : str

  Returns
  -------
  file
  iÿÿÿÿN(   t   show_string(   t
   smart_opent	   file_namet   modes   Cannot open pickle file %s (%s)(
   t   ost   patht
   expandusert   libtbx.str_utilsR   t   libtbxR   t   filet   IOErrort   str(   R   R   R   R   R   t   e(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/easy_pickle.pyt   _open	   s     c         C   s+   d d l  } | j | t |  d ƒ | j ƒ S(   sñ   
  Wraps cPickle.dump.

  Parameters
  ----------
  file_name : str
  obj : object

  Examples
  --------
  >>> from libtbx.easy_pickle import dump, load
  >>> dump("output.pkl.gz", [1, 2, 3])
  >>> print load("output.pkl.gz")
  [1, 2, 3]
  iÿÿÿÿNt   wb(   t   cPicklet   dumpR   t   HIGHEST_PROTOCOL(   R   t   objR   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/easy_pickle.pyR      s    c         C   s   d d l  } | j |  | j ƒ S(   s_   
  Wraps cPickle.dumps.

  Parameters
  ----------
  obj : object

  Returns
  -------
  str
  iÿÿÿÿN(   R   t   dumpsR   (   R   R   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/easy_pickle.pyR   2   s    c         C   sD   d d l  } | r. | j t |  d ƒ j ƒ  ƒ S| j t |  d ƒ ƒ S(   sþ   
  Wraps cPickle.load.

  Parameters
  ----------
  file_name : str
  faster_but_using_more_memory : bool, optional
      Optionally read the entirety of a file into memory before converting it
      into a python object.

  Returns
  -------
  object
  iÿÿÿÿNt   rb(   R   t   loadsR   t   readt   load(   R   t   faster_but_using_more_memoryR   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/easy_pickle.pyR   A   s    c         C   s   d d l  } | j |  ƒ S(   sÚ   
  Wraps cPickle.loads.

  Parameters
  ----------
  string : str

  Returns
  -------
  object

  Examples
  --------
  >>> from libtbx.easy_pickle import dumps, loads
  >>> print loads(dumps([1, 2, 3])
  [1, 2, 3]
  iÿÿÿÿN(   R   R   (   t   stringR   (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/easy_pickle.pyR   U   s    c          O   s   t  d |  | f ƒ d S(   s1   
  Dumps args and keyword_args to args.pickle.
  s   args.pickleN(   R   (   t   argst   keyword_args(    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/easy_pickle.pyt	   dump_argsj   s    N(
   t   __doc__t
   __future__R    R   R   R   t   TrueR   R   R   (    (    (    s@   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/libtbx/easy_pickle.pyt   <module>   s   				