File: //usr/local/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/misc.cpython-310.pyc
o
��i�V �
@ s2 d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl Z d dl
Z
d dlZd dlZ
d dlmZ d dlmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ d dl%m&Z& d dl'm(Z(m)Z)m*Z* d dl+m,Z, d d l-m.Z.m/Z/ d d
l0m1Z1 d dl2m3Z3 d dl4m5Z5 g d
�Z6e�7e8�Z9e#d�Z:e!e"e; e;ef Z<e!e=e=e=f Z>e!e?e!ee? ee? f f Z@de?fdd�ZAde!e=df de!e=e=e=f fdd�ZBde?ddfdd�ZCde?fdd�ZDe(de)d�e*d�d�d�d e?d!eEddfd"d#��ZFd$edef de?d%e<ddfd&d'�ZGde?de?fd(d)�ZHd�d e?d+e?de?fd,d-�ZId.e?d/ee? de?fd0d1�ZJd.e?ddfd2d3�ZKd.e?d/ee? de?fd4d5�ZLd.e?de?fd6d7�ZMd.e?de?fd8d9�ZNd:e?de=fd;d<�ZOd=ePde?fd>d?�ZQd@eee de!ee? ee= f fdAdB�ZRde?deEfdCdD�ZSejTfdEedFe=deeUddf fdGdH�ZVd�de?dIeEde?fdJdK�ZWde?de!e?e?f fdLdM�ZXdNe?dOe?ddfdPdQ�ZYde?deEfdRdS�ZZdTedUeddfdVdW�Z[G dXdY� dYe�Z\e j]dZe?dee\ddf fd[d\��Z^dee\ fd]d^�Z_dee\ fd_d`�Z`daedbede"e fdcdd�Zadee?dfee= de?fdgdh�Zbd�dje?dke?de?fdldm�Zcdje?de!e?ee= f fdndo�Zddje?de@fdpdq�Zedje?de?fdrds�Zfdte?duee?ge!edf f de!e?e@f fdvdw�Zgdje?de@fdxdy�Zhdje?de!e? fdzd{�Zidte?de!e?e?e!e?e?f f fd|d}�Zjdte?de?fd~d�Zkdte?de?fd�d��ZlG d�d�� d��Zmd�e?demfd�d��Zndte?demfd�d��Zod�eEddfd�d��Zpd�d�d��ZqdeEfd�d��Zrd�de?d�e=de!ee=f fd�d��ZsdeEfd�d��Ztd�ee dee!eef fd�d��Zud�ee:geEf d�ee: de!ee: ee: f fd�d��ZvG d�d�� d�e&�ZwdS )�� N)�StringIO)�filterfalse�tee�zip_longest)�
TracebackType)�Any�BinaryIO�Callable�ContextManager�Dict� Generator�Iterable�Iterator�List�Optional�TextIO�Tuple�Type�TypeVar�cast)�BuildBackendHookCaller)�retry�stop_after_delay�
wait_fixed)�__version__)�CommandError�ExternallyManagedEnvironment)�get_major_minor_version)�WINDOWS)�running_under_virtualenv)�rmtree�display_path�
backup_dir�ask�splitext�format_size�is_installable_dir�normalize_path�renames�get_prog�captured_stdout�
ensure_dir�remove_auth_from_url�check_externally_managed� ConfiguredBuildBackendHookCaller�T�returnc C s4 t j�t j�t�dd�} t j�| �} d�t| t� �S )Nz..zpip {} from {} (python {})) �os�path�join�dirname�__file__�abspath�formatr r )�pip_pkg_dir� r9 �C/usr/local/lib/python3.10/site-packages/pip/_internal/utils/misc.py�get_pip_versionI s �r; �py_version_info.c C sD t | �dk r| dt | � d 7 } nt | �dkr| dd� } td| �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 )r<