U _o9@sddlZddlmZddlmZddlmZmZeZGddde Z e Z dd Z ed dga Gd d d ZGd ddZGdddeeZGdddeZGdddeeZGdddeZGdddZGdddZGdddeejZGdddeejZGdd d eejZdS)!N)array)abc) MultiMappingMutableMultiMappingc@seZdZdZdZdS)istrzCase insensitive str.TN)__name__ __module__ __qualname____doc__Z __is_istr__r r J/opt/alt/python38/lib64/python3.8/site-packages/multidict/_multidict_py.pyr srcCst|tstd|jjS)Nz&Parameter should be multidict or proxy) isinstance_Base TypeError_impl_version)Zmdr r r getversions rQc@s4eZdZdZddZddZejjdkr0ddZ d S) _Impl)_itemsrcCsg|_|dSN)r incr_versionselfr r r __init__ sz_Impl.__init__cCs"t}|dd7<|d|_dSNrr)r)rvr r r r$sz_Impl.incr_versionpypycCst|t|jSr)object __sizeof__sys getsizeofrrr r r r ,sz_Impl.__sizeof__N) rr r __slots__rrr!implementationnamer r r r r rs  rc@s~eZdZddZefddZefddZddZdd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZd S)rcCs|Srr rkeyr r r _title1sz _Base._titlecsH||fdd|jjD}|r(|S|s8|tk r8|Std|dS)z-Return a list of all values matching the key.csg|]\}}}|kr|qSr r ).0ikridentityr r 7sz _Base.getall..Key not found: %rNr(rr_markerKeyError)rr'defaultresr r,r getall4s  z _Base.getallcCsJ||}|jjD]\}}}||kr|Sq|tk r:|Std|dS)z!Get first value matching the key.r/Nr0rr'r3r-r*r+rr r r getone>s  z _Base.getonecCs ||Srr7r&r r r __getitem__Jsz_Base.__getitem__NcCs |||S)zVGet first value matching the key. The method is alias for .getone(). r8)rr'r3r r r getMsz _Base.getcCs t|Sr)iterkeysrr r r __iter__Tsz_Base.__iter__cCs t|jjSrlenrrrr r r __len__Wsz _Base.__len__cCs t|jS)z+Return a new view of the dictionary's keys.) _KeysViewrrr r r r<Zsz _Base.keyscCs t|jS)zAReturn a new view of the dictionary's items *(key, value) pairs).) _ItemsViewrrr r r items^sz _Base.itemscCs t|jS)z-Return a new view of the dictionary's values.) _ValuesViewrrr r r valuesbsz _Base.valuesc Cst|tjstSt|trx|jj}|jj}t|t|kr>dSt||D]*\\}}}\}}}||ksl||krHdSqHdSt|jjt|krdS| D]"\} } | | t } | | krdSqdS)NFT) rrMappingNotImplementedrrrr?ziprCr:r1) rotherZlftZrhtZi1Zk2Zv1Zi2Zv2r+rZnvr r r __eq__fs$   z _Base.__eq__cCs0||}|jjD]\}}}||krdSqdS)NTF)r(rr)rr'r-r*r+rr r r __contains__zs  z_Base.__contains__cCs(ddd|D}d|jj|S)N, css|]\}}d||VqdS)z '{}': {!r}N)format)r)r+rr r r sz!_Base.__repr__..z<{}({})>)joinrCrM __class__r)rbodyr r r __repr__sz_Base.__repr__)N)rr r r(r1r5r7r9r:r=r@r<rCrErJrKrRr r r r r0s  rc@s(eZdZdZddZddZddZdS) MultiDictProxyz'Read-only proxy for MultiDict instance.cCs,t|ttfs tdt||j|_dS)Nz:ctor requires MultiDict or MultiDictProxy instance, not {})r MultiDictrSrrMtyperrargr r r rszMultiDictProxy.__init__cCstd|jjdS)Nzcan't pickle {} objects)rrMrPrrr r r __reduce__szMultiDictProxy.__reduce__cCs t|SzReturn a copy of itself.)rTrCrr r r copyszMultiDictProxy.copyN)rr r r rrXrZr r r r rSs rSc@s(eZdZdZddZddZddZdS) CIMultiDictProxyz)Read-only proxy for CIMultiDict instance.cCs,t|ttfs tdt||j|_dS)Nz>ctor requires CIMultiDict or CIMultiDictProxy instance, not {})r CIMultiDictr[rrMrUrrVr r r rszCIMultiDictProxy.__init__cCs|Srtitler&r r r r(szCIMultiDictProxy._titlecCs t|SrY)r\rCrr r r rZszCIMultiDictProxy.copyN)rr r r rr(rZr r r r r[s r[c@seZdZdZddZejjdkr(ddZddZ d d Z d d Z d dZ ddZ e ZddZddZddZddZddZddZd,ddZefd d!ZeZefd"d#Zd$d%Zd&d'Zd(d)Zd*d+ZdS)-rTz/Dictionary with the support for duplicate keys.cOs"t|_||||jj|jdSr)rr_extendrPr _extend_itemsrargskwargsr r r rszMultiDict.__init__rcCst|t|jSr)rr r!r"rrr r r r szMultiDict.__sizeof__cCs|jt|ffSr)rPlistrCrr r r rXszMultiDict.__reduce__cCs|Srr r&r r r r(szMultiDict._titlecCst|tr|StddS)Nz8MultiDict keys should be either str or subclasses of str)rstrrr&r r r _keys  zMultiDict._keycCs2||}|jj||||f|jdSr)r(rrappendrfr)rr'valuer-r r r adds z MultiDict.addcCs|j}||SrY)rPrC)rclsr r r rZszMultiDict.copycOs|||d|jdS)zhExtend current MultiDict with more values. This method must be used instead of update. extendN)r_r`rar r r rkszMultiDict.extendcst|dkr td|t||r|d}t|dttfrL|sL|jj}nt|dr^| }|r|t |}| t | g}|D]F}t|dkstd|| |d|d|dfq||n|fdd| DdS) Nrz1{} takes at most 1 positional argument ({} given)rrCz3{} takes either dict or list of (key, value) tuplescs&g|]\}}|||fqSr )r(rf)r)r'rhrr r r.sz%MultiDict._extend..)r?rrMrrTrSrrhasattrrCrdrkrgr(rf)rrbrcr%methodrWrCitemr rr r_s>    *  zMultiDict._extendcCs |D]\}}}|||qdSr)ri)rrCr-r'rhr r r r`szMultiDict._extend_itemscCs|jj|jdS)z Remove all items from MultiDict.N)rrclearrrr r r rps zMultiDict.clearcCs|||dSr)_replace)rr'rhr r r __setitem__ szMultiDict.__setitem__cCsf||}|jj}d}tt|dddD]}||d|kr*||=d}q*|sXt|n |jdS)NFrrT)r(rrranger?r2r)rr'r-rCfoundr*r r r __delitem__ s  zMultiDict.__delitem__NcCs>||}|jjD]\}}}||kr|Sq||||S)zAReturn value for key, set value to default if key is not present.)r(rrrir6r r r setdefaults    zMultiDict.setdefaultcCsz||}tt|jjD]D}|jj|d|kr|jj|d}|jj|=|j|Sq|tkrrt|n|SdS)zRemove specified key and return the corresponding value. If key is not found, d is returned if given, otherwise KeyError is raised. rrlN)r(rtr?rrrr1r2)rr'r3r-r*rhr r r popone"s     zMultiDict.poponecCsd}||}g}tt|jjdddD]B}|jj|}|d|kr*||d|jj|=|jd}q*|s|tkrt|q|Sn | |SdS)zRemove all occurrences of key and return the list of corresponding values. If key is not found, default is returned if given, otherwise KeyError is raised. FrrsrrlTN) r(rtr?rrrgrr1r2reverse)rr'r3rur-Zretr*ror r r popall7s       zMultiDict.popallcCs<|jjr0|jjd}|j|d|dfStddS)z1Remove and return an arbitrary (key, value) pair.rrrlzempty multidictN)rrpoprr2)rr*r r r popitemRs  zMultiDict.popitemcOs|||d|jdS)z>Update the dictionary from *other*, overwriting existing keys.updateN)r_ _update_itemsrar r r r}[szMultiDict.updatec Cs|sdSi}|D]\}}}||d}t|t|jjD]>}|jj|}|d|kr8|d||<|||f|jj|<qq8|jj|||ft|jj||<qd}|t|jjkr|jj|}|d}||} | dkr|d7}q|| kr|jj|=q|d7}q|jdSr)r:rtr?rrrgr) rrCZ used_keysr-r'rhstartr*roposr r r r~_s2        zMultiDict._update_itemscCs||}||}|jj}tt|D]8}||}|d|kr(|||f||<|}|jqq(|jj|||f|jdS|d}|t|kr||}|d|kr||=q|d7}qdSr)rfr(rrrtr?rrg)rr'rhr-rCr*roZrgtr r r rqs&       zMultiDict._replace)N)rr r r rr!r$r%r rXr(rfrirZ__copy__rkr_r`rprrrvrwr1rxr{rzr|r}r~rqr r r r rTs0 "    rTc@seZdZdZddZdS)r\z@Dictionary with the support for duplicate case-insensitive keys.cCs|Srr]r&r r r r(szCIMultiDict._titleN)rr r r r(r r r r r\sr\c@s0eZdZdZddZddZddZdd Zd S) _Iter_size_itercCs||_||_dSrr)rsizeiteratorr r r rsz_Iter.__init__cCs|Srr rr r r r=sz_Iter.__iter__cCs t|jSr)nextrrr r r __next__sz_Iter.__next__cCs|jSr)rrr r r __length_hint__sz_Iter.__length_hint__N)rr r r#rr=rrr r r r rs rc@seZdZddZddZdS) _ViewBasecCs||_|j|_dSr)rr)rimplr r r rsz_ViewBase.__init__cCs t|jjSrr>rr r r r@sz_ViewBase.__len__N)rr r rr@r r r r rsrc@s,eZdZddZddZddZddZd S) rBcCs^t|tst|tstt|dks(t|jjD](\}}}|d|kr0|d|kr0dSq0dS)NrlrrTF)rtuplerdAssertionErrorr?rr)rror*r+rr r r rKs z_ItemsView.__contains__cCstt||Srrr?rrr r r r=sz_ItemsView.__iter__ccs8|jjD]*\}}}|j|jjkr(td||fVqdS)N#Dictionary changed during iterationrrr RuntimeError)rr*r+rr r r rsz_ItemsView._itercCsFg}|jjD]}|d|d|dq d|}d|jj|S)Nz {!r}: {!r}rrlrL{}({})rrrgrMrOrPrrZlstrorQr r r rRs   z_ItemsView.__repr__Nrr r rKr=rrRr r r r rBsrBc@s,eZdZddZddZddZddZd S) rDcCs$|jjD]}|d|krdSqdS)NrlTFrr)rrhror r r rKs  z_ValuesView.__contains__cCstt||Srrrr r r r=sz_ValuesView.__iter__ccs2|jjD]$}|j|jjkr"td|dVqdS)Nrrlrrror r r rs z_ValuesView._itercCs@g}|jjD]}|d|dq d|}d|jj|S)N{!r}rlrLrrrr r r rRs   z_ValuesView.__repr__Nrr r r r rDsrDc@s,eZdZddZddZddZddZd S) rAcCs$|jjD]}|d|krdSqdS)NrTFr)rr'ror r r rKs  z_KeysView.__contains__cCstt||Srrrr r r r=sz_KeysView.__iter__ccs2|jjD]$}|j|jjkr"td|dVqdS)Nrrrrr r r rs z_KeysView._itercCs@g}|jjD]}|d|dq d|}d|jj|S)NrrrLrrrr r r rRs   z_KeysView.__repr__Nrr r r r rAsrA)r!r collectionsr_abcrrrr1rerZupstrrrrrrSr[rTr\rr ItemsViewrB ValuesViewrDKeysViewrAr r r r s(   Vn