OwlCyberSecurity - MANAGER
Edit File: btm_matcher.cpython-312.opt-2.pyc
� ������h������������������������t����� �d�Z�ddlZddlZddlmZ�ddlmZ�ddlmZ��G�d��de �������Z �G�d ��d e �������Zi�ad��Z y)z+George Boutsioukis <gboutsioukis@gmail.com>�����N)�defaultdict����)�pytree)�reduce_treec��������������������6�����e�Zd�Z ��ej��������������������������Zd��Zy)�BMNodec������������������j�����i�|�_���������g�|�_��������t��������t��������j�������������������������|�_��������d|�_��������y�)N��)�transition_table�fixers�nextr����count�id�content��selfs��� �:/opt/alt/python312/lib64/python3.12/lib2to3/btm_matcher.py�__init__zBMNode.__init__���s(������ "�������v�|�|�$����������N)�__name__� __module__�__qualname__� itertoolsr���r�����r���r���r���r������s������I��I�O�O��E�r���r���c��������������������,�����e�Zd�Z �d��Zd��Zd��Zd��Zd��Zy)� BottomMatcherc�����������������������t����������������|�_��������t����������������|�_��������|�j������������������g|�_��������g�|�_��������t ��������j������������������d�������|�_��������y�)N�RefactoringTool) �set�matchr����root�nodesr����logging� getLogger�loggerr���s��� r���r���zBottomMatcher.__init__���s;�������U�� ��H�� ��i�i�[�� �����'�'�(9�:��r���c���������������������� �|�j�������������������j������������������|��������t��������|j�������������������������}|j ��������������������������}|�j������������������||�j��������������������������}|D�]��}|j�������������������j������������������|����������y�)N��start)r����appendr����pattern_tree�get_linear_subpattern�addr!���)r����fixer�tree�linear�match_nodes� match_nodes��� r���� add_fixerzBottomMatcher.add_fixer%���sm������ �� �����5�!��5�-�-�.���+�+�-���h�h�v�T�Y�Y�h�7��%�J����$�$�U�+��&r���c����������� ����������� �|s|gS�t��������|d���t���������������rLg�}|d���D�]@��}|�j������������������||��������}|D�]&��}|j������������������|�j������������������|dd��|����������������(��B�|S�|d���|j������������������vrt����������������}||j������������������|d���<���n|j������������������|d������}|dd��r|�j������������������|dd��|��������}|S�|g}|S�)Nr���r'���r���)� isinstance�tupler,����extendr���r���)r����patternr(���r0����alternative� end_nodes�end� next_nodes��� r���r,���zBottomMatcher.add1���s�������?���7�N��g�a�j�%�(���K�&�q�z���!�H�H�[��H�>� �$�C��&�&�t�x�x�����S�'A�B��%� � *������q�z��!7�!7�7�"�H� �5>��&�&�w�q�z�2��"�2�2�7�1�:�>� ��q�r�{� �H�H�W�Q�R�[� �H�B� �����'�K� ��r���c����������������������� �|�j�������������������}t��������t���������������}|D��]?��}|}|s� d|_��������|j������������������D�]5��}t��������|t��������j�������������������������s�|j������������������dk(��s�.d|_���������n�|j������������������dk(��r |j������������������}n|j������������������}||j������������������v�r5|j������������������|���}|j������������������D�]��}||���j������������������|����������nq|�j�������������������}|j�������������������|j������������������j������������������r��||j������������������v�r4|j������������������|���}|j������������������D�]��}||���j������������������|����������|j������������������}|r��7��B�|S�)NT�;Fr���)r!���r����list�was_checked�childrenr4���r����Leaf�value�typer���r���r)����parent) r����leaves�current_ac_node�results�leaf�current_ast_node�child� node_tokenr-���s ��� r����runzBottomMatcher.runS���s\����� ���)�)���d�#���D�#��"�/3� �,�-�6�6�E�!�%����5�%�+�+��:L�7<�(�4�� �7� �$�(�(�A�-�!1�!7�!7�J�!1�!6�!6�J���!A�!A�A�&5�&F�&F�z�&R�O�!0�!7�!7�����-�-�.>�?��"8��'+�i�i�O�(�/�/�;�,�3�3�?�?���"�_�%E�%E�E�*9�*J�*J�:�*V��%4�%;�%;�E�#�E�N�1�1�2B�C��&<��$4�#:�#:� �C�#���H��r���c������������������b������ �t��������d���������fd����|�j��������������������������t��������d��������y�)Nz digraph g{c����������� �������*�����|�j�������������������j��������������������������D�]u��}|�j�������������������|���}t��������d|�j������������������|j������������������t ��������|�������t��������|j�������������������������fz����������|dk(��rt��������|j����������������������������|���������w�y�)Nz%d -> %d [label=%s] //%sr���)r����keys�printr���� type_repr�strr���r���)�node�subnode_key�subnode� print_nodes��� �r���rV���z*BottomMatcher.print_ac.<locals>.print_node����s|�������#�4�4�9�9�;���/�/��<���0��w�w�� � �I�k�,B�C����DW�X�Y��Z��!�#��'�/�/�*��7�#� � <r����})rP���r!���)r���rV���s��� @r����print_aczBottomMatcher.print_ac����s(�������F� �l�� $�� �4�9�9�� �c� r���N)r���r���r���r���r2���r,���rL���rX���r���r���r���r���r������s"������+�;� ,� �D6�pr���r���c������������������������t���������sDddlm}�|j������������������j ��������������������������D�]!��\��}}t��������|�������t��������k(��s�|t���������|<����#�t���������j������������������|�|��������S�)Nr���)�python_symbols)�_type_reprs�pygramrZ����__dict__�itemsrC����int� setdefault)�type_numrZ����name�vals��� r���rQ���rQ�������sO�������*��(�0�0�6�6�8�I�D�#��C�y�C��D��S�!1��9��!�!�(�H�5�5r���)� __author__r#���r����collectionsr���r ���r���� btm_utilsr����objectr���r���r[���rQ���r���r���r����<module>rh������sH�����G��;� ������#����"��V���}�F��}�@���6r���