Your IP : 18.117.232.108
�
c��f � �d � d Z ddlmZ ddlmZmZmZmZmZm Z dZ
dZ G d� dej � � Z
dS ) 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 Zd ZdZde�de�de�de�d� Z� fd�Zd� Zd� Z d � Z
d
� Z� xZS )� 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 | � � � |� � }|rd|v r|d |d k r|S d S |S )N�sorted�id1�id2)�superr �match)�self�node�r� __class__s ��?/opt/alt/python311/lib64/python3.11/lib2to3/fixes/fix_idioms.pyr zFixIdioms.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 � transformzFixIdioms.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 zFixIdioms.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 zFixIdioms.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 �� � � � nt
d� � �|� � � |j }d |v r�|rJ|� d � � d
|d
j f} d � | � � |d
_ d S t � � }
|j � |
� � |� d � � d
|
_ d S d S )N�sort�next�list�exprr r. r% zshould not have reached here�
� )
�getr/ r r) r( r r �remove�
rpartition�joinr �parent�append_child)r r r � sort_stmt� next_stmt� list_call�simple_expr�new�btwn�prefix_lines�end_lines r r zFixIdioms.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��&=�&=� �!��#�#�#�
%�;�;��� �-�-�h�7�7�7� #'�/�/�$�"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 rK rJ �BaseFixr � r r �<module>rR s� ��� �<