403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.217.25
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1074145052 ( 1074145052)
PHP Version : 8.3.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/pythran/transformations/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/pythran/transformations/__pycache__/remove_comprehension.cpython-311.pyc
�

cR�aN��^�dZddlmZddlmZddlmZddlZddl	m
Z
Gd�de��ZdS)zC RemoveComprehension turns list comprehension into function calls. �)�ImportedIds)�TransformationN��reducec�L�eZdZdZd�Zed���Zd�Zd�Zd�Z	d�Z
d�Zd	S)
�RemoveComprehensiona
    Turns all list comprehension from a node into new function calls.

    >>> import gast as ast
    >>> from pythran import passmanager, backend
    >>> node = ast.parse("[x*x for x in (1,2,3)]")
    >>> pm = passmanager.PassManager("test")
    >>> _, node = pm.apply(RemoveComprehension, node)
    >>> print(pm.dump(backend.Python, node))
    list_comprehension0()
    def list_comprehension0():
        __target = builtins.list()
        for x in (1, 2, 3):
            builtins.list.append(__target, (x * x))
        return __target
    c�<�d|_tj|��dS)Nr)�countr�__init__)�selfs �N/usr/lib/python3/dist-packages/pythran/transformations/remove_comprehension.pyrzRemoveComprehension.__init__s ����
����%�%�%�%�%�c�l�d�}tj|j|j|||j��ggd��S)a�
        Create a ast.For node from a comprehension and another node.

        g is an ast.comprehension.
        x is the code that have to be executed.

        Examples
        --------
        >> [i for i in range(2)]

        Becomes

        >> for i in range(2):
        >>    ... x code with if clauses ...

        It is a reducer as it can be call recursively for mutli generator.

        Ex : >> [i, j for i in range(2) for j in range(4)]
        c�&�td�||��S)a�
            Wrap comprehension content in all possibles if clauses.

            Examples
            --------
            >> [i for i in range(2) if i < 3 if 0 < i]

            Becomes

            >> for i in range(2):
            >>    if i < 3:
            >>        if 0 < i:
            >>            ... the code from `node` ...

            Note the nested ifs clauses.
            c�0�tj||gg��S�N)�ast�If)�n�if_s  r
