File: //usr/local/lib/python3.10/dist-packages/pip/_internal/commands/__pycache__/install.cpython-310.pyc
o
��h�u � @ s d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm Z m
Z
d dlmZ d dl
mZ d dlmZ d dlmZ d dlZd dlmZ d d lmZ d d
lmZ d dlmZmZ d dlmZm Z d d
l!m"Z"m#Z#m$Z$ d dl%m&Z& d dl'm(Z( d dl)m*Z* d dl+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA d dlBmCZC d dlDmEZEmFZF d dlGmHZHmIZI e:eJ�ZKG dd� de�ZL d;d<d(d)�ZMd=d*d+�ZN d>d?d2d3�ZOd@d9d:�ZPdS )A� )�annotationsN)�
SUPPRESS_HELP�Values)�Path)�canonicalize_name)�InvalidProxyURL)�
print_json)�
WheelCache)�
cmdoptions)�make_target_python)�RequirementCommand�with_cleanup)�ERROR�SUCCESS)�CommandError�InstallationError�InstallWheelBuildError)�
get_scheme)�get_environment)�InstallationReport)�get_build_tracker)�ConflictDetails�check_install_conflicts)�install_given_reqs)�InstallRequirement�check_legacy_setup_py_options)�WINDOWS��test_writable_dir)� getLogger)�check_externally_managed�
ensure_dir�get_pip_version�(protect_pip_from_modification_on_windows�warn_if_run_as_root�write_output)�
TempDirectory)�running_under_virtualenv�virtualenv_no_global)�build� should_build_for_install_commandc @ sJ e Zd ZdZdZd!dd�Zed"dd
��Zd#dd�Zd$dd�Z d%dd�Z
d S )&�InstallCommandaI
Install packages from:
- PyPI (and other indexes) using requirement specifiers.
- VCS project urls.
- Local project directories.
- Local or remote source archives.
pip also supports installing from "requirements files", which provide
an easy way to specify a whole environment to be installed.
a%
%prog [options] <requirement specifier> [package-index-options] ...
%prog [options] -r <requirements file> [package-index-options] ...
%prog [options] [-e] <vcs project url> ...
%prog [options] [-e] <local project path> ...
%prog [options] <archive url/path> ...�return�Nonec C s� | j �t�� � | j �t�� � | j �t�� � | j �t�� � | j �t�� � | j jdddddd� | j jddd d
d dd� t�| j � | j jd
dddd� | j jdddt d� | j jddd
d dd� | j jddd
d dd� | j �t�
� � | j jdddddd� | j jddddd gd!d"� | j jd#d$dd%d� | j jd&d'd(dd)d� | j �t�� � | j �t�� � | j �t�
� � | j �t�� � | j �t�� � | j �t�� � | j �t�� � | j �t�� � | j jd*dd+d,d-d� | j jd.dd+d/d0� | j jd1dd2d,d3d� | j jd4dd5d,d6d� | j �t�� � | j �t�� � | j �t�� � | j �t�� � | j �t�� � | j �t�� � t�tj| j�}| j�d7|� | j�d7| j � | j jd8d9d:d d;d� d S )<Nz --dry-run�
store_true�dry_runFz�Don't actually install anything, just print what would be. Can be used in combination with --ignore-installed to 'resolve' the requirements.)�action�dest�default�helpz-tz--target�
target_dir�dirz�Install packages into <dir>. By default this will not replace existing files/folders in <dir>. Use --upgrade to replace existing packages in <dir> with new versions.)r1 �metavarr2 r3 z--user�
use_user_sitez�Install to the Python user install directory for your platform. Typically ~/.local/, or %APPDATA%\Python on Windows. (See the Python documentation for site.USER_BASE for full details.))r1 r0 r3 z --no-user�store_falsez--root� root_pathz=Install everything relative to this alternate root directory.z--prefix�prefix_patha[ Installation prefix where lib, bin and other top-level folders are placed. Note that the resulting installation may contain scripts and other resources which reference the Python interpreter of pip, and not that of ``--prefix``. See also the ``--python`` option if the intention is to install packages into another (possibly pip-free) environment.z-Uz --upgrade�upgradez�Upgrade all specified packages to the newest available version. The handling of dependencies depends on the upgrade-strategy used.z--upgrade-strategy�upgrade_strategyzonly-if-needed�eageraG Determines how dependency upgrading should be handled [default: %default]. "eager" - dependencies are upgraded regardless of whether the currently installed version satisfies the requirements of the upgraded package(s). "only-if-needed" - are upgraded only when they do not satisfy the requirements of the upgraded package(s).)r1 r2 �choicesr3 z--force-reinstall�force_reinstallz;Reinstall all packages even if they are already up-to-date.z-Iz--ignore-installed�ignore_installedz�Ignore the installed packages, overwriting them. This can break your system if the existing package is of a different version or was installed with a different package manager!z --compile�compileTz'Compile Python source files to bytecodez--no-compilez.Do not compile Python source files to bytecode)r0 r1 r3 z--no-warn-script-location�warn_script_locationz0Do not warn when installing scripts outside PATHz--no-warn-conflicts�warn_about_conflictsz%Do not warn about broken dependenciesr z--report�json_report_file�fileaW Generate a JSON file describing what pip did to install the provided requirements. Can be used in combination with --dry-run and --ignore-installed to 'resolve' the requirements. When - is used as file name it writes to stdout. When writing to stdout, please combine with the --quiet option to avoid mixing pip logging output with JSON output.)�cmd_opts�
add_optionr
�requirements�constraints�no_deps�pre�editable�add_target_python_optionsr �src�ignore_requires_python�no_build_isolation�
use_pep517�
no_use_pep517�check_build_deps�override_externally_managed�config_settings�global_options� no_binary�only_binary�
prefer_binary�require_hashes�progress_bar�root_user_action�make_option_group�index_group�parser�insert_option_group)�self�
index_opts� rc �I/usr/local/lib/python3.10/dist-packages/pip/_internal/commands/install.py�add_optionsW s ��
��������
�����
�zInstallCommand.add_options�optionsr �args� list[str]�intc -
C s� |j r|jd urtd��|jo|j o!|jd u o!|jd u o!|jd u }|r*|js*t� d}|j r2|j
}tj|dd� t
�dt� � t|j |j|j|j|jd�|_ d }d }|jr�d|_tj�|j�|_tj�|j�rstj�|j�sstd��tdd �}|j}| �|� |jp�g }| �|�}t|�} | j||| |jd
�}
| �t� �}t|j ddd�}�z�| �!|||
|�}
t"||
� t#|j$�}|
D ]}d|_%q�| j&|||||
|j | j'd
�}| j(||
|||j |j|j|j)||j*|j+d�}| �,|
� |j-|
|j d�}|j�r0t.|j/�}|jdk�rt0|�1� d� n$t2|jddd��}t3j4|�1� |ddd� W d � n 1 �s+w Y |j�rQt5dd� |j/D ��}|�rNt6dd�7dd� |D ��� t8W S z|�9d�}W n t:�yd d}Y nw |j;d u }t<|d� dd � |j/D �}t=||dg |d!�\}}|�r�t>|��|�?|�}d }|j@ �o�|jA}|�r�| �B|�}|jC}|j�s�|j�r�d}tD|||j||j||j |jE|jFd"� }tG|j ||j|j|jd#�} tH| �}!|jItJ�Kd$�d%� g }"i }#|!�L� D ] }$|$jM|#|$jN<