ó
]c           @   s   d  e  f d     YZ d S(   t   IndexedListc           B   sM   e  Z d  Z i  Z d d  Z d   Z d   Z d   Z d   Z	 d   Z
 RS(   sī   
    List with optimised access by value
    Based on Alex Martelli's recipe

    http://code.activestate.com/recipes/52303-the-auxiliary-dictionary-idiom-for-sequences-with-/
    c         C   sh   t  |  _ i  |  _ | d  k	 rd t |  _ x: t |  D]) \ } } | |  j | <t j |  |  q4 Wn  d  S(   N(   t   Truet   cleant   _dictt   Nonet   Falset	   enumeratet   listt   append(   t   selft   iterablet   idxt   val(    (    s:   lib/python2.7/site-packages/openpyxl/utils/indexed_list.pyt   __init__   s    			c         C   sV   i  |  _  d } x7 |  D]/ } | |  j  k r | |  j  | <| d 7} q q Wt |  _ d  S(   Ni    i   (   R   R   R   (   R	   R   t   value(    (    s:   lib/python2.7/site-packages/openpyxl/utils/indexed_list.pyt   _rebuild_dict   s    	c         C   s#   |  j  s |  j   n  | |  j k S(   N(   R   R   R   (   R	   R   (    (    s:   lib/python2.7/site-packages/openpyxl/utils/indexed_list.pyt   __contains__    s    	c         C   s!   | |  k r |  j  | St  d  S(   N(   R   t
   ValueError(   R	   R   (    (    s:   lib/python2.7/site-packages/openpyxl/utils/indexed_list.pyt   index%   s    c         C   s9   | |  j  k r5 t |   |  j  | <t j |  |  n  d  S(   N(   R   t   lenR   R   (   R	   R   (    (    s:   lib/python2.7/site-packages/openpyxl/utils/indexed_list.pyR   *   s    c         C   s   |  j  |  |  j | S(   N(   R   R   (   R	   R   (    (    s:   lib/python2.7/site-packages/openpyxl/utils/indexed_list.pyt   add/   s    N(   t   __name__t
   __module__t   __doc__R   R   R   R   R   R   R   R   (    (    (    s:   lib/python2.7/site-packages/openpyxl/utils/indexed_list.pyR       s   						N(   R   R    (    (    (    s:   lib/python2.7/site-packages/openpyxl/utils/indexed_list.pyt   <module>   t    