§
    ZQd  ã                   ód   — d Z ddlmZ ddlmZmZmZmZmZm	Z	 dZ
dZ G d„ dej        ¦  «        ZdS )	aÜ  Adjust some old Python 2 idioms to their modern counterparts.

* Change some type comparisons to isinstance() calls:
    type(x) == T -> isinstance(x, T)
    type(x) is T -> isinstance(x, T)
    type(x) != T -> not isinstance(x, T)
    type(x) is not T -> not isinstance(x, T)

* Change "while 1:" into "while True:".

* Change both

    v = list(EXPR)
    v.sort()
    foo(v)

and the more general

    v = EXPR
    v.sort()
    foo(v)

into

    v = sorted(EXPR)
    foo(v)
é   )Ú
fixer_base)ÚCallÚCommaÚNameÚNodeÚ	BlankLineÚsymsz0(n='!=' | '==' | 'is' | n=comp_op< 'is' 'not' >)z(power< 'type' trailer< '(' x=any ')' > >c            	       óX   ‡ — e Zd ZdZde›de›de›de›d�	Zˆ fd„Zd„ Zd„ Z	d	„ Z
d
„ Zˆ xZS )Ú	FixIdiomsTz 
        isinstance=comparison< ú z8 T=any >
        |
        isinstance=comparison< T=any aX   >
        |
        while_stmt< 'while' while='1' ':' any+ >
        |
        sorted=any<
            any*
            simple_stmt<
              expr_stmt< id1=any '='
                         power< list='list' trailer< '(' (not arglist<any+>) any ')' > >
              >
              '\n'
            >
            sort=
            simple_stmt<
              power< id2=any
                     trailer< '.' 'sort' > trailer< '(' ')' >
              >
              '\n'
            >
            next=any*
        >
        |
        sorted=any<
            any*
            simple_stmt< expr_stmt< id1=any '=' expr=any > '\n' >
            sort=
            simple_stmt<
              power< id2=any
                     trailer< '.' 'sort' > trailer< '(' ')' >
              >
              '\n'
            >
            next=any*
        >
    c                 ó�   •— t          t          | ¦  «                             |¦  «        }|rd|v r|d         |d         k    r|S d S |S )NÚsortedÚid1Úid2)Úsuperr   Úmatch)ÚselfÚnodeÚrÚ	__class__s      €ú//usr/lib/python3.11/lib2to3/fixes/fix_idioms.pyr   zFixIdioms.matchO   sT   ø€ Ý•)˜TÑ"Ô"×(Ò(¨Ñ.Ô.ˆð ð 	�˜Q��Ø�Œx˜1˜Uœ8Ò#Ð#Ø�Ø�4Øˆó    c                 ó¼   — d|v r|                       ||¦  «        S d|v r|                      ||¦  «        S d|v r|                      ||¦  «        S t          d¦  «        ‚)NÚ
