� ��^i�� ���dZddlZddlZddlZddlmZddlmZmZm Z m Z ddl m Z ddl mZmZddlmZdd �Zd e ed ed eede efd �Zdededeefd�ZdS)zBLogic that powers autocompletion installed by ``pip completion``. �N)�chain)�Any�Iterable�List�Optional)�create_main_parser)� commands_dict�create_command)�get_default_environment�returnc������dtjvrdStjd���dd��ttjd��} �|dz �n#t$rd�YnwxYwt ��}t t��}g}d}�D] }||vr|}n� |���|dkrtj d���� d�� o|d v}|rot��}�� �����fd �|� d � ��D��}|r(|D]} t| ���tj d��t|��} | jjD]E} | jt&jkr.| j| jzD]} |�| | jf����Fd ��d|dz �D����fd�|D��}�fd�|D��}t3�|| jj��} | rt5�| ��}d�|D��}|D]:}|d}|dr|ddd�dkr|dz }t|���;n�d�|jD��}|�|j��t;j|��}�� d��r-|D])} | jt&jkr|| j| jzz }�*n0t3�||��} | rt t5�| ����}td��fd�|D������tj d��dS)z:Entry Point for completion of main and subcommand options.�PIP_AUTO_COMPLETEN� COMP_WORDS�� COMP_CWORD��help�-)�show� uninstallc�t��g|]4}|j����r|j�dd�v�-|j��5S)rN)�canonical_name� startswith)�.0�dist�cwords�lcs ����/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/cli/autocompletion.py� z autocomplete..2sY��������&�1�1�"�5�5���'�v�a�b�b�z�9�9��#�:�9�9�T)� local_onlyc�D�g|]}|�d��d��S)�=r)�split�r�xs rrz autocomplete..Fs&��D�D�D��Q�W�W�S�\�\�!�_�D�D�Dr c�&��g|] \}}|�v� ||f��S�r()rr&�v� prev_optss �rrz autocomplete..Gs+���F�F�F�f�q�!�1�I�3E�3E�A�q�6�3E�3E�3Er c�H��g|]\}}|�����||f��Sr(�r)r�kr)�currents �rrz autocomplete..Is2���G�G�G�d�a�����g�1F�1F�G�A�q�6�G�G�Gr c��g|]}|df��S)rr()r�paths rrz autocomplete..Ts��3�3�3�T��a�y�3�3�3r r�z--r#c��g|] }|j�� Sr()� option_list)r�is rrz autocomplete..^s��<�<�<�!�� �<�<���g|]}|�����|��Sr(r,)rr&r.s �rrz autocomplete..ks*���H�H�H�a�!�,�,�w�2G�2G�H��H�H�Hr ) �os�environr$�int� IndexErrorr�listr �sys�exitrr �lower�iter_installed_distributions�printr �parser�option_list_allr�optparse� SUPPRESS_HELP� _long_opts� _short_opts�append�nargs�get_path_completion_type�auto_complete_paths� option_groupsr3r� from_iterable�join)�cwordrA� subcommands�options�subcommand_name�word�should_list_installed�env� installedr� subcommand�opt�opt_str�completion_type�paths�option� opt_label�opts�flattened_optsr.rrr*s @@@@r� autocompleter_s�������"�*�,�,��� �Z� � %� +� +� -� -�a�b�b� 1�F� �� �<�(� )� )�E������#���� ������������ � !� !�F��}�%�%�K��G�&*�O����� �;� � �"�O� �E� ��"� �f� $� $� �H�Q�K�K�K�$+�$6�$6�s�$;�$;� ;�! ��T �A �� !� �)�+�+�C������B�������<�<��<�M�M����I�� �%� � �D��$�K�K�K�K���� � � �#�O�4�4� ��$�4� 9� 9�C��x�8�1�1�1�"�~���?�9�9�G��N�N�G�S�Y�#7�8�8�8�8��E�D�f�Q����]�.C�D�D�D� �F�F�F�F��F�F�F��G�G�G�G�g�G�G�G��2� � � � � -� � �� � 4�'���A�A�E�3�3�U�3�3�3�G�� � �F��q� �I��a�y� !�V�A�Y�r��r�]�d�2�2��S� � � �)� � � � �  �=�<�v�';�<�<�<�� � � �F�&�'�'�'��,�T�2�2�� � � �c� "� "� R�%� D� D���8�x�5�5�5��3�>�C�O�#C�C�K�� D� 7�v�u�n�U�U�O�� R�"�#6�w��#P�#P�Q�Q� � �c�h�h�H�H�H�H�;�H�H�H�I�I�J�J�J��H�Q�K�K�K�K�Ks�! A-�- A<�;A<rrNr]c��|dks||dz �d��sdS|D]�}|jtjkr�t |���d��D]m}||dz �d��d|krC|jr1td�|j�d��D����r |jccS�n��dS)aLGet the type of path completion (``file``, ``dir``, ``path`` or None) :param cwords: same as the environmental variable ``COMP_WORDS`` :param cword: same as the environmental variable ``COMP_CWORD`` :param opts: The available options to check :return: path completion type (``file``, ``dir``, ``path`` or None) r1rN�/r#rc3�K�|]}|dvV�� dS))r0�file�dirNr(r%s r� z+get_path_completion_type..�s9����*�*�56�A�0�0�*�*�*�*�*�*r )rrrCrD�strr$�metavar�any)rrNr]rW�os rrIrIos�� �q�y�y��u�q�y�)�4�4�S�9�9�y��t��'�'�� �8�x�-� -� -� ��S������$�$� '� '�A��e�a�i� �&�&�s�+�+�A�.�!�3�3��{�'�c�*�*�:=�+�:K�:K�C�:P�:P�*�*�*�'�'�'��;�&�&�&�&�&��  '� �4r r.rYc#���K�tj�|��\}�tj�|��}tj|tj��sdStj������fd�tj|��D��}|D]�}tj�||��}tj�tj�||����}|dkr$tj� |��r|V���tj� |��r"tj�|d��V���dS)aoIf ``completion_type`` is ``file`` or ``path``, list all regular files and directories starting with ``current``; otherwise only list directories starting with ``current``. :param current: The word to be completed :param completion_type: path completion type(`file`, `path` or `dir`)i :return: A generator of regular files and/or directories Nc3��K�|]8}tj�|�������4|V��9dS)N)r7r0�normcaser)rr&�filenames �rrez&auto_complete_paths..�sZ��������r�w�/?�/?��/B�/B�/M�/M�h�/W�/W�� ������r rdr) r7r0r$�abspath�access�R_OKrl�listdirrM�isfile�isdir) r.rY� directory� current_path� file_list�frW� comp_filerms @rrJrJ�sI������'�-�-��0�0��I�x��7�?�?�9�-�-�L� �9�\�2�7� +� +�����w����)�)�H������:�l�+�+����I�� .� .���g�l�l�<��+�+���G�$�$�R�W�\�\�)�Q�%?�%?�@�@� � �e� #� #�����s�(;�(;� #��O�O�O�O� �W�]�]�3� � � .��'�,�,�y�"�-�-� -� -� -�� .� .r )r N)�__doc__rCr7r<� itertoolsr�typingrrrr�pip._internal.cli.main_parserr�pip._internal.commandsr r �pip._internal.metadatar r_rfr9rIrJr(r r�rs.�������� � � � � � � � �������0�0�0�0�0�0�0�0�0�0�0�0�<�<�<�<�<�<�@�@�@�@�@�@�@�@�:�:�:�:�:�:�]�]�]�]�@� ��I��!��)1�#��� �c�]�����0.��.�s�.�x��}�.�.�.�.�.�.r