← Back
Editing: potential_iterator.cpython-311.pyc
� cR�af � �R � d Z ddlmZ ddlmZ ddlmZ ddlZ G d� de� � Z dS )z? PotentialIterator finds if it is possible to use an iterator. � )�Aliases)�ArgumentReadOnce)�NodeAnalysisNc �* � e Zd ZdZd� Zd� Zd� Zd� ZdS )�PotentialIteratorz<Find whether an expression can be replaced with an iterator.c �l � t � � | _ t j | t t � � d S �N)�set�resultr �__init__r r )�selfs �E/usr/lib/python3/dist-packages/pythran/analyses/potential_iterator.pyr zPotentialIterator.__init__ s) � ��e�e�����d�G�-=�>�>�>�>�>� c �n � | j � |j � � | � |� � d S r )r �add�iter� generic_visit�r �nodes r � visit_ForzPotentialIterator.visit_For s2 � ������ �"�"�"����4� � � � � r c �� � t |j d t j t j f� � r| j � |j � � | � |� � d S )Nr ) � isinstance�ops�ast�In�NotInr �update�comparatorsr r s r � visit_ComparezPotentialIterator.visit_Compare sV � ��d�h�q�k�C�F�C�I�#6�7�7� 1��K���t�/�0�0�0����4� � � � � r c � � ��� t |j � � D ]P\ �}� fd��t ��fd�� j |j D � � � � r� j � |� � �Q� � |� � d S )Nc �D �� | �j v o�j | | dk S )N� )�argument_read_once)�f�ir s �r � isReadOncez0PotentialIterator.visit_Call.<locals>.isReadOnce s- �� ��T�4�4� ;��/��2�1�5��:�<r c 3 �0 �K � | ]} �|�� � V � �d S r � )�.0�aliasr% r&