� !A?ho���dZddlZddlZddlZddlZgd�Zd�Zejdd���d���Zd �Z d �Z d �Z dS) a�Filename matching with shell patterns. fnmatch(FILENAME, PATTERN) matches according to the local convention. fnmatchcase(FILENAME, PATTERN) always takes case in account. The functions operate by translating the pattern into a regular expression. They cache the compiled regular expressions for speed. The function translate(PATTERN) returns a regular expression corresponding to PATTERN. (It does not compile it.) �N)�filter�fnmatch� fnmatchcase� translatec��tj�|��}tj�|��}t||��S)a�Test whether FILENAME matches PATTERN. Patterns are Unix shell style: * matches everything ? matches any single character [seq] matches any character in seq [!seq] matches any char not in seq An initial period in FILENAME is not special. Both FILENAME and PATTERN are first case-normalized if the operating system requires it. If you don't want this, use fnmatchcase(FILENAME, PATTERN). )�os�path�normcaser)�name�pats �4/opt/alt/python-internal/lib64/python3.11/fnmatch.pyrrs>�� �7� � �D� !� !�D� �'� � �3� � �C� �t�S� !� !�!�i�T)�maxsize�typedc���t|t��r0t|d��}t|��}t|d��}nt|��}t j|��jS)Nz ISO-8859-1)� isinstance�bytes�strr�re�compile�match)r �pat_str�res_str�ress r �_compile_patternr&s]���#�u�����c�<�(�(���G�$�$���G�\�*�*�����n�n�� �:�c�?�?� � rc�\�g}tj�|��}t|��}tjtur&|D]"}||��r|�|���#nB|D]?}|tj�|����r|�|���@|S)zJConstruct a list from those elements of the iterable NAMES that match PAT.)rr r r� posixpath�append)�namesr �resultrr s r rr0s��� �F� �'� � �3� � �C� �S� !� !�E� �w�)���� $� $�D��u�T�{�{� $�� � �d�#�#�#�� $�� $� $�D��u�R�W�%�%�d�+�+�,�,� $�� � �d�#�#�#�� �Mrc�:�t|��}||��duS)z�Test whether FILENAME matches PATTERN, including case. This is a version of fnmatch() which doesn't case-normalize its arguments. N)r)r r rs r rr@s$�� �S� !� !�E� �5��;�;�d� "�"rc��t��}g}|j}dt|��}}||k�r�||}|dz}|dkr|r |d|ur ||���n_|dkr |d���nL|dk�r(|}||kr||dkr|dz}||kr||d kr|dz}||kr#||d kr|dz}||kr ||d k�||kr |d ���n�|||�}d |vr|�d d ��}�n"g} ||dkr|dzn|dz} |�d | |��} | dkrn(| �||| ���| dz}| dz} �F|||�} | r| �| ��n| dxxd z cc<t t| ��dz dd��D]P} | | dz d| | dkr-| | dz dd�| | dd�z| | dz <| | =�Qd �d�| D����}tjdd|��}|dz}|s |d��nh|dkr |d��nV|ddkrd|dd�z}n|ddvrd |z}|d|�d ���n|tj |����||k���|} g}|j}dt| ��}}||kr0| ||ur&|| |��|dz }||kr | ||u�&||kr�|dz }||kr |d��n�g} ||kr:| ||ur0| �| |��|dz }||kr | ||u�0d�| ��} ||kr|d��|| ��n|d| �d���||k��d�|��}d|�d�S)zfTranslate a shell PATTERN to a regular expression. There is no way to quote meta-characters. r��*������?�.�[�!�]z\[�-�\�\\�T�Nc3�jK�|].}|�dd���dd��V��/dS)r,r-r+z\-N)�replace)�.0�ss r � ztranslate..�sT����%6�%6�)*�&'�Y�Y�t�U�%;�%;�%C�%C�C��%O�%O�%6�%6�%6�%6�%6�%6rz([&~|])z\\\1z(?!)�^)r5r(z.*�z(?>.*?�)z(?s:z)\Z) �objectr�lenr1�find�range�joinr�sub�escape)r �STARr�add�i�n�c�j�stuff�chunks�k�chunk�inp�fixeds r rrJs��� �8�8�D� �C� �*�C� �c�#�h�h�q�A� �a�%�%� ��F�� �a�C�� ��8�8�� �C��G�4�/�/���D� � � �� �#�X�X� �C��H�H�H�H� �#�X�X��A��1�u�u��Q��3����a�C���1�u�u��Q��3����a�C���a�%�%�C��F�c�M�M��a�C���a�%�%�C��F�c�M�M��A�v�v���E� � � � ��A�a�C����e�#�#�!�M�M�$��6�6�E�E��F�"�1�v��}�}��!���!�A�#�A� ��H�H�S�!�Q�/�/���q�5�5�!�� � �c�!�A�#�h�/�/�/��a�C���a�C��  � ��!��H�E��*�� � �e�,�,�,�,��r� � � �c�)� � � �"�3�v�;�;�q�=�!�R�8�8�*�*��!�!�A�#�;�r�?�V�A�Y�q�\�9�9�*0��1��+�c�r�c�*:�V�A�Y�q�r�r�]�*J�F�1�Q�3�K� &�q� �� �H�H�%6�%6�.4�%6�%6�%6�6�6�E���z�7�E�:�:���a�C��� &��C��K�K�K�K��c�\�\��C��H�H�H�H��Q�x�3��� #�e�A�B�B�i�����q��Z�/�/� $�u� ���C� �E� � � �%�%�%�%� �C�� �!� � � � � � �a�%�%�F �C� �C� �*�C� �c�#�h�h�q�A� �a�%�%�C��F�$�&�&� ��C��F� � � � �Q��� �a�%�%�C��F�$�&�&� �a�%�%� �Q��� ��6�6� �C��I�I�I� ����!�e�e��A��d�*�*� �L�L��Q�� � � � ��F�A��!�e�e��A��d�*�*�������� ��6�6� �C��I�I�I� �C��J�J�J�J� �C�!��!�!�!� "� "� "�! �a�%�%�$ �'�'�#�,�,�C� �3� � � �r) �__doc__rrr� functools�__all__r� lru_cacherrrr�rr �rPs��� � � � � � ����� � � � ����� ;� ;� ;��"�"�"�&���U�$�/�/�/�!�!�0�/�!���� #�#�#�o�o�o�o�or