Ñò
—äoKc        
   @   s•  d  Z  d d k l Z d Z d Z d Z d Z d d g Z d d	 k Z e i	 d
  Z
 e
 d
 d
 f j  o e d ƒ ‚ n d d	 k Z d d	 k Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ e d j oˆ e
 d
 d f j  o e d ƒ ‚ n e i d ƒ d d	 k Z e i i d ƒ Z e i i ƒ  Z e i h e
 d 6ƒ e i e d e ƒn d	 S(   s)   A dict that keeps keys in insertion orderiÿÿÿÿ(   t
   generatorss\   Nicola Larosa <nico-NoSp@m-tekNico.net>,Michael Foord <fuzzyman AT voidspace DOT org DOT uk>s   restructuredtext ens0   $Id: odict.py 129 2005-09-12 18:15:28Z teknico $s   0.2.2t   OrderedDictt   SequenceOrderedDictNi   s   Python v.2.2 or later requiredc           B   s[  e  Z d  Z d$ e 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 d „  Z d „  Z d „  Z d „  Z d% d „ Z d „  Z d „  Z e Z d „  Z d „  Z d „  Z d d „ Z d% d „ Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d  „  Z% d! „  Z& d" „  Z' d# „  Z( RS(&   s  
    A class of dictionary that keeps the insertion order of keys.
    
    All appropriate methods return keys, items, or values in an ordered way.
    
    All normal dictionary methods are available. Update and comparison is
    restricted to other OrderedDict objects.
    
    Various sequence methods are available, including the ability to explicitly
    mutate the key ordering.
    
    __contains__ tests:
    
    >>> d = OrderedDict(((1, 3),))
    >>> 1 in d
    1
    >>> 4 in d
    0
    
    __getitem__ tests:
    
    >>> OrderedDict(((1, 3), (3, 2), (2, 1)))[2]
    1
    >>> OrderedDict(((1, 3), (3, 2), (2, 1)))[4]
    Traceback (most recent call last):
    KeyError: 4
    
    __len__ tests:
    
    >>> len(OrderedDict())
    0
    >>> len(OrderedDict(((1, 3), (3, 2), (2, 1))))
    3
    
    get tests:
    
    >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
    >>> d.get(1)
    3
    >>> d.get(4) is None
    1
    >>> d.get(4, 5)
    5
    >>> d
    OrderedDict([(1, 3), (3, 2), (2, 1)])
    
    has_key tests:
    
    >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
    >>> d.has_key(1)
    1
    >>> d.has_key(4)
    0
    c         C   sƒ   | |  _  t i |  ƒ t | t ƒ o# | i ƒ  |  _ t i |  | ƒ n7 t | t ƒ o t d ƒ ‚ n g  |  _ |  i | ƒ d S(   sL  
        Create a new ordered dictionary. Cannot init from a normal dict,
        nor from kwargs, since items order is undefined in those cases.
        
        If the ``strict`` keyword argument is ``True`` (``False`` is the
        default) then when doing slice assignment - the ``OrderedDict`` you are
        assigning from *must not* contain any keys in the remaining dict.
        
        >>> OrderedDict()
        OrderedDict([])
        >>> OrderedDict({1: 1})
        Traceback (most recent call last):
        TypeError: undefined order, cannot get items from dict
        >>> OrderedDict({1: 1}.items())
        OrderedDict([(1, 1)])
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> d
        OrderedDict([(1, 3), (3, 2), (2, 1)])
        >>> OrderedDict(d)
        OrderedDict([(1, 3), (3, 2), (2, 1)])
        s+   undefined order, cannot get items from dictN(	   t   strictt   dictt   __init__t
   isinstanceR   t   keyst	   _sequencet   updatet	   TypeError(   t   selft   init_valR   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   ^   s    		c         C   ss   t  | t i ƒ o< |  i | } x | D] } t i |  | ƒ q' W|  i | =n! t i |  | ƒ |  i i | ƒ d S(   sx  
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> del d[3]
        >>> d
        OrderedDict([(1, 3), (2, 1)])
        >>> del d[3]
        Traceback (most recent call last):
        KeyError: 3
        >>> d[3] = 2
        >>> d
        OrderedDict([(1, 3), (2, 1), (3, 2)])
        >>> del d[0:1]
        >>> d
        OrderedDict([(2, 1), (3, 2)])
        N(   R   t   typest	   SliceTypeR   R   t   __delitem__t   remove(   R   t   keyR   t   entry(    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   ‚   s     c         C   s/   t  | t ƒ o |  i ƒ  | i ƒ  j St Sd S(   s‡  
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> d == OrderedDict(d)
        True
        >>> d == OrderedDict(((1, 3), (2, 1), (3, 2)))
        False
        >>> d == OrderedDict(((1, 0), (3, 2), (2, 1)))
        False
        >>> d == OrderedDict(((0, 3), (3, 2), (2, 1)))
        False
        >>> d == dict(d)
        False
        >>> d == False
        False
        N(   R   R   t   itemst   False(   R   t   other(    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __eq__ž   s    c         C   s6   t  | t ƒ p t d ƒ ‚ n |  i ƒ  | i ƒ  j  S(   s3  
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> c = OrderedDict(((0, 3), (3, 2), (2, 1)))
        >>> c < d
        True
        >>> d < c
        False
        >>> d < dict(c)
        Traceback (most recent call last):
        TypeError: Can only compare with other OrderedDicts
        s(   Can only compare with other OrderedDicts(   R   R   R
   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __lt__µ   s    c         C   s6   t  | t ƒ p t d ƒ ‚ n |  i ƒ  | i ƒ  j S(   su  
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> c = OrderedDict(((0, 3), (3, 2), (2, 1)))
        >>> e = OrderedDict(d)
        >>> c <= d
        True
        >>> d <= c
        False
        >>> d <= dict(c)
        Traceback (most recent call last):
        TypeError: Can only compare with other OrderedDicts
        >>> d <= e
        True
        s(   Can only compare with other OrderedDicts(   R   R   R
   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __le__Ç   s    c         C   s0   t  | t ƒ o |  i ƒ  | i ƒ  j St Sd S(   s„  
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> d != OrderedDict(d)
        False
        >>> d != OrderedDict(((1, 3), (2, 1), (3, 2)))
        True
        >>> d != OrderedDict(((1, 0), (3, 2), (2, 1)))
        True
        >>> d == OrderedDict(((0, 3), (3, 2), (2, 1)))
        False
        >>> d != dict(d)
        True
        >>> d != False
        True
        N(   R   R   R   t   True(   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __ne__Ü   s    c         C   s6   t  | t ƒ p t d ƒ ‚ n |  i ƒ  | i ƒ  j S(   s3  
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> c = OrderedDict(((0, 3), (3, 2), (2, 1)))
        >>> d > c
        True
        >>> c > d
        False
        >>> d > dict(c)
        Traceback (most recent call last):
        TypeError: Can only compare with other OrderedDicts
        s(   Can only compare with other OrderedDicts(   R   R   R
   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __gt__ó   s    c         C   s6   t  | t ƒ p t d ƒ ‚ n |  i ƒ  | i ƒ  j S(   su  
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> c = OrderedDict(((0, 3), (3, 2), (2, 1)))
        >>> e = OrderedDict(d)
        >>> c >= d
        False
        >>> d >= c
        True
        >>> d >= dict(c)
        Traceback (most recent call last):
        TypeError: Can only compare with other OrderedDicts
        >>> e >= d
        True
        s(   Can only compare with other OrderedDicts(   R   R   R
   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __ge__  s    c      
   C   sI   d |  i  i d i g  } |  i D] } | d | |  | f q  ~ ƒ f S(   s  
        Used for __repr__ and __str__
        
        >>> r1 = repr(OrderedDict((('a', 'b'), ('c', 'd'), ('e', 'f'))))
        >>> r1
        "OrderedDict([('a', 'b'), ('c', 'd'), ('e', 'f')])"
        >>> r2 = repr(OrderedDict((('a', 'b'), ('e', 'f'), ('c', 'd'))))
        >>> r2
        "OrderedDict([('a', 'b'), ('e', 'f'), ('c', 'd')])"
        >>> r1 == str(OrderedDict((('a', 'b'), ('c', 'd'), ('e', 'f'))))
        True
        >>> r2 == str(OrderedDict((('a', 'b'), ('e', 'f'), ('c', 'd'))))
        True
        s   %s([%s])s   , s   (%r, %r)(   t	   __class__t   __name__t   joinR   (   R   t   _[1]R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __repr__  s    c         C   sú  t  | t i ƒ o¯t  | t ƒ p t d ƒ ‚ n |  i | } t t |  i ƒ ƒ | } | i d j o™ | i
 p d } |  | =| i ƒ  } x@ | D]8 } | |  j o% |  i o t d ƒ ‚ qË |  | =q“ q“ W|  i |  | |  i | |  _ t i |  | ƒ qöt | ƒ t | ƒ j o& t d t | ƒ t | ƒ f ƒ ‚ n |  | =t | | i ƒ  ƒ } | i ƒ  xŒ | D]L \ } \ }	 }
 |  i o |	 |  j o t d ƒ ‚ n |  i | |	 |
 ƒ qnWn5 | |  j o |  i i | ƒ n t i |  | | ƒ d S(   sõ  
        Allows slice assignment, so long as the slice is an OrderedDict
        >>> d = OrderedDict()
        >>> d['a'] = 'b'
        >>> d['b'] = 'a'
        >>> d[3] = 12
        >>> d
        OrderedDict([('a', 'b'), ('b', 'a'), (3, 12)])
        >>> d[:] = OrderedDict(((1, 2), (2, 3), (3, 4)))
        >>> d
        OrderedDict([(1, 2), (2, 3), (3, 4)])
        >>> d[::2] = OrderedDict(((7, 8), (9, 10)))
        >>> d
        OrderedDict([(7, 8), (2, 3), (9, 10)])
        >>> d = OrderedDict(((0, 1), (1, 2), (2, 3), (3, 4)))
        >>> d[1:3] = OrderedDict(((1, 2), (5, 6), (7, 8)))
        >>> d
        OrderedDict([(0, 1), (1, 2), (5, 6), (7, 8), (3, 4)])
        >>> d = OrderedDict(((0, 1), (1, 2), (2, 3), (3, 4)), strict=True)
        >>> d[1:3] = OrderedDict(((1, 2), (5, 6), (7, 8)))
        >>> d
        OrderedDict([(0, 1), (1, 2), (5, 6), (7, 8), (3, 4)])
        
        >>> a = OrderedDict(((0, 1), (1, 2), (2, 3)), strict=True)
        >>> a[3] = 4
        >>> a
        OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)])
        >>> a[::1] = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)])
        >>> a
        OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)])
        >>> a[:2] = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)])
        Traceback (most recent call last):
        ValueError: slice assignment must be from unique keys
        >>> a = OrderedDict(((0, 1), (1, 2), (2, 3)))
        >>> a[3] = 4
        >>> a
        OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)])
        >>> a[::1] = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)])
        >>> a
        OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)])
        >>> a[:2] = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)])
        >>> a
        OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)])
        >>> a[::-1] = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)])
        >>> a
        OrderedDict([(3, 4), (2, 3), (1, 2), (0, 1)])
        
        >>> d = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)])
        >>> d[:1] = 3
        Traceback (most recent call last):
        TypeError: slice assignment requires an OrderedDict
        
        >>> d = OrderedDict([(0, 1), (1, 2), (2, 3), (3, 4)])
        >>> d[:1] = OrderedDict([(9, 8)])
        >>> d
        OrderedDict([(9, 8), (1, 2), (2, 3), (3, 4)])
        s(   slice assignment requires an OrderedDicti    s)   slice assignment must be from unique keyssB   attempt to assign sequence of size %s to extended slice of size %sN(   R   R   R   R   R
   R   t   ranget   lent   stept   Nonet   startR   R   t
   ValueErrorR   R	   t   zipR   t   sortt   insertt   appendt   __setitem__(   R   R   t   valR   t   indexest   post   newkeyst   kt	   item_listt   newkeyt   newval(    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR,   ,  s@    : 
 
 c         C   sd   t  | t i ƒ o= |  i | } t g  } | D] } | | |  | f q. ~ ƒ St i |  | ƒ Sd S(   s  
        Allows slicing. Returns an OrderedDict if you slice.
        >>> b = OrderedDict([(7, 0), (6, 1), (5, 2), (4, 3), (3, 4), (2, 5), (1, 6)])
        >>> b[::-1]
        OrderedDict([(1, 6), (2, 5), (3, 4), (4, 3), (5, 2), (6, 1), (7, 0)])
        >>> b[2:5]
        OrderedDict([(5, 2), (4, 3), (3, 4)])
        >>> type(b[2:4])
        <class '__main__.OrderedDict'>
        N(   R   R   R   R   R   R   t   __getitem__(   R   R   R   R    R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR5   —  s    0c         C   sE   | d j o! t  i d t ƒ |  i | ƒ n t i |  | | ƒ d S(   s†   
        Implemented so that accesses to ``sequence`` raise a warning and are
        diverted to the new ``setkeys`` method.
        t   sequencesI   Use of the sequence attribute is deprecated. Use the keys method instead.N(   t   warningst   warnt   DeprecationWarningt   setkeyst   objectt   __setattr__(   R   t   namet   value(    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR<   ¬  s
    	c         C   s9   | d j o t  i d t ƒ |  i St d | ƒ ‚ d S(   s—   
        Implemented so that access to ``sequence`` raises a warning.
        
        >>> d = OrderedDict()
        >>> d.sequence
        []
        R6   sI   Use of the sequence attribute is deprecated. Use the keys method instead.s!   OrderedDict has no '%s' attributeN(   R7   R8   R9   R   t   AttributeError(   R   R=   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __getattr__»  s
    	c         C   s2   d d k  l } |  i | |  i ƒ  | ƒ |  i ƒ S(   sK  
        To allow deepcopy to work with OrderedDict.
        
        >>> from copy import deepcopy
        >>> a = OrderedDict([(1, 1), (2, 2), (3, 3)])
        >>> a['test'] = {}
        >>> b = deepcopy(a)
        >>> b == a
        True
        >>> b is a
        False
        >>> a['test'] is b['test']
        False
        iÿÿÿÿ(   t   deepcopy(   t   copyRA   R   R   R   (   R   t   memoRA   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __deepcopy__Î  s    c         C   s
   t  |  ƒ S(   sp   
        >>> OrderedDict(((1, 3), (3, 2), (2, 1))).copy()
        OrderedDict([(1, 3), (3, 2), (2, 1)])
        (   R   (   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRB   ã  s    c         C   s   t  |  i |  i ƒ  ƒ S(   s)  
        ``items`` returns a list of tuples representing all the 
        ``(key, value)`` pairs in the dictionary.
        
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> d.items()
        [(1, 3), (3, 2), (2, 1)]
        >>> d.clear()
        >>> d.items()
        []
        (   R(   R   t   values(   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   ê  s    c         C   s   |  i  S(   s¥   
        Return a list of keys in the ``OrderedDict``.
        
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> d.keys()
        [1, 3, 2]
        (   R   (   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   ø  s    c         C   s&   g  } |  i  D] } | |  | q ~ S(   sP  
        Return a list of all the values in the OrderedDict.
        
        Optionally you can pass in a list of values, which will replace the
        current list. The value list must be the same len as the OrderedDict.
        
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> d.values()
        [3, 2, 1]
        (   R   (   R   RE   R    R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRE     s    c         C   s   |  d „ } | ƒ  S(   s  
        >>> ii = OrderedDict(((1, 3), (3, 2), (2, 1))).iteritems()
        >>> ii.next()
        (1, 3)
        >>> ii.next()
        (3, 2)
        >>> ii.next()
        (2, 1)
        >>> ii.next()
        Traceback (most recent call last):
        StopIteration
        c         s   s:   |  i  ƒ  } x' t o | i ƒ  } | |  | f Vq Wd  S(   N(   t   iterkeysR   t   next(   R   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt	   make_iter  s
     (    (   R   RH   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt	   iteritems  s    c         C   s   t  |  i ƒ S(   s  
        >>> ii = OrderedDict(((1, 3), (3, 2), (2, 1))).iterkeys()
        >>> ii.next()
        1
        >>> ii.next()
        3
        >>> ii.next()
        2
        >>> ii.next()
        Traceback (most recent call last):
        StopIteration
        (   t   iterR   (   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRF   #  s    c         C   s   |  d „ } | ƒ  S(   s  
        >>> iv = OrderedDict(((1, 3), (3, 2), (2, 1))).itervalues()
        >>> iv.next()
        3
        >>> iv.next()
        2
        >>> iv.next()
        1
        >>> iv.next()
        Traceback (most recent call last):
        StopIteration
        c         s   s.   |  i  ƒ  } x t o |  | i ƒ  Vq Wd  S(   N(   RF   R   RG   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRH   A  s     (    (   R   RH   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt
   itervalues4  s    c         C   s   t  i |  ƒ g  |  _ d S(   s{   
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> d.clear()
        >>> d
        OrderedDict([])
        N(   R   t   clearR   (   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRL   I  s    c         G   s„   t  | ƒ d j o t d t  | ƒ d ‚ n | |  j o |  | } |  | =n1 y | d } Wn t j
 o t | ƒ ‚ n X| S(   sÊ  
        No dict.pop in Python 2.2, gotta reimplement it
        
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> d.pop(3)
        2
        >>> d
        OrderedDict([(1, 3), (2, 1)])
        >>> d.pop(4)
        Traceback (most recent call last):
        KeyError: 4
        >>> d.pop(4, 0)
        0
        >>> d.pop(4, 0, 1)
        Traceback (most recent call last):
        TypeError: pop expected at most 2 arguments, got 3
        i   s(   pop expected at most 2 arguments, got %si    (   R#   R
   t
   IndexErrort   KeyError(   R   R   t   argsR-   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   popS  s    
iÿÿÿÿc         C   sd   |  i  p t d ƒ ‚ n y |  i  | } Wn# t j
 o t d | ƒ ‚ n X| |  i | ƒ f S(   sI  
        Delete and return an item specified by index, not a random one as in
        dict. The index is -1 by default (the last item).
        
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> d.popitem()
        (2, 1)
        >>> d
        OrderedDict([(1, 3), (3, 2)])
        >>> d.popitem(0)
        (1, 3)
        >>> OrderedDict().popitem()
        Traceback (most recent call last):
        KeyError: 'popitem(): dictionary is empty'
        >>> d.popitem(2)
        Traceback (most recent call last):
        IndexError: popitem(): index 2 not valid
        s   popitem(): dictionary is emptys   popitem(): index %s not valid(   R   RN   RM   RP   (   R   t   iR   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   popitemr  s    
c         C   s(   | |  j o	 |  | S| |  | <| Sd S(   sU  
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> d.setdefault(1)
        3
        >>> d.setdefault(4) is None
        True
        >>> d
        OrderedDict([(1, 3), (3, 2), (2, 1), (4, None)])
        >>> d.setdefault(5, 0)
        0
        >>> d
        OrderedDict([(1, 3), (3, 2), (2, 1), (4, None), (5, 0)])
        N(    (   R   R   t   defval(    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt
   setdefault  s    	
c         C   s°   t  | t ƒ o+ x™ | i ƒ  D] \ } } | |  | <q Wnr t  | t ƒ o t d ƒ ‚ nR xN | D]F } y | \ } } Wn# t j
 o t d | ƒ ‚ n X| |  | <qb Wd S(   s7  
        Update from another OrderedDict or sequence of (key, value) pairs
        
        >>> d = OrderedDict(((1, 0), (0, 1)))
        >>> d.update(OrderedDict(((1, 3), (3, 2), (2, 1))))
        >>> d
        OrderedDict([(1, 3), (0, 1), (3, 2), (2, 1)])
        >>> d.update({4: 4})
        Traceback (most recent call last):
        TypeError: undefined order, cannot get items from dict
        >>> d.update((4, 4))
        Traceback (most recent call last):
        TypeError: cannot convert dictionary update sequence element "4" to a 2-item sequence
        s+   undefined order, cannot get items from dictsK   cannot convert dictionary update sequence element "%s" to a 2-item sequenceN(   R   R   R   R   R
   (   R   t   from_odR   R-   t   item(    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR	   ¡  s      c         C   sƒ   | | j o d S| |  j o t  d | ƒ ‚ n |  | } |  i i | ƒ } | |  i | <t i |  | ƒ t i |  | | ƒ d S(   sø  
        Rename the key for a given value, without modifying sequence order.
        
        For the case where new_key already exists this raise an exception,
        since if new_key exists, it is ambiguous as to what happens to the
        associated values, and the position of new_key in the sequence.
        
        >>> od = OrderedDict()
        >>> od['a'] = 1
        >>> od['b'] = 2
        >>> od.items()
        [('a', 1), ('b', 2)]
        >>> od.rename('b', 'c')
        >>> od.items()
        [('a', 1), ('c', 2)]
        >>> od.rename('c', 'a')
        Traceback (most recent call last):
        ValueError: New key already exists: 'a'
        >>> od.rename('d', 'b')
        Traceback (most recent call last):
        KeyError: 'd'
        Ns   New key already exists: %r(   R'   R   t   indexR   R   R,   (   R   t   old_keyt   new_keyR>   t   old_idx(    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   renameÁ  s    
c         C   s   |  i  ƒ  |  i | ƒ d S(   sB  
        This method allows you to set the items in the dict.
        
        It takes a list of tuples - of the same sort returned by the ``items``
        method.
        
        >>> d = OrderedDict()
        >>> d.setitems(((3, 1), (2, 3), (1, 2)))
        >>> d
        OrderedDict([(3, 1), (2, 3), (1, 2)])
        N(   RL   R	   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   setitemså  s    
c         C   sV   t  | ƒ } | i ƒ  |  i i ƒ  | |  i j o t d ƒ ‚ n t  | ƒ |  _ d S(   s}  
        ``setkeys`` all ows you to pass in a new list of keys which will
        replace the current set. This must contain the same set of keys, but
        need not be in the same order.
        
        If you pass in new keys that don't match, a ``KeyError`` will be
        raised.
        
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> d.keys()
        [1, 3, 2]
        >>> d.setkeys((1, 2, 3))
        >>> d
        OrderedDict([(1, 3), (2, 1), (3, 2)])
        >>> d.setkeys(['a', 'b', 'c'])
        Traceback (most recent call last):
        KeyError: 'Keylist is not the same as current keylist.'
        s+   Keylist is not the same as current keylist.N(   t   listR)   R   RN   (   R   R   t   kcopy(    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR:   õ  s    
c         C   sC   t  | ƒ t  |  ƒ j o t d ƒ ‚ n |  i t |  | ƒ ƒ d S(   sú  
        You can pass in a list of values, which will replace the
        current list. The value list must be the same len as the OrderedDict.
        
        (Or a ``ValueError`` is raised.)
        
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> d.setvalues((1, 2, 3))
        >>> d
        OrderedDict([(1, 1), (3, 2), (2, 3)])
        >>> d.setvalues([6])
        Traceback (most recent call last):
        ValueError: Value list is not the same length as the OrderedDict.
        s5   Value list is not the same length as the OrderedDict.N(   R#   R'   R	   R(   (   R   RE   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt	   setvalues  s    c         C   s   |  i  i | ƒ S(   s!  
        Return the position of the specified key in the OrderedDict.
        
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> d.index(3)
        1
        >>> d.index(4)
        Traceback (most recent call last):
        ValueError: list.index(x): x not in list
        (   R   RW   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRW   ,  s    c         C   sB   | |  j o |  | =n |  i  i | | ƒ t i |  | | ƒ d S(   s%  
        Takes ``index``, ``key``, and ``value`` as arguments.
        
        Sets ``key`` to ``value``, so that ``key`` is at position ``index`` in
        the OrderedDict.
        
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> d.insert(0, 4, 0)
        >>> d
        OrderedDict([(4, 0), (1, 3), (3, 2), (2, 1)])
        >>> d.insert(0, 2, 1)
        >>> d
        OrderedDict([(2, 1), (4, 0), (1, 3), (3, 2)])
        >>> d.insert(8, 8, 1)
        >>> d
        OrderedDict([(2, 1), (4, 0), (1, 3), (3, 2), (8, 1)])
        N(   R   R*   R   R,   (   R   RW   R   R>   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR*   9  s    c         C   s   |  i  i ƒ  d S(   sÊ   
        Reverse the order of the OrderedDict.
        
        >>> d = OrderedDict(((1, 3), (3, 2), (2, 1)))
        >>> d.reverse()
        >>> d
        OrderedDict([(2, 1), (3, 2), (1, 3)])
        N(   R   t   reverse(   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR`   Q  s    	c         O   s   |  i  i | | Ž  d S(   sM  
        Sort the key order in the OrderedDict.
        
        This method takes the same arguments as the ``list.sort`` method on
        your version of Python.
        
        >>> d = OrderedDict(((4, 1), (2, 2), (3, 3), (1, 4)))
        >>> d.sort()
        >>> d
        OrderedDict([(1, 4), (2, 2), (3, 3), (4, 1)])
        N(   R   R)   (   R   RO   t   kwargs(    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR)   \  s    (    N()   R   t
   __module__t   __doc__R   R   R   R   R   R   R   R   R   R!   R,   R5   t   __str__R<   R@   RD   RB   R   R   R%   RE   RI   RF   t   __iter__RK   RL   RP   RR   RT   R	   R[   R\   R:   R_   RW   R*   R`   R)   (    (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   &   sJ   6$									k							
				
		 	$		 				t   Keysc           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 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z  d „  Z! RS(    sº   
    Custom object for accessing the keys of an OrderedDict.
    
    Can be called like the normal ``OrderedDict.keys`` method, but also
    supports indexing and sequence methods.
    c         C   s   | |  _  d  S(   N(   t   _main(   R   t   main(    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   s  s    c         C   s   |  i  i ƒ  S(   s   Pretend to be the keys method.(   Rg   t   _keys(   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __call__v  s    c         C   s   |  i  i | S(   s   Fetch the key at position i.(   Rg   R   (   R   RW   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR5   z  s    c         C   sz  t  | t i ƒ oWt t |  i i ƒ ƒ | } t | ƒ t | ƒ j o& t d t | ƒ t | ƒ f ƒ ‚ n |  i i | } t | ƒ } | i	 ƒ  | i	 ƒ  | | j o t
 d ƒ ‚ n g  } | D] } | |  i | qÆ ~ } |  i | =t | | | ƒ }	 |	 i	 ƒ  xj |	 D]R \ }
 } } |  i i o  | |  i j o t d ƒ ‚ n |  i i |
 | | ƒ qWn t d ƒ ‚ d S(   sÜ   
        You cannot assign to keys, but you can do slice assignment to re-order
        them.
        
        You can only do slice assignment if the new set of keys is a reordering
        of the original set.
        s9   attempt to assign sequence of size %s to slice of size %ss+   Keylist is not the same as current keylist.s)   slice assignment must be from unique keyss   Cannot assign to keysN(   R   R   R   R"   R#   Rg   R   R'   R]   R)   RN   R(   R   R*   (   R   RW   R=   R.   t   old_keyst   new_keysR    R1   t	   orig_valst   valsRQ   t   v(    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR,     s*     

(

 c         C   s   t  |  i i ƒ S(   N(   t   reprRg   R   (   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR!   £  s    c         C   s   |  i  i | j  S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   §  s    c         C   s   |  i  i | j S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   ¨  s    c         C   s   |  i  i | j S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   ©  s    c         C   s   |  i  i | j S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   ª  s    c         C   s   |  i  i | j S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   «  s    c         C   s   |  i  i | j S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   ¬  s    c         C   s   t  |  i i | ƒ S(   N(   t   cmpRg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __cmp__®  s    c         C   s   | |  i  i j S(   N(   Rg   R   (   R   RV   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __contains__°  s    c         C   s   t  |  i i ƒ S(   N(   R#   Rg   R   (   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __len__±  s    c         C   s   |  i  i ƒ  S(   N(   Rg   RF   (   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRe   ²  s    c         C   s   |  i  i i | ƒ S(   N(   Rg   R   t   count(   R   RV   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRu   ³  s    c         G   s   |  i  i i | | Œ S(   N(   Rg   R   RW   (   R   RV   RO   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRW   ´  s    c         C   s   |  i  i i ƒ  d  S(   N(   Rg   R   R`   (   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR`   µ  s    c         O   s   |  i  i i | | Ž  d  S(   N(   Rg   R   R)   (   R   RO   t   kwds(    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR)   ¶  s    c         C   s   |  i  i | S(   N(   Rg   R   (   R   t   n(    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __mul__·  s    c         C   s   |  i  i | S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __add__¹  s    c         C   s   | |  i  i S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __radd__º  s    c         C   s   t  d ƒ ‚ d  S(   Ns   Can't delete items from keys(   R
   (   R   RQ   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   ½  s    c         C   s   t  d ƒ ‚ d  S(   Ns   Can't add in place to keys(   R
   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __iadd__¾  s    c         C   s   t  d ƒ ‚ d  S(   Ns   Can't multiply keys in place(   R
   (   R   Rw   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   __imul__¿  s    c         C   s   t  d ƒ ‚ d  S(   Ns   Can't append items to keys(   R
   (   R   RV   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR+   À  s    c         C   s   t  d ƒ ‚ d  S(   Ns   Can't insert items into keys(   R
   (   R   RQ   RV   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR*   Á  s    iÿÿÿÿc         C   s   t  d ƒ ‚ d  S(   Ns   Can't pop items from keys(   R
   (   R   RQ   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRP   Â  s    c         C   s   t  d ƒ ‚ d  S(   Ns   Can't remove items from keys(   R
   (   R   RV   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   Ã  s    c         C   s   t  d ƒ ‚ d  S(   Ns   Can't extend keys(   R
   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   extendÄ  s    ("   R   Rb   Rc   R   Rj   R5   R,   R!   R   R   R   R   R   R   Rr   Rs   Rt   Re   Ru   RW   R`   R)   Rx   t   __rmul__Ry   Rz   R   R{   R|   R+   R*   RP   R   R}   (    (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRf   j  s@   				$																								t   Itemsc           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 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e Z d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z d „  Z d „  Z  d „  Z! RS(    s¼   
    Custom object for accessing the items of an OrderedDict.
    
    Can be called like the normal ``OrderedDict.items`` method, but also
    supports indexing and sequence methods.
    c         C   s   | |  _  d  S(   N(   Rg   (   R   Rh   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   Î  s    c         C   s   |  i  i ƒ  S(   s   Pretend to be the items method.(   Rg   t   _items(   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRj   Ñ  s    c         C   sF   t  | t i ƒ o |  i | i ƒ  S|  i i | } | |  i | f S(   s   Fetch the item at position i.(   R   R   R   Rg   R   R   (   R   RW   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR5   Õ  s    c         C   s«   t  | t i ƒ o t | ƒ |  i | <n~ |  i i | } | \ } } |  i i o* | |  j o | | j o t d ƒ ‚ n |  i |  i i | =|  i i	 | | | ƒ d S(   s   Set item at position i to item.s)   slice assignment must be from unique keysN(
   R   R   R   R   Rg   R   R   R'   R   R*   (   R   RW   RV   t   origR   R>   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR,   Ý  s    'c         C   sP   |  i  i | } t | t i ƒ o x& | D] } |  i  | =q* Wn |  i  | =d S(   s   Delete the item at position i.N(   Rg   R   R   R   R   (   R   RQ   R   R1   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   í  s     c         C   s   t  |  i i ƒ  ƒ S(   N(   Rp   Rg   R   (   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR!   ø  s    c         C   s   |  i  i ƒ  | j  S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   ü  s    c         C   s   |  i  i ƒ  | j S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   ý  s    c         C   s   |  i  i ƒ  | j S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   þ  s    c         C   s   |  i  i ƒ  | j S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   ÿ  s    c         C   s   |  i  i ƒ  | j S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR      s    c         C   s   |  i  i ƒ  | j S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR     s    c         C   s   t  |  i i ƒ  | ƒ S(   N(   Rq   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRr     s    c         C   s   | |  i  i ƒ  j S(   N(   Rg   R   (   R   RV   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRs     s    c         C   s   t  |  i i ƒ S(   N(   R#   Rg   R   (   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRt     s    c         C   s   |  i  i ƒ  S(   N(   Rg   RI   (   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRe     s    c         C   s   |  i  i ƒ  i | ƒ S(   N(   Rg   R   Ru   (   R   RV   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRu     s    c         G   s   |  i  i ƒ  i | | Œ S(   N(   Rg   R   RW   (   R   RV   RO   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRW     s    c         C   s   |  i  i ƒ  d  S(   N(   Rg   R`   (   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR`   	  s    c         O   s   |  i  i | | Ž  d  S(   N(   Rg   R)   (   R   RO   Rv   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR)   
  s    c         C   s   |  i  i ƒ  | S(   N(   Rg   R   (   R   Rw   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRx     s    c         C   s   |  i  i ƒ  | S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRy     s    c         C   s   | |  i  i ƒ  S(   N(   Rg   R   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRz     s    c         C   s   | \ } } | |  i  | <d S(   s   Add an item to the end.N(   Rg   (   R   RV   R   R>   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR+     s    c         C   s&   | \ } } |  i  i | | | ƒ d  S(   N(   Rg   R*   (   R   RQ   RV   R   R>   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR*     s    iÿÿÿÿc         C   s&   |  i  i | } | |  i  i | ƒ f S(   N(   Rg   R   RP   (   R   RQ   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRP     s    c         C   sa   | \ } } y | |  i  | j p t ‚ Wn% t t f j
 o t d ƒ ‚ n X|  i  | =d  S(   Ns)   ValueError: list.remove(x): x not in list(   Rg   t   AssertionErrorRN   R'   (   R   RV   R   R>   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR     s    c         C   s.   x' | D] } | \ } } | |  i  | <q Wd  S(   N(   Rg   (   R   R   RV   R   R>   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR}   '  s     c         C   s   |  i  | ƒ d  S(   N(   R}   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR{   -  s    c         C   s   t  d ƒ ‚ d  S(   Ns   Can't multiply items in place(   R
   (   R   Rw   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR|   2  s    ("   R   Rb   Rc   R   Rj   R5   R,   R   R!   R   R   R   R   R   R   Rr   Rs   Rt   Re   Ru   RW   R`   R)   Rx   R~   Ry   Rz   R+   R*   RP   R   R}   R{   R|   (    (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   Æ  s@   																													t   Valuesc           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 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z  d „  Z! RS(    s¾   
    Custom object for accessing the values of an OrderedDict.
    
    Can be called like the normal ``OrderedDict.values`` method, but also
    supports indexing and sequence methods.
    c         C   s   | |  _  d  S(   N(   Rg   (   R   Rh   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   <  s    c         C   s   |  i  i ƒ  S(   s    Pretend to be the values method.(   Rg   t   _values(   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRj   ?  s    c         C   s]   t  | t i ƒ o1 g  } |  i i | D] } | |  i | q( ~ S|  i |  i i | Sd S(   s   Fetch the value at position i.N(   R   R   R   Rg   R   (   R   RW   R    R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR5   C  s    1c         C   s®   t  | t i ƒ o€ |  i i | } t | ƒ t | ƒ j o& t d t t ƒ t | ƒ f ƒ ‚ n xE t | | ƒ D] \ } } | |  i | <qr Wn | |  i |  i i | <d S(   sÄ   
        Set the value at position i to value.
        
        You can only do slice assignment to values if you supply a sequence of
        equal length to the slice you are replacing.
        s9   attempt to assign sequence of size %s to slice of size %sN(	   R   R   R   Rg   R   R#   R'   R=   R(   (   R   RW   R>   R   R   R-   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR,   J  s      c         C   s   t  |  i i ƒ  ƒ S(   N(   Rp   Rg   RE   (   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR!   `  s    c         C   s   |  i  i ƒ  | j  S(   N(   Rg   RE   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   d  s    c         C   s   |  i  i ƒ  | j S(   N(   Rg   RE   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   e  s    c         C   s   |  i  i ƒ  | j S(   N(   Rg   RE   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   f  s    c         C   s   |  i  i ƒ  | j S(   N(   Rg   RE   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   g  s    c         C   s   |  i  i ƒ  | j S(   N(   Rg   RE   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   h  s    c         C   s   |  i  i ƒ  | j S(   N(   Rg   RE   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   i  s    c         C   s   t  |  i i ƒ  | ƒ S(   N(   Rq   Rg   RE   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRr   j  s    c         C   s   | |  i  i ƒ  j S(   N(   Rg   RE   (   R   RV   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRs   l  s    c         C   s   t  |  i i ƒ S(   N(   R#   Rg   R   (   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRt   m  s    c         C   s   |  i  i ƒ  S(   N(   Rg   RK   (   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRe   n  s    c         C   s   |  i  i ƒ  i | ƒ S(   N(   Rg   RE   Ru   (   R   RV   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRu   o  s    c         G   s   |  i  i ƒ  i | | Œ S(   N(   Rg   RE   RW   (   R   RV   RO   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRW   p  s    c         C   s$   |  i  i ƒ  } | i ƒ  | |  (d S(   s   Reverse the valuesN(   Rg   RE   R`   (   R   Rn   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR`   r  s    
c         O   s*   |  i  i ƒ  } | i | | Ž  | |  (d S(   s   Sort the values.N(   Rg   RE   R)   (   R   RO   Rv   Rn   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR)   y  s    c         C   s   |  i  i ƒ  | S(   N(   Rg   RE   (   R   Rw   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRx     s    c         C   s   |  i  i ƒ  | S(   N(   Rg   RE   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRy     s    c         C   s   | |  i  i ƒ  S(   N(   Rg   RE   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRz   ‚  s    c         C   s   t  d ƒ ‚ d  S(   Ns   Can't delete items from values(   R
   (   R   RQ   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   …  s    c         C   s   t  d ƒ ‚ d  S(   Ns   Can't add in place to values(   R
   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR{   †  s    c         C   s   t  d ƒ ‚ d  S(   Ns   Can't multiply values in place(   R
   (   R   Rw   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR|   ‡  s    c         C   s   t  d ƒ ‚ d  S(   Ns   Can't append items to values(   R
   (   R   RV   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR+   ˆ  s    c         C   s   t  d ƒ ‚ d  S(   Ns   Can't insert items into values(   R
   (   R   RQ   RV   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR*   ‰  s    iÿÿÿÿc         C   s   t  d ƒ ‚ d  S(   Ns   Can't pop items from values(   R
   (   R   RQ   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRP   Š  s    c         C   s   t  d ƒ ‚ d  S(   Ns   Can't remove items from values(   R
   (   R   RV   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   ‹  s    c         C   s   t  d ƒ ‚ d  S(   Ns   Can't extend values(   R
   (   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR}   Œ  s    ("   R   Rb   Rc   R   Rj   R5   R,   R!   R   R   R   R   R   R   Rr   Rs   Rt   Re   Ru   RW   R`   R)   Rx   R~   Ry   Rz   R   R{   R|   R+   R*   RP   R   R}   (    (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyRƒ   4  s@   																												c           B   s&   e  Z d  Z d e d „ Z d „  Z RS(   sÒ  
    Experimental version of OrderedDict that has a custom object for ``keys``,
    ``values``, and ``items``.
    
    These are callable sequence objects that work as methods, or can be
    manipulated directly as sequences.
    
    Test for ``keys``, ``items`` and ``values``.
    
    >>> d = SequenceOrderedDict(((1, 2), (2, 3), (3, 4)))
    >>> d
    SequenceOrderedDict([(1, 2), (2, 3), (3, 4)])
    >>> d.keys
    [1, 2, 3]
    >>> d.keys()
    [1, 2, 3]
    >>> d.setkeys((3, 2, 1))
    >>> d
    SequenceOrderedDict([(3, 4), (2, 3), (1, 2)])
    >>> d.setkeys((1, 2, 3))
    >>> d.keys[0]
    1
    >>> d.keys[:]
    [1, 2, 3]
    >>> d.keys[-1]
    3
    >>> d.keys[-2]
    2
    >>> d.keys[0:2] = [2, 1]
    >>> d
    SequenceOrderedDict([(2, 3), (1, 2), (3, 4)])
    >>> d.keys.reverse()
    >>> d.keys
    [3, 1, 2]
    >>> d.keys = [1, 2, 3]
    >>> d
    SequenceOrderedDict([(1, 2), (2, 3), (3, 4)])
    >>> d.keys = [3, 1, 2]
    >>> d
    SequenceOrderedDict([(3, 4), (1, 2), (2, 3)])
    >>> a = SequenceOrderedDict()
    >>> b = SequenceOrderedDict()
    >>> a.keys == b.keys
    1
    >>> a['a'] = 3
    >>> a.keys == b.keys
    0
    >>> b['a'] = 3
    >>> a.keys == b.keys
    1
    >>> b['b'] = 3
    >>> a.keys == b.keys
    0
    >>> a.keys > b.keys
    0
    >>> a.keys < b.keys
    1
    >>> 'a' in a.keys
    1
    >>> len(b.keys)
    2
    >>> 'c' in d.keys
    0
    >>> 1 in d.keys
    1
    >>> [v for v in d.keys]
    [3, 1, 2]
    >>> d.keys.sort()
    >>> d.keys
    [1, 2, 3]
    >>> d = SequenceOrderedDict(((1, 2), (2, 3), (3, 4)), strict=True)
    >>> d.keys[::-1] = [1, 2, 3]
    >>> d
    SequenceOrderedDict([(3, 4), (2, 3), (1, 2)])
    >>> d.keys[:2]
    [3, 2]
    >>> d.keys[:2] = [1, 3]
    Traceback (most recent call last):
    KeyError: 'Keylist is not the same as current keylist.'

    >>> d = SequenceOrderedDict(((1, 2), (2, 3), (3, 4)))
    >>> d
    SequenceOrderedDict([(1, 2), (2, 3), (3, 4)])
    >>> d.values
    [2, 3, 4]
    >>> d.values()
    [2, 3, 4]
    >>> d.setvalues((4, 3, 2))
    >>> d
    SequenceOrderedDict([(1, 4), (2, 3), (3, 2)])
    >>> d.values[::-1]
    [2, 3, 4]
    >>> d.values[0]
    4
    >>> d.values[-2]
    3
    >>> del d.values[0]
    Traceback (most recent call last):
    TypeError: Can't delete items from values
    >>> d.values[::2] = [2, 4]
    >>> d
    SequenceOrderedDict([(1, 2), (2, 3), (3, 4)])
    >>> 7 in d.values
    0
    >>> len(d.values)
    3
    >>> [val for val in d.values]
    [2, 3, 4]
    >>> d.values[-1] = 2
    >>> d.values.count(2)
    2
    >>> d.values.index(2)
    0
    >>> d.values[-1] = 7
    >>> d.values
    [2, 3, 7]
    >>> d.values.reverse()
    >>> d.values
    [7, 3, 2]
    >>> d.values.sort()
    >>> d.values
    [2, 3, 7]
    >>> d.values.append('anything')
    Traceback (most recent call last):
    TypeError: Can't append items to values
    >>> d.values = (1, 2, 3)
    >>> d
    SequenceOrderedDict([(1, 1), (2, 2), (3, 3)])
    
    >>> d = SequenceOrderedDict(((1, 2), (2, 3), (3, 4)))
    >>> d
    SequenceOrderedDict([(1, 2), (2, 3), (3, 4)])
    >>> d.items()
    [(1, 2), (2, 3), (3, 4)]
    >>> d.setitems([(3, 4), (2 ,3), (1, 2)])
    >>> d
    SequenceOrderedDict([(3, 4), (2, 3), (1, 2)])
    >>> d.items[0]
    (3, 4)
    >>> d.items[:-1]
    [(3, 4), (2, 3)]
    >>> d.items[1] = (6, 3)
    >>> d.items
    [(3, 4), (6, 3), (1, 2)]
    >>> d.items[1:2] = [(9, 9)]
    >>> d
    SequenceOrderedDict([(3, 4), (9, 9), (1, 2)])
    >>> del d.items[1:2]
    >>> d
    SequenceOrderedDict([(3, 4), (1, 2)])
    >>> (3, 4) in d.items
    1
    >>> (4, 3) in d.items
    0
    >>> len(d.items)
    2
    >>> [v for v in d.items]
    [(3, 4), (1, 2)]
    >>> d.items.count((3, 4))
    1
    >>> d.items.index((1, 2))
    1
    >>> d.items.index((2, 1))
    Traceback (most recent call last):
    ValueError: list.index(x): x not in list
    >>> d.items.reverse()
    >>> d.items
    [(1, 2), (3, 4)]
    >>> d.items.reverse()
    >>> d.items.sort()
    >>> d.items
    [(1, 2), (3, 4)]
    >>> d.items.append((5, 6))
    >>> d.items
    [(1, 2), (3, 4), (5, 6)]
    >>> d.items.insert(0, (0, 0))
    >>> d.items
    [(0, 0), (1, 2), (3, 4), (5, 6)]
    >>> d.items.insert(-1, (7, 8))
    >>> d.items
    [(0, 0), (1, 2), (3, 4), (7, 8), (5, 6)]
    >>> d.items.pop()
    (5, 6)
    >>> d.items
    [(0, 0), (1, 2), (3, 4), (7, 8)]
    >>> d.items.remove((1, 2))
    >>> d.items
    [(0, 0), (3, 4), (7, 8)]
    >>> d.items.extend([(1, 2), (5, 6)])
    >>> d.items
    [(0, 0), (3, 4), (7, 8), (1, 2), (5, 6)]
    c         C   s’   t  i |  | d | ƒ|  i |  _ |  i |  _ |  i |  _ t |  ƒ |  _ t	 |  ƒ |  _ t
 |  ƒ |  _ h |  i d 6|  i d 6|  i d 6|  _ d  S(   NR   R   R   RE   (   R   R   R   Ri   RE   R„   R   R€   Rf   Rƒ   R   R:   R\   R_   t	   _att_dict(   R   R   R   (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   P  s    

c         C   so   d |  i  j o t i |  | | ƒ nE y |  i | } Wn& t j
 o t i |  | | ƒ n X| | ƒ d S(   s    Protect keys, items, and values.R…   N(   t   __dict__R;   R<   R…   RN   R   (   R   R=   R>   t   fun(    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR<   ^  s    (    (   R   Rb   Rc   R   R   R<   (    (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyR   Ž  s   Àt   __main__i   s#   Tests require Python v.2.3 or latert   ignoret   INTP_VERt   globs(    Rc   t
   __future__R    t
   __author__t   __docformat__t   __revision__t   __version__t   __all__t   syst   version_infoRŠ   t   RuntimeErrorR   R7   R   R   R;   Rf   R   Rƒ   R   R   t   filterwarningst   doctestt   modulest   gett   mR†   RB   R‹   R	   t   testmod(    (    (    sO   C:\Documents and Settings\Administrator\workspace\MINWii\src\dataTools\odict.pyt   <module>   s:   ÿ ÿ ÿ G\nZÜ	