B A[s @sJdZddlmZmZddlmZddddd d d d gZGd ddejZdS)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 )FeatureFeatures) fixer_base) memoryviewz4power < 'memoryview' trailer < '(' any* ')' > any* >z2.7)numberszimport_from< 'from' 'numbers' 'import' any* > | import_name< 'import' ('numbers' dotted_as_names< any* 'numbers' any* >) >z2.6)abczyimport_name< 'import' ('abc' dotted_as_names< any* 'abc' any* >) > | import_from< 'from' 'abc' 'import' any* >z2.6)iozvimport_name< 'import' ('io' dotted_as_names< any* 'io' any* >) > | import_from< 'from' 'io' 'import' any* >z2.6)binz+power< 'bin' trailer< '(' any* ')' > any* >z2.6)Z formattingz trailer< '(' any* ')' > >z2.6)nonlocalzglobal_stmt< 'nonlocal' any* >z3.0)with_tracebackztrailer< '.' 'with_traceback' >z3.0csFeZdZdZeZeddeDZej Z fddZ ddZ Z S) FixFeatures cCsg|]\}}}t|||qS)r).0namepatternversionrrQ/opt/alt/python37/lib/python3.7/site-packages/libpasteurize/fixes/fix_features.py ;szFixFeatures.cs4tt||}y |d=Wntk r.YnX|S)Nnode)superr match Exception)selfrZto_ret) __class__rrr@s  zFixFeatures.matchcCs^xX|D]P}||jkrqq|j|}|jdkr4|j}n|j}|||d|j|qWdS)N3)reason)features_warnedfeaturesrZcannot_convertwarningZ message_textadd)rrresultsZ feature_nameZ curr_featureZfailrrr transformKs    zFixFeatures.transform) __name__ __module__ __qualname__Z run_ordersetrrFEATURESrZPATTERNrr# __classcell__rr)rrr 3s  r N) __doc__Z feature_baserrZlib2to3rr(ZBaseFixr rrrrs