grthtrhthjhtyjytjytkergtrhtrjytjerhrfh3 \gã@srdZddlmZmZddlZdddddd d d d d dddddddddddddddgZdZeedƒƒZ eee ƒƒƒZ eeij ƒƒƒZ eeijƒƒƒZeeijƒƒƒZeegƒƒZeeegƒƒƒZeeedƒƒƒZeeedd >ƒƒƒZeeeƒƒƒZeed!ƒƒZeefƒƒZeeeƒƒƒZeij ƒƒZeijƒƒZeijƒƒZ eej!ƒZ"ed"d#„ƒƒZ#d$d%„Z$e$ƒZ$ee$ƒZ%e$j&ƒ[$d&d'„Z'e'ƒZ'ee'ƒZ(['d(d)„Z)Gd*d „d ed+�Z*Gd,d„ded+�Z+Gd-d„de+ƒZ,e,j-e%ƒGd.d„ded+�Z.Gd/d„de.ƒZ/Gd0d„de/ƒZ0e0j-e(ƒGd1d „d ed+�Z1Gd2d „d e1ƒZ2e2j-e ƒe2j-e ƒe2j-e ƒe2j-eƒe2j-eƒe2j-eƒe2j-eƒe2j-eƒe2j-eƒe2j-eƒe2j-eƒe2j-eƒe2j-eƒGd3d „d e1ƒZ3Gd4d „d e2ƒZ4e4j-e#ƒGd5d„ded+�Z5Gd6d„ded+�Z6Gd7d„de5e1e6ƒZ7Gd8d„ded+�Z8Gd9d„de7ƒZ9e9j-e:ƒGd:d„de9ƒZ;e;j-eƒGd;d„de7ƒZe>j-eƒGd>d„de=e9ƒZ?e?j-e ƒGd?d„de=ƒZ@e@j-eƒGd@d„de<ƒZAeAj-eBƒGdAd„de3e7ƒZCeCj-eDƒeCj-eEƒeCj-eƒeCj-eFƒGdBd„deCƒZGeGj-eHƒeGj-e ƒGdCd„deCƒZIeIj-eJƒeIj-e ƒdS)DzjAbstract 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)N©r r r ú(/usr/lib64/python3.6/_collections_abc.pyÚ8sr"cÃsdS)Nr r r r r!Ú_coro:sr#cCs dVdS)Nr r r r r!Ú_ag@sr$cGsH|j}x<|D]4}x.|D]"}||jkr|j|dkr6tSPqWtSq WdS)NT)Ú__mro__Ú__dict__ÚNotImplemented)ÚCÚmethodsÚmroÚmethodÚBr r r!Ú_check_methodsHs   r-c@s(eZdZfZedd„ƒZedd„ƒZdS)r cCsdS)Nrr )Úselfr r r!Ú__hash__XszHashable.__hash__cCs|tkrt|dƒStS)Nr/)r r-r')Úclsr(r r r!Ú__subclasshook__\s zHashable.__subclasshook__N)Ú__name__Ú __module__Ú __qualname__Ú __slots__rr/Ú classmethodr1r r r r!r Ts )Ú metaclassc@s(eZdZfZedd„ƒZedd„ƒZdS)rccs dVdS)Nr )r.r r r!Ú __await__gszAwaitable.__await__cCs|tkrt|dƒStS)Nr8)rr-r')r0r(r r r!r1ks zAwaitable.__subclasshook__N)r2r3r4r5rr8r6r1r r r r!rcs c@s>eZdZfZedd„ƒZed dd„ƒZdd„Zedd „ƒZ dS) rcCst‚dS)zcSend a value into the coroutine. Return next yielded value or raise StopIteration. N)Ú StopIteration)r.Úvaluer r r!ÚsendvszCoroutine.sendNcCs4|dkr|dkr|‚|ƒ}|dk r,|j|ƒ}|‚dS)zgRaise an exception in the coroutine. Return next yielded value or raise StopIteration. N)Úwith_traceback)r.ÚtypÚvalÚtbr r r!Úthrow}s zCoroutine.throwc Cs4y|jtƒWnttfk r&Yn Xtdƒ‚dS)z.Raise GeneratorExit inside coroutine. zcoroutine ignored GeneratorExitN)r@Ú GeneratorExitr9Ú RuntimeError)r.r r r!ÚcloseŠs zCoroutine.closecCs|tkrt|ddddƒStS)Nr8r;r@rC)rr-r')r0r(r r r!r1”szCoroutine.__subclasshook__)NN) r2r3r4r5rr;r@rCr6r1r r r r!rrs    c@s(eZdZfZedd„ƒZedd„ƒZdS)rcCstƒS)N)r)r.r r r!Ú __aiter__¢szAsyncIterable.__aiter__cCs|tkrt|dƒStS)NrD)rr-r')r0r(r r r!r1¦s zAsyncIterable.__subclasshook__N)r2r3r4r5rrDr6r1r r r r!ržs c@s0eZdZfZedd„ƒZdd„Zedd„ƒZdS)rcÃst‚dS)z@Return the next item or raise StopAsyncIteration when exhausted.N)ÚStopAsyncIteration)r.r r r!Ú __anext__±szAsyncIterator.__anext__cCs|S)Nr )r.r r r!rD¶szAsyncIterator.__aiter__cCs|tkrt|ddƒStS)NrFrD)rr-r')r0r(r r r!r1¹s zAsyncIterator.__subclasshook__N) r2r3r4r5rrFrDr6r1r r r r!r­s c@sFeZdZfZdd„Zedd„ƒZed dd„ƒZdd „Ze d d „ƒZ dS) rcÃs|jdƒIdHS)zpReturn the next item from the asynchronous generator. When exhausted, raise StopAsyncIteration. N)Úasend)r.r r r!rFÄszAsyncGenerator.__anext__cÃst‚dS)zuSend a value into the asynchronous generator. Return next yielded value or raise StopAsyncIteration. N)rE)r.r:r r r!rGÊszAsyncGenerator.asendNcÃs4|dkr|dkr|‚|ƒ}|dk r,|j|ƒ}|‚dS)zyRaise an exception in the asynchronous generator. Return next yielded value or raise StopAsyncIteration. N)r<)r.r=r>r?r r r!ÚathrowÑs zAsyncGenerator.athrowc Ãs:y|jtƒIdHWnttfk r,Yn Xtdƒ‚dS)z.Raise GeneratorExit inside coroutine. Nz,asynchronous generator ignored GeneratorExit)rHrArErB)r.r r r!ÚacloseÞs zAsyncGenerator.aclosecCs|tkrt|dddddƒStS)NrDrFrGrHrI)rr-r')r0r(r r r!r1ès zAsyncGenerator.__subclasshook__)NN) r2r3r4r5rFrrGrHrIr6r1r r r r!rÀs   c@s(eZdZfZedd„ƒZedd„ƒZdS)r ccsdS)Nr )r.r r r!Ú__iter__÷szIterable.__iter__cCs|tkrt|dƒStS)NrJ)r r-r')r0r(r r r!r1üs zIterable.__subclasshook__N)r2r3r4r5rrJr6r1r r r r!r ós c@s0eZdZfZedd„ƒZdd„Zedd„ƒZdS)r cCst‚dS)zKReturn the next item from the iterator. When exhausted, raise StopIterationN)r9)r.r r r!Ú__next__szIterator.__next__cCs|S)Nr )r.r r r!rJ szIterator.__iter__cCs|tkrt|ddƒStS)NrJrK)r r-r')r0r(r r r!r1s zIterator.__subclasshook__N) r2r3r4r5rrKrJr6r1r r r r!r s c@s(eZdZfZedd„ƒZedd„ƒZdS)r ccsdS)Nr )r.r r r!Ú __reversed__)szReversible.__reversed__cCs|tkrt|ddƒStS)NrLrJ)r r-r')r0r(r r r!r1.s zReversible.__subclasshook__N)r2r3r4r5rrLr6r1r r r r!r %s c@sFeZdZfZdd„Zedd„ƒZed dd„ƒZdd „Ze d d „ƒZ dS) r cCs |jdƒS)z^Return the next item from the generator. When exhausted, raise StopIteration. N)r;)r.r r r!rK9szGenerator.__next__cCst‚dS)zcSend a value into the generator. Return next yielded value or raise StopIteration. N)r9)r.r:r r r!r;?szGenerator.sendNcCs4|dkr|dkr|‚|ƒ}|dk r,|j|ƒ}|‚dS)zgRaise an exception in the generator. Return next yielded value or raise StopIteration. N)r<)r.r=r>r?r r r!r@Fs zGenerator.throwc Cs4y|jtƒWnttfk r&Yn Xtdƒ‚dS)z.Raise GeneratorExit inside generator. zgenerator ignored GeneratorExitN)r@rAr9rB)r.r r r!rCSs zGenerator.closecCs|tkrt|dddddƒStS)NrJrKr;r@rC)r r-r')r0r(r r r!r1]s zGenerator.__subclasshook__)NN) r2r3r4r5rKrr;r@rCr6r1r r r r!r 5s   c@s(eZdZfZedd„ƒZedd„ƒZdS)rcCsdS)Nrr )r.r r r!Ú__len__ksz Sized.__len__cCs|tkrt|dƒStS)NrM)rr-r')r0r(r r r!r1os zSized.__subclasshook__N)r2r3r4r5rrMr6r1r r r r!rgs c@s(eZdZfZedd„ƒZedd„ƒZdS)rcCsdS)NFr )r.Úxr r r!Ú __contains__zszContainer.__contains__cCs|tkrt|dƒStS)NrO)rr-r')r0r(r r r!r1~s zContainer.__subclasshook__N)r2r3r4r5rrOr6r1r r r r!rvs c@seZdZfZedd„ƒZdS)rcCs|tkrt|dddƒStS)NrMrJrO)rr-r')r0r(r r r!r1ˆszCollection.__subclasshook__N)r2r3r4r5r6r1r r r r!r„sc@s(eZdZfZedd„ƒZedd„ƒZdS)rcOsdS)NFr )r.ÚargsÚkwdsr r r!Ú__call__’szCallable.__call__cCs|tkrt|dƒStS)NrR)rr-r')r0r(r r r!r1–s zCallable.__subclasshook__N)r2r3r4r5rrRr6r1r r r r!rŽ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)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. cCs@t|tƒstSt|ƒt|ƒkr"dSx|D]}||kr(dSq(WdS)NFT)Ú isinstancerr'Úlen)r.ÚotherÚelemr r r!Ú__le__®s  z Set.__le__cCs(t|tƒstSt|ƒt|ƒko&|j|ƒS)N)rSrr'rTrW)r.rUr r r!Ú__lt__¸s z Set.__lt__cCs(t|tƒstSt|ƒt|ƒko&|j|ƒS)N)rSrr'rTÚ__ge__)r.rUr r r!Ú__gt__½s z Set.__gt__cCs@t|tƒstSt|ƒt|ƒkr"dSx|D]}||kr(dSq(WdS)NFT)rSrr'rT)r.rUrVr r r!rYÂs  z Set.__ge__cCs(t|tƒstSt|ƒt|ƒko&|j|ƒS)N)rSrr'rTrW)r.rUr 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 )r0Úitr r r!Ú_from_iterableÑszSet._from_iterablecs&t|tƒstSˆj‡fdd„|DƒƒS)Nc3s|]}|ˆkr|VqdS)Nr )Ú.0r:)r.r r!ú ÝszSet.__and__..)rSr r'r])r.rUr )r.r!Ú__and__Ús z Set.__and__cCsx|D]}||krdSqWdS)z1Return True if two sets have a null intersection.FTr )r.rUr:r r r!Ú isdisjointás zSet.isdisjointcCs*t|tƒstSdd„||fDƒ}|j|ƒS)Ncss|]}|D] }|Vq qdS)Nr )r^ÚsÚer r r!r_ëszSet.__or__..)rSr r'r])r.rUÚchainr r r!Ú__or__ès z Set.__or__cs:tˆtƒs"tˆtƒstS|jˆƒ‰|j‡fdd„|DƒƒS)Nc3s|]}|ˆkr|VqdS)Nr )r^r:)rUr r!r_õszSet.__sub__..)rSrr r'r])r.rUr )rUr!Ú__sub__ðs    z Set.__sub__cs:t|tƒs"t|tƒstSˆj|ƒ}ˆj‡fdd„|DƒƒS)Nc3s|]}|ˆkr|VqdS)Nr )r^r:)r.r r!r_ýszSet.__rsub__..)rSrr r'r])r.rUr )r.r!Ú__rsub__øs    z Set.__rsub__cCs2t|tƒs"t|tƒstS|j|ƒ}||||BS)N)rSrr r'r])r.rUr r r!Ú__xor__s    z Set.__xor__cCsœtj}d|d}t|ƒ}d|d}||M}x4|D],}t|ƒ}|||d>AdAdN}||M}q4W|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ãÃ6iÁÇ8#éÿÿÿÿ)ÚsysÚmaxsizerTÚhash)r.ÚMAXÚMASKÚnÚhrNÚhxr r r!Ú_hash s       z Set._hashN)r2r3r4Ú__doc__r5rWrXrZrYr[r6r]r`Ú__rand__rareÚ__ror__rfrgrhÚ__rxor__rtr r r r!r s$    c@sdeZdZdZfZedd„ƒZedd„ƒZdd„Zdd „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. cCst‚dS)zAdd an element.N)ÚNotImplementedError)r.r:r r r!Úadd:szMutableSet.addcCst‚dS)z8Remove an element. Do not raise an exception if absent.N)ry)r.r:r r r!Údiscard?szMutableSet.discardcCs||krt|ƒ‚|j|ƒdS)z5Remove an element. If not a member, raise a KeyError.N)ÚKeyErrorr{)r.r:r r r!ÚremoveDszMutableSet.removec Cs<t|ƒ}y t|ƒ}Wntk r,t‚YnX|j|ƒ|S)z2Return the popped value. Raise KeyError if empty.)ÚiterÚnextr9r|r{)r.r\r:r r r!ÚpopJs   zMutableSet.popc Cs,yx |jƒqWWntk r&YnXdS)z6This is slow (creates N new iterators!) but effective.N)r€r|)r.r r r!ÚclearTs zMutableSet.clearcCsx|D]}|j|ƒqW|S)N)rz)r.r\r:r r r!Ú__ior__\s zMutableSet.__ior__cCs x||D]}|j|ƒq W|S)N)r{)r.r\r:r r r!Ú__iand__aszMutableSet.__iand__cCsV||kr|jƒn@t|tƒs&|j|ƒ}x*|D]"}||krD|j|ƒq,|j|ƒq,W|S)N)r�rSrr]r{rz)r.r\r:r r r!Ú__ixor__fs     zMutableSet.__ixor__cCs.||kr|jƒnx|D]}|j|ƒqW|S)N)r�r{)r.r\r:r r r!Ú__isub__ss   zMutableSet.__isub__N)r2r3r4rur5rrzr{r}r€r�r‚rƒr„r…r r r r!r,s     c@sReZdZfZedd„ƒZddd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dZ dS)rcCst‚dS)N)r|)r.Úkeyr r r!Ú __getitem__�szMapping.__getitem__Nc Cs"y||Stk r|SXdS)z D[k] if k in D, else d. d defaults to None.N)r|)r.r†Údefaultr r r!Úget‘sz Mapping.getc Cs*y ||Wntk r dSXdSdS)NFT)r|)r.r†r r r!rO˜s  zMapping.__contains__cCst|ƒS)z:D.keys() -> a set-like object providing a view on D's keys)r)r.r r r!Úkeys sz Mapping.keyscCst|ƒS)z a set-like object providing a view on D's items)r)r.r r r!Úitems¤sz Mapping.itemscCst|ƒS)z6D.values() -> an object providing a view on D's values)r)r.r r r!Úvalues¨szMapping.valuescCs&t|tƒstSt|jƒƒt|jƒƒkS)N)rSrr'Údictr‹)r.rUr r r!r[¬s zMapping.__eq__)N) r2r3r4r5rr‡r‰rOrŠr‹rŒr[rLr r r r!r�s  c@s(eZdZd Zdd„Zdd„Zdd„ZdS) rÚ_mappingcCs ||_dS)N)rŽ)r.Úmappingr r r!Ú__init__ºszMappingView.__init__cCs t|jƒS)N)rTrŽ)r.r r r!rM½szMappingView.__len__cCs dj|ƒS)Nz&{0.__class__.__name__}({0._mapping!r}))Úformat)r.r r r!Ú__repr__ÀszMappingView.__repr__N)rŽ)r2r3r4r5r�rMr’r r r r!r¶sc@s,eZdZfZedd„ƒZdd„Zdd„ZdS)rcCst|ƒS)N)Úset)r.r\r r r!r]ÈszKeysView._from_iterablecCs ||jkS)N)rŽ)r.r†r r r!rOÌszKeysView.__contains__ccs|jEdHdS)N)rŽ)r.r r r!rJÏszKeysView.__iter__N)r2r3r4r5r6r]rOrJr r r r!rÄs c@s,eZdZfZedd„ƒZdd„Zdd„ZdS)rcCst|ƒS)N)r“)r.r\r r r!r]ÙszItemsView._from_iterablec Cs@|\}}y|j|}Wntk r*dSX||kp:||kSdS)NF)rŽr|)r.Úitemr†r:Úvr r r!rOÝs zItemsView.__contains__ccs$x|jD]}||j|fVqWdS)N)rŽ)r.r†r r r!rJæs zItemsView.__iter__N)r2r3r4r5r6r]rOrJr r r r!rÕs  c@s eZdZfZdd„Zdd„ZdS)rcCs2x,|jD]"}|j|}||ks&||krdSqWdS)NTF)rŽ)r.r:r†r•r r r!rOñs   zValuesView.__contains__ccs x|jD]}|j|VqWdS)N)rŽ)r.r†r r r!rJøs zValuesView.__iter__N)r2r3r4r5rOrJr r r r!rísc@s\eZdZfZedd„ƒZedd„ƒZeƒZefdd„Z dd„Z d d „Z d d „Z ddd„Z d S)rcCst‚dS)N)r|)r.r†r:r r r!Ú __setitem__ szMutableMapping.__setitem__cCst‚dS)N)r|)r.r†r r r!Ú __delitem__szMutableMapping.__delitem__c Cs<y ||}Wn tk r,||jkr(‚|SX||=|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)r.r†rˆr:r r r!r€s  zMutableMapping.popc Cs@ytt|ƒƒ}Wntk r(t‚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. )rr~r9r|)r.r†r:r r r!Úpopitem$s zMutableMapping.popitemc Cs,yx |jƒqWWntk r&YnXdS)z,D.clear() -> None. Remove all items from D.N)r™r|)r.r r r!r�0s zMutableMapping.clearcOsÈ|s tdƒ‚|^}}t|ƒdkr0tdt|ƒƒ‚|r¦|d}t|tƒrbx^|D]}||||<qLWnDt|dƒrŒx8|jƒD]}||||<qvWnx|D]\}}|||<q’Wx|jƒD]\}}|||<q°WdS)aK D.update([E, ]**F) -> 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 argumentrz+update expected at most 1 arguments, got %drrŠN)Ú TypeErrorrTrSrÚhasattrrŠr‹)rPrQr.rUr†r:r r r!Úupdate8s$      zMutableMapping.updateNc Cs*y||Stk r$|||<YnX|S)z@D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D)r|)r.r†rˆr r r!Ú setdefaultSs zMutableMapping.setdefault)N)r2r3r4r5rr–r—Úobjectr˜r€r™r�rœr�r r r r!rÿs    c@sJeZdZdZfZedd„ƒZdd„Zdd„Zdd „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__. cCst‚dS)N)Ú IndexError)r.Úindexr r r!r‡kszSequence.__getitem__c cs>d}y x||}|V|d7}qWWntk r8dSXdS)Nrr)rŸ)r.Úir•r r r!rJoszSequence.__iter__cCs&x |D]}||ks||krdSqWdS)NTFr )r.r:r•r r r!rOys zSequence.__contains__ccs(x"ttt|ƒƒƒD]}||VqWdS)N)ÚreversedÚrangerT)r.r¡r r r!rLszSequence.__reversed__rNc Cs |dk r"|dkr"tt|ƒ|dƒ}|dk r>|dkr>|t|ƒ7}|}xT|dksT||kr–y ||}||ksn||krr|SWntk rŠPYnX|d7}qDWt‚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)ÚmaxrTrŸÚ ValueError)r.r:ÚstartÚstopr¡r•r r r!r ƒs  zSequence.indexcst‡fdd„|DƒƒS)zBS.count(value) -> integer -- return number of occurrences of valuec3s"|]}|ˆks|ˆkrdVqdS)rNr )r^r•)r:r r!r_œsz!Sequence.count..)Úsum)r.r:r )r:r!ÚcountšszSequence.count)rN) r2r3r4rur5rr‡rJrOrLr r©r r r r!ras   c@seZdZdZfZdS)rzMThis unifies bytes and bytearray. XXX Should add all their methods. N)r2r3r4rur5r r r r!r¤sc@sneZdZfZedd„ƒZedd„ƒZedd„ƒZdd„Zd d „Z d d „Z d d„Z ddd„Z dd„Z dd„ZdS)rcCst‚dS)N)rŸ)r.r r:r r r!r–¼szMutableSequence.__setitem__cCst‚dS)N)rŸ)r.r r r r!r—ÀszMutableSequence.__delitem__cCst‚dS)z3S.insert(index, value) -- insert value before indexN)rŸ)r.r r:r r r!ÚinsertÄszMutableSequence.insertcCs|jt|ƒ|ƒdS)z:S.append(value) -- append value to the end of the sequenceN)rªrT)r.r:r r r!ÚappendÉszMutableSequence.appendc Cs,yx |jƒqWWntk r&YnXdS)z,S.clear() -> None -- remove all items from SN)r€rŸ)r.r r r!r�Ís zMutableSequence.clearcCsLt|ƒ}x>t|dƒD].}|||d||||<|||d<qWdS)z!S.reverse() -- reverse *IN PLACE*rirN)rTr£)r.rqr¡r r r!ÚreverseÕszMutableSequence.reversecCsx|D]}|j|ƒqWdS)zMS.extend(iterable) -- extend sequence by appending elements from the iterableN)r«)r.rŒr•r r r!ÚextendÛs zMutableSequence.extendrcCs||}||=|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 )r.r r•r r r!r€àszMutableSequence.popcCs||j|ƒ=dS)zvS.remove(value) -- remove first occurrence of value. Raise ValueError if the value is not present. N)r )r.r:r r r!r}èszMutableSequence.removecCs|j|ƒ|S)N)r­)r.rŒr r r!Ú__iadd__îs zMutableSequence.__iadd__Nrk)rk)r2r3r4r5rr–r—rªr«r�r¬r­r€r}r®r r r r!r±s    )KruÚabcrrrlÚ__all__r2Ú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#Ú coroutinerCr$Úasync_generatorr-r rrÚregisterrrrr r r r rrrrrÚ frozensetrrrrrrrr�rÚtupleÚstrÚ memoryviewrÚbytesrÚlistr r r r!Ús          ) 0              /   O 2    \ =      A