← Back
Editing: fix_filter.cpython-311.pyc
� ZQd� � �p � d Z ddlmZ ddlmZ ddlmZ ddlm Z m Z mZmZm Z G d� dej � � ZdS ) a� Fixer that changes filter(F, X) into list(filter(F, X)). We avoid the transformation if the filter() call is directly contained in iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:. NOTE: This is still not correct if the original code was depending on filter(F, X) to return a string if X is a string and a tuple if X is a tuple. That would require type inference, which we don't do. Let Python 2.6 figure it out. � )� fixer_base)�Node)�python_symbols)�Name�ArgList�ListComp�in_special_context�parenthesizec � � e Zd ZdZdZdZd� ZdS )� FixFilterTaV filter_lambda=power< 'filter' trailer< '(' arglist< lambdef< 'lambda' (fp=NAME | vfpdef< '(' fp=NAME ')'> ) ':' xp=any > ',' it=any > ')' > [extra_trailers=trailer*] > | power< 'filter' trailer< '(' arglist< none='None' ',' seq=any > ')' > [extra_trailers=trailer*] > | power< 'filter' args=trailer< '(' [any] ')' > [extra_trailers=trailer*] > zfuture_builtins.filterc �� � | � |� � rd S g }d|v r2|d D ])}|� |� � � � � �*d|v r�|� d� � � � � }|j t j k rd|_ t |� � }t |� d� � � � � |� d� � � � � |� d� � � � � |� � }t t j |g|z d�� � }�n d|v rrt t d � � t d � � |d � � � t d � � � � }t t j |g|z d�� � }n�t |� � rd S |d � � � }t t j t d� � |gd�� � }t t j t d � � t |g� � g|z � � }d|_ |j |_ |S )N�extra_trailers� filter_lambda�xp� �fp�it)�prefix�none�_f�seq�args�filter�list)�should_skip�append�clone�get�type�syms�testr r r r �powerr r r )�self�node�results�trailers�tr �newr s �//usr/lib/python3.11/lib2to3/fixes/fix_filter.py� transformzFixFilter.transform: s � ����D�!�!� ��F����w�&�&��-�.� +� +�������� � �*�*�*�*��g�%�%����T�"�"�(�(�*�*�B��w�$�)�#�#��� �!�"�%�%���7�;�;�t�,�,�2�2�4�4�"�;�;�t�,�,�2�2�4�4�"�;�;�t�,�,�2�2�4�4�b�:� :�C� �t�z�C�5�8�#3�B�?�?�?�C�C� �w� � ��4��:�:���:�:�"�5�>�/�/�1�1���:�:�'� '�C� �t�z�C�5�8�#3�B�?�?�?�C�C� "�$�'�'� ��t��6�?�(�(�*�*�D��t�z�D��N�N�D�#9�"�E�E�E�C��t�z�D��L�L�'�3�%�.�.�#A�H�#L�M�M�C��C�J��[�� �� � N)�__name__� __module__�__qualname__� BM_compatible�PATTERN�skip_onr* � r+ r) r r s6 � � � � � ��M��G�<