ó
ë\c           @` sŪ   d  d l  m Z m Z m Z y d  d l m Z Wn! e k
 rS d  d l m Z n Xd  d l Z d  d l	 Z	 d e f d     YZ
 e j d  d k rĄ d   Z n	 d   Z d S(	   i    (   t   absolute_importt   divisiont   print_function(   t   MutableMappingNt   Zipc           B` s   e  Z d  Z d d  Z e d    Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z RS(   s­   Mutable Mapping interface to a Zip file

    Keys must be strings, values must be bytes

    Parameters
    ----------
    filename: string
    mode: string, ('r', 'w', 'a'), defaults to 'a'

    Examples
    --------
    >>> z = Zip('myfile.zip')  # doctest: +SKIP
    >>> z['x'] = b'123'  # doctest: +SKIP
    >>> z['x']  # doctest: +SKIP
    b'123'
    >>> z.flush()  # flush and write metadata to disk  # doctest: +SKIP
    t   ac         C` s   | |  _  | |  _ d  |  _ d  S(   N(   t   filenamet   modet   Nonet   _file(   t   selfR   R   (    (    s'   lib/python2.7/site-packages/zict/zip.pyt   __init__   s    		c         C` s]   |  j  d k r t d   n  |  j s5 |  j j rV t j |  j d |  j  |  _ n  |  j S(   Nt   closeds   File closedR   (   R   t   IOErrorR	   t   fpt   zipfilet   ZipFileR   (   R
   (    (    s'   lib/python2.7/site-packages/zict/zip.pyt   file"   s
    !c         C` s   |  j  j |  S(   N(   R   t   read(   R
   t   key(    (    s'   lib/python2.7/site-packages/zict/zip.pyt   __getitem__*   s    c         C` s   |  j  j | t |   d  S(   N(   R   t   writestrt   to_bytes(   R
   R   t   value(    (    s'   lib/python2.7/site-packages/zict/zip.pyt   __setitem__-   s    c         C` s   d   |  j  j D S(   Nc         s` s   |  ] } | j  Vq d  S(   N(   R   (   t   .0t   zi(    (    s'   lib/python2.7/site-packages/zict/zip.pys	   <genexpr>1   s    (   R   t   filelist(   R
   (    (    s'   lib/python2.7/site-packages/zict/zip.pyt   keys0   s    c         C` s   t  |  j j |  j    S(   N(   t   mapR   R   R   (   R
   (    (    s'   lib/python2.7/site-packages/zict/zip.pyt   values3   s    c         ` s     f d     j  j D S(   Nc         3` s-   |  ]# } | j    j j | j   f Vq d  S(   N(   R   R   R   (   R   R   (   R
   (    s'   lib/python2.7/site-packages/zict/zip.pys	   <genexpr>7   s   (   R   R   (   R
   (    (   R
   s'   lib/python2.7/site-packages/zict/zip.pyt   items6   s    c         C` s
   |  j    S(   N(   R   (   R
   (    (    s'   lib/python2.7/site-packages/zict/zip.pyt   __iter__:   s    c         C` s   t  d   d  S(   Ns   Not supported by stdlib zipfile(   t   NotImplementedError(   R
   R   (    (    s'   lib/python2.7/site-packages/zict/zip.pyt   __delitem__=   s    c         C` s   t  |  j j  S(   N(   t   lenR   R   (   R
   (    (    s'   lib/python2.7/site-packages/zict/zip.pyt   __len__@   s    c         C` s!   |  j  j j   |  j  j   d  S(   N(   R   R   t   flusht   close(   R
   (    (    s'   lib/python2.7/site-packages/zict/zip.pyR%   C   s    c         C` s   |  j    d |  _ d  S(   NR   (   R%   R   (   R
   (    (    s'   lib/python2.7/site-packages/zict/zip.pyR&   G   s    
c         C` s   |  S(   N(    (   R
   (    (    s'   lib/python2.7/site-packages/zict/zip.pyt	   __enter__K   s    c         C` s   |  j    d  S(   N(   R&   (   R
   t   typeR   t	   traceback(    (    s'   lib/python2.7/site-packages/zict/zip.pyt   __exit__N   s    (   t   __name__t
   __module__t   __doc__R   t   propertyR   R   R   R   R   R   R    R"   R$   R%   R&   R'   R*   (    (    (    s'   lib/python2.7/site-packages/zict/zip.pyR      s   											i   c         C` s   t  |  t  r t |   S|  S(   N(   t
   isinstancet	   bytearrayt   bytes(   t   x(    (    s'   lib/python2.7/site-packages/zict/zip.pyR   S   s    
c         C` s   |  S(   N(    (   R2   (    (    s'   lib/python2.7/site-packages/zict/zip.pyt   <lambda>X   t    (   t
   __future__R    R   R   t   collections.abcR   t   ImportErrort   collectionst   sysR   R   t   version_infoR   (    (    (    s'   lib/python2.7/site-packages/zict/zip.pyt   <module>   s   G