ó
¢X[\c           @` sU   d  d l  m Z m Z m Z d d l m Z m Z d e f d „  ƒ  YZ d „  Z d S(   i    (   t   absolute_importt   divisiont   print_functioni   (   t   ZictBaset   closet   Funcc           B` s’   e  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 d „  Z e Z d „  Z d „  Z RS(   s   Buffer a MutableMapping with a pair of input/output functions

    Parameters
    ----------
    dump: callable
        Function to call on value as we set it into the mapping
    load: callable
        Function to call on value as we pull it from the mapping
    d: MutableMapping

    Examples
    --------
    >>> def double(x):
    ...     return x * 2

    >>> def halve(x):
    ...     return x / 2

    >>> d = dict()
    >>> f = Func(double, halve, d)
    >>> f['x'] = 10
    >>> d
    {'x': 20}
    >>> f['x']
    10.0
    c         C` s   | |  _  | |  _ | |  _ d  S(   N(   t   dumpt   loadt   d(   t   selfR   R   R   (    (    s(   lib/python2.7/site-packages/zict/func.pyt   __init__!   s    		c         C` s   |  j  |  j | ƒ S(   N(   R   R   (   R	   t   key(    (    s(   lib/python2.7/site-packages/zict/func.pyt   __getitem__&   s    c         C` s   |  j  | ƒ |  j | <d  S(   N(   R   R   (   R	   R   t   value(    (    s(   lib/python2.7/site-packages/zict/func.pyt   __setitem__)   s    c         C` s   | |  j  k S(   N(   R   (   R	   R   (    (    s(   lib/python2.7/site-packages/zict/func.pyt   __contains__,   s    c         C` s   |  j  | =d  S(   N(   R   (   R	   R   (    (    s(   lib/python2.7/site-packages/zict/func.pyt   __delitem__/   s    c         C` s   |  j  j ƒ  S(   N(   R   t   keys(   R	   (    (    s(   lib/python2.7/site-packages/zict/func.pyR   2   s    c         C` s   t  |  j |  j j ƒ  ƒ S(   N(   t   mapR   R   t   values(   R	   (    (    s(   lib/python2.7/site-packages/zict/func.pyR   5   s    c         ` s   ‡  f d †  ˆ  j  j ƒ  Dƒ S(   Nc         3` s*   |  ]  \ } } | ˆ  j  | ƒ f Vq d  S(   N(   R   (   t   .0t   kt   v(   R	   (    s(   lib/python2.7/site-packages/zict/func.pys	   <genexpr>9   s    (   R   t   items(   R	   (    (   R	   s(   lib/python2.7/site-packages/zict/func.pyR   8   s    c         ` s$   ˆ  j  j ‡  f d †  | Dƒ ƒ d  S(   Nc         3` s*   |  ]  \ } } | ˆ  j  | ƒ f Vq d  S(   N(   R   (   R   R   R   (   R	   (    s(   lib/python2.7/site-packages/zict/func.pys	   <genexpr><   s    (   R   t   update(   R	   R   (    (   R	   s(   lib/python2.7/site-packages/zict/func.pyt
   _do_update;   s    c         C` s   t  |  j ƒ S(   N(   t   iterR   (   R	   (    (    s(   lib/python2.7/site-packages/zict/func.pyt   __iter__>   s    c         C` s   t  |  j ƒ S(   N(   t   lenR   (   R	   (    (    s(   lib/python2.7/site-packages/zict/func.pyt   __len__A   s    c         C` s,   d t  |  j ƒ t  |  j ƒ t |  j ƒ f S(   Ns   <Func: %s<->%s %s>(   t   funcnameR   R   t   strR   (   R	   (    (    s(   lib/python2.7/site-packages/zict/func.pyt   __str__D   s    c         C` s   |  j  j ƒ  d  S(   N(   R   t   flush(   R	   (    (    s(   lib/python2.7/site-packages/zict/func.pyR!   K   s    c         C` s   t  |  j ƒ d  S(   N(   R   R   (   R	   (    (    s(   lib/python2.7/site-packages/zict/func.pyR   N   s    (   t   __name__t
   __module__t   __doc__R
   R   R   R   R   R   R   R   R   R   R   R    t   __repr__R!   R   (    (    (    s(   lib/python2.7/site-packages/zict/func.pyR      s    													c         C` s?   x t  |  d ƒ r |  j }  q Wy |  j SWn t |  ƒ SXd S(   s   Get the name of a function.t   funcN(   t   hasattrR&   R"   R   (   R&   (    (    s(   lib/python2.7/site-packages/zict/func.pyR   R   s    N(	   t
   __future__R    R   R   t   commonR   R   R   R   (    (    (    s(   lib/python2.7/site-packages/zict/func.pyt   <module>   s   L