← Back
Editing: remove_fstrings.cpython-311.pyc
� cR�aB � �R � d Z ddlZddlmZ ddlmZ G d� deej � � ZdS )z-Turns f-strings to format syntax with modulus� N)�Transformation)�PythranSyntaxErrorc � � e Zd ZdZd� ZdS )�RemoveFStringsaj Turns f-strings to format syntax with modulus >>> import gast as ast >>> from pythran import passmanager, backend >>> node = ast.parse("f'a = {1+1:4d}; b = {b:s};'") >>> pm = passmanager.PassManager("test") >>> _, node = pm.apply(RemoveFStrings, node) >>> print(pm.dump(backend.Python, node)) ('a = %4d; b = %s;' % ((1 + 1), b)) c � � t |j � � dk r2t |j d t j � � s |j d S t d� |j D � � � � s|S d}g }|j D ]�}t |t j � � r||j � dd� � z }�;t |t j � � rQ|dz }|j �t d|� � �||j j d j z }|� |j � � ��t �t j t j |d �� � t j � � t j |t j � � � � � � � � S )N� r c 3 �J K � | ]}t |t j � � V � �d S )N)� isinstance�ast�FormattedValue)�.0�values �I/usr/lib/python3/dist-packages/pythran/transformations/remove_fstrings.py� <genexpr>z1RemoveFStrings.visit_JoinedStr.<locals>.<genexpr> s@ � � � � � �6;�J�u�c�0�1�1� � � � � � � � �%z%%z0f-strings without format specifier not supported)r �kind)�elts�ctx)�left�op�right)�len�valuesr r r �any�Constantr �replace�format_specr �append�NotImplementedError�BinOp�Mod�Tuple�Load)�self�node�base_str�elementsr s r �visit_JoinedStrzRemoveFStrings.visit_JoinedStr s� � ��t�{���q� � ���K��N�C�.�* � * � � �;�q�>�!�� � �?C�{� � � � � � � �K������[� *� *�E��%���.�.� *��E�K�/�/��T�:�:�:����E�3�#5�6�6� *��C����$�,�,�J�E�� � � �E�-�4�Q�7�=�=�������,�,�,�,�)�)��y���H�4�8�8�8��w�y�y��)��s�x�z�z�:�:�:� � � � r N)�__name__� __module__�__qualname__�__doc__r* � r r r r s- � � � � � � � �! � ! � ! � ! � ! r r ) r. �gastr �pythran.passmanagerr �pythran.syntaxr �NodeTransformerr r/ r r �<module>r4 st �� 3� 3� � � � � .� .� .� .� .� .� -� -� -� -� -� -�- � - � - � - � - �^�S�%8� - � - � - � - � - r
Save File
Cancel