ó ÃÌ4]c@@sçdZddlmZddlZddlZddlZddlmZddlmZddlm Z ddlm Z dd lm Z dd lm Z e ƒZd efd „ƒYZd efd„ƒYZdefd„ƒYZdefd„ƒYZdeefd„ƒYZdefd„ƒYZdefd„ƒYZdeefd„ƒYZdefd„ƒYZdefd„ƒYZdefd „ƒYZd!efd"„ƒYZd#efd$„ƒYZd%efd&„ƒYZ eZ!eZ"eZ#e Z$e ej%ƒZ&e d'„ƒZ'dd(„Z)d)efd*„ƒYZ*d+„Z+dd,„Z,d-„Z-d.„Z.d/„Z/dd0„Z0d1„Z1d2efd3„ƒYZ2e2d4ƒZ3d5„Z4d6efd7„ƒYZ5d8e5fd9„ƒYZ6d:„Z7d;„Z8dS(<sCollection classes and helpers.i(tabsolute_importNi(t binary_types(tcollections_abc(titertools_filterfalse(tpy2k(t string_types(t threadingtAbstractKeyedTuplecB@seZdZd„ZRS(cC@s t|jƒS(s‰Return a list of string key names for this :class:`.KeyedTuple`. .. seealso:: :attr:`.KeyedTuple._fields` (tlistt_fields(tself((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pytkeyss ((t__name__t __module__t __slots__R (((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRst KeyedTuplecB@s;eZdZdd„Zed„ƒZd„Zd„ZRS(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. .. seealso:: :ref:`ormtutorial_querying` cC@sKtj||ƒ}|r4|jjt||ƒƒng}||jd<|S(Nt_labels(ttuplet__new__t__dict__tupdatetzip(tclstvalstlabelstt((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRJs  cC@s,tg|jD]}|dk r |^q ƒS(sÖReturn a tuple of string key names for this :class:`.KeyedTuple`. This method provides compatibility with ``collections.namedtuple()``. .. seealso:: :meth:`.KeyedTuple.keys` N(RRtNone(R tl((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR Ss cC@std|ƒ‚dS(NsCan't set attribute: %s(tAttributeError(R tkeytvalue((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt __setattr__`sc@s‡fd†ˆ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. c@s i|]}ˆj||“qS((R(t.0R(R (sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pys js (R (R ((R sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt_asdictcsN( R R t__doc__RRtpropertyR RR!(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR*s   t_LWcB@s)eZdZd„Zd„Zd„ZRS(cC@stj||ƒS(N(RR(RR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRpscC@stt|ƒ|jffS(N(RRt _real_fields(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt __reduce__sscC@s,tt|j|ƒƒ}|jddƒ|S(sAReturn the contents of this :class:`.KeyedTuple` as a dictionary.N(tdictRR%tpopR(R td((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR!ys((R R RRR&R!(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR$ms  tImmutableContainercB@seZd„ZeZZZRS(cO@std|jjƒ‚dS(Ns%s object is immutable(t TypeErrort __class__R (R targtkw((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt _immutable‚s(R R R/t __delitem__t __setitem__R(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR*s t immutabledictcB@sNeZejZZZZZd„Z d„Z d„Z d„Z d„Z RS(cG@s#tj|ƒ}tj||Œ|S(N(R'Rt__init__(Rtargstnew((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRŒscG@sdS(N((R R4((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR3‘scC@stt|ƒffS(N(R2R'(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR&”scC@sT|s |S|s0t|tƒr#|St|ƒSn t|ƒ}tj||ƒ|SdS(N(t isinstanceR2R'R(R R)td2((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pytunion—s  cC@sdtj|ƒS(Nsimmutabledict(%s)(R't__repr__(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR9¤s(R R R*R/tclearR(tpopitemt setdefaultRRR3R&R8R9(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR2ˆs     t PropertiescB@sÔeZdZdZd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zdd„Zd„Zd„Zd„Zd„Zd„ZRS(s8Provide a __getattr__/__setattr__ interface over a dict.t_datacC@stj|d|ƒdS(NR>(tobjectR(R tdata((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR3­scC@s t|jƒS(N(tlenR>(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt__len__°scC@stt|jjƒƒƒS(N(titerRR>tvalues(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt__iter__³scC@s9ttt|ƒƒg|jjƒD]}t|ƒ^q"S(N(tdirtsuperR=R>R tstr(R tk((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt__dir__¶scC@st|ƒt|ƒS(N(R(R tother((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt__add__»scC@s||j|(R Rtobj((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR1¾scC@s |j|S(N(R>(R R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt __getitem__ÁscC@s|j|=dS(N(R>(R R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR0ÄscC@s||j|(R RRM((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRÇscC@si|jd6S(NR>(R>(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt __getstate__ÊscC@stj|d|dƒdS(NR>(R?R(R tstate((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt __setstate__ÍscC@s3y|j|SWntk r.t|ƒ‚nXdS(N(R>tKeyErrorR(R R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt __getattr__Ðs cC@s ||jkS(N(R>(R R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt __contains__ÖscC@s t|jƒS(s8Return an immutable proxy for this :class:`.Properties`.(tImmutablePropertiesR>(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt as_immutableÙscC@s|jj|ƒdS(N(R>R(R R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRÞscC@s||kr||S|SdS(N((R Rtdefault((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pytgetás cC@s t|jƒS(N(RR>(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR çscC@st|jjƒƒS(N(RR>RD(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRDêscC@st|jjƒƒS(N(RR>titems(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRYíscC@s ||jkS(N(R>(R R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pythas_keyðscC@s|jjƒdS(N(R>R:(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR:ós(R>N(R R R"RR3RBRERJRLR1RNR0RRORQRSRTRVRRRXR RDRYRZR:(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR=¨s.                    tOrderedPropertiescB@seZdZdZd„ZRS(sUProvide a __getattr__/__setattr__ interface with an OrderedDict as backing store.cC@stj|tƒƒdS(N(R=R3t OrderedDict(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR3ýs((R R R"RR3(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR[÷sRUcB@seZdZdZRS(sDProvide immutable dict/object attribute to an underlying dictionary.((R R R"R(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRUsR\cB@sÎeZdZdZd„Zdd„Zd„Zd„Zd„Z d„Z dd„Z d „Z d „Z d „Zd „Zd „Zer¨d„Zd„Zd„Znd„Zd„Zd„Zd„ZRS(sCA dict that returns keys/values/items in the order they were added.t_listcC@st|jƒffS(N(R\RY(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR& scK@sBg|_|dkr.|r>|j|q>n|j||dS(N(R]RR(R t_OrderedDict____sequencetkwargs((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR3s   cC@sg|_tj|ƒdS(N(R]R'R:(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR:s cC@s |jƒS(N(t__copy__(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pytcopyscC@s t|ƒS(N(R\(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR`scO@s|jj||ŽdS(N(R]tsort(R R-R.((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRb!scK@s‡|dk rmt|dƒrIxL|jƒD]}|j|||ƒq(Wqmx!|D]\}}|||||k}tj|||Œ}|r:|jj|ƒn|S(N(R'R(R]Rh(R RRWtpresentR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR([s  cC@s'tj|ƒ}|jj|dƒ|S(Ni(R'R;R]Rh(R titem((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR;bs(R]N(R R R"RR&RR3R:RaR`RbRR<RER RDRYRRdReRfR1R0R(R;(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR\s,                t OrderedSetcB@sãeZdd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z d „Z e Z d „ZeZd „ZeZd „ZeZd „ZeZd„ZeZd„ZeZd„ZeZd„ZeZRS(cC@sTtj|ƒg|_|dk rGt|ƒ|_tj||jƒn g|_dS(N(tsetR3R]Rt unique_listR(R R)((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR3is    cC@s3||kr|jj|ƒntj||ƒdS(N(R]RgRltadd(R telement((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRnrs cC@s$tj||ƒ|jj|ƒdS(N(RlRhR](R Ro((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRhwscC@s6||kr"|jj||ƒntj||ƒdS(N(R]tinsertRlRn(R tposRo((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRp{s cC@s3||kr/|jj|ƒtj||ƒndS(N(R]RhRl(R Ro((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pytdiscard€s cC@stj|ƒg|_dS(N(RlR:R](R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR:…s cC@s |j|S(N(R](R R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRN‰scC@s t|jƒS(N(RCR](R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyREŒscC@s |j|ƒS(N(R8(R RK((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRLscC@sd|jj|jfS(Ns%s(%r)(R,R R](R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR9’scC@sDx=|D]5}||kr|jj|ƒtj||ƒqqW|S(N(R]RgRlRn(R titerablete((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR—s   cC@s |j|ƒ}|j|ƒ|S(N(R,R(R RKtresult((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR8 s c@s)tˆƒ‰|j‡fd†|DƒƒS(Nc3@s!|]}|ˆkr|VqdS(N((R ta(RK(sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pys ©s(RlR,(R RK((RKsO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt intersection§s c@sLtˆƒ‰ˆj‡fd†ˆDƒƒ}|j‡fd†ˆDƒƒ|S(Nc3@s!|]}|ˆkr|VqdS(N((R Rv(RK(sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pys ¯sc3@s!|]}|ˆkr|VqdS(N((R Rv(R (sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pys °s(RlR,R(R RKRu((RKR sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pytsymmetric_difference­s c@s)tˆƒ‰|j‡fd†|DƒƒS(Nc3@s!|]}|ˆkr|VqdS(N((R Rv(RK(sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pys ·s(RlR,(R RK((RKsO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt differenceµs cC@sKt|ƒ}tj||ƒg|jD]}||kr&|^q&|_|S(N(Rltintersection_updateR](R RKRv((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRz»s +cC@sptj||ƒg|jD]}||kr|^q|_|jg|jD]}||krL|^qL7_|S(N(Rltsymmetric_difference_updateR](R RKRv((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR{Ãs+1cC@s?tj||ƒg|jD]}||kr|^q|_|S(N(Rltdifference_updateR](R RKRv((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR|Ës+N(R R RR3RnRhRpRrR:RNRERLR9t__str__Rt__ior__R8t__or__Rwt__and__Rxt__xor__Ryt__sub__Rzt__iand__R{t__ixor__R|t__isub__(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRkhs6                 t IdentitySetcB@sseZdZeZd'd„Zd„Zd„Zd„Z d„Z d„Z d„Z d„Z d „Zd „Zd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„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. cC@s7tƒ|_|r3x|D]}|j|ƒqWndS(N(R't_membersRn(R Rsto((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR3Ýs  cC@s||jt|ƒscC@s|j|ƒj|_dS(N(R8R‡(R Rs((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRCscC@s$t|tƒstS|j|ƒ|S(N(R6R†R“R(R RK((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR~Fs cC@sMt|ƒƒ}|jƒ}t|ƒ}|jj|j|ƒj|ƒƒ|S(N(RR™RšR‡RR›Ry(R RsRuRœRK((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRyLs   "cC@s t|tƒstS|j|ƒS(N(R6R†R“Ry(R RK((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR‚TscC@s|j|ƒj|_dS(N(RyR‡(R Rs((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR|YscC@s$t|tƒstS|j|ƒ|S(N(R6R†R“R|(R RK((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR…\s cC@sMt|ƒƒ}|jƒ}t|ƒ}|jj|j|ƒj|ƒƒ|S(N(RR™RšR‡RR›Rw(R RsRuRœRK((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRwbs   "cC@s t|tƒstS|j|ƒS(N(R6R†R“Rw(R RK((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR€jscC@s|j|ƒj|_dS(N(RwR‡(R Rs((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRzoscC@s$t|tƒstS|j|ƒ|S(N(R6R†R“Rz(R RK((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRƒrs cC@sMt|ƒƒ}|jƒ}t|ƒ}|jj|j|ƒj|ƒƒ|S(N(RR™RšR‡RR›Rx(R RsRuRœRK((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRxxs    cC@sd„|jjƒDƒS(Ncs@s!|]}t|ƒ|fVqdS(N(R‰(R tv((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pys ƒs(R‡RD(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR™‚scC@s t|tƒstS|j|ƒS(N(R6R†R“Rx(R RK((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR…scC@s|j|ƒj|_dS(N(RxR‡(R Rs((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR{ŠscC@s$t|tƒstS|j|ƒ|S(N(R6R†R“Rx(R RK((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR„s cC@st|ƒt|jjƒƒƒS(N(RRCR‡RD(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRa“scC@s t|jƒS(N(RAR‡(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRB˜scC@st|jjƒƒS(N(RCR‡RD(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRE›scC@stdƒ‚dS(Nsset objects are unhashable(R+(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt__hash__žscC@s&dt|ƒjt|jjƒƒfS(Ns%s(%r)(RR RR‡RD(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR9¡sN(-R R R"RlR›RR3RnRTRhRrR(R:R‹RRR’R”R•R–R—R˜R8RRR~RyR‚R|R…RwR€RzRƒRxR™RR{R„RaR`RBRERžR9(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR†ÓsR                                  t WeakSequencecB@sAeZdd„Zd„Zd„Zd„Zd„Zd„ZRS(cC@s/g|D]}tj||jƒ^q|_dS(N(tweakreftreft_removet_storage(R t_WeakSequence__elementsRo((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR3¦scC@s#|jjtj||jƒƒdS(N(R£RgR R¡R¢(R Rj((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRg«scC@s|jj|ƒdS(N(R£Rh(R R¡((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR¢®scC@s t|jƒS(N(RAR£(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRB±scC@sd„d„|jDƒDƒS(Ncs@s!|]}|dk r|VqdS(N(R(R RM((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pys ¶scs@s|]}|ƒVqdS(N((R R¡((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pys ¶s(R£(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRE´scC@s@y|j|}Wn!tk r4td|ƒ‚nX|ƒSdS(NsIndex %s out of range(R£RRt IndexError(R tindexRM((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRN¹s  ((R R R3RgR¢RBRERN(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRŸ¥s      tOrderedIdentitySetcB@s*eZdefd„ƒYZdd„ZRS(R›cB@seZeZRS((R R RŽt__sa_hash_exempt__(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR›ÃscC@sDtj|ƒtƒ|_|r@x|D]}|j|ƒq&WndS(N(R†R3R\R‡Rn(R RsRˆ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR3Ês    N(R R RkR›RR3(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR§Âst PopulateDictcB@s eZdZd„Zd„ZRS(s•A dict which populates missing values via a creation function. Note the creation function takes a key, unlike collections.defaultdict. cC@s ||_dS(N(tcreator(R Rª((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR3ÚscC@s|j|ƒ||<}|S(N(Rª(R Rtval((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt __missing__Ýs(R R R"R3R¬(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR©Òs cC@sttj|ƒƒS(N(R#toperatort itemgetter(tidx((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pytïtcC@sˆtƒ}|j}|sHg|D]%}||kr||ƒ r|^qSg|D]1}||ƒ|krO|||ƒƒ rO|^qOSdS(N(RlRn(tseqthashfunctseentseen_addtx((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRmós  0 tUniqueAppendercB@s,eZdZdd„Zd„Zd„ZRS(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 (``==``). cC@sm||_i|_|r-t||ƒ|_n<t|dƒrK|j|_nt|dƒri|j|_ndS(NRgRn(R@t_uniquetgetattrt_data_appenderRcRgRn(R R@tvia((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR3s  cC@s<t|ƒ}||jkr8|j|ƒt|j|t|ƒdkr6t|dtjƒr6t|dƒS|SdS(Nii(RAR6ttypest GeneratorTypeR(R-((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pytcoerce_generator_args(cC@s^|dkr|St|tjƒ s6t|ttƒr=|gSt|tƒrP|St|ƒSdS(N(RR6RtIterableRRR(R¶RW((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pytto_list"s cC@s/t|jg|D]}|jr|^qƒƒS(s²return True if any items of set\_ are present in iterable. Goes through special effort to ensure __hash__ is not called on items in iterable that don't support it. (tboolRwRž(tset_Rsti((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pythas_intersection/scC@s:|dkrtƒSt|tƒs2tt|ƒƒS|SdS(N(RRlR6RÁ(R¶((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pytto_set:s  cC@s:|dkrtƒSt|tƒs2tt|ƒƒS|SdS(N(Rt column_setR6RÁ(R¶((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt to_column_setCs  cK@s3|jƒ}|r"|j|ƒn|j||S(s5Copy the given dict and update with the given values.(RaR(R)t_newR.((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt update_copyLs   cc@sXxQ|D]I}t|tƒ rKt|dƒrKx!t|ƒD] }|Vq9Wq|VqWdS(sGiven an iterator of which further sub-elements may also be iterators, flatten the sub-elements into a single iterator. REN(R6RHRctflatten_iterator(R¶telemty((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRËVs   tLRUCachecB@sweZdZdZdddd„Zd „Zdd „Zd „Zd „Z d „Z d„Z e d„ƒZ d„ZRS(sóDictionary with 'squishy' removal of least recently used items. Note that either get() or [] should be used here, but generally its not safe to do an "in" check first as the dictionary can change subsequent to that call. tcapacityt thresholdt size_alertt_countert_mutexidgà?cC@s7||_||_||_d|_tjƒ|_dS(Ni(RÏRÐRÑRÒRtLockRÓ(R RÏRÐRÑ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR3os     cC@s|jd7_|jS(Ni(RÒ(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt _inc_countervscC@sAtj|||ƒ}||k r9|jƒ|d<|dS|SdS(Nii(R'RXRÕ(R RRWRj((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRXzs  cC@s*tj||ƒ}|jƒ|d<|dS(Nii(R'RNRÕ(R RRj((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRN‚scC@s$gtj|ƒD]}|d^qS(Ni(R'RD(R RÄ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRD‡scC@s&||kr||S|||<|SdS(N((R RR((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR<Šs  cC@satj||ƒ}|dkrI|||jƒg}tj|||ƒn ||d<|jƒdS(Ni(R'RXRRÕR1t _manage_size(R RRRj((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR1‘s   cC@s|j|j|jS(N(RÏRÐ(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pytsize_thresholdšscC@sì|jjtƒsdSzÁt|jƒ}x«t|ƒ|j|j|jkrÕ|rjt}|j|ƒntt j |ƒdt j dƒdt ƒ}x;||jD],}y||d=Wq¢tk rÍq¢q¢Xq¢Wq+WWd|jjƒXdS(NRitreversei(RÓtacquireRŒRÂRÑRARÏRÐtsortedR'RDR­R®RŽRRtrelease(R RÑt by_counterRj((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRÖžs &' (RÏRÐRÑRÒRÓN(R R R"RRR3RÕRXRNRDR<R1R#R×RÖ(((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyRÎcs      idc C@sÎ|ft|ƒ}tj|ƒ}|r,|St|tftgt|ƒD](\}}|dk rH|t|f^qHddfgƒƒ}||_ tg|D]}|dk rœ|^qœƒ|_ |t|<|S(NR(( Rt _lw_tuplesRXRR$R't enumerateRt_property_gettersR%R (tnametfieldsthash_ttp_clsR¯tfieldtf((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pytlightweight_named_tuple·s  . tScopedRegistrycB@s;eZdZd„Zd„Zd„Zd„Zd„ZRS(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. cC@s||_||_i|_dS(sVConstruct 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 scopefunctregistry(R RèRé((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyR3às  cC@sI|jƒ}y|j|SWn'tk rD|jj||jƒƒSXdS(N(RéRêRRR<Rè(R R((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pyt__call__ïs   cC@s|jƒ|jkS(s9Return True if an object is present in the current scope.(RéRê(R ((sO/opt/alt/python27/lib64/python2.7/site-packages/sqlalchemy/util/_collections.pythasöscC@s||j|jƒs`    C O akÒ    Q  8