← Back
Editing: square.cpython-311.pyc
� cR�a� � �j � d Z ddlmZ ddlmZmZ ddlmZ ddlm Z ddl ZddlZ G d� de� � Z dS ) z) Replaces **2 by a call to numpy.square. � )�Transformation)� ASTMatcher�AST_any)�mangle)�isnumNc � � e Zd ZdZ ej e� � ej � � ej dd� � � � Z ej ej ej e d� � ej � � dd� � d ej � � � � e� � ej dd� � gg � � Zd� Zd� Zd� Zd � Zd � Zd� ZdS )�Squarea� Replaces **2 by a call to numpy.square. >>> import gast as ast >>> from pythran import passmanager, backend >>> node = ast.parse('a**2') >>> pm = passmanager.PassManager("test") >>> _, node = pm.apply(Square, node) >>> print(pm.dump(backend.Python, node)) import numpy as __pythran_import_numpy __pythran_import_numpy.square(a) >>> node = ast.parse('__pythran_import_numpy.power(a,2)') >>> pm = passmanager.PassManager("test") >>> _, node = pm.apply(Square, node) >>> print(pm.dump(backend.Python, node)) import numpy as __pythran_import_numpy __pythran_import_numpy.square(a) � N�numpy�powerc �. � t j | � � d S )N)r �__init__)�selfs �>/usr/lib/python3/dist-packages/pythran/optimizations/square.pyr zSquare.__init__) s � ����%�%�%�%�%� c � � dx| _ | _ t j t d� � t j � � d d � � }t j t j |dt j � � � � |gg � � S )NTr �square)�update�need_import�ast�Namer �Load�Call� Attribute)r �value�module_names r �replacezSquare.replace, sc � �)-�-���d�&��h�v�g����� � �D�$�G�G���x�� �k�8�S�X�Z�Z�H�H����%� %� %r c �� � d| _ | � |� � | j rTt j dt d� � �� � }t j |g�� � }|j � d|� � |S )NFr )�name�asname)�namesr )r � generic_visitr �aliasr �Import�body�insert)r �node�import_alias�importIts r �visit_ModulezSquare.visit_Module2 st � � ������4� � � ��� *��9�'�&��/�/�J�J�J�L��z���7�7�7�H��I���Q��)�)�)��r c �$ � |dk rt j dd � � S |dk r|S | � |� � }| � ||dz � � }|dz r9t j |t j � � t j |� � � � S |S )Nr � )r �Constantr � expand_pow�BinOp�Mult�copy�deepcopy)r r'