;iO#ddlmZddlmZddlZddlmZddl m Z ddl m Z ej rddlZejdZejdZejd Zejd ejd ejf ZddZGddZGddejeefZGddeeefZGddZddZGddeeefZdS) ) annotationsNupdate_wrapper)repeat)_missingKVTF.)boundselft.Anyreturn t.NoReturncJtt|jd)Nz objects are immutable) TypeErrortype__name__rs RC:\PYTHON\MyICR_Workspace\venv\Lib\site-packages\werkzeug/datastructures/mixins.py_immutable_errorrs" tDzz*DDD E EEceZdZUdZdZded<d#dZd$d Zd%dZd&dZ d&dZ d'dZ d(dZ d(dZ d)dZd*dZd+d,dZd-dZd.d/d"ZdS)0ImmutableListMixinzOMakes a :class:`list` immutable. .. versionadded:: 0.5 :private: N int | None _hash_cacherintch|j|jStt|x}|_|SN)rhashtuplerrvs r__hash__zImmutableListMixin.__hash__!s4   '# # $U4[[ 1 11T  rprotocolt.SupportsIndexrc@t|t|ffSr )rlistrr&s r __reduce_ex__z ImmutableListMixin.__reduce_ex__'DzzDJJ=((rkeyrc$t|dSr rrr-s r __delitem__zImmutableListMixin.__delitem__*rotherc$t|dSr r/rr3s r__iadd__zImmutableListMixin.__iadd__-r2rc$t|dSr r/r5s r__imul__zImmutableListMixin.__imul__0r2rvaluec$t|dSr r/rr-r9s r __setitem__zImmutableListMixin.__setitem__3r2ritemc$t|dSr r/rr=s rappendzImmutableListMixin.append6r2rc$t|dSr r/r?s rremovezImmutableListMixin.remove9r2riterablec$t|dSr r/)rrCs rextendzImmutableListMixin.extend<r2rposc$t|dSr r/rrFr9s rinsertzImmutableListMixin.insert?r2rindexc$t|dSr r/)rrKs rpopzImmutableListMixin.popBr2rrc$t|dSr r/rs rreversezImmutableListMixin.reverseEr2rFrOc$t|dSr r/)rr-rOs rsortzImmutableListMixin.sortHr2rrrr&r'rrr-rrrr3rrrr-rr9rrr)r=rrr)rCrrrrFrr9rrr)rJ)rKrrrrrrr)NF)r-rrOrrr)r __module__ __qualname____doc__r__annotations__r%r+r1r6r8r<r@rBrErIrMrOrQrrrrsA#K"""" ))))rrceZdZUdZdZded<eejd(d Z eejd)dZ e d*d+fd Z d,dZ d-dZ d.dZ d*d/dZ d0d Zd1d"Zd*d/d#Zd2d$Zd3d%Zd4d&Zd2d'ZxZS)5ImmutableDictMixinzMakes a :class:`dict` immutable. .. versionchanged:: 3.1 Disallow ``|=`` operator. .. versionadded:: 0.5 :private: Nrrkeyscabc.Iterable[K]r9Noner#ImmutableDictMixin[K, t.Any | None]cdSr r]clsr`r9s rfromkeyszImmutableDictMixin.fromkeysYs /2crr ImmutableDictMixin[K, V]cdSr r]res rrgzImmutableDictMixin.fromkeys^sUXUXrV | None>ImmutableDictMixin[K, t.Any | None] | ImmutableDictMixin[K, V]ct|}|t|t ||Sr )super__new____init__zipr)rfr`r9instance __class__s rrgzImmutableDictMixin.fromkeysasC77??3''#dF5MM22333rr&r'rc@t|t|ffSr )rdictr*s rr+z ImmutableDictMixin.__reduce_ex__ir,rt.Iterable[t.Any]c*|Sr itemsrs r_iter_hashitemsz"ImmutableDictMixin._iter_hashitemslszz||rrc|j|jStt|x}|_|Sr )rr! frozensetryr#s rr%zImmutableDictMixin.__hash__osB   '# # $Yt/C/C/E/E%F%F G GGT  rr-defaultrc$t|dSr r/rr-r|s r setdefaultzImmutableDictMixin.setdefaultur2rargkwargsc $t|dSr r/rrrs rupdatezImmutableDictMixin.updatexr2rr3c$t|dSr r/r5s r__ior__zImmutableDictMixin.__ior__{r2rc$t|dSr r/r~s rrMzImmutableDictMixin.pop~r2rc$t|dSr r/rs rpopitemzImmutableDictMixin.popitemr2rc$t|dSr r/r;s rr<zImmutableDictMixin.__setitem__r2rc$t|dSr r/r0s rr1zImmutableDictMixin.__delitem__r2rc$t|dSr r/rs rclearzImmutableDictMixin.clearr2r)r`rar9rbrrc)r`rar9r rrhr )r`rar9rjrrkrSrrurRr-rr|rrrrrrrrrrUrrrVrT)rrYrZr[rr\ classmethodtoverloadrgr+ryr%rrrrMrr<r1r __classcell__rrs@rr_r_Ls#K""""Z222Z[2ZXXXZ[X7;[)))) rr_cLeZdZdZddZddZdd Zdd ZddZddZ dddZ dS)ImmutableMultiDictMixinzTMakes a :class:`MultiDict` immutable. .. versionadded:: 0.5 :private: r&r'rrcht|t|dffSNT)multi)rr)rxr*s rr+z%ImmutableMultiDictMixin.__reduce_ex__s,DzzD$!7!788:::rruc.|dSrrwrs rryz'ImmutableMultiDictMixin._iter_hashitemsszzz%%%rr-r9rc$t|dSr r/r;s raddzImmutableMultiDictMixin.addr2rc$t|dSr r/rs r popitemlistz#ImmutableMultiDictMixin.popitemlistr2rc$t|dSr r/r0s rpoplistzImmutableMultiDictMixin.poplistr2rnew_listc$t|dSr r/)rr-rs rsetlistzImmutableMultiDictMixin.setlistr2rN default_listc$t|dSr r/)rr-rs rsetlistdefaultz&ImmutableMultiDictMixin.setlistdefaultr2rrSrrVrrT)r-rrrrrr )r-rrrrr) rrYrZr[r+ryrrrrrr]rrrrs;;;;&&&&rrceZdZdZddZdd Zdd Zd d Zdd ZddZ d!dZ d"dZ d"dZ d#dZ d$dZdefd%dZd&dZd%dZd%dZdS)'ImmutableHeadersMixinaMakes a :class:`Headers` immutable. We do not mark them as hashable though since the only usecase for this datastructure in Werkzeug is a view on a mutable structure. .. versionchanged:: 3.1 Disallow ``|=`` operator. .. versionadded:: 0.5 :private: r-rrrrc $t|dSr r/)rr-rs rr1z!ImmutableHeadersMixin.__delitem__r2rr9c$t|dSr r/r;s rr<z!ImmutableHeadersMixin.__setitem__r2rc $t|dSr r/rr-r9rs rsetzImmutableHeadersMixin.setr2rvaluesc$t|dSr r/)rr-rs rrzImmutableHeadersMixin.setlistr2rc $t|dSr r/rs rrzImmutableHeadersMixin.addr2rc $t|dSr r/rs r add_headerz ImmutableHeadersMixin.add_headerr2rc$t|dSr r/r0s rrBzImmutableHeadersMixin.remover2rrc $t|dSr r/rs rrEzImmutableHeadersMixin.extendr2rc $t|dSr r/rs rrzImmutableHeadersMixin.updater2rr3c$t|dSr r/r5s rrzImmutableHeadersMixin.__ior__r2rrFc$t|dSr r/rHs rrIzImmutableHeadersMixin.insertr2rNr|c$t|dSr r/r~s rrMzImmutableHeadersMixin.popr2rc$t|dSr r/rs rrzImmutableHeadersMixin.popitemr2rc$t|dSr r/r~s rrz ImmutableHeadersMixin.setdefaultr2rc$t|dSr r/r~s rrz$ImmutableHeadersMixin.setlistdefaultr2r)r-rrrrrrV)r-rr9rrrrr)r-rrrrrrTrrUrWrr)rrYrZr[r1r<rrrrrBrErrrIrrMrrrr]rrrrsV   $hrrfc0dfd }t|S) NrUpdateDictMixin[t.Any, t.Any]argsrrrcX|g|Ri|}|j|||Sr ) on_update)rrrr$rs rwrapperz_always_update..wrappersCQt %d % % %f % % > % NN4  r)rrrrrrrrr)rrs` r_always_updaters3 '1 % %%rcXeZdZUdZdZded<d"d#fd Zejd$dZ ejd%dZ ejd&dZ e fd'fd Z e d(fd Z e d)fd Z e d*fd Ze d+fd Ze d"d,fd Ze d-fd! ZxZS).UpdateDictMixinzMakes dicts call `self.on_update` on modifications. .. versionchanged:: 3.1 Implement ``|=`` operator. .. versionadded:: 0.5 :private: Nz%cabc.Callable[[te.Self], None] | Nonerrte.Selfr-r r|rjrr c||v}t||}|r|j|||Sr )rmrrrr-r|modifiedr$rrs rrzUpdateDictMixin.setdefaultsKd? WW  W - -  !2 NN4  rcdSr r]r0s rrMzUpdateDictMixin.pop s),rcdSr r]r~s rrMzUpdateDictMixin.pop 58Srr cdSr r]r~s rrMzUpdateDictMixin.pop rrV | Tc||v}|tur"t|}n"t||}|r|j|||Sr )rrmrMrrs rrMzUpdateDictMixin.popsm $; h   C((BBS'**B  !2 NN4  rr9rbcLt||dSr )rmr<)rr-r9rrs rr<zUpdateDictMixin.__setitem__s# C'''''rcJt|dSr )rmr1)rr-rrs rr1zUpdateDictMixin.__delitem__!s! C     rcHtdSr )rmrrrrs rrzUpdateDictMixin.clear%s  r tuple[K, V]cDtSr )rmrrs rrzUpdateDictMixin.popitem)sww   rr6cabc.Mapping[K, V] | cabc.Iterable[tuple[K, V]] | Nonerc v|tjdi|dStj|fi|dS)Nr])rmr)rrrrrs rrzUpdateDictMixin.update-sP ; EGGN $ $V $ $ $ $ $ EGGN3 ) )& ) ) ) ) )rr3/cabc.Mapping[K, V] | cabc.Iterable[tuple[K, V]]cFt|Sr )rmr)rr3rrs rrzUpdateDictMixin.__ior__9swwu%%%rr )rrr-r r|rjrr )rrr-r rr )rrr-r r|r rr )rrr-r r|r rr )rrr-r r|rrr)r-r r9r rrb)r-r rrb)rrb)rr)rrrr rrb)r3rrr)rrYrZr[rr\rrrrMrrr<r1rrrrrrs@rrrs8rs""""""$$$$$$ ?#"""" AIcNN AIcNN AIcNN AIcsAEz2333FFFF22222222j?????1a4???D0A6<88888888v & & & &H&H&H&H&H&d1a4jH&H&H&H&H&r