+
    Ki|  c                   s    ^ RI Ht Rt]t]t^ RI t ! R R]P                  4      t	 ! R R]P                  4      t ! R R	]P                  4      t ! R
 R]4      tR# )    )CountervaluesNc                   s&   a  ] tR t^
t o R tRtV tR# )_kViewc                6    V P                   P                  4       # N)_mappingiterkeysself   &@/usr/lib/python3.14/site-packages/lutris/util/steam/vdf/vdict.py__iter__Z_kView.__iter__   s    }}%%''     N__name__
__module____qualname____firstlineno__r   __static_attributes____classdictcell____classdict__   @r   r   r   
   s     ( (r   r   c                   s&   a  ] tR t^t o R tRtV tR# )_vViewc                r   r   )r   
itervaluesr   r
   r   r   Z_vView.__iter__   s    }}''))r   r   Nr   r   r   r   r   r      s     * *r   r   c                   s&   a  ] tR t^t o R tRtV tR# )_iViewc                r   r   )r   	iteritemsr   r
   r   r   Z_iView.__iter__   s    }}&&((r   r   Nr   r   r   r   r   r      s     ) )r   r   c                   s  a a ] tR t^t oRV 3R lltR tR tR tR tV 3R lt	V 3R lt
V 3R ltR	 tV 3R
 ltR tR tV 3R ltV 3R ltRR ltR tR tRR ltR tR tR tR tR tR tR tV 3R ltR tRtVt V ;t!# )VDFDictc                s   < \         SV `  4        . V n        \        4       V n        VeK   \        V\        \        34      '       g   \        R\        V4      ,          4      hV P                  V4       R# R# )a  
This is a dictionary that supports duplicate keys and preserves insert order

``data`` can be a ``dict``, or a sequence of key-value tuples. (e.g. ``[('key', 'value'),..]``)
The only supported type for key is str.

Get/set duplicates is done by tuples ``(index, key)``, where index is the duplicate index
for the specified key. (e.g. ``(0, 'key')``, ``(1, 'key')``...)

When the ``key`` is ``str``, instead of tuple, set will create a duplicate and get will look up ``(0, key)``
Nz1Expected data to be list of pairs or dict, got %s)super__init___VDFDict__omapr   _VDFDict__kcount
isinstancelistdict
ValueErrortypeupdate)r	   data	__class__   &&r   r   ZVDFDict.__init__   s`     		dT4L11 !TW[\`Wa!abbKK r   c                s    R V P                   P                  ,          pVR\        \        V P	                  4       4      4      ,          ,          pV# )z%s(z%s))r)   r   reprr#   r   )r	   Zout   & r   __repr__ZVDFDict.__repr__/   s;    dnn---utD!12333
r   c                s,    \        V P                  4      # r   )lenr    r   r
   r   __len__ZVDFDict.__len__4   s    4;;r   c                s    \        V4      ^8w  d   \        R\        V4      ,          4      h\        V^ ,          \        4      '       g   \	        R4      h\        V^,          \
        4      '       g   \	        R4      hR# )i   z)Expected key tuple length to be 2, got %dzKey index should be an intzKey value should be a strN)r.   r%   r"   Zint	TypeError_string_typer	   key   &&r   _verify_key_tupleZVDFDict._verify_key_tuple7   sa    s8q=H3s8STT#a&#&&899#a&,//788 0r   c                s    \        V\        4      '       d   ^ V3pV# \        V\        4      '       d   V P                  V4       V# \	        R\        V4      ,          4      h)r    z)Expected key to be a str or tuple, got %s)r"   r1   tupler5   r0   r&   r2   r4   r   _normalize_keyZVDFDict._normalize_key?   sZ    c<((c(C
 
	 U##""3' 
 G$s)STTr   c                s  < \        V\        4      '       d2   V P                  V,          V3pV P                  P	                  V4       MT\        V\
        4      '       d4   V P                  V4       W9  d   \        R \        V4      ,          4      hM\        R4      h\        SV `-  W4       V P                  V^,          ;;,          ^,          uu&   R# )z%s doesn't existz&Expected either a str or tuple for keyN)r"   r1   r!   r    Zappendr6   r5   KeyErrorr+   r0   r   __setitem__)r	   r3   valuer)   s   &&&r   r9   ZVDFDict.__setitem__H   s    c<((==%s+CKKs#U##""3'1DI=>>  DEEC'c!f"r   c                @   < \         SV `  V P                  V4      4      # r   )r   __getitem__r7   r	   r3   r)   r*   r   r<   ZVDFDict.__getitem__U   s    w"4#6#6s#;<<r   c                s  < V P                  V4      p\        S
