+
    Tjo*                         ^ RI t ^ RIHt  ! R R4      t ! R R]4      t ! R R]4      t ! R	 R
]4      t	 ! R R]4      t
 ! R R]4      t ! R R4      tR# )    N)Mappingc                   d   a  ] tR t^t o RtRR ltR tR tR tR t	R t
R	 tR
 tR tR tRtV tR# )
OrderedSetz7
A set which keeps the ordering of the inserted items.
Nc                N    \         P                  T;'       g    R4      V n         R # )N )dictfromkeys)selfiterables   &&P/var/www/idalgo/venv/lib/python3.14/site-packages/django/utils/datastructures.py__init__OrderedSet.__init__
   s    MM(..b1	    c                $    R V P                   V&   R # Nr   r
   items   &&r   addOrderedSet.add   s    		$r   c                     V P                   V R # r   r   r   s   &&r   removeOrderedSet.remove   s    IIdOr   c                N     V P                  V4       R #   \         d     R # i ; ir   )r   KeyErrorr   s   &&r   discardOrderedSet.discard   s%    	KK 		s    $$c                ,    \        V P                  4      # r   )iterr   r
   s   &r   __iter__OrderedSet.__iter__       DIIr   c                ,    \        V P                  4      # r   )reversedr   r    s   &r   __reversed__OrderedSet.__reversed__   s    		""r   c                    WP                   9   # r   r   r   s   &&r   __contains__OrderedSet.__contains__   s    yy  r   c                ,    \        V P                  4      # r   )boolr   r    s   &r   __bool__OrderedSet.__bool__"   r#   r   c                ,    \        V P                  4      # r   )lenr   r    s   &r   __len__OrderedSet.__len__%   s    499~r   c                    V P                   '       d   \        \        V P                   4      4      MR pV P                  P                   RV R2# ) ())r   reprlist	__class____qualname__)r
   datas   & r   __repr__OrderedSet.__repr__(   s<    (,			tDO$r..--.avQ77r   r   r   )__name__
__module__r:   __firstlineno____doc__r   r   r   r   r!   r&   r)   r-   r1   r<   __static_attributes____classdictcell____classdict__s   @r   r   r      sA     2#!8 8r   r   c                       ] tR t^-tRtR# )MultiValueDictKeyErrorr   N)r>   r?   r:   r@   rB   r   r   r   rG   rG   -   s    r   rG   c                      a a ] tR t^1t oRtRV 3R lltV 3R ltV 3R ltV 3R ltR t	R t
R tR	 tRR
 ltRV 3R lltRR ltV 3R ltRR ltRR ltR tR tV 3R ltR tR tR tR tRtVtV ;t# )MultiValueDictai  
A subclass of dictionary customized to handle multiple values for the
same key.

>>> d = MultiValueDict(
...    {'name': ['Adrian', 'Simon'], 'position': ['Developer']}
... )
>>> d['name']
'Simon'
>>> d.getlist('name')
['Adrian', 'Simon']
>>> d.getlist('doesnotexist')
[]
>>> d.getlist('doesnotexist', ['Adrian', 'Simon'])
['Adrian', 'Simon']
>>> d.get('lastname', 'nonexistent')
'nonexistent'
>>> d.setlist('lastname', ['Holovaty', 'Willison'])

This class exists to solve the irritating problem raised by cgi.parse_qs,
which returns a list for every key, even though most web forms submit
single name-value pairs.
c                &   < \         SV `  V4       R # r   )superr   )r
   key_to_list_mappingr9   s   &&r   r   MultiValueDict.__init__J   s    ,-r   c                Z   < R V P                   P                  : R\        SV `  4       : R2# )<z: >)r9   r>   rK   r<   r
   r9   s   &r   r<   MultiValueDict.__repr__M   s     !^^44eg6F6HIIr   c                   <  \         SV `  V4      p TR,          #   \         d    \        T4      hi ; i  \         d    . u # i ; i)zd
Return the last data value for this key, or [] if it's an empty list;
raise KeyError if not found.
)rK   __getitem__r   rG   
IndexErrorr
   keylist_r9   s   && r   rU   MultiValueDict.__getitem__P   sW    
	.G',E	9  	.(--	.  	I	s    6 3AAc                (   < \         SV `  W.4       R # r   rK   __setitem__)r
   rX   valuer9   s   &&&r   r]   MultiValueDict.__setitem__^   s    C)r   c           	         T P                  V P                  4        UUu. uF  w  rWR ,          3NK  	  upp4      # u uppi ):NNN)r9   lists)r
   kvs   &  r   __copy__MultiValueDict.__copy__a   s1    ~~TZZ\B\TQQ4y\BCCBs   <
