� ��^i���b�ddlZddlZddlZddlmZddlmZmZmZm Z m Z ddl m Z ddl mZddlmZmZddlmZmZddlmZeje��ZGd �d e��ZGd �d e��Zd e edfde edfdefd�Zdeedeefd�Zdeedededefd�Z dS)�N)�Values)�Iterator�List� NamedTuple�Optional�Tuple��canonicalize_name)�Command)�ERROR�SUCCESS)�BaseDistribution�get_default_environment)� write_outputc�B�eZdZdZdZdZd d�Zdedee de fd �Z dS) � ShowCommandzx Show information about one or more installed packages. The output is in RFC-compliant mail header format. z$ %prog [options] ...T�returnNc��|j�dddddd���|j�d|j��dS) Nz-fz--files�files� store_trueFz7Show the full list of installed files for each package.)�dest�action�default�helpr)�cmd_opts� add_option�parser�insert_option_group)�selfs ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/commands/show.py� add_optionszShowCommand.add_optionssU�� � � � � � ����J� !� � � � � �'�'��4�=�9�9�9�9�9��options�argsc��|s!t�d��tS|}t|��}t ||j|j���stStS)Nz.ERROR: Please provide a package name or names.)� list_files�verbose)�logger�warningr �search_packages_info� print_resultsrr'r )rr#r$�query�resultss r �runzShowCommand.run(sb��� � �N�N�K� L� L� L��L���&�u�-�-��� �� �w�� � � � ��L��r")rN) �__name__� __module__� __qualname__�__doc__�usage�ignore_require_venvr!rr�str�intr.�r"r rrsl��������  '�E��� :� :� :� :� �6� ��c�� �s� � � � � � r"rc���eZdZUeed<eed<eed<eeed<eeed<eed<eed<eeed<eed <eed <eed <eed <eed <eeed<eeeed<dS)� _PackageInfo�name�version�location�requires� required_by� installer�metadata_version� classifiers�summary�homepage�author� author_email�license� entry_pointsrN)r/r0r1r5�__annotations__rrr7r"r r9r96s�������� �I�I�I� �L�L�L��M�M�M��3�i�����c������N�N�N������c����� �L�L�L��M�M�M� �K�K�K����� �L�L�L��s�)���� �D��I� �����r"r9�entry.�inforc���|rB|ddkr6|r |ddkr|dz }n |dd�}|dd�}|r |ddk�6ttjg|�|�R���S)a�Convert a legacy installed-files.txt path into modern RECORD path. The legacy format stores paths relative to the info directory, while the modern format stores paths relative to the package root, e.g. the site-packages directory. :param entry: Path parts of the installed-files.txt entry. :param info: Path parts of the egg-info directory relative to package root. :returns: The converted entry. For best compatibility with symlinks, this does not use ``abspath()`` or ``Path.resolve()``, but tries to work with path parts: 1. While ``entry`` starts with ``..``, remove the equal amounts of parts from ``info``; if ``info`` is empty, start appending ``..`` instead. 2. Join the two directly. r�..�����)rLN��r5�pathlib�Path)rIrJs r �_convert_legacy_entryrRHs���$ ��E�!�H��$�$�� �t�B�x�4�'�'� �G�O�D�D�����9�D��a�b�b� �� ��E�!�H��$�$� �w�|�*�T�*�E�*�*�*� +� +�+r"r,c#�h�K�t��}d�|���D���d�|D��}t�fd�t||��D����}|r.t�dd�|����dtdttf�fd� }d tdtttfd �}d tdtttfd �}|D�]�} �|}n#t$rY�wxYwtd �|� ��D��tj � ��} t||��tj � ��} |�d��} | �d���} n#t $rg} YnwxYw||��p ||��} | �d}nt| ��}|j}t%|jt|j��|jpd| | |j|jpd|�dg��|�dd��|�dd��|�dd��|�dd��|�dd��| |���V����dS)z� Gather details from installed distributions. Print distribution name, version, location, and installed files. Installed files requires a pip generated 'installed-files.txt' in the distributions '.egg-info' directory. c��i|] }|j|�� Sr7)�canonical_name)�.0�dists r � z(search_packages_info..ls��P�P�P�t��$�d�P�P�Pr"c�,�g|]}t|����Sr7r )rVr:s r � z(search_packages_info..ms!��=�=�=�t�$�T�*�*�=�=�=r"c�"��g|] \}}|�v� |�� Sr7r7)rVr:�pkg� installeds �r rZz(search_packages_info..os'���O�O�O�)�$��#�Y�:N�:N��:N�:N�:Nr"zPackage(s) not found: %s�, � current_distrc�F����fd�����D��S)Nc3��K�|]8}�jd�|���D��v�'|jdpdV��9dS)c�6�h|]}t|j����Sr7)r r:)rV�ds r � zRsearch_packages_info.._get_requiring_packages...ys#��L�L�L�a�!�!�&�)�)�L�L�Lr"�Name�UNKNOWNN)rU�iter_dependencies�metadata)rVrWr_s �r � zHsearch_packages_info.._get_requiring_packages..usv����� � ���*�L�L�4�3I�3I�3K�3K�L�L�L�M�M� �M�&� !� .�Y�M�M�M�M� � r")�values)r_r]s`�r �_get_requiring_packagesz5search_packages_info.._get_requiring_packagests;���� � � � �!�(�(�*�*� � � � r"rWc�� |�d��}n#t$rYdSwxYwd�tj|�����D��S)N�RECORDc3�dK�|]+}ttj|d����V��,dS)rNrO)rV�rows r rizCsearch_packages_info.._files_from_record..�s8����S�S�c��G�L��Q��(�(�)�)�S�S�S�S�S�Sr")� read_text�FileNotFoundError�csv�reader� splitlines)rW�texts r �_files_from_recordz0search_packages_info.._files_from_record|sg�� ��>�>�(�+�+�D�D�� � � � ��4�4� ����T�S�S�Z����@Q�@Q�5R�5R�S�S�S�Ss �� &�&c�`�� |�d��}n#t$rYdSwxYwd�|�d���D��}|j}|j}|�|�|S t j|���|���n#t$r|cYSwxYw�j s|S�fd�|D��S)Nzinstalled-files.txtc3�K�|]}|�|V�� dS�Nr7)rV�ps r rizCsearch_packages_info.._files_from_legacy..�s'����A�A�q�q�A��A�A�A�A�A�Ar"F��keependsc3�p�K�|]0}ttj|��j�j��V��1dSry)rRrPrQ�parts)rVrz�info_rels �r rizCsearch_packages_info.._files_from_legacy..�sL����� � �MN� !�'�,�q�/�/�"7��� H� H� � � � � � r") rprqrtr<�info_directoryrPrQ� relative_to� ValueErrorr~)rWru�paths�rootrJrs @r �_files_from_legacyz0search_packages_info.._files_from_legacy�s���� ��>�>�"7�8�8�D�D�� � � � ��4�4� ����A�A�D�O�O�U�O�;�;�A�A�A���}���"�� �<�4�<��L� ��|�D�)�)�5�5�d�;�;�H�H��� � � ��L�L�L� �����~� ��L� � � � �RW� � � � s�� '�'�'B� B�Bc3�$K�|] }|jV�� dSry)r:)rV�reqs r riz'search_packages_info..�s$����H�H��3�8�H�H�H�H�H�Hr")�keyzentry_points.txtFr{N�� Classifier�Summaryz Home-page�Authorz Author-email�License)r:r;r<r=r>r?r@rArBrCrDrErFrGr)r�iter_distributions�sorted�zipr(r)�joinrrr5r�KeyErrorrg�lowerrprtrqrhr9�raw_namer;r<r?r@�get_all�get)r,�env� query_names�missingrkrvr�� query_namerWr=r>�entry_points_textrG� files_iterrrhr]s @r r*r*cs,����� "� #� #�C�P�P�s�7M�7M�7O�7O�P�P�P�I�=�=�u�=�=�=�K��O�O�O�O�s�5�+�6�6�O�O�O���G��G����1�4�9�9�W�3E�3E�F�F�F� �.>� �8�C�=� � � � � � �T�!1�T�h�x��}�6M�T�T�T�T� �!1� �h�x��}�6M� � � � �("�' �' � � ��Z�(�D�D��� � � � �H� �����H�H�t�/E�/E�/G�/G�H�H�H�c�i�X�X�X���4�4�T�:�:�� �J�J�J� � � $���/A� B� B� �,�7�7��7�G�G�L�L�� � � � ��L�L�L� ����(�'��-�-�I�1C�1C�D�1I�1I� � � �)-�E�E��:�&�&�E��=������� �%�%��]�(�b��#��n�!�2�8�b� �(�(��r�:�:��L�L��B�/�/��\�\�+�r�2�2��<�<��"�-�-�!���n�b�9�9��L�L��B�/�/�%�� � � � � � � �/' �' s$� D� D �D �?+F+�+ F:�9F:� distributionsr&r'c� �d}t|��D�]�\}}d}|dkrtd��td|j��td|j��td|j��td|j��td |j��td |j��td |j��td |j ��td d� |j ����tdd� |j ����|r�td|j ��td|j��td��|jD]}td|���td��|jD]$}td|������%|rStd��|j�td�����|jD]$}td|������%���|S)zC Print the information from installed distributions found. FTrz---zName: %sz Version: %sz Summary: %sz Home-page: %sz Author: %szAuthor-email: %sz License: %sz Location: %sz Requires: %sr^zRequired-by: %szMetadata-Version: %sz Installer: %sz Classifiers:z %sz Entry-points:zFiles:Nz+Cannot locate RECORD or installed-files.txt)� enumeraterr:r;rBrCrDrErFr<r�r=r>r@r?rArG�stripr) r�r&r'�results_printed�irW� classifierrI�lines r r+r+�s���O��]�+�+�7�7���4��� �q�5�5� �� � � ��Z���+�+�+��]�D�L�1�1�1��]�D�L�1�1�1��_�d�m�4�4�4��\�4�;�/�/�/��'��):�;�;�;��]�D�L�1�1�1��^�T�]�3�3�3��^�T�Y�Y�t�}�%=�%=�>�>�>��&�� � �$�2B�(C�(C�D�D�D� � 4� �/��1F� G� G� G� ��$�.� 9� 9� 9� �� (� (� (�"�.� 1� 1� ��V�Z�0�0�0�0� �� )� )� )��*� 4� 4���V�U�[�[�]�]�3�3�3�3� � 7� �� "� "� "��z�!��J�K�K�K�K� �J�7�7�D� �������6�6�6�6�� �r")!rr�loggingrP�optparser�typingrrrrr�pip._vendor.packaging.utilsr �pip._internal.cli.base_commandr �pip._internal.cli.status_codesr r �pip._internal.metadatarr�pip._internal.utils.miscr� getLoggerr/r(rr9r5rRr*�boolr+r7r"r �r�s��� � � � ���������������>�>�>�>�>�>�>�>�>�>�>�>�>�>�9�9�9�9�9�9�2�2�2�2�2�2�9�9�9�9�9�9�9�9�L�L�L�L�L�L�L�L�1�1�1�1�1�1� �� �8� $� $��"�"�"�"�"�'�"�"�"�J�����:����$,��s�C�x��,��c�3�h��,�C�,�,�,�,�6\ ��S� �\ �h�|�.D�\ �\ �\ �\ �~)��L�)�)��)��)� � )�)�)�)�)�)r"