U
    A`                     @   sV   d Z ddlmZ ddlmZmZ dddiiZi Zdd Zd	d
 Z	G dd dej
ZdS )z?Fix incompatible renames

Fixes:
  * sys.maxint -> sys.maxsize
   )
fixer_base)Name
attr_chainsysZmaxintmaxsizec                 C   s   dd tt|  d S )N(|))joinmaprepr)members r   //usr/lib/python3.8/lib2to3/fixes/fix_renames.py
alternates   s    r   c                  c   sZ   t t D ]H\} }t | D ]2\}}|t| |f< d| ||f V  d| |f V  q qd S )Nz
                  import_from< 'from' module_name=%r 'import'
                      ( attr_name=%r | import_as_name< attr_name=%r 'as' any >) >
                  z^
                  power< module_name=%r trailer< '.' attr_name=%r > any* >
                  )listMAPPINGitemsLOOKUP)modulereplaceZold_attrnew_attrr   r   r   build_pattern   s    r   c                       s8   e Zd ZdZde ZdZ fddZdd Z	  Z
S )
FixRenamesTr   Zprec                    s@   t t| j  |}|r<t fddt|dD r8dS |S dS )Nc                 3   s   | ]} |V  qd S )Nr   ).0objmatchr   r   	<genexpr>5   s     z#FixRenames.match.<locals>.<genexpr>parentF)superr   r   anyr   )selfnoderesults	__class__r   r   r   1   s    zFixRenames.matchc                 C   sD   | d}| d}|r@|r@t|j|jf }|t||jd d S )NZmodule_name	attr_name)prefix)getr   valuer   r   r(   )r"   r#   r$   Zmod_namer'   r   r   r   r   	transform>   s
    

zFixRenames.transform)__name__
__module____qualname__ZBM_compatibler
   r   ZPATTERNorderr   r+   __classcell__r   r   r%   r   r   *   s
   r   N)__doc__ r   Z
fixer_utilr   r   r   r   r   r   ZBaseFixr   r   r   r   r   <module>   s   	