c           	         V P                  4       pW!\        V 4      &   \        P                  V 4       FD  w  r4\        P	                  V\
        P                  ! W14      \
        P                  ! WA4      4       KF  	  V# r   )r9   idr   itemsr]   copydeepcopy)r
   memoresultrX   r^   s   &&   r   __deepcopy__MultiValueDict.__deepcopy__d   s\    !RX**T*JCc0$--2L + r   c           	     n    / V P                   CR V  Uu/ uF  qV P                  V4      bK  	  up/C# u upi )_data)__dict___getlist)r
   rb   s   & r   __getstate__MultiValueDict.__getstate__m   s6    N$--N*M1dmmA.>+>*MNN*Ms   2c                    VP                  R / 4      pVP                  4        F  w  r4V P                  W44       K  	  V P                  P	                  V4       R# )rp   N)poprh   setlistrq   update)r
   obj_dictr;   rb   rc   s   &&   r   __setstate__MultiValueDict.__setstate__p   sB    ||GR(JJLDALL !X&r   c                P     W,          pT. 8X  d   T# T#   \          d    Tu # i ; i)zr
Return the last data value for the passed key. If key doesn't exist
or value is an empty list, return `default`.
)r   )r
   rX   defaultvals   &&& r   getMultiValueDict.getv   s7    
	)C "9N
	  	N	s    %%c                   <  \         SV `  V4      pV'       d   Ve   \        V4      MRpV#   \         d    Tf   . u # Tu # i ; i)z
Return a list of values for the key.

Used internally to manipulate values list. If force_list is True,
return a new copy of values.
N)rK   rU   r8   r   )r
   rX   r}   
force_listvaluesr9   s   &&&& r   rr   MultiValueDict._getlist   sQ    		W(-F )/);fM  		N	s   - A AAc                (    V P                  WRR7      # )zV
Return the list of values for the key. If key doesn't exist, return a
default value.
T)r   )rr   r
   rX   r}   s   &&&r   getlistMultiValueDict.getlist   s    
 }}Sd};;r   c                &   < \         SV `  W4       R # r   r\   rW   s   &&&r   rw   MultiValueDict.setlist   s    C'r   c                &    W9  d   W V&   W,          # r   r   r   s   &&&r   
setdefaultMultiValueDict.setdefault   s    ?I yr   c                ^    W9  d   Vf   . pV P                  W4       V P                  V4      # r   )rw   rr   )r
   rX   default_lists   &&&r   setlistdefaultMultiValueDict.setlistdefault   s/    ?#!LL+ }}S!!r   c                F    V P                  V4      P                  V4       R# )z8Append an item to the internal list associated with key.N)r   appendr
   rX   r^   s   &&&r   
