grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026î   fºMã@s«dZddlmZmZddlZdddddd d d d d dddddddgZdZeedƒƒZ eee ƒƒƒZ eeij ƒƒƒZ eeijƒƒƒZeeijƒƒƒZeegƒƒZeeegƒƒƒZeeedƒƒƒZeeeƒƒƒZeedƒƒZeefƒƒZeeeƒƒƒZeij ƒƒZeijƒƒZeijƒƒZeej ƒZ!Gdd„ddeƒZ"Gdd„ddeƒZ#Gdd„de#ƒZ$e$j%e ƒe$j%e ƒe$j%e ƒe$j%eƒe$j%eƒe$j%eƒe$j%eƒe$j%eƒe$j%eƒe$j%eƒe$j%eƒe$j%eƒGdd„ddeƒZ&Gdd„ddeƒZ'Gdd „d deƒZ(Gdd „d e&e#e'ƒZ)e)j%e*ƒGd d „d e)ƒZ+e+j%eƒGd!d „d e&e#e'ƒZ,e,j%e!ƒGd"d„de&ƒZ-Gd#d„de-e)ƒZ.e.j%eƒGd$d„de-e)ƒZ/e/j%eƒGd%d„de-ƒZ0e0j%eƒGd&d „d e,ƒZ1e1j%e2ƒGd'd„de&e#e'ƒZ3e3j%e4ƒe3j%e5ƒe3j%eƒe3j%e6ƒGd(d„de3ƒZ7e7j%e8ƒe7j%e ƒGd)d„de3ƒZ9e9j%e:ƒe9j%e ƒdS)*zjAbstract Base Classes (ABCs) for collections, according to PEP 3119. Unit tests are in test_collections. é)ÚABCMetaÚabstractmethodNÚHashableÚIterableÚIteratorÚSizedÚ ContainerÚCallableÚSetÚ MutableSetÚMappingÚMutableMappingÚ MappingViewÚKeysViewÚ ItemsViewÚ ValuesViewÚSequenceÚMutableSequenceÚ ByteStringzcollections.abcóÚc@s:eZdZfZedd„ƒZedd„ƒZdS)rcCsdS)Nr©)Úselfrrú5/opt/alt/python34/lib64/python3.4/_collections_abc.pyÚ__hash__=szHashable.__hash__cCsK|tkrGx8|jD]*}d|jkr|jdr<dSPqqWntS)NrT)rÚ__mro__Ú__dict__ÚNotImplemented)ÚclsÚCÚBrrrÚ__subclasshook__As   zHashable.__subclasshook__N)Ú__name__Ú __module__Ú __qualname__Ú __slots__rrÚ classmethodr!rrrrr9s Ú metaclassc@s:eZdZfZedd„ƒZedd„ƒZdS)rccsdS)Nr)rrrrÚ__iter__PszIterable.__iter__cCs3|tkr/tdd„|jDƒƒr/dSntS)Ncss|]}d|jkVqdS)r(N)r)Ú.0r rrrú Xsz,Iterable.__subclasshook__..T)rÚanyrr)rrrrrr!Us zIterable.__subclasshook__N)r"r#r$r%rr(r&r!rrrrrLs c@sFeZdZfZedd„ƒZdd„Zedd„ƒZdS)rcCs t‚dS)zKReturn the next item from the iterator. When exhausted, raise StopIterationN)Ú StopIteration)rrrrÚ__next__aszIterator.__next__cCs|S)Nr)rrrrr(fszIterator.__iter__cCsO|tkrKtdd„|jDƒƒrKtdd„|jDƒƒrKdSntS)Ncss|]}d|jkVqdS)r-N)r)r)r rrrr*lsz,Iterator.__subclasshook__..css|]}d|jkVqdS)r(N)r)r)r rrrr*msT)rr+rr)rrrrrr!is  zIterator.__subclasshook__N) r"r#r$r%rr-r(r&r!rrrrr]s  c@s:eZdZfZedd„ƒZedd„ƒZdS)rcCsdS)Nrr)rrrrÚ__len__ƒsz Sized.__len__cCs3|tkr/tdd„|jDƒƒr/dSntS)Ncss|]}d|jkVqdS)r.N)r)r)r rrrr*Šsz)Sized.__subclasshook__..T)rr+rr)rrrrrr!‡s zSized.__subclasshook__N)r"r#r$r%rr.r&r!rrrrrs c@s:eZdZfZedd„ƒZedd„ƒZdS)rcCsdS)NFr)rÚxrrrÚ __contains__“szContainer.__contains__cCs3|tkr/tdd„|jDƒƒr/dSntS)Ncss|]}d|jkVqdS)r0N)r)r)r rrrr*šsz-Container.__subclasshook__..T)rr+rr)rrrrrr!—s zContainer.__subclasshook__N)r"r#r$r%rr0r&r!rrrrr�s c@s:eZdZfZedd„ƒZedd„ƒZdS)r cOsdS)NFr)rÚargsÚkwdsrrrÚ__call__£szCallable.__call__cCs3|tkr/tdd„|jDƒƒr/dSntS)Ncss|]}d|jkVqdS)r3N)r)r)r rrrr*ªsz,Callable.__subclasshook__..T)r r+rr)rrrrrr!§s zCallable.__subclasshook__N)r"r#r$r%rr3r&r!rrrrr Ÿs c@sÐeZdZdZfZdd„Zdd„Zdd„Zdd „Zd d „Z e d d „ƒZ dd„Z e Z dd„Zdd„ZeZdd„Zdd„Zdd„ZeZdd„ZdS)r aZA 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), redefine __le__ and __ge__, then the other operations will automatically follow suit. cCsTt|tƒstSt|ƒt|ƒkr/dSx|D]}||kr6dSq6WdS)NFT)Ú isinstancer rÚlen)rÚotherÚelemrrrÚ__le__Às  z Set.__le__cCs8t|tƒstSt|ƒt|ƒko7|j|ƒS)N)r4r rr5r8)rr6rrrÚ__lt__Êsz Set.__lt__cCs8t|tƒstSt|ƒt|ƒko7|j|ƒS)N)r4r rr5Ú__ge__)rr6rrrÚ__gt__Ïsz Set.__gt__cCsTt|tƒstSt|ƒt|ƒkr/dSx|D]}||kr6dSq6WdS)NFT)r4r rr5)rr6r7rrrr:Ôs  z Set.__ge__cCs8t|tƒstSt|ƒt|ƒko7|j|ƒS)N)r4r rr5r8)rr6rrrÚ__eq__Þsz Set.__eq__cCs ||ƒS)z¼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)rÚitrrrÚ_from_iterableãszSet._from_iterablecs3t|tƒstSˆj‡fdd†|DƒƒS)Nc3s!|]}|ˆkr|VqdS)Nr)r)Úvalue)rrrr*ïszSet.__and__..)r4rrr>)rr6r)rrÚ__and__ìsz Set.__and__cCs%x|D]}||krdSqWdS)z1Return True if two sets have a null intersection.FTr)rr6r?rrrÚ isdisjointós  zSet.isdisjointcCs9t|tƒstSdd„||fDƒ}|j|ƒS)Ncss"|]}|D] }|Vq qdS)Nr)r)ÚsÚerrrr*ýszSet.__or__..)r4rrr>)rr6ÚchainrrrÚ__or__úsz Set.__or__csTtˆtƒs4tˆtƒs"tS|jˆƒ‰n|j‡fdd†|DƒƒS)Nc3s!|]}|ˆkr|VqdS)Nr)r)r?)r6rrr*szSet.__sub__..)r4r rrr>)rr6r)r6rÚ__sub__s z Set.__sub__csTt|tƒs4t|tƒs"tSˆj|ƒ}nˆj‡fdd†|DƒƒS)Nc3s!|]}|ˆkr|VqdS)Nr)r)r?)rrrr*szSet.__rsub__..)r4r rrr>)rr6r)rrÚ__rsub__ s z Set.__rsub__cCsDt|tƒs4t|tƒs"tS|j|ƒ}n||||BS)N)r4r rrr>)rr6rrrÚ__xor__s z Set.__xor__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) a+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. ééiMïèréi³M[l×4~2iÍ iãÃ6iÁÇ8#éÿÿÿÿ)ÚsysÚmaxsizer5Úhash)rÚMAXÚMASKÚnÚhr/ÚhxrrrÚ_hashs          z Set._hashN)r"r#r$Ú__doc__r%r8r9r;r:r<r&r>r@Ú__rand__rArEÚ__ror__rFrGrHÚ__rxor__rUrrrrr ²s$          c@s”eZdZdZfZedd„ƒZedd„ƒZdd„Zdd „Z d d „Z d d „Z dd„Z dd„Z dd„ZdS)r a‡A mutable set is a finite, iterable container. This class provides concrete generic implementations of all methods except for __contains__, __iter__, __len__, add(), and discard(). 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. cCs t‚dS)zAdd an element.N)ÚNotImplementedError)rr?rrrÚaddLszMutableSet.addcCs t‚dS)z8Remove an element. Do not raise an exception if absent.N)rZ)rr?rrrÚdiscardQszMutableSet.discardcCs,||krt|ƒ‚n|j|ƒdS)z5Remove an element. If not a member, raise a KeyError.N)ÚKeyErrorr\)rr?rrrÚremoveVs zMutableSet.removec CsHt|ƒ}yt|ƒ}Wntk r6t‚YnX|j|ƒ|S)z2Return the popped value. Raise KeyError if empty.)ÚiterÚnextr,r]r\)rr=r?rrrÚpop\s    zMutableSet.popc Cs.yx|jƒqWWntk r)YnXdS)z6This is slow (creates N new iterators!) but effective.N)rar])rrrrÚclearfs  zMutableSet.clearcCs"x|D]}|j|ƒqW|S)N)r[)rr=r?rrrÚ__ior__ns zMutableSet.__ior__cCs&x||D]}|j|ƒq W|S)N)r\)rr=r?rrrÚ__iand__sszMutableSet.__iand__cCsx||kr|jƒn[t|tƒs:|j|ƒ}nx7|D]/}||krc|j|ƒqA|j|ƒqAW|S)N)rbr4r r>r\r[)rr=r?rrrÚ__ixor__xs    zMutableSet.__ixor__cCs;||kr|jƒnx|D]}|j|ƒq W|S)N)rbr\)rr=r?rrrÚ__isub__…s    zMutableSet.__isub__N)r"r#r$rVr%rr[r\r^rarbrcrdrerfrrrrr >s      c@sseZdZfZedd„ƒZddd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dS)r cCs t‚dS)N)r])rÚkeyrrrÚ __getitem__ŸszMapping.__getitem__Nc Cs)y ||SWntk r$|SYnXdS)z D[k] if k in D, else d. d defaults to None.N)r])rrgÚdefaultrrrÚget£s  z Mapping.getc Cs-y ||Wntk r$dSYnXdSdS)NFT)r])rrgrrrr0ªs    zMapping.__contains__cCs t|ƒS)z:D.keys() -> a set-like object providing a view on D's keys)r)rrrrÚkeys²sz Mapping.keyscCs t|ƒS)z a set-like object providing a view on D's items)r)rrrrÚitems¶sz Mapping.itemscCs t|ƒS)z6D.values() -> an object providing a view on D's values)r)rrrrÚvaluesºszMapping.valuescCs5t|tƒstSt|jƒƒt|jƒƒkS)N)r4r rÚdictrl)rr6rrrr<¾szMapping.__eq__) r"r#r$r%rrhrjr0rkrlrmr<rrrrr “s      c@s4eZdZdd„Zdd„Zdd„ZdS)rcCs ||_dS)N)Ú_mapping)rÚmappingrrrÚ__init__ÈszMappingView.__init__cCs t|jƒS)N)r5ro)rrrrr.ËszMappingView.__len__cCs dj|ƒS)Nz&{0.__class__.__name__}({0._mapping!r}))Úformat)rrrrÚ__repr__ÎszMappingView.__repr__N)r"r#r$rqr.rsrrrrrÆs   c@s:eZdZedd„ƒZdd„Zdd„ZdS)rcCs t|ƒS)N)Úset)rr=rrrr>ÔszKeysView._from_iterablecCs ||jkS)N)ro)rrgrrrr0ØszKeysView.__contains__ccs|jDdHdS)N)ro)rrrrr(ÛszKeysView.__iter__N)r"r#r$r&r>r0r(rrrrrÒs  c@s:eZdZedd„ƒZdd„Zdd„ZdS)rcCs t|ƒS)N)rt)rr=rrrr>ãszItemsView._from_iterablec CsD|\}}y|j|}Wntk r5dSYn X||kSdS)NF)ror])rÚitemrgr?Úvrrrr0çs    zItemsView.__contains__ccs*x#|jD]}||j|fVq WdS)N)ro)rrgrrrr(ðszItemsView.__iter__N)r"r#r$r&r>r0r(rrrrrás  c@s(eZdZdd„Zdd„ZdS)rcCs/x(|jD]}||j|kr dSq WdS)NTF)ro)rr?rgrrrr0ùszValuesView.__contains__ccs$x|jD]}|j|Vq WdS)N)ro)rrgrrrr(ÿszValuesView.__iter__N)r"r#r$r0r(rrrrr÷s  c@s…eZdZfZedd„ƒZedd„ƒZeƒZedd„Z dd„Z d d „Z d d „Z d dd„Z d S)r cCs t‚dS)N)r])rrgr?rrrÚ __setitem__szMutableMapping.__setitem__cCs t‚dS)N)r])rrgrrrÚ __delitem__szMutableMapping.__delitem__c CsKy||}Wn+tk r;||jkr3‚n|SYn X||=|SdS)z©D.pop(k[,d]) -> v, remove specified key and return the corresponding value. If key is not found, d is returned if given, otherwise KeyError is raised. N)r]Ú_MutableMapping__marker)rrgrir?rrrras  zMutableMapping.popc CsLytt|ƒƒ}Wntk r0t‚YnX||}||=||fS)zƒD.popitem() -> (k, v), remove and return some (key, value) pair as a 2-tuple; but raise KeyError if D is empty. )r`r_r,r])rrgr?rrrÚpopitem+s   zMutableMapping.popitemc Cs.yx|jƒqWWntk r)YnXdS)z,D.clear() -> None. Remove all items from D.N)rzr])rrrrrb7s  zMutableMapping.clearcOs|stdƒ‚n|^}}t|ƒdkrLtdt|ƒƒ‚n|rè|d}t|tƒr�xw|D]}|||| None. Update D from mapping/iterable E and F. If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v z@descriptor 'update' of 'MutableMapping' object needs an argumentrJz+update expected at most 1 arguments, got %drrkN)Ú TypeErrorr5r4r Úhasattrrkrl)r1r2rr6rgr?rrrÚupdate?s$   zMutableMapping.updateNc Cs/y ||SWntk r*||| D.get(k,d), also set D[k]=d if k not in D)r])rrgrirrrÚ setdefaultZs   zMutableMapping.setdefault)r"r#r$r%rrwrxÚobjectryrarzrbr}r~rrrrr s     c@sjeZdZdZfZedd„ƒZdd„Zdd„Zdd „Z d d „Z d d „Z dS)rzŠAll the operations on a read-only sequence. Concrete subclasses must override __new__ or __init__, __getitem__, and __len__. cCs t‚dS)N)Ú IndexError)rÚindexrrrrhrszSequence.__getitem__c csGd}y$x||}|V|d7}q WWntk rBdSYnXdS)NrrJ)r€)rÚirvrrrr(vs  zSequence.__iter__cCs%x|D]}||krdSqWdS)NTFr)rr?rvrrrr0€s  zSequence.__contains__ccs0x)ttt|ƒƒƒD]}||VqWdS)N)ÚreversedÚranger5)rr‚rrrÚ __reversed__†szSequence.__reversed__cCs7x*t|ƒD]\}}||kr |Sq Wt‚dS)z|S.index(value) -> integer -- return first index of value. Raises ValueError if the value is not present. N)Ú enumerateÚ ValueError)rr?r‚rvrrrr�Šs zSequence.indexcst‡fdd†|DƒƒS)zBS.count(value) -> integer -- return number of occurrences of valuec3s!|]}|ˆkrdVqdS)rJNr)r)rv)r?rrr*•sz!Sequence.count..)Úsum)rr?r)r?rÚcount“szSequence.countN) r"r#r$rVr%rrhr(r0r…r�r‰rrrrrhs    c@seZdZdZfZdS)rzMThis unifies bytes and bytearray. XXX Should add all their methods. N)r"r#r$rVr%rrrrr�s c@s£eZdZfZedd„ƒZedd„ƒZedd„ƒZdd„Zd d „Z d d „Z d d„Z ddd„Z dd„Z dd„ZdS)rcCs t‚dS)N)r€)rr�r?rrrrwµszMutableSequence.__setitem__cCs t‚dS)N)r€)rr�rrrrx¹szMutableSequence.__delitem__cCs t‚dS)z3S.insert(index, value) -- insert value before indexN)r€)rr�r?rrrÚinsert½szMutableSequence.insertcCs|jt|ƒ|ƒdS)z:S.append(value) -- append value to the end of the sequenceN)rŠr5)rr?rrrÚappendÂszMutableSequence.appendc Cs.yx|jƒqWWntk r)YnXdS)z,S.clear() -> None -- remove all items from SN)rar€)rrrrrbÆs  zMutableSequence.clearcCsXt|ƒ}xEt|dƒD]3}|||d||||<|||d item -- remove and return item at index (default last). Raise IndexError if list is empty or index is out of range. r)rr�rvrrrraÙs zMutableSequence.popcCs||j|ƒ=dS)zvS.remove(value) -- remove first occurrence of value. Raise ValueError if the value is not present. N)r�)rr?rrrr^ászMutableSequence.removecCs|j|ƒ|S)N)r�)rrmrrrÚ__iadd__çs zMutableSequence.__iadd__NrL)r"r#r$r%rrwrxrŠr‹rbrŒr�rar^rŽrrrrrªs       );rVÚabcrrrMÚ__all__r"Útyper_Úbytes_iteratorÚ bytearrayÚbytearray_iteratorrkÚdict_keyiteratorrmÚdict_valueiteratorrlÚdict_itemiteratorÚ list_iteratorrƒÚlist_reverseiteratorr„Úrange_iteratorrtÚ set_iteratorÚ str_iteratorÚtuple_iteratorÚzipÚ zip_iteratorÚ dict_keysÚ dict_valuesÚ dict_itemsrÚ mappingproxyrrrÚregisterrrr r Ú frozensetr r rrrrr rnrÚtupleÚstrÚ memoryviewrÚbytesrÚlistrrrrÚsŒ                  ‰ O 0     \ /      A