V `	  V4      pV P                  P	                  V4      pV P                  V Vw  rEV P
                  V;;,          ^,          uu&   V P
                  V,          V,
          pV^ 8  d   \        V\        V P                  4      4       F  pV P                  V,          ^,          V8X  g   K$  V P                  V,          pWE3p	\        S
V `!  WV,          4       \        S
V `	  V4       WP                  V&   V^,          pV^,          pV^ 8X  g   K   M	  V P
                  V,          ^ 8X  d   V P
                  V V#    )	r7   r   __delitem__r    Zindexr!   _ranger.   r9   )r	   r3   ZresultZ	start_idxZdup_idxZskeyZ
tail_countidxZoldkeyZnewkeyr)   s   &&        r   r@   ZVDFDict.__delitem__X   s&   !!#&$S)KK%%c*	KK	"dq ]]4(72
>iT[[)9:;;s#A&$.![[-F%_FG'V=G'/'-KK$qLG!OJ!Q ; ==!#d#r   c                s4    \        V P                  4       4      # r   )Ziterr   r   r
   r   r   ZVDFDict.__iter__v   s    DMMO$$r   c                r;   r   )r   __contains__r7   r=   r*   r   rC   ZVDFDict.__contains__y   s    w#D$7$7$<==r   c                s    \        V\        4      '       d4   \        V P                  4       4      \        VP                  4       4      8H  # R # )F)r"   r   r#   itemsr	   Zotherr4   r   __eq__ZVDFDict.__eq__|   s3    eW%%

%ekkm)<<<r   c                s.    V P                  V4      '       * # r   )rF   rE   r4   r   __ne__ZVDFDict.__ne__   s    ;;u%%%r   c                sf   < \         SV `  4        V P                  P                  4        . V n        R # r   )r   clearr!   r    )r	   r)      &r   rH   ZVDFDict.clear   s#    r   c                sF   < \         SV `  ! V P                  V4      .VO5!  # r   )r   getr7   )r	   r3   Zargsr)   s   &&*r   rJ   ZVDFDict.get   s"    w{4..s3;d;;r   c                sR    W9  d   V P                  W4       V P                  V4      # r   )r9   r<   )r	   r3   Zdefaults   &&&r   
setdefaultZVDFDict.setdefault   s&    ?S*$$r   c                sl    V P                  V4      pV P                  V4      pV P                  V4       V# r   )r7   r<   r@   )r	   r3   r:      && r   popZVDFDict.pop   s5    !!#&  %r   c                s    V P                   '       g   \        R 4      hV P                   R,          pV^,          V P                  V4      3# )zVDFDict is emptyi)r    r8   rM   r2   r,   r   popitemZVDFDict.popitem   s;    {{{-..kk"o1vtxx}$$r   c                s    \        V\        4      '       d   VP                  4       pM1\        V\        4      '       g   \	        R \        V4      ,          4      hV F  w  r4V P                  W44       K  	  R# )z*Expected data to be a list or dict, got %sN)r"   r$   rD   r#   r0   r&   r9   )r	   r(   Zkwargsr3   r:   s   &&,  r   r'   ZVDFDict.update   sW    dD!!::<DD$''H4PT:UVVJCS( r   c                s(    R  V P                    4       # )c              3   s2   "   T F  q^,          x  K  	  R# 5ir?   Nr   ).0r3   r,   r   	<genexpr>Z#VDFDict.iterkeys.<locals>.<genexpr>   s     .+3A+s   r    r   r
   r   r   ZVDFDict.iterkeys   s    .$++..r   c                    \        V 4      # r   )r   r   r
   r   keysZVDFDict.keys       d|r   c                0   a  V 3R  lS P                    4       # )c              3   s6   <"   T F  pSV,          x  K  	  R # 5ir   r   rP   r3   r	      & r   rQ   Z%VDFDict.itervalues.<locals>.<genexpr>   s     1[cS		[s   rR   r      fr   r   ZVDFDict.itervalues   s    1T[[11r   c                rS   r   )r   r   r
   r   r   ZVDFDict.values   rU   r   c                rV   )c              3   sF   <"   T F  q^,          SV,          3x  K  	  R# 5irO   r   rW   rX   r   rQ   Z$VDFDict.iteritems.<locals>.<genexpr>   s     ;{Qc#{s   !rR   r   rY   r   r   ZVDFDict.iteritems   s    ;t{{;;r   c                rS   r   )r   r   r
   r   rD   ZVDFDict.items   rU   r   c                s    \        V\        4      '       g   \        R4      h\        V P                  V,          4       Uu. uF  q W!3,          NK  	  up# u upi )z#Returns all values of the given keyzKey needs to be a string.)r"   r1   r0   rA   r!   )r	   r3   rB   rL   r   get_all_forZVDFDict.get_all_for   sK    #|,,788,24==3E,FG,FScZ  ,FGGGs    Ac                s  <a \        S\        4      '       g   \        R4      h\        V P                  S,          4       F  p\
        SV `  VS34       K  	  \        \        V3R lV P                  4      4      V n	        V P                  S R# )z$Removes all items with the given keyzKey need to be a string.c                 s   < V ^,          S8g  # r>   r   )Zxr3   rI   r   Z<lambda>Z(VDFDict.remove_all_for.<locals>.<lambda>   s    AaDCKr   N)
r"   r1   r0   rA   r!   r   r@   r#   Zfilterr    )r	   r3   rB   r)   s   &f r   remove_all_forZVDFDict.remove_all_for   sk    #|,,677$--,-CGc
+ . 6"7EFMM#r   c                s   a \        V P                  \        4      ! 4        F  pV^8w  g   K   R# 	  V3R loS! V 4      # )z{
Returns ``True`` if the dict contains keys with duplicates.
Recurses through any all keys with value that is ``VDFDict``.
Tc                 s   < \        V \        4      ! 4        FR  p\        V\        4      '       d   VP	                  4       '       d    R # \        V\
        4      '       g   KJ  S! V4      u # 	  R# )TF)getattr_iter_valuesr"   r   has_duplicatesr$   )ZobjZvdict_recurserX   r   r_   Z,VDFDict.has_duplicates.<locals>.dict_recurse   sQ    S,/1a))a.>.>.@.@a&&'?*	 2
 r   )r\   r!   r]   )r	   Znr_   s   & @r   r^   ZVDFDict.has_duplicates   s9    
 57AAv 8	 D!!r   )Z__kcountZ__omapr   )"r   r   r   r   r   r-   r/   r5   r7   r9   r<   r@   r   rC   rF   rG   rH   rJ   rK   rM   rN   r'   r   rT   r   r   r   rD   rZ   r[   r^   r   r   Z__classcell__)r)   r   s   @@r   r   r      s     *
 9#=<%>
&
<%
%)/2<H
" "r   r   )Zcollectionsr   r]   ZrangerA   Zstrr1   Z_cZKeysViewr   Z
ValuesViewr   Z	ItemsViewr   r$   r   r   r   r   <module>r`      sX    	 (R[[ (
*R]] *
)R\\ )
B"d B"r   