ó õùPc@sIdZddlmZmZddlZdddddd d d d d ddddddgZd„Zdd%d„ƒYZdd&d„ƒYZej e ƒdefd„ƒYZ dd'd„ƒYZ dd(d„ƒYZ d d)d„ƒYZd e ee fd„ƒYZej eƒd efd„ƒYZej eƒd e ee fd„ƒYZde fd„ƒYZdeefd„ƒYZdeefd „ƒYZdefd!„ƒYZd efd"„ƒYZej eƒde ee fd#„ƒYZej eƒej eƒej eƒej eƒdefd$„ƒYZej e ƒdS(*sAbstract Base Classes (ABCs) for collections, according to PEP 3119. DON'T USE THIS MODULE DIRECTLY! The classes here should be imported via collections; they are defined here only to alleviate certain bootstrapping issues. Unit tests are in test_collections. iÿÿÿÿ(tABCMetatabstractmethodNtHashabletIterabletIteratortSizedt ContainertCallabletSett MutableSettMappingtMutableMappingt MappingViewtKeysViewt ItemsViewt ValuesViewtSequencetMutableSequencecsCy!t‡fd†|jDƒƒSWntk r>t|ˆƒSXdS(Nc3s|]}ˆ|jkVqdS(N(t__dict__(t.0tB(tattr(s.\lib\_abcoll.pys s(tanyt__mro__tAttributeErrorthasattr(tCR((Rs.\lib\_abcoll.pyt_hasattrs! cBs,eZeZed„ƒZed„ƒZRS(cCsdS(Ni((tself((s.\lib\_abcoll.pyt__hash__#scCsy|tkruy<x5|jD]*}d|jkr|jdr?tSPqqWWqutk rqt|ddƒrrtSquXntS(NR(RRRtTrueRtgetattrtNonetNotImplemented(tclsRR((s.\lib\_abcoll.pyt__subclasshook__'s     (t__name__t __module__Rt __metaclass__RRt classmethodR#(((s.\lib\_abcoll.pyR scBs,eZeZed„ƒZed„ƒZRS(ccsxtrdVqWdS(N(tFalseR (R((s.\lib\_abcoll.pyt__iter__:s cCs&|tkr"t|dƒr"tSntS(NR)(RRRR!(R"R((s.\lib\_abcoll.pyR#?s (R$R%RR&RR)R'R#(((s.\lib\_abcoll.pyR7scBs/eZed„ƒZd„Zed„ƒZRS(cCs t‚dS(N(t StopIteration(R((s.\lib\_abcoll.pytnextKscCs|S(N((R((s.\lib\_abcoll.pyR)OscCs&|tkr"t|dƒr"tSntS(NR+(RRRR!(R"R((s.\lib\_abcoll.pyR#Rs (R$R%RR+R)R'R#(((s.\lib\_abcoll.pyRIs cBs,eZeZed„ƒZed„ƒZRS(cCsdS(Ni((R((s.\lib\_abcoll.pyt__len__]scCs&|tkr"t|dƒr"tSntS(NR,(RRRR!(R"R((s.\lib\_abcoll.pyR#as (R$R%RR&RR,R'R#(((s.\lib\_abcoll.pyRZscBs,eZeZed„ƒZed„ƒZRS(cCstS(N(R((Rtx((s.\lib\_abcoll.pyt __contains__lscCs&|tkr"t|dƒr"tSntS(NR.(RRRR!(R"R((s.\lib\_abcoll.pyR#ps (R$R%RR&RR.R'R#(((s.\lib\_abcoll.pyRiscBs,eZeZed„ƒZed„ƒZRS(cOstS(N(R((Rtargstkwds((s.\lib\_abcoll.pyt__call__{scCs&|tkr"t|dƒr"tSntS(NR1(RRRR!(R"R((s.\lib\_abcoll.pyR#s (R$R%RR&RR1R'R#(((s.\lib\_abcoll.pyRxscBseZdZd„Zd„Zd„Zd„Zd„Zd„Ze d„ƒZ d„Z d „Z d „Z d „Zd „ZdZd „ZRS(shA set is a finite, iterable container. This class provides concrete generic implementations of all methods except for __contains__, __iter__ and __len__. To override the comparisons (presumably for speed, as the semantics are fixed), all you have to do is redefine __le__ and then the other operations will automatically follow suit. cCsTt|tƒstSt|ƒt|ƒkr/tSx|D]}||kr6tSq6WtS(N(t isinstanceRR!tlenR(R(Rtothertelem((s.\lib\_abcoll.pyt__le__•s  cCs8t|tƒstSt|ƒt|ƒko7|j|ƒS(N(R2RR!R3R6(RR4((s.\lib\_abcoll.pyt__lt__ŸscCst|tƒstS||kS(N(R2RR!(RR4((s.\lib\_abcoll.pyt__gt__¤scCst|tƒstS||kS(N(R2RR!(RR4((s.\lib\_abcoll.pyt__ge__©scCs8t|tƒstSt|ƒt|ƒko7|j|ƒS(N(R2RR!R3R6(RR4((s.\lib\_abcoll.pyt__eq__®scCs ||k S(N((RR4((s.\lib\_abcoll.pyt__ne__³scCs ||ƒS(s¼Construct an instance of the class from any iterable input. Must override this method if the class constructor signature does not accept an iterable for an input. ((R"tit((s.\lib\_abcoll.pyt_from_iterable¶scs0t|tƒstSˆj‡fd†|DƒƒS(Nc3s!|]}|ˆkr|VqdS(N((Rtvalue(R(s.\lib\_abcoll.pys Âs(R2RR!R=(RR4((Rs.\lib\_abcoll.pyt__and__¿scCs%x|D]}||krtSqWtS(N(R(R(RR4R>((s.\lib\_abcoll.pyt isdisjointÄs  cCs6t|tƒstSd„||fDƒ}|j|ƒS(Ncss"|]}|D] }|Vq qdS(N((Rtste((s.\lib\_abcoll.pys Ís(R2RR!R=(RR4tchain((s.\lib\_abcoll.pyt__or__ÊscsQtˆtƒs4tˆtƒs"tS|jˆƒ‰n|j‡fd†|DƒƒS(Nc3s!|]}|ˆkr|VqdS(N((RR>(R4(s.\lib\_abcoll.pys Õs(R2RRR!R=(RR4((R4s.\lib\_abcoll.pyt__sub__Ðs cCsDt|tƒs4t|tƒs"tS|j|ƒ}n||||BS(N(R2RRR!R=(RR4((s.\lib\_abcoll.pyt__xor__Øs cCsÊtj}d|d}t|ƒ}d|d}||M}x>|D]6}t|ƒ}|||d>AdAdN}||M}qBW|dd}||M}||kr±||d8}n|d krÆd }n|S( s+Compute the hash value of a set. Note that we don't define __hash__: not all sets are hashable. But if you define a hashable set type, its __hash__ should call this function. This must be compatible __eq__. All sets ought to compare equal if they contain the same elements, regardless of how they are implemented, and regardless of the order of the elements; so there's not much freedom for __eq__ or __hash__. We match the algorithm used by the built-in frozenset type. iiiMïèrii³M[l×4~2iÍ iãÃ6iÿÿÿÿiÁÇ8#(tsystmaxintR3thash(RtMAXtMASKtnthR-thx((s.\lib\_abcoll.pyt_hashâs          N(R$R%t__doc__R6R7R8R9R:R;R'R=R?R@RDRERFR RRO(((s.\lib\_abcoll.pyRŠs           cBseeZed„ƒZed„ƒZd„Zd„Zd„Zd„Zd„Z d„Z d„Z RS( cCs t‚dS(sAdd an element.N(tNotImplementedError(RR>((s.\lib\_abcoll.pytaddscCs t‚dS(s8Remove an element. Do not raise an exception if absent.N(RQ(RR>((s.\lib\_abcoll.pytdiscard scCs,||krt|ƒ‚n|j|ƒdS(s5Remove an element. If not a member, raise a KeyError.N(tKeyErrorRS(RR>((s.\lib\_abcoll.pytremoves cCsGt|ƒ}yt|ƒ}Wntk r5t‚nX|j|ƒ|S(s2Return the popped value. Raise KeyError if empty.(titerR+R*RTRS(RR<R>((s.\lib\_abcoll.pytpops    cCs3yxtr|jƒqWWntk r.nXdS(s6This is slow (creates N new iterators!) but effective.N(RRWRT(R((s.\lib\_abcoll.pytclear!s   cCs"x|D]}|j|ƒqW|S(N(RR(RR<R>((s.\lib\_abcoll.pyt__ior__)s cCs&x||D]}|j|ƒq W|S(N(RS(RR<R>((s.\lib\_abcoll.pyt__iand__.scCsx||kr|jƒn[t|tƒs:|j|ƒ}nx7|D]/}||krc|j|ƒqA|j|ƒqAW|S(N(RXR2RR=RSRR(RR<R>((s.\lib\_abcoll.pyt__ixor__3s    cCs;||kr|jƒnx|D]}|j|ƒq W|S(N(RXRS(RR<R>((s.\lib\_abcoll.pyt__isub__@s    ( R$R%RRRRSRURWRXRYRZR[R\(((s.\lib\_abcoll.pyR s     cBszeZed„ƒZd d„Zd„Zd„Zd„Zd„Z d„Z d„Z d„Z d Z d „Zd „ZRS( cCs t‚dS(N(RT(Rtkey((s.\lib\_abcoll.pyt __getitem__PscCs%y ||SWntk r |SXdS(N(RT(RR]tdefault((s.\lib\_abcoll.pytgetTs  cCs)y ||Wntk r tSXtSdS(N(RTR(R(RR]((s.\lib\_abcoll.pyR.Zs   cCs t|ƒS(N(RV(R((s.\lib\_abcoll.pytiterkeysbsccsx|D]}||VqWdS(N((RR]((s.\lib\_abcoll.pyt itervalueses ccs$x|D]}|||fVqWdS(N((RR]((s.\lib\_abcoll.pyt iteritemsis cCs t|ƒS(N(tlist(R((s.\lib\_abcoll.pytkeysmscCs!g|D]}|||f^qS(N((RR]((s.\lib\_abcoll.pytitemspscCsg|D]}||^qS(N((RR]((s.\lib\_abcoll.pytvaluessscCs5t|tƒstSt|jƒƒt|jƒƒkS(N(R2R R!tdictRf(RR4((s.\lib\_abcoll.pyR:yscCs ||k S(N((RR4((s.\lib\_abcoll.pyR;~sN(R$R%RR^R R`R.RaRbRcReRfRgRR:R;(((s.\lib\_abcoll.pyR Ns         cBs#eZd„Zd„Zd„ZRS(cCs ||_dS(N(t_mapping(Rtmapping((s.\lib\_abcoll.pyt__init__ƒscCs t|jƒS(N(R3Ri(R((s.\lib\_abcoll.pyR,†scCs dj|ƒS(Ns&{0.__class__.__name__}({0._mapping!r})(tformat(R((s.\lib\_abcoll.pyt__repr__‰s(R$R%RkR,Rm(((s.\lib\_abcoll.pyR s  cBs)eZed„ƒZd„Zd„ZRS(cCs t|ƒS(N(tset(RR<((s.\lib\_abcoll.pyR=scCs ||jkS(N(Ri(RR]((s.\lib\_abcoll.pyR.“sccsx|jD] }|Vq WdS(N(Ri(RR]((s.\lib\_abcoll.pyR)–s(R$R%R'R=R.R)(((s.\lib\_abcoll.pyR s cBs)eZed„ƒZd„Zd„ZRS(cCs t|ƒS(N(Rn(RR<((s.\lib\_abcoll.pyR=scCs@|\}}y|j|}Wntk r1tSX||kSdS(N(RiRTR((RtitemR]R>tv((s.\lib\_abcoll.pyR.¡s   ccs*x#|jD]}||j|fVq WdS(N(Ri(RR]((s.\lib\_abcoll.pyR)ªs(R$R%R'R=R.R)(((s.\lib\_abcoll.pyR›s cBseZd„Zd„ZRS(cCs/x(|jD]}||j|kr tSq WtS(N(RiRR((RR>R]((s.\lib\_abcoll.pyR.±sccs$x|jD]}|j|Vq WdS(N(Ri(RR]((s.\lib\_abcoll.pyR)·s(R$R%R.R)(((s.\lib\_abcoll.pyR¯s cBsbeZed„ƒZed„ƒZeƒZed„Zd„Zd„Z d„Z dd„Z RS(cCs t‚dS(N(RT(RR]R>((s.\lib\_abcoll.pyt __setitem__¾scCs t‚dS(N(RT(RR]((s.\lib\_abcoll.pyt __delitem__ÂscCsGy||}Wn'tk r7||jkr3‚n|SX||=|SdS(N(RTt_MutableMapping__marker(RR]R_R>((s.\lib\_abcoll.pyRWÈs cCsKytt|ƒƒ}Wntk r/t‚nX||}||=||fS(N(R+RVR*RT(RR]R>((s.\lib\_abcoll.pytpopitemÓs   cCs3yxtr|jƒqWWntk r.nXdS(N(RRtRT(R((s.\lib\_abcoll.pyRXÜs   cOs%t|ƒdkr0tdjt|ƒƒƒ‚n|sEtdƒ‚n|d}t|ƒdkrk|dnd}t|tƒr¢xw|D]}||||((s.\lib\_abcoll.pytupdateãs"  " cCs.y ||SWntk r)|||Rp((s.\lib\_abcoll.pyR.s  ccs0x)ttt|ƒƒƒD]}||VqWdS(N(treversedtrangeR3(RR{((s.\lib\_abcoll.pyt __reversed__ scCs7x*t|ƒD]\}}||kr |Sq Wt‚dS(N(t enumeratet ValueError(RR>R{Rp((s.\lib\_abcoll.pyRz$s cst‡fd†|DƒƒS(Nc3s!|]}|ˆkrdVqdS(iN((RRp(R>(s.\lib\_abcoll.pys +s(tsum(RR>((R>s.\lib\_abcoll.pytcount*s( R$R%RPRR^R)R.R~RzR‚(((s.\lib\_abcoll.pyRs   cBsneZed„ƒZed„ƒZed„ƒZd„Zd„Zd„Zdd„Z d„Z d „Z RS( cCs t‚dS(N(Ry(RRzR>((s.\lib\_abcoll.pyRq5scCs t‚dS(N(Ry(RRz((s.\lib\_abcoll.pyRr9scCs t‚dS(N(Ry(RRzR>((s.\lib\_abcoll.pytinsert=scCs|jt|ƒ|ƒdS(N(RƒR3(RR>((s.\lib\_abcoll.pytappendAscCsXt|ƒ}xEt|dƒD]3}|||d||||<|||d((s.\lib\_abcoll.pyRURscCs|j|ƒ|S(N(R†(RRg((s.\lib\_abcoll.pyt__iadd__Us ( R$R%RRqRrRƒR„R…R†RWRUR‡(((s.\lib\_abcoll.pyR3s     ((((((!RPtabcRRRGt__all__RRRtregistertstrRRRRRt frozensetR RnR R R RRR RhRttuplet basestringtbuffertxrangeRRd(((s.\lib\_abcoll.pyt sD       x C 3  C (    &