�<lambda>zGRemoveComprehension.nest_reducer.<locals>.wrap_in_ifs.<locals>.<lambda>Hs�����a�S�"�)=�)=�rr)�node�ifss  r
�wrap_in_ifsz5RemoveComprehension.nest_reducer.<locals>.wrap_in_ifs7s��"�=�=�s�D�I�I�IrN)r�For�target�iterr)�x�grs   r
�nest_reducerz RemoveComprehension.nest_reducer"sC��*	J�	J�	J�$�w�q�x���+�+�a���*?�*?�)@�"�d�K�K�Krc��d|_|�|j��|_d�||j��}|xjdz
c_|�t|��}d|_d}t|j	t|j��tj
tjtd�|dd�tj|dtj��dd����tj|tj��dd��|jgg������}t#j|t#j|����tjtj|tj��dd��gtjtjtjdtj��dd��|tj����gg��d��}tjtj|tj��dd����}	d�|D��}
tj|tj|
gdggdg��|||	ggdd��}t#j|t#j����|jjj�|��tjtj|tj��dd��d	�|
D��g��S)
NTz{0}_comprehension{1}�r�__targetc�P�tj||tj����Sr)r�	Attribute�Load)r�ys  r
rz3RemoveComprehension.visit_AnyComp.<locals>.<lambda>Xs!��#�-��1�@C��
�
�3L�3L�r�builtinsc�^�g|]*}tj|tj��dd����+Sr�r�Name�Param��.0�args  r
�
<listcomp>z5RemoveComprehension.visit_AnyComp.<locals>.<listcomp>p�.��H�H�H�C���#�s�y�{�{�D�$�7�7�H�H�Hrc�h�g|]/}tj|jtj��dd����0Sr�rr+�idr&r-s  r
r0z5RemoveComprehension.visit_AnyComp.<locals>.<listcomp>y�0��G�G�G�#�S�X�c�f�c�h�j�j�$��
5�
5�G�G�Gr)�update�visit�elt�formatr
�gatherr�
count_iterrr �reversed�
generatorsr�Expr�Callr+r&�metadata�add�
Comprehension�Assign�Storer%�Return�FunctionDef�	arguments�Local�ctx�module�body�append)rr�	comp_type�path�name�args�stargetrK�init�result�sargs�fds            r
�
visit_AnyCompz!RemoveComprehension.visit_AnyCompKs�������:�:�d�h�'�'���%�,�,�Y��
�C�C���
�
�a��
�
��{�{�;��-�-��������d�'��t��/�/��h��(�$�&L�&L�%)�!�"�"�X�%(�X�d�1�g�s�x�z�z�.2�D�&:�&:�;�;�
 #�x������T�4�H�H�#�x�)� �	 �	 ������ 	��T�8�1�'�:�:�;�;�;��z�
�X�g�s�y�{�{�D�$�
7�
7�8��H��
��H�Z�����T�4�@�@���H�J�J���
�B�

�
�
�	�	����C�H�W�c�h�j�j�$��E�E�F�F��H�H�4�H�H�H��
�_�T� �]�5�"�d�B��D�"�M�M�"�D�&�1���t�-�-��	��R���)�)�*�*�*�����#�#�B�'�'�'��x��H�T�3�8�:�:�t�T�2�2�G�G��G�G�G����	rc�4�|�|dddd��S)N�listr(rL�rV�rrs  r
�visit_ListCompz"RemoveComprehension.visit_ListComp}s(���!�!�$��",�f�h�@�@�	@rc�4�|�|dddd��S)N�setr(rArYrZs  r
�
visit_SetCompz!RemoveComprehension.visit_SetComp�s���!�!�$��z�5�%�H�H�Hrc���tjtj|j|jgtj����gtj����|_|�|ddd��S)N�dict�__dispatch__r6)r�List�Tuple�key�valuer&r8rVrZs  r
�visit_DictCompz"RemoveComprehension.visit_DictComp�s]���8�
�Y���$�*�-�s�x�z�z�
:�
:�;��H�J�J������!�!�$����I�I�Irc�$�d|_|�|j��|_d�|j��}|xjdz
c_|�t|��}d|_t|j	t|j��tj
tj|j������}d�|D��}tj|tj|gdggdg��|ggdd��}t#j|t#j����|jjj�|��tjtj|tj��dd��d�|D��g��S)NTzgenerator_expression{0}r"rc�^�g|]*}tj|tj��dd����+Srr*r-s  r
r0z:RemoveComprehension.visit_GeneratorExp.<locals>.<listcomp>�r1rc�h�g|]/}tj|jtj��dd����0Srr3r-s  r
r0z:RemoveComprehension.visit_GeneratorExp.<locals>.<listcomp>�r5r)r6r7r8r9r
r:rr;rr r<r=rr>�YieldrFrGr@rArHrIrJrKrLr?r+r&)rrrOrPrKrTrUs       r
�visit_GeneratorExpz&RemoveComprehension.visit_GeneratorExp�s[������:�:�d�h�'�'���(�/�/��
�;�;���
�
�a��
�
��{�{�;��-�-������d�'��t��/�/��h�s�y���2�2�3�3����
I�H�4�H�H�H��
�_�T� �]�5�"�d�B��D�"�M�M�"�V�R��t�5�5��	��R���)�)�*�*�*�����#�#�B�'�'�'��x��H�T�3�8�:�:�t�T�2�2�G�G��G�G�G����	rN)�__name__�
__module__�__qualname__�__doc__r�staticmethodr rVr[r^rfrk�rr
rrs���������"&�&�&��&L�&L��\�&L�P0�0�0�d@�@�@�I�I�I�J�J�J�����rr)ro�pythran.analysesr�pythran.passmanagerr�pythran.metadatar@�gastr�	functoolsrrrqrr
�<module>rws���I�I�(�(�(�(�(�(�.�.�.�.�.�.�#�#�#�#�#�#�����������X�X�X�X�X�.�X�X�X�X�Xr

Youez - 2016 - github.com/yon3zu
LinuXploit