� c��j�(��� ddlZddlZddlmZddlmZgd�ZiZdZgd�Z d�Z dd�Z d �Z d �Z Gd �d �Zdd �Zee fd�Zd�Zd�Zedk(re�yy)�N)� filterfalse)� GenericAlias)� clear_cache�cmp�dircmp�cmpfiles�DEFAULT_IGNORESi )�RCS�CVS�tagsz.gitz.hgz.bzr�_darcs� __pycache__c�.� tj�y�N)�_cache�clear��� /usr/lib64/python3.12/filecmp.pyrrs��"� �L�L�Nrc�� ttj|��}ttj|��}|dtjk7s|dtjk7ry|r||k(ry|d|dk7rytj ||||f�}|�5t ||�}tt�dkDr t�|t||||f<|S)NrFT��d) �_sig�os�stat�S_IFREGr�get�_do_cmp�lenr)�f1�f2�shallow�s1�s2�outcomes rrrs����, �b�g�g�b�k� �B� �b�g�g�b�k� �B� �!�u�� � ���1����� 5���2��8�� �!�u��1��~���j�j�"�b�"�b�)�*�G����"�b�/�� �v�;�� � �M�!(��r�2�r�2�~�� �Nrc�n�tj|j�|j|jfSr)r�S_IFMT�st_mode�st_size�st_mtime)�sts rrrFs*�� �K�K�� � � #� �J�J� �K�K� �rc�"�t}t|d�5}t|d�5} |j|�}|j|�}||k7r ddd�ddd�y|s ddd�ddd�y�N#1swYnxYwddd�y#1swYyxYw)N�rbTF)�BUFSIZE�open�read)r r!�bufsize�fp1�fp2�b1�b2s rrrKsq���G� �b�$��3��R���#�����'�"�B����'�"�B��R�x�� !/��� ��!/����!/������s4� B�*A0� B�A0�B�/A0�0A9 �5B�Bc��eZdZ dd�Zd�Zd�Zd�Zd�Zd�Zd�Z d �Z d �Z d �Z e eeeeeeeeeeee� � Zd �Zee�Zy)rNc��||_||_|�&tjtjg|_n||_|� t |_y||_yr)�left�rightr�curdir�pardir�hider �ignore)�self�a�br=r<s r�__init__zdircmp.__init__|sC���� ��� � �<����B�I�I�.�D�I��D�I� �>�)�D�K� �D�Krc��ttj|j�|j|j z�|_ttj|j�|j|j z�|_|j j�|jj�yr) �_filterr�listdirr8r<r=� left_listr9� right_list�sort�r>s r�phase0z dircmp.phase0�sx�� ����D�I�I�!6�!%���4�;�;�!6�8���!�"�*�*�T�Z�Z�"8�"&�)�)�D�K�K�"7�9��� ������ �����rc ��ttttjj |j �|j ��}ttttjj |j�|j��}tt|jt|j|���|_ tt|jt|j|���|_tt|jt|j|���|_yr)�dict�zip�mapr�path�normcaserErF�list� __getitem__�filter� __contains__�commonr� left_only� right_only)r>r?r@s r�phase1z dircmp.phase1�s��� ��S����)�)�4�>�>�:�D�N�N�K� L�� ��S����)�)�4�?�?�;�T�_�_�M� N���3�q�}�}�f�Q�^�^�Q�.G�H�I�� ��c�!�-�-��Q�^�^�Q�1O�P�Q����s�1�=�=�+�a�n�n�a�2P�Q�R��rc��g|_g|_g|_|jD�]�}tj j |j|�}tj j |j|�}d} t j|�} t j|�}|r�tjj�}tjj�}||k7r|jj|���tj|�r|jj|���tj |�r|jj|���K|jj|���h|jj|����y#ttf$rd}Y��+wxYw#ttf$rd}Y��-wxYw)NTF)� common_dirs� common_files� common_funnyrTrrN�joinr8r9r�OSError� ValueErrorr'r(�append�S_ISDIR�S_ISREG) r>�x�a_path�b_path�ok�a_stat�b_stat�a_type�b_types r�phase2z dircmp.phase2�se��������������A��W�W�\�\�$�)�)�Q�/�F��W�W�\�\�$�*�*�a�0�F��B� �������  ������� ����V�^�^�4�����V�^�^�4���V�#��%�%�,�,�Q�/��\�\�&�)��$�$�+�+�A�.��\�\�&�)��%�%�,�,�Q�/��%�%�,�,�Q�/��!�!�(�(��+�=���Z�(� ���  ���Z�(� ��� �s$�=F)�G�)F>�=F>�G�Gc��t|j|j|j�}|\|_|_|_yr)rr8r9rZ� same_files� diff_files� funny_files)r>�xxs r�phase3z dircmp.phase3�s1�� �d�i�i����T�->�->� ?��=?�:�����$�*:rc�F�i|_|jD]�}tjj |j |�}tjj |j |�}|j|||j|j�|j|<��yr) �subdirsrYrrNr\r8r9� __class__r=r<)r>rb�a_x�b_xs r�phase4z dircmp.phase4�so�� �� ��!�!�A��'�'�,�,�t�y�y�!�,�C��'�'�,�,�t�z�z�1�-�C�#�~�~�c�3�� � �T�Y�Y�O�D�L�L��O�"rc��|j�|jj�D]}|j��yr)rvrr�values�phase4_closure�r>�sds rryzdircmp.phase4_closure�s.�� � � � ��,�,�%�%�'�B� � � � �(rc���td|j|j�|jr<|jj �td|jd|j�|j r<|j j �td|jd|j �|j r0|j j �td|j �|jr0|jj �td|j�|jr0|jj �td|j�|jr0|jj �td|j�|jr1|jj �td|j�yy) N�diffzOnly in�:zIdentical files :zDiffering files :zTrouble with common files :zCommon subdirectories :zCommon funny cases :) �printr8r9rUrGrVrlrmrnrYr[rHs r�reportz dircmp.report�sE�� �f�d�i�i����,� �>�>� �N�N� � � !� �)�T�Y�Y��T�^�^� <� �?�?� �O�O� � � "� �)�T�Z�Z��d�o�o� >� �?�?� �O�O� � � "� �%�t��� 7� �?�?� �O�O� � � "� �%�t��� 7� � � � � � � !� !� #� �/��1A�1A� B� � � � � � � !� !� #� �+�T�-=�-=� >� � � � � � � "� "� $� �(�$�*;�*;� <� rc��|j�|jj�D]}t�|j��yr)r�rrrxrrzs r�report_partial_closurezdircmp.report_partial_closure�s0�� � � � ��,�,�%�%�'�B� �G� �I�I�K�(rc��|j�|jj�D]}t�|j ��yr)r�rrrxr�report_full_closurerzs rr�zdircmp.report_full_closure�s3�� � � � ��,�,�%�%�'�B� �G� � "� "� $�(r) rrrlrmrnrYrZr[rTrUrVrErFc�v�||jvr t|��|j||�t||�Sr)� methodmap�AttributeError�getattr)r>�attrs r� __getattr__zdircmp.__getattr__�s9�� �t�~�~� %� ��&� &�����t��T�"��t�T�"�"r)NN)�__name__� __module__� __qualname__rArIrWrjrprvryr�r�r�rKr�r�� classmethodr�__class_getitem__rrrrrXsx��! �F !��S�#,�J@� P� � =�2� %� �V� &�6�v�!'�f�6�"�f��%�&� :�I� #� $�L�1�rrc��� gggf}|D]a}tjj||�}tjj||�}|t|||�j |��c|Sr)rrNr\�_cmpr_)r?r@rTr"�resrb�ax�bxs rrrsi�� � �r�2�,�C� �� �W�W�\�\�!�Q� �� �W�W�\�\�!�Q� �� �D��R�� !�"�)�)�!�,�� �Jrc�P� |||||�� S#ttf$rYywxYw)N�)r]r^)r?r@�sh�absrs rr�r�s4����s�1�a��}�%�%�%�� �Z� ����s ��%�%c�@�tt|j|��Sr)rPrrS)�flist�skips rrCrC(s�� � �D�-�-�u�5� 6�6rc��ddl}ddl}|j|jddd�\}}t|�dk7r|j dd��t |d|d�}d|vr|j �y|j�y)Nrr�rr�zneed exactly two args)z-r�)�sys�getopt�argvr� GetoptErrorrr�r�)r�r��options�args�dds r�demor�.sv�����M�M�#�(�(�1�2�,��4�M�G�T� �4�y�A�~�� � �!8�$�?�?� ��Q���a�� !�B��W�� ��� � � � � r�__main__)T)rr� itertoolsr�typesr�__all__rr.r rrrrrrr�r�rCr�r�rrr�r�s��� � � �!�� I�� �� ��J���&�P� �i2�i2�X�6���7� � �z���F�r