� ��^il8��|�UddlZddlZddlZddlZddlZddlZddlmZmZm Z m Z m Z m Z ddl mZmZddlmZddlmZddlmZddlmZmZdd lmZmZmZmZmZmZgd �Z ej!e"��Z#ej$�%d ��rej&Z'nej(Z'e)ed d ��Z*e+e,d<ej-dkZ.de/fd�Z0dee+e+fde/fd�Z1ej2d���de/fd���Z3ej2d���de/fd���Z4ej2d���de/fd���Z5ej2d���de/fd���Z6de e+de e+fd�Z7ej2d���dej8dej8de+ddfd���Z9dej8dej8de+de/fd�Z:ej2d���d dddd!�d"e/d#e e+d$e e+d%e e+ddf d&���Z; d4d'e+d"e/d#e e+d$e e+d(e/d%e e+defd)�Zd,e+de/fd-�Z?de+fd.�Z@de+fd/�ZAd0e+d1e+de e+fd2�ZBd%e+de e+fd3�ZCdS)5�N)�Any�Dict�Iterator�List�Optional�Tuple)� SCHEME_KEYS�Scheme)�WINDOWS)� deprecated)�running_under_virtualenv�)� _distutils� _sysconfig)�USER_CACHE_DIR�get_major_minor_version�get_src_prefix�is_osx_framework� site_packages� user_site) r�get_bin_prefix� get_bin_userr� get_platlib�get_prefixed_libs� get_purelib� get_schemerrr�"_PIP_LOCATIONS_NO_WARN_ON_MISMATCH� platlibdir�lib� _PLATLIBDIR)�� �returnc�\�ddlm} |dd}n#t$rYdSwxYw|dkS)zsThe resolution to bpo-44860 will change this incorrect platlib. See . r��INSTALL_SCHEMES� unix_user�platlibFz $usersite)�distutils.command.installr&�KeyError)r&�unix_user_platlibs ��/builddir/build/BUILDROOT/alt-python311-pip-21.3.1-4.el8.x86_64/opt/alt/python311/lib/python3.11/site-packages/pip/_internal/locations/__init__.py�_looks_like_bpo_44860r-3s[�� :�9�9�9�9�9��+�K�8��C���� �����u�u����� � � +�+s �� %�%�schemec��|d}d|vr9ttd��r$|�ddtj�d���}d|vrdS|�dd��}|�dd ��|d kS) Nr(z /$platlibdir/r�/z/lib64/Fz/lib/z $platbase/z$base/�purelib)�hasattr�sys�replacer)r.r(� unpatcheds r,�+_looks_like_red_hat_patched_platlib_purelibr6As����Y��G��'�!�!�g�c�<�&@�&@�!��/�/�/�3H�s�~�3H�3H�3H�I�I�������u���� �7�3�3�I� � � �\�8� 4� 4��y�8I� I�I�)�maxsizec�F��ddlm�t�fd�dD����S)z�Red Hat patches platlib in unix_prefix and unix_home, but not purelib. This is the only way I can see to tell a Red Hat-patched Python. rr%c3�J�K�|]}|�vot�|��V��dS�N)r6)�.0�kr&s �r,� z*_looks_like_red_hat_lib..SsT������� � �_�� L� 7���8J� K� K������r7)� unix_prefix� unix_home)r)r&�allr%s@r,�_looks_like_red_hat_librBKsQ��� :�9�9�9�9�9� �����.���� � �r7c��ddlm}d|vod|vS)z#Debian adds two additional schemes.rr%� deb_system� unix_local)r)r&r%s r,�_looks_like_debian_schemerFZs+��:�9�9�9�9�9� �?� *� N�|��/N�Nr7c�<�ddlm}ddlm}||����}|���|jt j�tj���d�ko4|j t j�tj ���d�kS)a\Red Hat patches ``sys.prefix`` and ``sys.exec_prefix``. Red Hat's ``00251-change-user-install-location.patch`` changes the install command's ``prefix`` and ``exec_prefix`` to append ``"/local"``. This is (fortunately?) done quite unconditionally, so we create a default command object without any configuration to detect this. r)�install)� Distributionz/local) r)rH�distutils.distrI�finalize_options� exec_prefix�os�path�normpathr3�prefix)rHrI�cmds r,�_looks_like_red_hat_schemerRbs���2�1�1�1�1�1�+�+�+�+�+�+��w�|�|�~�~�&�&�C������� ��b�g�.�.�s��?�?�G�G�G�G� B� �J�R�W�-�-�c�j�9�9�A�A�A� A�r7c�z��tjdd����td��fd�dD��D����S)a�MSYS2 patches distutils and sysconfig to use a UNIX-like scheme. However, MSYS2 incorrectly patches sysconfig ``nt`` scheme. The fix is likely going to be included in their 3.10 release, so we ignore the warning. See msys2/MINGW-packages#9319. MSYS2 MINGW's patch uses lowercase ``"lib"`` instead of the usual uppercase, and is missing the final ``"site-packages"``. �ntF)�expandc3�RK�|]"}d|vod|vo|�d�� V��#dS)�Librz site-packagesN)�endswith)r<�ps r,r>z1_looks_like_msys2_mingw_scheme..�sW������ � �Q��I�5�A�:�I�a�j�j��.I�.I�*I������r7c3�(�K�|] }�|V�� dSr;�)r<�key�pathss �r,r>z1_looks_like_msys2_mingw_scheme..�s'�����?�?��%��*�?�?�?�?�?�?r7�r(r1)� sysconfig� get_pathsrA)r]s@r,�_looks_like_msys2_mingw_schemeravs]��� � ��U� 3� 3� 3�E� ���?�?�?�?�(>�?�?�?���� � �r7�partsc#�K�tjd��}ttdd��}|r|r|�|��s |Ed{V��dS|D]5}|�|��r|ddt |��z �}|V��6dS)N� LDVERSION�abiflagsr)r_�get_config_var�getattrr3rX�len)rb� ldversionre�parts r,� _fix_abiflagsrk�s������(��5�5�I��C��T�2�2�H� ��H��I�,>�,>�x�,H�,H���������������� �=�=�� #� #� /��-�1�s�8�}�}�,�-�.�D�� � � � ��r7�old�newr\c�V�d}d}t�t|||||��dS)Nz(https://github.com/pypa/pip/issues/10151zSValue for %s does not match. Please report this to <%s> distutils: %s sysconfig: %s)�logger�log�_MISMATCH_LEVEL)rlrmr\� issue_url�messages r,�_warn_mismatchedrt�s5��:�I� � �  �J�J����i��c�B�B�B�B�Br7c�:�||krdSt|||���dS)NF�r\T)rt)rlrmr\s r,�_warn_if_mismatchrw�s*�� �c�z�z��u��S�#�3�'�'�'�'� �4r7F��user�home�rootrPryrzr{rPc�|�gd�}t�td�|��||||��dS)N)zAdditional context:z user = %rz home = %rz root = %rz prefix = %r� )rorprq�join)ryrzr{rPrbs r,� _log_contextr�sC�� � � �E� �J�J��� � �%� 0� 0�$��d�F�K�K�K�K�Kr7� dist_name�isolatedc �����tj||||||���}tr|Stj||||||����g}tD�]�}t jt�|����} t jt||����} | | kr�Ntj j dkoK|duoG|dvoC| j | j ko3| j � d��o| j � d��} | r��|oGt��o9|dko3| j j | j ko| j j � d��} | r��|dkrt��r��|o6|dko0t o(tjdkot"dko t%��} | r��R|p|p|p t'�� o�| jd d �d komt+| j��d koU| jd d koDt+| j��d kp| jd dkot-��p t/��}|r���tjdko5t o-|dvo)t1t3| j����| jk}|r��6to|dvo t5��}|r��St7jd���o t o|dv}|r��x|�| | d|��f�����|s�Stj||||||d����t?��fd�tD����rtAddd����S|D]\} } }tC| | |����tE||||����S)N)ryrzr{r�rP�pypyr^�python�headersr()r!� rrr!)�usr�localr��r�)r!�)r�r(r1T)� check_home)r��include� platincludezscheme.)�ignore_config_filesc3�L�K�|]}�|t�|��kV��dSr;)rg)r<r=� default_oldrls ��r,r>zget_scheme..Os4����� B� B��;�q�>�W�S�!�_�_� ,� B� B� B� B� B� Br7z�Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621)�reason� replacement�gone_inrvrx)#rr�_USE_SYSCONFIGrr �pathlib�Pathrgr3�implementation�name�parent� startswithrrBr � version_infor r-r rbrhrRrF�tuplerkrar_�is_python_build�append�distutils_scheme�anyr rtr)r�ryrzr{r�rPrm�warning_contextsr=�old_v�new_v�skip_pypy_special_case�$skip_osx_framework_user_special_case�skip_bpo_44860�skip_linux_system_special_case�skip_sysconfig_abiflag_bug�skip_msys2_mingw_bug�skip_cpython_buildr\r�rls @@r,rr�s����� � �� � � ���  � � �C���� � � �� � � ���  � � �C��� �d?�d?��� �W�S�!�_�_�-�-��� �W�S�!�_�_�-�-�� �E�>�>� � � � #�v� -� .��D� � .��+�+� .�� �� �,� .�� �%�%�h�/�/�  .� � �%�%�f�-�-� � "� � � � 7� �"�"� 7��Y�� 7�� �#�u�|�3� 7�� �!�,�,�X�6�6� -� 0� � � � �>�>�5�7�7�>� � � (��Y�� (�� � (�� �F�*� (��u�$�  (� &�'�'� � � � � �E��E��E�+C�+E�+E� F� N�� �A�a�C� �$4�4� N��E�K� � �1�$� N�� �A��%�'� N��U�[�!�!�A�%�B���Q��7�)B�  N� ,�-�-�L�1J�1L�1L� '� *� � � � �v� %� A�� � A��6�6� A��m�E�K�0�0�1�1�U�[�@� #� &� � � � X��3�3� X�8V�8X�8X� � � � � � %�� 6� 6� 6� ;�� � ;��:�:� � � � ������}��}�}� =�>�>�>�>� ��� � �-�� � � ��� ����K� � B� B� B� B� B�k� B� B� B�B�B� ��L� �� � � � �� �.�0�0���u�c����3�/�/�/�/�/��d��D��@�@�@�@� �Jr7c���tj��}tr|Stj��}t t j|��t j|��d���rt��|S)N� bin_prefixrv)rrr�rrwr�r�r�rmrls r,rrdsd�� � #� %� %�C���� � � #� %� %�C����c�*�*�G�L��,=�,=�<�P�P�P������ �Jr7c�8�tjdd���jS)N�T)ry)rr�scriptsr[r7r,rros�� � ��$� /� /� /� 7�7r7�valuec�6�t��sdS|dkrdSdS)a�Check if the value is Debian's APT-controlled dist-packages. Debian's ``distutils.sysconfig.get_python_lib()`` implementation returns the default package path controlled by APT, but does not patch ``sysconfig`` to do the same. This is similar to the bug worked around in ``get_scheme()``, but here the default is ``deb_system`` instead of ``unix_local``. Ultimately we can't do anything about this Debian bug, and this detection allows us to skip the warning when needed. Fz/usr/lib/python3/dist-packagesT)rF)r�s r,�$_looks_like_deb_system_dist_packagesr�ss-�� %� &� &���u� �0�0�0��t� �5r7c��tj��}tr|Stj��}t |��r|St t j|��t j|��d���rt��|S)z,Return the default pure-Python lib location.r1rv) rrr�rr�rwr�r�rr�s r,rr��y�� � � "� "�C���� � � � "� "�C�+�C�0�0��� ����c�*�*�G�L��,=�,=�9�M�M�M������ �Jr7c��tj��}tr|Stj��}t |��r|St t j|��t j|��d���rt��|S)z0Return the default platform-shared lib location.r(rv) rrr�rr�rwr�r�rr�s r,rr�r�r7�v1�v2c��||kr|gS||gS)zDeduplicate values from a list.r[)r�r�s r,� _deduplicatedr��s�� �R�x�x��t� � ��8�Or7c���tj|��\}}trt||��St j|��\}}t t j|��t j|��d���t t j|��t j|��d���g}t|��rt|���t||��S)z*Return the lib locations under ``prefix``.zprefixed-purelibrvzprefixed-platlib)rP) rrr�r�rrwr�r�r�r)rP�new_pure�new_plat�old_pure�old_plat�warneds r,rr�s���#�5�f�=�=��H�h��1��X�x�0�0�0�#�5�f�=�=��H�h� � �L�� "� "� �L�� "� "�"� � � � � �L�� "� "� �L�� "� "�"� � � � �F� �6�{�{�$��F�#�#�#�#� ��8� ,� ,�,r7)FNNFN)D� functools�loggingrMr�r3r_�typingrrrrrr�pip._internal.models.schemer r �pip._internal.utils.compatr �pip._internal.utils.deprecationr �pip._internal.utils.virtualenvr r�rr�baserrrrrr�__all__� getLogger�__name__ro�environ�get�DEBUGrq�WARNINGrgr �str�__annotations__r�r��boolr-r6� lru_cacherBrFrRrarkr�rtrwrrrrr�rrr�rr[r7r,�r�s������������ � � � ����� � � � �����=�=�=�=�=�=�=�=�=�=�=�=�=�=�=�=�;�;�;�;�;�;�;�;�.�.�.�.�.�.�6�6�6�6�6�6�C�C�C�C�C�C�$�$�$�$�$�$�$�$����������������� � � �� �� �8� $� $���:�>�>�6�7�7�&��m�O�O��o�O��7�3� �e�4�4� �S�4�4�4��!�W�,�� ,�t� ,� ,� ,� ,�J��S�#�X��J�4�J�J�J�J����T�"�"�"� �� � � �#�"� ����T�"�"�"�O�4�O�O�O�#�"�O����T�"�"�"��D����#�"��&���T�"�"�"������#�"��" ��s�� ��� � � � � � ���T�"�"�"�C�'�,�C�W�\�C�3�C�4�C�C�C�#�"�C��7�<��g�l��C��D��������T�"�"�"���� � L�L�L� �L� �3�-�L� �3�-� L� �S�M� L�  � L�L�L�#�"�L�(���� � d�d��d� �d� �3�-�d� �3�-� d� � d� �S�M� d� �d�d�d�d�N������8�c�8�8�8�8���������" �S� � � � � �S� � � � ��c��s��t�C�y�����-�c�-�d�3�i�-�-�-�-�-�-r7