OwlCyberSecurity - MANAGER
Edit File: install.cpython-39.pyc
a �F�fEq � @ s d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZ d dl m Z mZ d dlm Z d dlmZ d dlmZ d dlmZ d dlmZmZ d d lmZmZ d d lmZmZ d dlmZ d dlm Z d d l!m"Z" d dl#m$Z$ d dl%m&Z&m'Z' d dl(m)Z) d dl*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 d dl:m;Z; d dl<m=Z=m>Z> d dl?m@Z@mAZA e2eB�ZCG dd� de�ZDd(eEeeF eeF eEeeF e eF d�dd�ZGeeF eEeEd�d d!�ZHd)eeE eeF eeF eeF eEeEd"�d#d$�ZIeJeEeEeFd%�d&d'�ZKdS )*� N)� SUPPRESS_HELP�Values)�List�Optional)� print_json)� WheelCache)� cmdoptions)�make_target_python)�RequirementCommand�with_cleanup)�ERROR�SUCCESS)�CommandError�InstallationError)� 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 @ sz e Zd ZdZdZdd�dd�Zeeee e d�dd ��Ze ee dd �dd�Zee ee d �dd�Zee dd�dd�ZdS )�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> ...N)�returnc 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.)r- �metavarr. r/ 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.))r- r, r/ 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-neededZeageraG 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).)r- r. �choicesr/ 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)r, r- r/ 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)�selfZ index_opts� r] �`/home/gouroczh/virtualenv/test/3.9/lib/python3.9/site-packages/pip/_internal/commands/install.py�add_optionsH s �� �������� ������zInstallCommand.add_options)�options�argsr) c + C s� |j r|jd urtd��|jo"|j oB|jd u oB|jd u oB|jd u }|rT|jsTt� d}|j rd|j }tj|dd� t �dt� � t|j |j|j|j|jd�|_ d }d }|j�rd|_tj�|j�|_tj�|j�r�tj�|j�s�td��tdd �}|j}| �|� |j�pg }| �|�}t|�} | j||| |jd �} | �t� �}t|j ddd�}�z| �!||| |�} t"|| � t#|j$�}| D ]}d|_%�q~| j&||||| |j | j'd �}| j(|| |||j |j|j|j)||j*d� }| �+| � |j,| |j d�}|j�rbt-|j.�}|jdk�rt/|�0� d� nHt1|jddd��&}t2j3|�0� |ddd� W d � n1 �sX0 Y |j�r�t4dd� |j.D ��}|�r�t5dd�6dd� |D ��� t7W S z|�8d�}W n t9�y� d}Y n0 |j:d u }|�r�dd l;}t<|d� d d!� |j=�>� D �}t?||dg |d"�\}}|�r<t@d#�Ad$�6d%d� |D �����|�B|�}d }|jC �oX|jD}|�rj| �E|�}|jF}|j�s�|j�r�d}tG|||j||j||j |jHd&�} tI|j ||j|j|jd'�}!tJ|!�}"| jKtL�Md(�d)� g }#| D ]T}$|$jN}%z(|"�O|%�}&|&d u�r|%� d|&jP� �}%W n tQ�y& Y n0 |#�R|%� �q�|d u�rT| jS|| �T|�d*� d�6|#�}'|'�rnt5d+|'� W nP tU�y� }( z6| j'd,k})tV|(|)|j �}*t jW|*|)d-� tXW Y d }(~(S d }(~(0 0 |j�r�|�s�J �| �Y|j||j � |jZd.k�r�t[� t7S )/Nz'Can not combine '--user' and '--target'zto-satisfy-onlyT)�check_targetzUsing %s)r6 r0 r5 � isolated_modez=Target path exists but is not a directory, will not continue.�target)�kind)r` �session� target_pythonrJ �install)�deletere �globally_managed)Ztemp_build_dirr` � build_trackerrf �finderr3 � verbosity) �preparerrl r` �wheel_cacher3 r; rJ r: r8 rL )Zcheck_supported_wheels�-)�data�wzutf-8)�encoding� F)�indent�ensure_asciic s s"