isinstanceÚwhiler   zInvalid match)Útransform_isinstanceÚtransform_whileÚtransform_sortÚRuntimeError)r   r   Úresultss      r   Ú	transformzFixIdioms.transformZ   ss   € Ø˜7Ð"Ð"Ø×,Ò,¨T°7Ñ;Ô;Ð;Ø˜ÐÐØ×'Ò'¨¨gÑ6Ô6Ð6Ø˜Ð Ð Ø×&Ò& t¨WÑ5Ô5Ð5å˜Ñ/Ô/Ð/r   c                 ób  — |d                               ¦   «         }|d                               ¦   «         }d|_        d|_        t          t          d¦  «        |t	          ¦   «         |g¦  «        }d|v r0d|_        t          t          j        t          d¦  «        |g¦  «        }|j        |_        |S )NÚxÚTÚ r   r   ÚnÚnot)ÚcloneÚprefixr   r   r   r   r	   Únot_test)r   r   r    r#   r$   Útests         r   r   zFixIdioms.transform_isinstanced   s•   € Ø�CŒL×ÒÑ Ô ˆØ�CŒL×ÒÑ Ô ˆØˆŒØˆŒÝ•D˜Ñ&Ô&¨­E©G¬G°Q¨Ñ8Ô8ˆØ�'ˆ>ˆ>ØˆDŒKÝ�œ­¨U©¬°TÐ':Ñ;Ô;ˆDØ”kˆŒØˆr   c                 óh   — |d         }|                      t          d|j        ¬¦  «        ¦  «         d S )Nr   ÚTrue©r)   )Úreplacer   r)   )r   r   r    Úones       r   r   zFixIdioms.transform_whilep   s3   € Ø�gÔˆØ�Š•D˜¨¬
Ð3Ñ3Ô3Ñ4Ô4Ð4Ð4Ð4r   c                 ó@  — |d         }|d         }|                      d¦  «        }|                      d¦  «        }|r*|                     t          d|j        ¬¦  «        ¦  «         ne|rT|                     ¦   «         }d|_        |                     t          t          d¦  «        |g|j        ¬¦  «        ¦  «         nt          d¦  «        ‚|                     ¦   «          |j        }d	|v r³|rJ|                     d	¦  «        d
         |d
         j        f}	d	 	                    |	¦  «        |d
         _        d S |j
        sJ ‚|j        �J ‚t          ¦   «         }
|j
                             |
¦  «         |j        |
u sJ ‚|                     d	¦  «        d
         |
_        d S d S )NÚsortÚnextÚlistÚexprr   r.   r%   zshould not have reached hereú
é    )Úgetr/   r   r)   r(   r   r   ÚremoveÚ
rpartitionÚjoinÚparentÚnext_siblingr   Úappend_child)r   r   r    Ú	sort_stmtÚ	next_stmtÚ	list_callÚsimple_exprÚnewÚbtwnÚprefix_linesÚend_lines              r   r   zFixIdioms.transform_sortt   sÃ  € Ø˜F”Oˆ	Ø˜F”Oˆ	Ø—K’K Ñ'Ô'ˆ	Ø—k’k &Ñ)Ô)ˆàð 	?Ø×Ò�d 8°IÔ4DÐEÑEÔEÑFÔFÐFÐFØð 	?Ø×#Ò#Ñ%Ô%ˆCØˆCŒJØ×Ò¥¥T¨(¡^¤^°c°UØ,7Ô,>ð!@ñ !@ô !@ñ Aô Að Að Aõ Ð=Ñ>Ô>Ð>Ø×ÒÑÔÐàÔˆð �4ˆ<ˆ<Øð ;ð !%§¢°Ñ 5Ô 5°aÔ 8¸)ÀA¼,Ô:MÐN�Ø&*§i¢i°Ñ&=Ô&=�	˜!”Ô#Ð#Ð#à Ô'Ð'Ð'Ð'Ø Ô-Ð5Ð5Ð5å$™;œ;�ØÔ ×-Ò-¨hÑ7Ô7Ð7Ø Ô-°Ð9Ð9Ð9Ð9ð #'§/¢/°$Ñ"7Ô"7¸Ô":�”��ð! ˆ<r   )Ú__name__Ú
__module__Ú__qualname__ÚexplicitÚTYPEÚCMPÚPATTERNr   r!   r   r   r   Ú__classcell__)r   s   @r   r   r   %   s    ø€ € € € € Ø€H€HðN ˆ4ˆ4����c�c�c˜4˜4˜4ðK%!€GðN	ð 	ð 	ð 	ð 	ð0ð 0ð 0ð
ð 
ð 
ð5ð 5ð 5ð$;ð $;ð $;ð $;ð $;ð $;ð $;r   r   N)Ú__doc__r%   r   Ú
fixer_utilr   r   r   r   r   r	   rL   rK   ÚBaseFixr   © r   r   ú<module>rS      sž   ððð ð< Ð Ð Ð Ð Ð Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aà8€Ø1€ðs;ð s;ð s;ð s;ð s;�
Ô"ñ s;ô s;ð s;ð s;ð s;r   