U
    A`&                     @   s:   d Z ddlmZ ddlmZmZmZ G dd dejZdS )zA Fixer for imports of itertools.(imap|ifilter|izip|ifilterfalse)     )
fixer_base)	BlankLinesymstokenc                   @   s"   e Zd ZdZde  Zdd ZdS )FixItertoolsImportsTzT
              import_from< 'from' 'itertools' 'import' imports=any >
              c                 C   sp  |d }|j tjks|js"|g}n|j}|d d d D ]}|j tjkrR|j}|}n,|j tjkrd d S |j tjkstt|jd }|j}|dkrd |_|	  q6|dkr6|
  |d dkrdnd	|_q6|jd d  p|g}d
}	|D ]*}|	r|j tjkr|	  q|	d
N }	q|r4|d j tjkr4| 	  q|jsJt|dd rV|jd krl|j}
t }|
|_|S d S )Nimports   r   )ZimapZizipZifilter)ZifilterfalseZizip_longest   ffilterfalsezip_longestTvalue)typer   Zimport_as_namechildrenr   NAMEr   STARAssertionErrorremoveZchangedCOMMApopgetattrparentprefixr   )selfZnodeZresultsr   r   ZchildmemberZ	name_nodemember_nameZremove_commap r   9/usr/lib/python3.8/lib2to3/fixes/fix_itertools_imports.py	transform   sH    



zFixItertoolsImports.transformN)__name__
__module____qualname__ZBM_compatiblelocalsZPATTERNr    r   r   r   r   r      s
   r   N)	__doc__Zlib2to3r   Zlib2to3.fixer_utilr   r   r   ZBaseFixr   r   r   r   r   <module>   s   