B
    	Q[s
                 @   sJ   d Z ddlmZmZ ddlmZ ddddd	d
ddgZG dd dejZdS )z
Warn about features that are not present in Python 2.5, giving a message that
points to the earliest version of Python 2.x (or 3.x, if none) that supports it
   )FeatureFeatures    )
fixer_base)
memoryviewz4power < 'memoryview' trailer < '(' any* ')' > any* >z2.7)Znumberszimport_from< 'from' 'numbers' 'import' any* > |
           import_name< 'import' ('numbers' dotted_as_names< any* 'numbers' any* >) >z2.6)abczyimport_name< 'import' ('abc' dotted_as_names< any* 'abc' any* >) > |
           import_from< 'from' 'abc' 'import' any* >z2.6)iozvimport_name< 'import' ('io' dotted_as_names< any* 'io' any* >) > |
           import_from< 'from' 'io' 'import' any* >z2.6)binz+power< 'bin' trailer< '(' any* ')' > any* >z2.6)Z
formattingz<power< any trailer< '.' 'format' > trailer< '(' any* ')' > >z2.6)nonlocalzglobal_stmt< 'nonlocal' any* >z3.0)with_tracebackztrailer< '.' 'with_traceback' >z3.0c                   sF   e Zd ZdZe Zedd eD Zej	Z	 fddZ
dd Z  ZS )FixFeatures	   c             C   s   g | ]\}}}t |||qS  )r   ).0namepatternversionr   r   ?lib/python3.7/site-packages/libpasteurize/fixes/fix_features.py
<listcomp>;   s   zFixFeatures.<listcomp>c                s4   t t| |}y
|d= W n tk
r.   Y nX |S )Nnode)superr   match	Exception)selfr   Zto_ret)	__class__r   r   r   @   s    
zFixFeatures.matchc             C   s^   xX|D ]P}|| j krqq| j| }|jdkr4| j}n| j}||| d | j | qW d S )N3)reason)features_warnedfeaturesr   Zcannot_convertZwarningZmessage_textadd)r   r   ZresultsZfeature_nameZcurr_featureZfailr   r   r   	transformK   s    



zFixFeatures.transform)__name__
__module____qualname__Z	run_ordersetr   r   FEATURESr   ZPATTERNr   r    __classcell__r   r   )r   r   r   3   s   
r   N)	__doc__Zfeature_baser   r   Zlib2to3r   r%   ZBaseFixr   r   r   r   r   <module>   s   