U e5dôeã@stdZddlmZmZddlZdddddd d d d d dddddddddddddddgZdZeedƒƒZ eee ƒƒƒZ eei  ¡ƒƒZ eei ¡ƒƒZeei ¡ƒƒZeegƒƒZeeegƒƒƒZeeedƒƒƒZeeedd >ƒƒƒZeeeƒƒƒZeed!ƒƒZeed"ƒƒZeeeƒƒƒZei  ¡ƒZei ¡ƒZei ¡ƒZ eej!ƒZ"ed#d$„ƒƒZ#d%d&„Z$e$ƒZ$ee$ƒZ%e$ &¡[$d'd(„Z'e'ƒZ'ee'ƒZ(['d)d*„Z)Gd+d „d ed,�Z*Gd-d„ded,�Z+Gd.d„de+ƒZ,e, -e%¡Gd/d„ded,�Z.Gd0d„de.ƒZ/Gd1d„de/ƒZ0e0 -e(¡Gd2d „d ed,�Z1Gd3d „d e1ƒZ2e2 -e ¡e2 -e ¡e2 -e ¡e2 -e¡e2 -e¡e2 -e¡e2 -e¡e2 -e¡e2 -e¡e2 -e¡e2 -e¡e2 -e¡e2 -e¡Gd4d „d e1ƒZ3Gd5d „d e2ƒZ4e4 -e#¡Gd6d„ded,�Z5Gd7d„ded,�Z6Gd8d„de5e1e6ƒZ7Gd9d„ded,�Z8Gd:d„de7ƒZ9e9 -e:¡Gd;d„de9ƒZ;e; -e¡Gdd„de=e9ƒZ>e> -e¡Gd?d„de=e9ƒZ?e? -e ¡Gd@d„de=e7ƒZ@e@ -e¡GdAd„de<ƒZAeA -eB¡GdBd„de3e7ƒZCeC -eD¡eC -eE¡eC -e¡eC -eF¡GdCd„deCƒZGeG -eH¡eG -e ¡GdDd„deCƒZIeI -eJ¡eI -e ¡dS)EzjAbstract Base Classes (ABCs) for collections, according to PEP 3119. Unit tests are in test_collections. é)ÚABCMetaÚabstractmethodNÚ AwaitableÚ CoroutineÚ AsyncIterableÚ AsyncIteratorÚAsyncGeneratorÚHashableÚIterableÚIteratorÚ GeneratorÚ ReversibleÚSizedÚ ContainerÚCallableÚ CollectionÚSetÚ MutableSetÚMappingÚMutableMappingÚ MappingViewÚKeysViewÚ ItemsViewÚ ValuesViewÚSequenceÚMutableSequenceÚ ByteStringzcollections.abcóéièÚ©ccsdVS©Nr r r r ú(/usr/lib64/python3.8/_collections_abc.pyÚ8rr#cÃsdSr!r r r r r"Ú_coro:rr$cCs dVdSr!r r r r r"Ú_ag@rr%cGsN|j}|D]>}|D],}||jkr|j|dkr:tSq qtSq dS)NT)Ú__mro__Ú__dict__ÚNotImplemented)ÚCÚmethodsÚmroÚmethodÚBr r r"Ú_check_methodsHs   r.c@s(eZdZdZedd„ƒZedd„ƒZdS)r r cCsdS©Nrr ©Úselfr r r"Ú__hash__XszHashable.__hash__cCs|tkrt|dƒStS)Nr2)r r.r(©Úclsr)r r r"Ú__subclasshook__\s zHashable.__subclasshook__N)Ú__name__Ú __module__Ú __qualname__Ú __slots__rr2Ú classmethodr5r r r r"r Ts  )Ú metaclassc@s(eZdZdZedd„ƒZedd„ƒZdS)rr ccs dVdSr!r r0r r r"Ú __await__gszAwaitable.__await__cCs|tkrt|dƒStS)Nr<)rr.r(r3r r r"r5ks zAwaitable.__subclasshook__N)r6r7r8r9rr<r:r5r r r r"rcs  c@s>eZdZdZedd„ƒZed dd„ƒZdd„Zed d „ƒZ dS) rr cCst‚dS)zcSend a value into the coroutine. Return next yielded value or raise StopIteration. N©Ú StopIteration©r1Úvaluer r r"ÚsendvszCoroutine.sendNcCs4|dkr|dkr|‚|ƒ}|dk r,| |¡}|‚dS)zgRaise an exception in the coroutine. Return next yielded value or raise StopIteration. N©Úwith_traceback©r1ÚtypÚvalÚtbr r r"Úthrow}s zCoroutine.throwc Cs4z| t¡Wnttfk r&Yn Xtdƒ‚dS)ú.Raise GeneratorExit inside coroutine. zcoroutine ignored GeneratorExitN©rHÚ GeneratorExitr>Ú RuntimeErrorr0r r r"ÚcloseŠs zCoroutine.closecCs|tkrt|ddddƒStS)Nr<rArHrM)rr.r(r3r r r"r5”szCoroutine.__subclasshook__)NN) r6r7r8r9rrArHrMr:r5r r r r"rrs   c@s(eZdZdZedd„ƒZedd„ƒZdS)rr cCstƒSr!)rr0r r r"Ú __aiter__¢szAsyncIterable.__aiter__cCs|tkrt|dƒStS)NrN)rr.r(r3r r r"r5¦s zAsyncIterable.__subclasshook__N)r6r7r8r9rrNr:r5r r r r"ržs  c@s0eZdZdZedd„ƒZdd„Zedd„ƒZdS) rr cÃst‚dS)z@Return the next item or raise StopAsyncIteration when exhausted.N©ÚStopAsyncIterationr0r r r"Ú __anext__±szAsyncIterator.__anext__cCs|Sr!r r0r r r"rN¶szAsyncIterator.__aiter__cCs|tkrt|ddƒStS)NrQrN)rr.r(r3r r r"r5¹s zAsyncIterator.__subclasshook__N) r6r7r8r9rrQrNr:r5r r r r"r­s  c@sFeZdZdZdd„Zedd„ƒZed dd„ƒZd d „Ze d d „ƒZ dS)rr cÃs| d¡IdHS)zpReturn the next item from the asynchronous generator. When exhausted, raise StopAsyncIteration. N)Úasendr0r r r"rQÄszAsyncGenerator.__anext__cÃst‚dS)zuSend a value into the asynchronous generator. Return next yielded value or raise StopAsyncIteration. NrOr?r r r"rRÊszAsyncGenerator.asendNcÃs4|dkr|dkr|‚|ƒ}|dk r,| |¡}|‚dS)zyRaise an exception in the asynchronous generator. Return next yielded value or raise StopAsyncIteration. NrBrDr r r"ÚathrowÑs zAsyncGenerator.athrowc Ãs:z| t¡IdHWnttfk r,Yn Xtdƒ‚dS)rINz,asynchronous generator ignored GeneratorExit)rSrKrPrLr0r r r"ÚacloseÞs zAsyncGenerator.aclosecCs|tkrt|dddddƒStS)NrNrQrRrSrT)rr.r(r3r r r"r5èsÿzAsyncGenerator.__subclasshook__)NN) r6r7r8r9rQrrRrSrTr:r5r r r r"rÀs   c@s(eZdZdZedd„ƒZedd„ƒZdS)r r ccsdSr!r r0r r r"Ú__iter__÷szIterable.__iter__cCs|tkrt|dƒStS)NrU)r r.r(r3r r r"r5üs zIterable.__subclasshook__N)r6r7r8r9rrUr:r5r r r r"r ós  c@s0eZdZdZedd„ƒZdd„Zedd„ƒZdS) r r cCst‚dS)zKReturn the next item from the iterator. When exhausted, raise StopIterationNr=r0r r r"Ú__next__szIterator.__next__cCs|Sr!r r0r r r"rU szIterator.__iter__cCs|tkrt|ddƒStS)NrUrV)r r.r(r3r r r"r5s zIterator.__subclasshook__N) r6r7r8r9rrVrUr:r5r r r r"r s  c@s(eZdZdZedd„ƒZedd„ƒZdS)r r ccsdSr!r r0r r r"Ú __reversed__)szReversible.__reversed__cCs|tkrt|ddƒStS)NrWrU)r r.r(r3r r r"r5.s zReversible.__subclasshook__N)r6r7r8r9rrWr:r5r r r r"r %s  c@sFeZdZdZdd„Zedd„ƒZed dd„ƒZd d „Ze d d „ƒZ dS)r r cCs | d¡S)z^Return the next item from the generator. When exhausted, raise StopIteration. N)rAr0r r r"rV9szGenerator.__next__cCst‚dS)zcSend a value into the generator. Return next yielded value or raise StopIteration. Nr=r?r r r"rA?szGenerator.sendNcCs4|dkr|dkr|‚|ƒ}|dk r,| |¡}|‚dS)zgRaise an exception in the generator. Return next yielded value or raise StopIteration. NrBrDr r r"rHFs zGenerator.throwc Cs4z| t¡Wnttfk r&Yn Xtdƒ‚dS)z.Raise GeneratorExit inside generator. zgenerator ignored GeneratorExitNrJr0r r r"rMSs zGenerator.closecCs|tkrt|dddddƒStS)NrUrVrArHrM)r r.r(r3r r r"r5]sÿzGenerator.__subclasshook__)NN) r6r7r8r9rVrrArHrMr:r5r r r r"r 5s   c@s(eZdZdZedd„ƒZedd„ƒZdS)rr cCsdSr/r r0r r r"Ú__len__ksz Sized.__len__cCs|tkrt|dƒStS)NrX)rr.r(r3r r r"r5os zSized.__subclasshook__N)r6r7r8r9rrXr:r5r r r r"rgs  c@s(eZdZdZedd„ƒZedd„ƒZdS)rr cCsdS©NFr )r1Úxr r r"Ú __contains__zszContainer.__contains__cCs|tkrt|dƒStS)Nr[)rr.r(r3r r r"r5~s zContainer.__subclasshook__N)r6r7r8r9rr[r:r5r r r r"rvs  c@seZdZdZedd„ƒZdS)rr cCs|tkrt|dddƒStS)NrXrUr[)rr.r(r3r r r"r5ˆszCollection.__subclasshook__N)r6r7r8r9r:r5r r r r"r„sc@s(eZdZdZedd„ƒZedd„ƒZdS)rr cOsdSrYr )r1ÚargsÚkwdsr r r"Ú__call__’szCallable.__call__cCs|tkrt|dƒStS)Nr^)rr.r(r3r r r"r5–s zCallable.__subclasshook__N)r6r7r8r9rr^r:r5r r r r"rŽs  c@sŒeZdZdZdZdd„Zdd„Zdd„Zd d „Zd d „Z e d d„ƒZ dd„Z e Z dd„Zdd„ZeZdd„Zdd„Zdd„ZeZdd„ZdS)raZA 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. r cCs>t|tƒstSt|ƒt|ƒkr"dS|D]}||kr&dSq&dS©NFT©Ú isinstancerr(Úlen©r1ÚotherÚelemr r r"Ú__le__®s z Set.__le__cCs(t|tƒstSt|ƒt|ƒko&| |¡Sr!©rarr(rbrf©r1rdr r r"Ú__lt__¸s z Set.__lt__cCs(t|tƒstSt|ƒt|ƒko&| |¡Sr!)rarr(rbÚ__ge__rhr r r"Ú__gt__½s z Set.__gt__cCs>t|tƒstSt|ƒt|ƒkr"dS|D]}||kr&dSq&dSr_r`rcr r r"rjÂs z Set.__ge__cCs(t|tƒstSt|ƒt|ƒko&| |¡Sr!rgrhr r r"Ú__eq__Ìs z 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 )r4Úitr r r"Ú_from_iterableÑszSet._from_iterablecs&t|tƒstSˆ ‡fdd„|Dƒ¡S)Nc3s|]}|ˆkr|VqdSr!r ©Ú.0r@r0r r"Ú ÝszSet.__and__..©rar r(rnrhr r0r"Ú__and__Ús z Set.__and__cCs|D]}||krdSqdS)z1Return True if two sets have a null intersection.FTr )r1rdr@r r r"Ú isdisjointászSet.isdisjointcCs*t|tƒstSdd„||fDƒ}| |¡S)Ncss|]}|D] }|Vq qdSr!r )rpÚsÚer r r"rqëszSet.__or__..rr)r1rdÚchainr r r"Ú__or__ès z Set.__or__cs:tˆtƒs"tˆtƒstS| ˆ¡‰| ‡fdd„|Dƒ¡S)Nc3s|]}|ˆkr|VqdSr!r ro©rdr r"rqõsÿzSet.__sub__..©rarr r(rnrhr ryr"Ú__sub__ðs    z Set.__sub__cs:t|tƒs"t|tƒstSˆ |¡}ˆ ‡fdd„|Dƒ¡S)Nc3s|]}|ˆkr|VqdSr!r ror0r r"rqýsÿzSet.__rsub__..rzrhr r0r"Ú__rsub__øs    z Set.__rsub__cCs2t|tƒs"t|tƒstS| |¡}||||BSr!rzrhr r r"Ú__xor__s    z Set.__xor__cCs˜tj}d|d}t|ƒ}d|d}||M}|D],}t|ƒ}|||d>AdAdN}||M}q2|dd}||M}||krˆ||d8}|d kr”d }|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. ériMïèréi³M[l×4~2iÍ iãÃ6éÿÿÿÿiÁÇ8#)ÚsysÚmaxsizerbÚhash)r1ÚMAXÚMASKÚnÚhrZÚhxr r r"Ú_hash s      z Set._hashN)r6r7r8Ú__doc__r9rfrirkrjrlr:rnrsÚ__rand__rtrxÚ__ror__r{r|r}Ú__rxor__r‰r r r r"r s&    c@sdeZdZdZdZedd„ƒZedd„ƒZdd„Zd d „Z d d „Z d d„Z dd„Z dd„Z dd„ZdS)ra‡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. r cCst‚dS)zAdd an element.N©ÚNotImplementedErrorr?r r r"Úadd:szMutableSet.addcCst‚dS)z8Remove an element. Do not raise an exception if absent.NrŽr?r r r"Údiscard?szMutableSet.discardcCs||krt|ƒ‚| |¡dS)z5Remove an element. If not a member, raise a KeyError.N)ÚKeyErrorr‘r?r r r"ÚremoveDszMutableSet.removecCs>t|ƒ}z t|ƒ}Wntk r.td‚YnX| |¡|S)z2Return the popped value. Raise KeyError if empty.N)ÚiterÚnextr>r’r‘©r1rmr@r r r"ÚpopJs   zMutableSet.popcCs(z| ¡qWntk r"YnXdS)z6This is slow (creates N new iterators!) but effective.N)r—r’r0r r r"ÚclearTszMutableSet.clearcCs|D]}| |¡q|Sr!)r�r–r r r"Ú__ior__\s zMutableSet.__ior__cCs||D]}| |¡q|Sr!)r‘r–r r r"Ú__iand__as  zMutableSet.__iand__cCsR||kr| ¡n D[k] if k in D, else d. d defaults to None.Nr�©r1rŸÚdefaultr r r"Úget‘s z Mapping.getcCs,z ||Wntk r"YdSXdSdSr_r�ržr r r"r[˜s  zMapping.__contains__cCst|ƒS)z:D.keys() -> a set-like object providing a view on D's keys)rr0r r r"Úkeys sz Mapping.keyscCst|ƒS)z a set-like object providing a view on D's items)rr0r r r"Úitems¤sz Mapping.itemscCst|ƒS)z6D.values() -> an object providing a view on D's values)rr0r r r"Úvalues¨szMapping.valuescCs&t|tƒstSt| ¡ƒt| ¡ƒkSr!)rarr(Údictr¥rhr r r"rl¬s zMapping.__eq__)N) r6r7r8r9rr r£r[r¤r¥r¦rlrWr r r r"r�s   c@s(eZdZdZdd„Zdd„Zdd„ZdS) r©Ú_mappingcCs ||_dSr!r¨)r1Úmappingr r r"Ú__init__ºszMappingView.__init__cCs t|jƒSr!)rbr©r0r r r"rX½szMappingView.__len__cCs d |¡S)Nz&{0.__class__.__name__}({0._mapping!r}))Úformatr0r r r"Ú__repr__ÀszMappingView.__repr__N)r6r7r8r9r«rXr­r r r r"r¶sc@s,eZdZdZedd„ƒZdd„Zdd„ZdS) rr cCst|ƒSr!©Úset©r1rmr r r"rnÈszKeysView._from_iterablecCs ||jkSr!r¨ržr r r"r[ÌszKeysView.__contains__ccs|jEdHdSr!r¨r0r r r"rUÏszKeysView.__iter__N©r6r7r8r9r:rnr[rUr r r r"rÄs  c@s,eZdZdZedd„ƒZdd„Zdd„ZdS) rr cCst|ƒSr!r®r°r r r"rnÙszItemsView._from_iterablecCsB|\}}z|j|}Wntk r,YdSX||kp<||kSdSrY)r©r’)r1ÚitemrŸr@Úvr r r"r[Ýs zItemsView.__contains__ccs |jD]}||j|fVqdSr!r¨ržr r r"rUæs zItemsView.__iter__Nr±r r r r"rÕs   c@s eZdZdZdd„Zdd„ZdS)rr cCs0|jD]$}|j|}||ks$||krdSqdS©NTFr¨)r1r@rŸr³r r r"r[ñs   zValuesView.__contains__ccs|jD]}|j|VqdSr!r¨ržr r r"rUøs zValuesView.__iter__N)r6r7r8r9r[rUr r r r"rísc@s^eZdZdZedd„ƒZedd„ƒZeƒZefdd„Z dd „Z d d „Z dd d „Z ddd„Z dS)rr cCst‚dSr!r�©r1rŸr@r r r"Ú __setitem__ szMutableMapping.__setitem__cCst‚dSr!r�ržr r r"Ú __delitem__szMutableMapping.__delitem__cCs@z ||}Wn$tk r0||jkr(‚|YSX||=|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)r1rŸr¢r@r r r"r—s   zMutableMapping.popcCsBztt|ƒƒ}Wntk r*td‚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. N)r•r”r>r’rµr r r"Úpopitem$s zMutableMapping.popitemcCs(z| ¡qWntk r"YnXdS)z,D.clear() -> None. Remove all items from D.N)r¹r’r0r r r"r˜0szMutableMapping.clearcKs|t|tƒr"|D]}||||<qn 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 r¤N)rarÚhasattrr¤r¥)r1rdr]rŸr@r r r"Úupdate8s     zMutableMapping.updateNcCs,z ||WStk r&|||<YnX|S)z@D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in Dr�r¡r r r"Ú setdefaultJs  zMutableMapping.setdefault)r )N)r6r7r8r9rr¶r·Úobjectr¸r—r¹r˜r»r¼r r r r"rÿs      c@sJeZdZdZdZedd„ƒZdd„Zdd„Zd d „Z dd d„Z dd„Z d S)rzŠAll the operations on a read-only sequence. Concrete subclasses must override __new__ or __init__, __getitem__, and __len__. r cCst‚dSr!©Ú IndexError©r1Úindexr r r"r bszSequence.__getitem__ccs<d}z||}|V|d7}qWntk r6YdSXdS)Nrrr¾)r1Úir³r r r"rUfszSequence.__iter__cCs$|D]}||ks||krdSqdSr´r )r1r@r³r r r"r[pszSequence.__contains__ccs$ttt|ƒƒƒD]}||VqdSr!)ÚreversedÚrangerb)r1rÂr r r"rWvszSequence.__reversed__rNcCs |dk r"|dkr"tt|ƒ|dƒ}|dk r>|dkr>|t|ƒ7}|}|dksR||kr˜z"||}||ksl||krr|WSWntk rŒYq˜YnX|d7}qBt‚dS)zæS.index(value, [start, [stop]]) -> integer -- return first index of value. Raises ValueError if the value is not present. Supporting start and stop arguments is optional, but recommended. Nrr)Úmaxrbr¿Ú ValueError)r1r@ÚstartÚstoprÂr³r r r"rÁzs    zSequence.indexcst‡fdd„|DƒƒS)zBS.count(value) -> integer -- return number of occurrences of valuec3s"|]}|ˆks|ˆkrdVqdS)rNr )rpr³©r@r r"rq“sz!Sequence.count..)Úsumr?r rÉr"Úcount‘szSequence.count)rN) r6r7r8rŠr9rr rUr[rWrÁrËr r r r"rXs   c@seZdZdZdZdS)rzMThis unifies bytes and bytearray. XXX Should add all their methods. r N)r6r7r8rŠr9r r r r"r›sc@sneZdZdZedd„ƒZedd„ƒZedd„ƒZdd „Zd d „Z d d „Z dd„Z ddd„Z dd„Z dd„ZdS)rr cCst‚dSr!r¾©r1rÁr@r r r"r¶³szMutableSequence.__setitem__cCst‚dSr!r¾rÀr r r"r··szMutableSequence.__delitem__cCst‚dS)z3S.insert(index, value) -- insert value before indexNr¾rÌr r r"Úinsert»szMutableSequence.insertcCs| t|ƒ|¡dS)z:S.append(value) -- append value to the end of the sequenceN)rÍrbr?r r r"ÚappendÀszMutableSequence.appendcCs(z| ¡qWntk r"YnXdS)z,S.clear() -> None -- remove all items from SN)r—r¿r0r r r"r˜ÄszMutableSequence.clearcCsHt|ƒ}t|dƒD].}|||d||||<|||d<qdS)z!S.reverse() -- reverse *IN PLACE*r~rN)rbrÄ)r1r†rÂr r r"ÚreverseÌszMutableSequence.reversecCs(||krt|ƒ}|D]}| |¡qdS)zMS.extend(iterable) -- extend sequence by appending elements from the iterableN)ÚlistrÎ)r1r¦r³r r r"ÚextendÒszMutableSequence.extendr€cCs||}||=|S)z™S.pop([index]) -> item -- remove and return item at index (default last). Raise IndexError if list is empty or index is out of range. r )r1rÁr³r r r"r—ÙszMutableSequence.popcCs|| |¡=dS)zvS.remove(value) -- remove first occurrence of value. Raise ValueError if the value is not present. N)rÁr?r r r"r“ászMutableSequence.removecCs| |¡|Sr!)rÑ)r1r¦r r r"Ú__iadd__çs zMutableSequence.__iadd__N)r€)r6r7r8r9rr¶r·rÍrÎr˜rÏrÑr—r“rÒr r r r"r¨s     )KrŠÚabcrrr�Ú__all__r6Útyper”Úbytes_iteratorÚ bytearrayÚbytearray_iteratorr¤Údict_keyiteratorr¦Údict_valueiteratorr¥Údict_itemiteratorÚ list_iteratorrÃÚlist_reverseiteratorrÄÚrange_iteratorÚlongrange_iteratorr¯Ú set_iteratorÚ str_iteratorÚtuple_iteratorÚzipÚ zip_iteratorÚ dict_keysÚ dict_valuesÚ dict_itemsr'Ú mappingproxyÚ generatorr$Ú coroutinerMr%Úasync_generatorr.r rrÚregisterrrrr r r r rrrrrÚ frozensetrrrrrrrr§rÚtupleÚstrÚ memoryviewrÚbytesrrÐr r r r"Úsâø         ) 0              /   O 2    S =      C