3
‡Œðis
  ã            
   @   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Ú
memoryviewú4power < 'memoryview' trailer < '(' any* ')' > any* >ú2.7Únumbersú…import_from< 'from' 'numbers' 'import' any* > |
           import_name< 'import' ('numbers' dotted_as_names< any* 'numbers' any* >) >ú2.6Úabcúyimport_name< 'import' ('abc' dotted_as_names< any* 'abc' any* >) > |
           import_from< 'from' 'abc' 'import' any* >Úioúvimport_name< 'import' ('io' dotted_as_names< any* 'io' any* >) > |
           import_from< 'from' 'io' 'import' any* >Úbinú+power< 'bin' trailer< '(' any* ')' > any* >Ú
formattingú<power< any trailer< '.' 'format' > trailer< '(' any* ')' > >Únonlocalúglobal_stmt< 'nonlocal' any* >ú3.0Úwith_tracebackútrailer< '.' 'with_traceback' >c                   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   úB/tmp/pip-build-6m2fasei/future/libpasteurize/fixes/fix_features.pyú
<listcomp>;   s   zFixFeatures.<listcomp>c                s4   t t| ƒj|ƒ}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}|||jƒ d� | j j|ƒ qW d S )NÚ3)Úreason)Úfeatures_warnedÚfeaturesr   Zcannot_convertÚwarningZmessage_textÚadd)r&   r"   Ú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)r   r   r   )r	   r
   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )	Ú__doc__Zfeature_baser   r   Zlib2to3r   r4   ZBaseFixr   r   r   r   r    Ú<module>   s6                   