File: //lib/python3/dist-packages/pip/_internal/utils/__pycache__/misc.cpython-310.pyc
o
@%Ne�K � @ s� d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl Z d dl
Z
d dlZd dlm
Z
d dlmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z! d dl"m#Z#m$Z$m%Z% d dl&m'Z' d dl(m)Z) d d l*m+Z+ d d
l,m-Z- d dl.m/Z/ g d�Z0e�1e2�Z3e d
�Z4eee5 e5ef Z6ee7e7e7f Z8ee9eee9 ee9 f f Z:de9fdd�Z;dee7df dee7e7e7f fdd�Z<de9ddfdd�Z=de9fdd�Z>e#de$d�e%d�d�d�de9d e?ddfd!d"��Z@d#edef de9d$e6ddfd%d&�ZAde9de9fd'd(�ZBd�de9d*e9de9fd+d,�ZCd-e9d.ee9 de9fd/d0�ZDd-e9ddfd1d2�ZEd-e9d.ee9 de9fd3d4�ZFd-e9de9fd5d6�ZGd-e9de9fd7d8�ZHd9e9de7fd:d;�ZId<eJde9fd=d>�ZKd?eee deee9 ee7 f fd@dA�ZLde9de?fdBdC�ZMejNfdDedEe7deeO fdFdG�ZPd�de9dHe?de9fdIdJ�ZQde9dee9e9f fdKdL�ZRdMe9dNe9ddfdOdP�ZSde9de?fdQdR�ZTdSedTeddfdUdV�ZUG dWdX� dXe
�ZVe jWdYe9deeV fdZd[��ZXdeeV fd\d]�ZYdeeV fd^d_�ZZd`edaedee fdbdc�Z[dde9deee7 de9fdfdg�Z\d�die9dje9de9fdkdl�Z]die9dee9ee7 f fdmdn�Z^die9de:fdodp�Z_die9de9fdqdr�Z`dse9dtee9geedf f dee9e:f fdudv�Zadie9de:fdwdx�Zbdie9dee9 fdydz�Zcdse9dee9e9ee9e9f f fd{d|�Zddse9de9fd}d~�Zedse9de9fdd��ZfG d�d�� d��Zgd�e9degfd�d��Zhdse9degfd�d��Zid�e?ddfd�d��Zjde?fd�d��Zkd�de9d�e7deee7f fd�d��Zlde?fd�d��Zmd�ee deeeef fd�d��Znd�ee4ge?f d�ee4 deee4 ee4 f fd�d��ZodS )�� N)�StringIO)�filterfalse�tee�zip_longest)�
TracebackType)
�Any�BinaryIO�Callable�ContextManager�Iterable�Iterator�List�Optional�TextIO�Tuple�Type�TypeVar�cast)�retry�stop_after_delay�
wait_fixed)�__version__)�CommandError)�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�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� r3 �:/usr/lib/python3/dist-packages/pip/_internal/utils/misc.py�get_pip_versionD s �r5 �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 )r6 r3 r3 r4 �normalize_version_infoO s
r: r, c
C s` zt �| � W dS ty/ } z|jtjkr|jtjkr$� W Y d}~dS W Y d}~dS d}~ww )z os.path.makedirs without EEXIST.N)r+ �makedirs�OSError�errno�EEXIST� ENOTEMPTY)r, �er3 r3 r4 r'