§
    ZQd°  ã                   óŠ   — d Z ddlmZ ddlmZ ddlmZ ddlmZmZmZ ddlmZ ej	        dhz  Z
 G d„ d	ej        ¦  «        Zd
S )aj  Fixer for dict methods.

d.keys() -> list(d.keys())
d.items() -> list(d.items())
d.values() -> list(d.values())

d.iterkeys() -> iter(d.keys())
d.iteritems() -> iter(d.items())
d.itervalues() -> iter(d.values())

d.viewkeys() -> d.keys()
d.viewitems() -> d.items()
d.viewvalues() -> d.values()

Except in certain very specific contexts: the iter() can be dropped
when the context is list(), sorted(), iter() or for...in; the list()
can be dropped when the context is list() or sorted() (but not iter()
or for...in!). Special contexts that apply to both: list(), sorted(), tuple()
set(), any(), all(), sum().

Note: iter(d.keys()) could be written as iter(d) but since the
original d.iterkeys() was also redundant we don't fix this.  And there
are (rare) contexts where it makes a difference (e.g. when passing it
as an argument to a function that introspects the argument).
é   )Úpytree)Úpatcomp)Ú
fixer_base)ÚNameÚCallÚDot)Ú
fixer_utilÚiterc                   ój   — e Zd ZdZdZd„ ZdZ ej        e¦  «        Z	dZ
 ej        e
¦  «        Zd„ ZdS )ÚFixDictTa  
    power< head=any+
         trailer< '.' method=('keys'|'items'|'values'|
                              'iterkeys'|'iteritems'|'itervalues'|
                              'viewkeys'|'viewitems'|'viewvalues') >
         parens=trailer< '(' ')' >
         tail=any*
    >
    c           	      óþ  — |d         }|d         d         }|d         }| j         }|j        }|                     d¦  «        }|                     d¦  «        }	|s|	r
|dd …         }|dv sJ t          |¦  «        ¦   «         ‚d	„ |D ¦   «         }d
„ |D ¦   «         }| o|                      ||¦  «        }
|t          j        |j        t          ¦   «         t          ||j
        ¬¦  «        g¦  «        |d                              ¦   «         gz   }t          j        |j        |¦  «        }|
s+|	s)d|_
        t          t          |rdnd¦  «        |g¦  «        }|rt          j        |j        |g|z   ¦  «        }|j
        |_
        |S )NÚheadÚmethodé    Útailr
   Úviewé   )ÚkeysÚitemsÚvaluesc                 ó6   — g | ]}|                      ¦   «         ‘ŒS © ©Úclone©Ú.0Úns     ú-/usr/lib/python3.11/lib2to3/fixes/fix_dict.pyú
<listcomp>z%FixDict.transform.<locals>.<listcomp>A   ó    € Ð(Ð(Ð(˜a�—’‘	”	Ð(Ð(Ð(ó    c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   r   r   s     r   r   z%FixDict.transform.<locals>.<listcomp>B   r    r!   )ÚprefixÚparensÚ Úlist)ÚsymsÚvalueÚ
startswithÚreprÚin_special_contextr   ÚNodeÚtrailerr   r   r#   r   Úpowerr   )ÚselfÚnodeÚresultsr   r   r   r'   Úmethod_nameÚisiterÚisviewÚspecialÚargsÚnews                r   Ú	transformzFixDict.transform6   s²  € Ø�vŒˆØ˜Ô" 1Ô%ˆØ�vŒˆØŒyˆØ”lˆØ×'Ò'¨Ñ/Ô/ˆØ×'Ò'¨Ñ/Ô/ˆØð 	*�Vð 	*Ø% a b bœ/ˆKØÐ9Ð9Ð9Ð9½4À¹<¼<Ñ9Ô9Ð9Ø(Ð( 4Ð(Ñ(Ô(ˆØ(Ð( 4Ð(Ñ(Ô(ˆØ�(ÐD˜t×6Ò6°t¸VÑDÔDˆØ•v”{ 4¤<Ý$'¡E¤EÝ$(¨Ø06´ð%?ñ %?ô %?ð$@ñAô Að ˜xÔ(×.Ò.Ñ0Ô0ð	2ñ 2ˆõ
 Œk˜$œ* dÑ+Ô+ˆØð 	B˜6ð 	BØˆCŒJÝ•t fÐ8˜F˜F°&Ñ9Ô9¸C¸5ÑAÔAˆCØð 	8Ý”+˜dœj¨3¨%°$©,Ñ7Ô7ˆCØ”[ˆŒ
Øˆ
r!   z3power< func=NAME trailer< '(' node=any ')' > any* >zmfor_stmt< 'for' any 'in' node=any ':' any* >
            | comp_for< 'for' any 'in' node=any any* >
         c                 óH  — |j         €dS i }|j         j         �^| j                             |j         j         |¦  «        r9|d         |u r/|r|d         j        t          v S |d         j        t
          j        v S |sdS | j                             |j         |¦  «        o	|d         |u S )NFr0   Úfunc)ÚparentÚp1Úmatchr(   Úiter_exemptr	   Úconsuming_callsÚp2)r/   r0   r3   r1   s       r   r+   zFixDict.in_special_contextZ   s°   € ØŒ;ÐØ�5ØˆØŒKÔÐ*ØŒw�}Š}˜Tœ[Ô/°Ñ9Ô9ð +à�vŒ $Ð&Ð&Øð Kà˜v”Ô,µÐ;Ð;ð ˜v”Ô,µ
Ô0JÐJÐJØð 	Ø�5àŒw�}Š}˜Tœ[¨'Ñ2Ô2ÐN°w¸v´È$Ð7NÐNr!   N)Ú__name__Ú
__module__Ú__qualname__ÚBM_compatibleÚPATTERNr8   ÚP1r   Úcompile_patternr<   ÚP2r@   r+   r   r!   r   r   r   )   sw   € € € € € Ø€Mð€Gðð ð ð8 
?€BØ	 ˆÔ	  Ñ	$Ô	$€Bð
€Bð 
!ˆÔ	  Ñ	$Ô	$€BðOð Oð Oð Oð Or!   r   N)Ú__doc__r%   r   r   r   r	   r   r   r   r?   r>   ÚBaseFixr   r   r!   r   ú<module>rK      sÓ   ððð ð6 Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð ð Ô(¨F¨8Ñ3€ðAOð AOð AOð AOð AOˆjÔ ñ AOô AOð AOð AOð AOr!   