Sindbad~EG File Manager
�
4Μg�\ � �� � d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl Z d dl
Zd dlm
Z
d dlmZ d dlmZ d dlmZmZmZ d dlmZ d dlmZmZ d dlmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d d l+m,Z, d d
l-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3 d d
l4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z; g d�Z< ejz e>� Z? e(d� Z@e&e'eA eAef ZBe&eCeCeCf ZDe&eEe&e$eE e$eE f f ZFeeeeAgef ZGeeeeBgef ZHdZIdeEfd�ZJde&eCdf de&eCeCeCf fd�ZKdeEddfd�ZLdeEfd�ZM e9dd�� dtdeEd eNd!e$eG ddfd"�� ZOd#eddfd$�ZPd#eddfd%�ZQeQd&�d'eded(e)eBeAf d!eGddf
d)�ZRdeEdeEfd*�ZSdudeEd+eEdeEfd,�ZTd-eEd.e!eE deEfd/�ZUd-eEddfd0�ZVd-eEd.e!eE deEfd1�ZWd-eEdeEfd2�ZXd-eEdeEfd3�ZYd4eEdeCfd5�ZZd6e[deEfd7�Z\d8e!e!e de&e#eE e#eC f fd9�Z]deEdeNfd:�Z^eIfd;ed<eCde e_ddf fd=�Z`dvdeEd?eNdeEfd@�ZadeEde&eEeEf fdA�ZbdBeEdCeEddfdD�ZcdeEdeNfdE�ZddFedGeddfdH�Ze G dI� dJe� ZfdKedLede'e fdM�ZgdNeEdOe$eC deEfdP�ZhdwdQeEdReEdeEfdS�ZidQeEde&e$eE e$eC f fdT�ZjdQeEdeFfdU�ZkdQeEdeEfdV�ZldWeEdXeeEge&edf f de&eEeFf fdY�ZmdQeEdeFfdZ�ZndQeEde&eE fd[�ZodWeEde&eEeEe&e$eE e$eE f f fd\�ZpdWeEdeEfd]�ZqdWeEdeEfd^�Zrd_e,deEfd`�Zs e
d>�a� G db� dc� � ZtddeEdetfde�ZudWeEdetfdf�ZvdgeNddfdh�Zwdxdi�ZxdeNfdj�ZydydeEdkeCde&eeCf fdl�Zzdme!e de"e&eef fdn�Z{doee@geNf dme!e@ de&e!e@ e!e@ f fdp�Z| G dq� dre.� Z}dxds�Z~y)z� N)� dataclass)�partial)�StringIO)�filterfalse�tee�zip_longest)�Path)�FunctionType�
TracebackType)�Any�BinaryIO�Callable�Dict� Generator�Iterable�Iterator�List�Optional�TextIO�Tuple�Type�TypeVar�Union�cast)�Requirement)�BuildBackendHookCaller)�__version__)�CommandError�ExternallyManagedEnvironment)�get_major_minor_version)�WINDOWS)�retry)�running_under_virtualenv)�rmtree�display_path�
backup_dir�ask�splitext�format_size�is_installable_dir�normalize_path�renames�get_prog�
ensure_dir�remove_auth_from_url�check_externally_managed� ConfiguredBuildBackendHookCaller�T� �returnc �� � t j j t j j t � dd� } t j j | � } dt � d| � dt � � d�S )Nz..zpip z from z (python �))�os�path�join�dirname�__file__�abspathr r )�pip_pkg_dirs �C/usr/local/lib/python3.12/site-packages/pip/_internal/utils/misc.py�get_pip_versionr? K sX � ��'�'�,�,�r�w�w���x�8�$��E�K��'�'�/�/�+�.�K�
�+��f�[�M��;R�;T�:U�UV�W�W� �py_version_info.c � � t | � dk r| dt | � z
dz z
} nt | � dkD r| dd } t d| � S )ax
Convert a tuple of ints representing a Python version to one of length
three.
:param py_version_info: a tuple of ints representing a Python version,
or None to specify no version. The tuple can have any length.
:return: a tuple of length three if `py_version_info` is non-None.
Otherwise, return `py_version_info` unchanged (i.e. None).
� )r N�VersionInfo)�lenr )rA s r>