appendlistMultiValueDict.appendlist   s    C ''.r   c              #  8   "   V  F  pWV,          3x  K  	  R# 5i)z]
Yield (key, value) pairs, where value is the last item in the list
associated with the key.
Nr   r
   rX   s   & r   rh   MultiValueDict.items   s     
 CCy.  s   c                2   < \        \        SV `	  4       4      # )zYield (key, list) pairs.)r   rK   rh   rQ   s   &r   ra   MultiValueDict.lists   s    EGMO$$r   c              #  4   "   V  F  pW,          x  K  	  R# 5i)z'Yield the last value on every key list.Nr   r   s   & r   r   MultiValueDict.values   s     C)O s   c                .    \         P                   ! V 4      # )z%Return a shallow copy of this object.)ri   r    s   &r   ri   MultiValueDict.copy   s    yyr   c                2   \        V4      ^8  d   \        R\        V4      ,          4      hV'       d   V^ ,          p\        V\        4      '       d;   VP	                  4        F%  w  rEV P                  V4      P                  V4       K'  	  MQ\        V\        4      '       d   VP                  4       pV F%  w  rFV P                  V4      P                  V4       K'  	  VP                  4        F%  w  rFV P                  V4      P                  V4       K'  	  R# )z.Extend rather than replace existing key lists.z*update expected at most 1 argument, got %dN)
r0   	TypeError
isinstancerI   ra   r   extendr   rh   r   )r
   argskwargsargrX   
value_listr^   s   &*,    r   rx   MultiValueDict.update   s    t9q=H3t9TUUq'C#~..'*yy{OC'',33J? (3 c7++))+C"%JC'',33E: #& ,,.JC$++E2 )r   c                <    V  Uu/ uF  qW,          bK  	  up# u upi )z5Return current object as a dict with singular values.r   r   s   & r   r   MultiValueDict.dict   s    *./$3TY$///s   r   )r   r   )NF)r>   r?   r:   r@   rA   r   r<   rU   r]   rd   rm   rs   rz   r   rr   r   rw   r   r   r   rh   ra   r   ri   rx   r   rB   rC   __classcell__r9   rE   s   @@r   rI   rI   1   s{     0.J*DO'$<("/!%
3"0 0r   rI   c                   l   a  ] tR t^t o RtRR/R ltR t]t]t]t	]t
]t]t]t]t]t]t]t]t]tRtV tR# )ImmutableLista  
A tuple-like object that raises useful errors when it is asked to mutate.

Example::

    >>> a = ImmutableList(range(5), warning="You cannot mutate this.")
    >>> a[3] = '4'
    Traceback (most recent call last):
        ...
    AttributeError: You cannot mutate this.
warningz"ImmutableList object is immutable.c               F    \         P                  ! V .VO5/ VB pWn        V# r   )tuple__new__r   )clsr   r   r   r
   s   &$*, r   r   ImmutableList.__new__   s$    }}S24262r   c                ,    \        V P                  4      hr   )AttributeErrorr   )r
   r   r   s   &*,r   complainImmutableList.complain   s    T\\**r   )r   N)r>   r?   r:   r@   rA   r   r   __delitem____delslice____iadd____imul__r]   __setslice__r   r   insertrv   r   sortreverserB   rC   rD   s   @r   r   r      s_     
$H 
+ KLHHKLFFF
CFDGr   r   c                   B   a a ] tR tRt oRtV 3R ltV 3R ltRtVtV ;t	# )DictWrapperi  a/  
Wrap accesses to a dictionary so that certain values (those starting with
the specified prefix) are passed through a function before being returned.
The prefix is removed before looking up the real value.

Used by the SQL construction code to ensure that values are correctly
quoted before being used.
c                >   < \         SV `  V4       W n        W0n        R # r   )rK   r   funcprefix)r
   r;   r   r   r9   s   &&&&r   r   DictWrapper.__init__  s    	r   c                   < VP                  V P                  4      pVP                  V P                  4      p\        SV `  V4      pV'       d   V P                  V4      # V# )z
Retrieve the real value after stripping the prefix string (if
present). If the prefix is present, pass the value through self.func
before returning, otherwise return the raw value.
)
startswithr   removeprefixrK   rU   r   )r
   rX   use_funcr^   r9   s   &&  r   rU   DictWrapper.__getitem__  sQ     >>$++.t{{+#C(99U##r   )r   r   )
r>   r?   r:   r@   rA   r   rU   rB   rC   r   r   s   @@r   r   r     s     
 r   r   c                   ^   a  ] tR tRt o RtR tR tR tR tR t	R t
R	 t]R
 4       tRtV tR# )CaseInsensitiveMappingi   aa  
Mapping allowing case-insensitive key lookups. Original case of keys is
preserved for iteration and string representation.

Example::

    >>> ci_map = CaseInsensitiveMapping({'name': 'Jane'})
    >>> ci_map['Name']
    Jane
    >>> ci_map['NAME']
    Jane
    >>> ci_map['name']
    Jane
    >>> ci_map  # original case preserved
    {'name': 'Jane'}
c                    V P                  V4       UUu/ uF  w  r#VP                  4       W#3bK  	  uppV n        R # u uppi r   )_unpack_itemslower_store)r
   r;   rb   rc   s   &&  r   r   CaseInsensitiveMapping.__init__2  s7    595G5G5MN5MTQqwwy1&(5MNNs   =c                R    V P                   VP                  4       ,          ^,          # )   )r   r   r   s   &&r   rU   "CaseInsensitiveMapping.__getitem__5  s    {{399;'**r   c                ,    \        V P                  4      # r   )r0   r   r    s   &r   r1   CaseInsensitiveMapping.__len__8  s    4;;r   c                   \        V\        4      ;'       dh    V P                  4        UUu/ uF  w  r#VP                  4       VbK  	  uppVP                  4        UUu/ uF  w  r#VP                  4       VbK  	  upp8H  # u uppi u uppi r   )r   r   rh   r   )r
   otherrb   rc   s   &&  r   __eq__CaseInsensitiveMapping.__eq__;  su    %) 6 6%)ZZ\/
%1TQAGGIqL\/
',{{}5}tqaggil}5/6 	6 /
5s   B Bc                D    R  V P                   P                  4        4       # )c              3   *   "   T F	  w  rVx  K  	  R # 5ir   r   ).0original_keyr^   s   &  r   	<genexpr>2CaseInsensitiveMapping.__iter__.<locals>.<genexpr>A  s     M8L!48Ls   )r   r   r    s   &r   r!   CaseInsensitiveMapping.__iter__@  s    M8J8J8LMMr   c                |    \        V P                  P                  4        UUu/ uF  w  rWbK	  	  upp4      # u uppi r   )r7   r   r   r   s   &  r   r<   CaseInsensitiveMapping.__repr__C  s2    $++2D2D2FG2FJCSZ2FGHHGs   8
c                    V # r   r   r    s   &r   ri   CaseInsensitiveMapping.copyF  s    r   c           	   #    "   \        V \        \        34      '       d   V P                  4        R j  xL
  R # \	        V 4       Fs  w  r\        V4      ^8w  d%   \        RP                  V\        V4      4      4      h\        V^ ,          \        4      '       g   \        RV^ ,          ,          4      hVx  Ku  	  R #  L5i)NzDdictionary update sequence element #{} has length {}; 2 is required.z0Element key %r invalid, only strings are allowed)	r   r   r   rh   	enumerater0   
ValueErrorformatstr)r;   ielems   &  r   r   $CaseInsensitiveMapping._unpack_itemsI  s     
 dT7O,,zz|## GA4yA~ %%+VAs4y%9  d1gs++ FaP  J ' $s   0B?B=BB?)r   N)r>   r?   r:   r@   rA   r   rU   r1   r   r!   r<   ri   staticmethodr   rB   rC   rD   s   @r   r   r      sD     "O+ 6
NI  r   r   c                   0   a  ] tR tRt o RtR tR tRtV tR# )DeferredSubDicti^  a&  
Wrap a dict, allowing deferred access to a sub-dict under a given key.

The value at ``deferred_key`` must itself be a dict. Accessing
``DeferredSubDict(parent_dict, deferred_key)[key]`` retrieves
``parent_dict[deferred_key][key]`` at access time, so updates to
the parent dict are reflected.
c                    Wn         W n        R # r   parent_dictdeferred_key)r
   r   r   s   &&&r   r   DeferredSubDict.__init__h  s    &(r   c                J    V P                   V P                  ,          V,          # r   r   r   s   &&r   rU   DeferredSubDict.__getitem__l  s     1 12377r   )r   r   N)	r>   r?   r:   r@   rA   r   rU   rB   rC   rD   s   @r   r   r   ^  s     )8 8r   r   )ri   collections.abcr   r   r   rG   r   rI   r   r   r   r   r   r   r   r   <module>r      sa     #%8 %8P	X 	j0T j0Z"E "J$ :;W ;|8 8r   