c t d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl Z d dl
Z
d dlZd dlZ
d dlmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ d dlmZ d d l m!Z!m"Z" d d
l#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z. d d
l/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9 d dl:m;Z; g dZ< ej= e> Z? e)d Z@eAeBeC eCe"f ZDeAeEeEeEf ZFeAeGeAe'eG e'eG f f ZHe&e!eeCge$f ZIe&e!eeDge$f ZJdZKddZLddZMddZNdd ZO e9d!d"# ddd* ZPdd-ZQdd.ZReRd/dd6ZSdd7ZTddd:ZUdd>ZVdd?ZWdd@ZXddAZYddBZZddEZ[ddHZ\ddLZ]ddMZ^eKfddRZ_dddUZ`ddWZaddZZbdd[Zcdd^Zd G d_ d`e ZedddZfddhZgdddlZhddnZiddpZjddqZkddvZlddwZmddyZndd{Zodd|Zpdd}ZqddZr edS G d d ZsddZtddZuddZvddZwddZxdddZyddZzddZ{ G d de. Z|ddZ}dS ) )annotationsN) GeneratorIterableIteratorMappingSequence) dataclass)partial)StringIO)filterfalseteezip_longest)Path)FunctionType
TracebackType)AnyBinaryIOCallableOptionalTextIOTypeVarcast)Requirement)BuildBackendHookCaller)__version__)CommandErrorExternallyManagedEnvironment)get_major_minor_version)WINDOWS)retry)running_under_virtualenv)rmtreedisplay_path
backup_dirasksplitextformat_sizeis_installable_dirnormalize_pathrenamesget_prog
ensure_dirremove_auth_from_urlcheck_externally_managed ConfiguredBuildBackendHookCallerT returnstrc t j t j t dd } t j | } dt d| dt dS )Nz..zpip z from z (python ))ospathjoindirname__file__abspathr r )pip_pkg_dirs j/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/pip/_internal/utils/misc.pyget_pip_versionr> F sb ',,rwx88$EEK'//+..KW+WW[WW;R;T;TWWWW py_version_infotuple[int, ...]tuple[int, int, int]c t | dk r| dt | z
dz z
} nt | dk 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 NVersionInfo)lenr )r@ s r= normalize_version_inforG M sf ?aAO 4 44<< _ ! !)"1"-
///r? r7 Nonec t j | dS # t $ r<}|j t j k r|j t j k r Y d}~dS Y d}~dS d}~ww xY w)z os.path.makedirs without EEXIST.N)r6 makedirsOSErrorerrnoEEXIST ENOTEMPTY)r7 es r= r, r, ` s
D 7el""qw%/'A'A #"""""'A'A'A'A'A'As
A+AAc t j t j d } | dv rt j dS | S # t t t f$ r Y nw xY wdS )Nr )z__main__.pyz-cz -m pippip) r6 r7 basenamesysargv
executableAttributeError TypeError
IndexError)progs r= r+ r+ j sp
w,,(((n----KIz2
5s AA A A A rD g ?)stop_after_delaywaitFdir
ignore_errorsboolonexcOnExc | Nonec |rt }|t }t t | }t j dk rt
j | | d S t
j | | d S )Nr_ )rD )onerror)_onerror_ignore_onerror_reraiser
rmtree_errorhandlerrS version_infoshutilr" )r\ r] r_ handlers r= r" r" w sp } 0>>>G
7""
c))))))
c7++++++r? _argsr c d S N rk s r= re re s Dr? c rm rn ro s r= rf rf s r? rb funcr r exc_infoExcInfo | BaseExceptionOnExcc n t j | j }n# t $ r Y dS w xY w|t j z sQ t j ||t j z | | dS # t $ r Y nw xY w# t $ r Y nw xY wt
|t s|\ }}} || || dS )a1
`rmtree` error handler to 'force' a file remove (i.e. like `rm -f`).
* If a file is readonly then it's write flag is set and operation is
retried.
* `onerror` is the original callback from `rmtree(... onerror=onerror)`
that is chained at the end if the "rm -f" still fails.
N)r6 statst_moderK S_IWRITEchmod
isinstance
BaseException)rq r7 rr r_ rw _s r= rg rg s '$--' T]"
HT7T]2333
T
D h
.. "!8Q E$hs/
**"A= A- -
A:9A:=
B
B
c D t j t j | } | t j t j j z r+d| t t j d z } | S )zTGives the display value for a given path, making it relative to cwd
if possible..N)r6 r7 normcaser;
startswithgetcwdseprF r7 s r= r# r# sr 7BGOOD1122Dry{{RW[011 .T#bikk**,,--Kr? .bakextc d}|}t j | |z r9|dz
}|t | z }t j | |z 9| |z S )z\Figure out the name of a directory to back up the given dir to
(adding .bak, .bak2, etc) )r6 r7 existsr3 )r\ r n extensions r= r$ r$ sh
AI
'..y
)
) ! Q#a&&L
'..y
)
) ! ?r? messageoptions
Iterable[str]c t j dd D ]
}||v r|c S t | | S )NPIP_EXISTS_ACTION )r6 environgetsplitr% )r r actions r= ask_path_existsr sW *..!4b99??AA WMMM w r? c h t j d rt d| dS )z&Raise an error if no input is allowed.PIP_NO_INPUTz5No input was expected ($PIP_NO_INPUT set); question: N)r6 r r Exceptionr s r= _check_no_inputr s? z~~n%%
MGMM
r? c t | t | }| }||vr7t d |d | n|S )z@Ask the message interactively, with the given possible responsesr z>Your response ({!r}) was not one of the expected responses: {}z, )r inputstriplowerprintformatr8 )r r responses r= r% r% s
>>>>##))++7""VHdii&8&899
O
r? c > t | t | S )zAsk for input interactively.)r r r s r= ask_inputr s G>>r? c H t | t j | S )z!Ask for a password interactively.)r getpassr s r= ask_passwordr s G?7###r? valintc f | } | dv rdS | dv rdS t d| )zConvert a string representation of truth to true (1) or false (0).
True values are 'y', 'yes', 't', 'true', 'on', and '1'; false values
are 'n', 'no', 'f', 'false', 'off', and '0'. Raises ValueError if
'val' is anything else.
)yyesttrueon1r )r noffalseoff0r zinvalid truth value )r
ValueError)r s r= strtoboolr sJ ))++C
222q 5 5 5q777888r? bytesfloatc | dk r| dz dz ddS | dk rt | dz dS | dk r | dz ddS t | dS ) Ni@B g @@i z.1fz MBi' z kBz bytes)r )r s r= r' r' s {&.4'00000 edl##(((( &.)))))e**$$$$r? rowsIterable[Iterable[Any]]tuple[list[str], list[int]]c l d | D } d t | ddiD fd| D }|fS )zReturn a list of formatted rows and a list of column sizes.
For example::
>>> tabulate([['foobar', 2000], [0xdeadbeef]])
(['foobar 2000', '3735928559'], [10, 4])
c R g | ]$}t t t | %S rn )tuplemapr3 ).0rows r=