ó
H`¾Tc           @@  s<  d  Z  d d l m Z d d l Z d d l Z d d l m Z m Z d d l m	 Z	 d d l
 Z
 e ƒ  Z d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d e e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e e f d „  ƒ  YZ 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 d e f d „  ƒ  YZ e Z e Z e Z e Z  d d „ Z" d  e f d! „  ƒ  YZ# d" „  Z$ d d# „ Z% d$ „  Z& d% „  Z' d d& „ Z( d' „  Z) d( e f d) „  ƒ  YZ* d* e f d+ „  ƒ  YZ+ d, e+ f d- „  ƒ  YZ, d. „  Z- d S(/   s   Collection classes and helpers.i    (   t   absolute_importNi   (   t	   threadingt   itertools_filterfalse(   t   py2kt
   KeyedTuplec           B@  s;   e  Z d  Z d d „ Z d „  Z e d „  ƒ Z d „  Z RS(   sÆ  ``tuple`` subclass that adds labeled names.

    E.g.::

        >>> k = KeyedTuple([1, 2, 3], labels=["one", "two", "three"])
        >>> k.one
        1
        >>> k.two
        2

    Result rows returned by :class:`.Query` that contain multiple
    ORM entities and/or column expressions make use of this
    class to return rows.

    The :class:`.KeyedTuple` exhibits similar behavior to the
    ``collections.namedtuple()`` construct provided in the Python
    standard library, however is architected very differently.
    Unlike ``collections.namedtuple()``, :class:`.KeyedTuple` is
    does not rely on creation of custom subtypes in order to represent
    a new series of keys, instead each :class:`.KeyedTuple` instance
    receives its list of keys in place.   The subtype approach
    of ``collections.namedtuple()`` introduces significant complexity
    and performance overhead, which is not necessary for the
    :class:`.Query` object's use case.

    .. versionchanged:: 0.8
        Compatibility methods with ``collections.namedtuple()`` have been
        added including :attr:`.KeyedTuple._fields` and
        :meth:`.KeyedTuple._asdict`.

    .. seealso::

        :ref:`ormtutorial_querying`

    c         C@  sJ   t  j |  | ƒ } g  | _ | rF | j j t | | ƒ ƒ | | _ n  | S(   N(   t   tuplet   __new__t   _labelst   __dict__t   updatet   zip(   t   clst   valst   labelst   t(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR   9   s    	c         C@  s&   g  |  j  D] } | d k	 r
 | ^ q
 S(   s‰   Return a list of string key names for this :class:`.KeyedTuple`.

        .. seealso::

            :attr:`.KeyedTuple._fields`

        N(   R   t   None(   t   selft   l(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   keysA   s    	c         C@  s   t  |  j ƒ  ƒ S(   sõ   Return a tuple of string key names for this :class:`.KeyedTuple`.

        This method provides compatibility with ``collections.namedtuple()``.

        .. versionadded:: 0.8

        .. seealso::

            :meth:`.KeyedTuple.keys`

        (   R   R   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   _fieldsL   s    c         @  s    t  ‡  f d †  ˆ  j ƒ  Dƒ ƒ S(   s  Return the contents of this :class:`.KeyedTuple` as a dictionary.

        This method provides compatibility with ``collections.namedtuple()``,
        with the exception that the dictionary returned is **not** ordered.

        .. versionadded:: 0.8

        c         3@  s"   |  ] } | ˆ  j  | f Vq d  S(   N(   R   (   t   .0t   key(   R   (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pys	   <genexpr>d   s    (   t   dictR   (   R   (    (   R   sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   _asdict[   s    	N(	   t   __name__t
   __module__t   __doc__R   R   R   t   propertyR   R   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR      s
   #	t   ImmutableContainerc           B@  s   e  Z d  „  Z e Z Z Z RS(   c         O@  s   t  d |  j j ƒ ‚ d  S(   Ns   %s object is immutable(   t	   TypeErrort	   __class__R   (   R   t   argt   kw(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt
   _immutableh   s    (   R   R   R!   t   __delitem__t   __setitem__t   __setattr__(    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR   g   s   	t   immutabledictc           B@  sN   e  Z e j Z Z Z Z Z d  „  Z	 d „  Z
 d „  Z d „  Z d „  Z RS(   c         G@  s#   t  j |  ƒ } t  j | | Œ | S(   N(   R   R   t   __init__(   R   t   argst   new(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR   s   s    c         G@  s   d  S(   N(    (   R   R'   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR&   x   s    c         C@  s   t  t |  ƒ f f S(   N(   R%   R   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt
   __reduce__{   s    c         C@  s4   |  s t  | ƒ St  |  ƒ } t j | | ƒ | Sd  S(   N(   R%   R   R	   (   R   t   dt   d2(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   union~   s
    
c         C@  s   d t  j |  ƒ S(   Ns   immutabledict(%s)(   R   t   __repr__(   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR-   †   s    (   R   R   R   R!   t   cleart   popt   popitemt
   setdefaultR	   R   R&   R)   R,   R-   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR%   n   s   				t
   Propertiesc           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 d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s8   Provide a __getattr__/__setattr__ interface over a dict.c         C@  s   | |  j  d <d  S(   Nt   _data(   R   (   R   t   data(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR&      s    c         C@  s   t  |  j ƒ S(   N(   t   lenR3   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __len__   s    c         C@  s   t  t |  j j ƒ  ƒ ƒ S(   N(   t   itert   listR3   t   values(   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __iter__“   s    c         C@  s   t  |  ƒ t  | ƒ S(   N(   R8   (   R   t   other(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __add__–   s    c         C@  s   | |  j  | <d  S(   N(   R3   (   R   R   t   object(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR#   ™   s    c         C@  s   |  j  | S(   N(   R3   (   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __getitem__œ   s    c         C@  s   |  j  | =d  S(   N(   R3   (   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR"   Ÿ   s    c         C@  s   | |  j  | <d  S(   N(   R3   (   R   R   R=   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR$   ¢   s    c         C@  s   i |  j  d d 6S(   NR3   (   R   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __getstate__¥   s    c         C@  s   | d |  j  d <d  S(   NR3   (   R   (   R   t   state(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __setstate__¨   s    c         C@  s3   y |  j  | SWn t k
 r. t | ƒ ‚ n Xd  S(   N(   R3   t   KeyErrort   AttributeError(   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __getattr__«   s    c         C@  s   | |  j  k S(   N(   R3   (   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __contains__±   s    c         C@  s   t  |  j ƒ S(   s8   Return an immutable proxy for this :class:`.Properties`.(   t   ImmutablePropertiesR3   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   as_immutable´   s    c         C@  s   |  j  j | ƒ d  S(   N(   R3   R	   (   R   t   value(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR	   ¹   s    c         C@  s   | |  k r |  | S| Sd  S(   N(    (   R   R   t   default(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   get¼   s    c         C@  s   t  |  j ƒ S(   N(   R8   R3   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR   Â   s    c         C@  s   t  |  j j ƒ  ƒ S(   N(   R8   R3   R9   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR9   Å   s    c         C@  s   t  |  j j ƒ  ƒ S(   N(   R8   R3   t   items(   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRK   È   s    c         C@  s   | |  j  k S(   N(   R3   (   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   has_keyË   s    c         C@  s   |  j  j ƒ  d  S(   N(   R3   R.   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR.   Î   s    N(   R   R   R   R&   R6   R:   R<   R#   R>   R"   R$   R?   RA   RD   RE   RG   R	   R   RJ   R   R9   RK   RL   R.   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR2   Š   s*   																		t   OrderedPropertiesc           B@  s   e  Z d  Z d „  Z RS(   sU   Provide a __getattr__/__setattr__ interface with an OrderedDict
    as backing store.c         C@  s   t  j |  t ƒ  ƒ d  S(   N(   R2   R&   t   OrderedDict(   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR&   Ö   s    (   R   R   R   R&   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRM   Ò   s   RF   c           B@  s   e  Z d  Z RS(   sD   Provide immutable dict/object attribute to an underlying dictionary.(   R   R   R   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRF   Ú   s   RN   c           B@  s¿   e  Z d  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d d „ Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z e r™ d „  Z d „  Z d „  Z n  d „  Z d „  Z d „  Z d „  Z RS(   sC   A dict that returns keys/values/items in the order they were added.c         K@  sB   g  |  _  | d  k r. | r> |  j |   q> n |  j | |  d  S(   N(   t   _listR   R	   (   R   t   _OrderedDict____sequencet   kwargs(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR&   á   s
    	c         C@  s   g  |  _  t j |  ƒ d  S(   N(   RO   R   R.   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR.   é   s    	c         C@  s
   |  j  ƒ  S(   N(   t   __copy__(   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   copyí   s    c         C@  s
   t  |  ƒ S(   N(   RN   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRR   ð   s    c         O@  s   |  j  j | | Ž  d  S(   N(   RO   t   sort(   R   R   R    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRT   ó   s    c         K@  s‡   | d  k	 rm t | d ƒ rI xL | j ƒ  D] } |  j | | | ƒ q( Wqm x! | D] \ } } | |  | <qP Wn  | rƒ |  j | ƒ n  d  S(   NR   (   R   t   hasattrR   R#   R	   (   R   RP   RQ   R   RH   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR	   ö   s    c         C@  s1   | |  k r  |  j  | | ƒ | S|  j | ƒ Sd  S(   N(   R#   R>   (   R   R   RH   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR1     s    c         C@  s   t  |  j ƒ S(   N(   R7   RO   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR:     s    c         C@  s
   t  |  ƒ S(   N(   R8   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR     s    c         C@  s   g  |  j  D] } |  | ^ q
 S(   N(   RO   (   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR9     s    c         C@  s$   g  |  j  D] } | |  | f ^ q
 S(   N(   RO   (   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRK     s    c         C@  s   t  |  j ƒ  ƒ S(   N(   R7   R9   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt
   itervalues  s    c         C@  s
   t  |  ƒ S(   N(   R7   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   iterkeys  s    c         C@  s   t  |  j ƒ  ƒ S(   N(   R7   RK   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt	   iteritems  s    c         C@  sZ   | |  k rC y |  j  j | ƒ WqC t k
 r? | g |  _  qC Xn  t j |  | | ƒ d  S(   N(   RO   t   appendRC   R   R#   (   R   R   R=   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR#     s    c         C@  s$   t  j |  | ƒ |  j j | ƒ d  S(   N(   R   R"   RO   t   remove(   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR"   (  s    c         G@  s>   | |  k } t  j |  | | Œ } | r: |  j j | ƒ n  | S(   N(   R   R/   RO   RZ   (   R   R   RI   t   presentRH   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR/   ,  s
    c         C@  s'   t  j |  ƒ } |  j j | d ƒ | S(   Ni    (   R   R0   RO   RZ   (   R   t   item(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR0   3  s    N(   R   R   R   R   R&   R.   RS   RR   RT   R	   R1   R:   R   R9   RK   R   RV   RW   RX   R#   R"   R/   R0   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRN   Þ   s(   												
		t
   OrderedSetc           B@  sã   e  Z d d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z e Z d
 „  Z e Z d „  Z e Z d „  Z e Z d „  Z e Z d „  Z e Z d „  Z e Z d „  Z e Z d „  Z e Z RS(   c         C@  s6   t  j |  ƒ g  |  _ | d  k	 r2 |  j | ƒ n  d  S(   N(   t   setR&   RO   R   R	   (   R   R*   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR&   :  s    	c         C@  s3   | |  k r |  j  j | ƒ n  t j |  | ƒ d  S(   N(   RO   RY   R^   t   add(   R   t   element(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR_   @  s    c         C@  s$   t  j |  | ƒ |  j j | ƒ d  S(   N(   R^   RZ   RO   (   R   R`   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRZ   E  s    c         C@  s6   | |  k r" |  j  j | | ƒ n  t j |  | ƒ d  S(   N(   RO   t   insertR^   R_   (   R   t   posR`   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRa   I  s    c         C@  s3   | |  k r/ |  j  j | ƒ t j |  | ƒ n  d  S(   N(   RO   RZ   R^   (   R   R`   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   discardN  s    c         C@  s   t  j |  ƒ g  |  _ d  S(   N(   R^   R.   RO   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR.   S  s    c         C@  s   |  j  | S(   N(   RO   (   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR>   W  s    c         C@  s   t  |  j ƒ S(   N(   R7   RO   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR:   Z  s    c         C@  s   |  j  | ƒ S(   N(   R,   (   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR<   ]  s    c         C@  s   d |  j  j |  j f S(   Ns   %s(%r)(   R   R   RO   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR-   `  s    c         C@  sD   x= | D]5 } | |  k r |  j  j | ƒ t j |  | ƒ q q W|  S(   N(   RO   RY   R^   R_   (   R   t   iterablet   e(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR	   e  s
    c         C@  s    |  j  |  ƒ } | j | ƒ | S(   N(   R   R	   (   R   R;   t   result(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR,   n  s    c         @  s)   t  ˆ  ƒ ‰  |  j ‡  f d †  |  Dƒ ƒ S(   Nc         3@  s!   |  ] } | ˆ  k r | Vq d  S(   N(    (   R   t   a(   R;   (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pys	   <genexpr>w  s    (   R^   R   (   R   R;   (    (   R;   sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   intersectionu  s    c         @  sL   t  ˆ ƒ ‰ ˆ  j ‡ f d †  ˆ  Dƒ ƒ } | j ‡  f d †  ˆ Dƒ ƒ | S(   Nc         3@  s!   |  ] } | ˆ  k r | Vq d  S(   N(    (   R   Rg   (   R;   (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pys	   <genexpr>}  s    c         3@  s!   |  ] } | ˆ  k r | Vq d  S(   N(    (   R   Rg   (   R   (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pys	   <genexpr>~  s    (   R^   R   R	   (   R   R;   Rf   (    (   R   R;   sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   symmetric_difference{  s    c         @  s)   t  ˆ  ƒ ‰  |  j ‡  f d †  |  Dƒ ƒ S(   Nc         3@  s!   |  ] } | ˆ  k r | Vq d  S(   N(    (   R   Rg   (   R;   (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pys	   <genexpr>…  s    (   R^   R   (   R   R;   (    (   R;   sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt
   differenceƒ  s    c         C@  sK   t  | ƒ } t  j |  | ƒ g  |  j D] } | | k r& | ^ q& |  _ |  S(   N(   R^   t   intersection_updateRO   (   R   R;   Rg   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRk   ‰  s    +c         C@  sp   t  j |  | ƒ g  |  j D] } | |  k r | ^ q |  _ |  j g  | j D] } | |  k rL | ^ qL 7_ |  S(   N(   R^   t   symmetric_difference_updateRO   (   R   R;   Rg   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRl   ‘  s    +1c         C@  s?   t  j |  | ƒ g  |  j D] } | |  k r | ^ q |  _ |  S(   N(   R^   t   difference_updateRO   (   R   R;   Rg   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRm   ™  s    +N(   R   R   R   R&   R_   RZ   Ra   Rc   R.   R>   R:   R<   R-   t   __str__R	   t   __ior__R,   t   __or__Rh   t   __and__Ri   t   __xor__Rj   t   __sub__Rk   t   __iand__Rl   t   __ixor__Rm   t   __isub__(    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR]   9  s6   																	t   IdentitySetc           B@  ss  e  Z d  Z e Z d' 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 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, RS((   sÏ   A set that considers only object id() for uniqueness.

    This strategy has edge cases for builtin types- it's possible to have
    two 'foo' strings in one of these sets, for example.  Use sparingly.

    c         C@  s7   t  ƒ  |  _ | r3 x | D] } |  j | ƒ q Wn  d  S(   N(   R   t   _membersR_   (   R   Rd   t   o(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR&   «  s    c         C@  s   | |  j  t | ƒ <d  S(   N(   Rx   t   id(   R   RH   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR_   ±  s    c         C@  s   t  | ƒ |  j k S(   N(   Rz   Rx   (   R   RH   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRE   ´  s    c         C@  s   |  j  t | ƒ =d  S(   N(   Rx   Rz   (   R   RH   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRZ   ·  s    c         C@  s)   y |  j  | ƒ Wn t k
 r$ n Xd  S(   N(   RZ   RB   (   R   RH   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRc   º  s    c         C@  s?   y |  j  j ƒ  } | d SWn t k
 r: t d ƒ ‚ n Xd  S(   Ni   s   pop from an empty set(   Rx   R0   RB   (   R   t   pair(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR/   À  s
    c         C@  s   |  j  j ƒ  d  S(   N(   Rx   R.   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR.   Ç  s    c         C@  s   t  d ƒ ‚ d  S(   Ns   cannot compare sets using cmp()(   R   (   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __cmp__Ê  s    c         C@  s'   t  | t ƒ r |  j | j k St Sd  S(   N(   t
   isinstanceRw   Rx   t   False(   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __eq__Í  s    c         C@  s'   t  | t ƒ r |  j | j k St Sd  S(   N(   R}   Rw   Rx   t   True(   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __ne__Ó  s    c         C@  sb   t  |  ƒ | ƒ } t |  ƒ t | ƒ k r. t Sx- t | j j t |  j j ƒ  ƒ ƒ D] } t SWt S(   N(	   t   typeR5   R~   R   Rx   RE   R7   R   R€   (   R   Rd   R;   t   m(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   issubsetÙ  s    c         C@  s    t  | t ƒ s t S|  j | ƒ S(   N(   R}   Rw   t   NotImplementedR„   (   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __le__ã  s    c         C@  s8   t  | t ƒ s t St |  ƒ t | ƒ k  o7 |  j | ƒ S(   N(   R}   Rw   R…   R5   R„   (   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __lt__è  s    c         C@  sb   t  |  ƒ | ƒ } t |  ƒ t | ƒ k  r. t Sx- t |  j j t | j j ƒ  ƒ ƒ D] } t SWt S(   N(	   R‚   R5   R~   R   Rx   RE   R7   R   R€   (   R   Rd   R;   Rƒ   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt
   issupersetí  s    c         C@  s    t  | t ƒ s t S|  j | ƒ S(   N(   R}   Rw   R…   Rˆ   (   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __ge__ø  s    c         C@  s8   t  | t ƒ s t St |  ƒ t | ƒ k o7 |  j | ƒ S(   N(   R}   Rw   R…   R5   Rˆ   (   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __gt__ý  s    c         C@  sM   t  |  ƒ ƒ  } |  j ƒ  } t | ƒ } | j j |  j | ƒ j | ƒ ƒ | S(   N(   R‚   t   _member_id_tuplest   _iter_idRx   R	   t   _working_setR,   (   R   Rd   Rf   t   membersR;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR,     s
    "c         C@  s    t  | t ƒ s t S|  j | ƒ S(   N(   R}   Rw   R…   R,   (   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRp   
  s    c         C@  s   |  j  | ƒ j |  _ d  S(   N(   R,   Rx   (   R   Rd   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR	     s    c         C@  s$   t  | t ƒ s t S|  j | ƒ |  S(   N(   R}   Rw   R…   R	   (   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRo     s    c         C@  sM   t  |  ƒ ƒ  } |  j ƒ  } t | ƒ } | j j |  j | ƒ j | ƒ ƒ | S(   N(   R‚   R‹   RŒ   Rx   R	   R   Rj   (   R   Rd   Rf   RŽ   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRj     s
    "c         C@  s    t  | t ƒ s t S|  j | ƒ S(   N(   R}   Rw   R…   Rj   (   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRs      s    c         C@  s   |  j  | ƒ j |  _ d  S(   N(   Rj   Rx   (   R   Rd   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRm   %  s    c         C@  s$   t  | t ƒ s t S|  j | ƒ |  S(   N(   R}   Rw   R…   Rm   (   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRv   (  s    c         C@  sM   t  |  ƒ ƒ  } |  j ƒ  } t | ƒ } | j j |  j | ƒ j | ƒ ƒ | S(   N(   R‚   R‹   RŒ   Rx   R	   R   Rh   (   R   Rd   Rf   RŽ   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRh   .  s
    "c         C@  s    t  | t ƒ s t S|  j | ƒ S(   N(   R}   Rw   R…   Rh   (   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRq   6  s    c         C@  s   |  j  | ƒ j |  _ d  S(   N(   Rh   Rx   (   R   Rd   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRk   ;  s    c         C@  s$   t  | t ƒ s t S|  j | ƒ |  S(   N(   R}   Rw   R…   Rk   (   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRt   >  s    c         C@  sM   t  |  ƒ ƒ  } |  j ƒ  } t | ƒ } | j j |  j | ƒ j | ƒ ƒ | S(   N(   R‚   R‹   RŒ   Rx   R	   R   Ri   (   R   Rd   Rf   RŽ   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRi   D  s    	c         C@  s   d „  |  j  j ƒ  Dƒ S(   Nc         s@  s!   |  ] } t  | ƒ | f Vq d  S(   N(   Rz   (   R   t   v(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pys	   <genexpr>N  s    (   Rx   R9   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR‹   M  s    c         C@  s    t  | t ƒ s t S|  j | ƒ S(   N(   R}   Rw   R…   Ri   (   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRr   P  s    c         C@  s   |  j  | ƒ j |  _ d  S(   N(   Ri   Rx   (   R   Rd   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRl   U  s    c         C@  s$   t  | t ƒ s t S|  j | ƒ |  S(   N(   R}   Rw   R…   Ri   (   R   R;   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRu   X  s    c         C@  s   t  |  ƒ t |  j j ƒ  ƒ ƒ S(   N(   R‚   R7   Rx   R9   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRS   ^  s    c         C@  s   t  |  j ƒ S(   N(   R5   Rx   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR6   c  s    c         C@  s   t  |  j j ƒ  ƒ S(   N(   R7   Rx   R9   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR:   f  s    c         C@  s   t  d ƒ ‚ d  S(   Ns   set objects are unhashable(   R   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __hash__i  s    c         C@  s&   d t  |  ƒ j t |  j j ƒ  ƒ f S(   Ns   %s(%r)(   R‚   R   R8   Rx   R9   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR-   l  s    N(-   R   R   R   R^   R   R   R&   R_   RE   RZ   Rc   R/   R.   R|   R   R   R„   R†   R‡   Rˆ   R‰   RŠ   R,   Rp   R	   Ro   Rj   Rs   Rm   Rv   Rh   Rq   Rk   Rt   Ri   R‹   Rr   Rl   Ru   RS   RR   R6   R:   R   R-   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRw   ¡  sR   										
																											t   WeakSequencec           B@  sA   e  Z d d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C@  s/   g  | D] } t  j | |  j ƒ ^ q |  _ d  S(   N(   t   weakreft   reft   _removet   _storage(   R   t   _WeakSequence__elementsR`   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR&   q  s    c         C@  s#   |  j  j t j | |  j ƒ ƒ d  S(   N(   R•   RY   R’   R“   R”   (   R   R\   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRY   v  s    c         C@  s   |  j  j | ƒ d  S(   N(   R•   RZ   (   R   R“   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR”   y  s    c         C@  s   t  |  j ƒ S(   N(   R5   R•   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR6   |  s    c         C@  s   d „  d „  |  j  Dƒ Dƒ S(   Nc         s@  s!   |  ] } | d  k	 r | Vq d  S(   N(   R   (   R   t   obj(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pys	   <genexpr>€  s    c         s@  s   |  ] } | ƒ  Vq d  S(   N(    (   R   R“   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pys	   <genexpr>  s    (   R•   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR:     s    c         C@  s@   y |  j  | } Wn! t k
 r4 t d | ƒ ‚ n X| ƒ  Sd  S(   Ns   Index %s out of range(   R•   RB   t
   IndexError(   R   t   indexR—   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR>   ƒ  s
    (    (   R   R   R&   RY   R”   R6   R:   R>   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR‘   p  s   				t   OrderedIdentitySetc           B@  s*   e  Z d  e f d „  ƒ  YZ d d „ Z RS(   R   c           B@  s   e  Z e Z RS(    (   R   R   R€   t   __sa_hash_exempt__(    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR     s   c         C@  sD   t  j |  ƒ t ƒ  |  _ | r@ x | D] } |  j | ƒ q& Wn  d  S(   N(   Rw   R&   RN   Rx   R_   (   R   Rd   Ry   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR&   ”  s
    N(   R   R   R]   R   R   R&   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRš   Œ  s   t   PopulateDictc           B@  s    e  Z d  Z d „  Z d „  Z RS(   s•   A dict which populates missing values via a creation function.

    Note the creation function takes a key, unlike
    collections.defaultdict.

    c         C@  s   | |  _  d  S(   N(   t   creator(   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR&   ¤  s    c         C@  s   |  j  | ƒ |  | <} | S(   N(   R   (   R   R   t   val(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __missing__§  s    (   R   R   R   R&   RŸ   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRœ   œ  s   	c         C@  sˆ   i  } | sB g  |  D]+ } | | k r | j  | t ƒ r | ^ q Sg  |  D]7 } | | ƒ | k rI | j  | | ƒ t ƒ rI | ^ qI Sd  S(   N(   R#   R€   (   t   seqt   hashfunct   seent   x(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   unique_listµ  s    t   UniqueAppenderc           B@  s,   e  Z d  Z d d „ Z d „  Z d „  Z RS(   s½   Appends items to a collection ensuring uniqueness.

    Additional appends() of the same object are ignored.  Membership is
    determined by identity (``is a``) not equality (``==``).
    c         C@  sm   | |  _  i  |  _ | r- t | | ƒ |  _ n< t | d ƒ rK | j |  _ n t | d ƒ ri | j |  _ n  d  S(   NRY   R_   (   R4   t   _uniquet   getattrt   _data_appenderRU   RY   R_   (   R   R4   t   via(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR&   È  s    		c         C@  s<   t  | ƒ } | |  j k r8 |  j | ƒ t |  j | <n  d  S(   N(   Rz   R¦   R¨   R€   (   R   R\   t   id_(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRY   Ò  s    c         C@  s   t  |  j ƒ S(   N(   R7   R4   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR:   Ø  s    N(   R   R   R   R   R&   RY   R:   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR¥   Á  s   
	c         C@  s>   t  |  ƒ d k r6 t |  d t j ƒ r6 t |  d ƒ S|  Sd  S(   Ni   i    (   R5   R}   t   typest   GeneratorTypeR8   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   coerce_generator_argÜ  s    (c         C@  s4   |  d  k r | St |  t t f ƒ s, |  g S|  Sd  S(   N(   R   R}   R8   R   (   R£   RI   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   to_listã  s
    c         C@  s:   |  d  k r t ƒ  St |  t ƒ s2 t t |  ƒ ƒ S|  Sd  S(   N(   R   R^   R}   R®   (   R£   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   to_setì  s
    c         C@  s:   |  d  k r t ƒ  St |  t ƒ s2 t t |  ƒ ƒ S|  Sd  S(   N(   R   t
   column_setR}   R®   (   R£   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   to_column_setõ  s
    c         K@  s3   |  j  ƒ  }  | r" |  j | ƒ n  |  j |   |  S(   s5   Copy the given dict and update with the given values.(   RS   R	   (   R*   t   _newR    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   update_copyþ  s
    c         c@  sX   xQ |  D]I } t  | t ƒ rK t | d ƒ rK x! t | ƒ D] } | Vq9 Wq | Vq Wd S(   s   Given an iterator of which further sub-elements may also be
    iterators, flatten the sub-elements into a single iterator.

    R:   N(   R}   t   strRU   t   flatten_iterator(   R£   t   elemt   y(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRµ     s
    t   LRUCachec           B@  sS   e  Z d  Z d d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d	 „  Z	 RS(
   sI   Dictionary with 'squishy' removal of least
    recently used items.

    id   g      à?c         C@  s   | |  _  | |  _ d |  _ d  S(   Ni    (   t   capacityt	   thresholdt   _counter(   R   R¹   Rº   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR&     s    		c         C@  s   |  j  d 7_  |  j  S(   Ni   (   R»   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   _inc_counter   s    c         C@  s*   t  j |  | ƒ } |  j ƒ  | d <| d S(   Ni   i   (   R   R>   R¼   (   R   R   R\   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR>   $  s    c         C@  s$   g  t  j |  ƒ D] } | d ^ q S(   Ni   (   R   R9   (   R   t   i(    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR9   )  s    c         C@  s&   | |  k r |  | S| |  | <| Sd  S(   N(    (   R   R   RH   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR1   ,  s    
c         C@  sa   t  j |  | ƒ } | d  k rI | | |  j ƒ  g } t  j |  | | ƒ n
 | | d <|  j ƒ  d  S(   Ni   (   R   RJ   R   R¼   R#   t   _manage_size(   R   R   RH   R\   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR#   3  s    
c         C@  s”   x t  |  ƒ |  j |  j |  j k r t t j |  ƒ d t j d ƒ d t ƒ} x9 | |  j D]* } y |  | d =Wq^ t	 k
 r‡ Pq^ Xq^ Wq Wd  S(   NR   i   t   reversei    (
   R5   R¹   Rº   t   sortedR   R9   t   operatort
   itemgetterR€   RB   (   R   t
   by_counterR\   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR¾   <  s    &	(
   R   R   R   R&   R¼   R>   R9   R1   R#   R¾   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR¸     s   						t   ScopedRegistryc           B@  s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   sÆ  A Registry that can store one or multiple instances of a single
    class on the basis of a "scope" function.

    The object implements ``__call__`` as the "getter", so by
    calling ``myregistry()`` the contained object is returned
    for the current scope.

    :param createfunc:
      a callable that returns a new object to be placed in the registry

    :param scopefunc:
      a callable that will return a key to store/retrieve an object.
    c         C@  s   | |  _  | |  _ i  |  _ d S(   sV  Construct a new :class:`.ScopedRegistry`.

        :param createfunc:  A creation function that will generate
          a new value for the current scope, if none is present.

        :param scopefunc:  A function that returns a hashable
          token representing the current scope (such as, current
          thread identifier).

        N(   t
   createfunct	   scopefunct   registry(   R   RÅ   RÆ   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR&   Z  s    		c         C@  sI   |  j  ƒ  } y |  j | SWn' t k
 rD |  j j | |  j ƒ  ƒ SXd  S(   N(   RÆ   RÇ   RB   R1   RÅ   (   R   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   __call__i  s
    c         C@  s   |  j  ƒ  |  j k S(   s9   Return True if an object is present in the current scope.(   RÆ   RÇ   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   hasp  s    c         C@  s   | |  j  |  j ƒ  <d S(   s$   Set the value for the current scope.N(   RÇ   RÆ   (   R   R—   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR^   u  s    c         C@  s,   y |  j  |  j ƒ  =Wn t k
 r' n Xd S(   s    Clear the current scope, if any.N(   RÇ   RÆ   RB   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR.   z  s    (   R   R   R   R&   RÈ   RÉ   R^   R.   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRÄ   K  s   				t   ThreadLocalRegistryc           B@  s;   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s\   A :class:`.ScopedRegistry` that uses a ``threading.local()``
    variable for storage.

    c         C@  s   | |  _  t j ƒ  |  _ d  S(   N(   RÅ   R   t   localRÇ   (   R   RÅ   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR&   ‰  s    	c         C@  s=   y |  j  j SWn( t k
 r8 |  j ƒ  } |  j  _ | SXd  S(   N(   RÇ   RH   RC   RÅ   (   R   Rž   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRÈ     s
    c         C@  s   t  |  j d ƒ S(   NRH   (   RU   RÇ   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRÉ   ”  s    c         C@  s   | |  j  _ d  S(   N(   RÇ   RH   (   R   R—   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR^   —  s    c         C@  s%   y |  j  ` Wn t k
 r  n Xd  S(   N(   RÇ   RH   RC   (   R   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyR.   š  s    (   R   R   R   R&   RÈ   RÉ   R^   R.   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRÊ   ƒ  s   				c         c@  s&   x |  D] } t  | ƒ | f Vq Wd S(   s*   Generator: ((id(o), o) for o in iterable).N(   Rz   (   Rd   R\   (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyRŒ   ¡  s    (.   R   t
   __future__R    R’   RÁ   t   compatR   R   t    R   R«   t	   frozensett	   EMPTY_SETR   R   R=   R   R   R%   R2   RM   RF   RN   R^   R]   Rw   R‘   Rš   Rœ   R°   t   column_dictt   ordered_column_sett   populate_column_dictR   R¤   R¥   R­   R®   R¯   R±   R³   Rµ   R¸   RÄ   RÊ   RŒ   (    (    (    sb   /var/www/send.findwatt.com/datamanager/lib/python2.7/site-packages/sqlalchemy/util/_collections.pyt   <module>   sF   	SH[hÏ						
	68