o Ecl@s~ddlZddlZddlZddlZddlZddlmZmZddlm Z m Z m Z ddl m Z ddlmZddlmZddlmZddlmZmZmZdd lmZmZdd lmZmZdd lmZdd l m!Z!dd l"m#Z#ddl$m%Z%m&Z&ddl'm(Z(ddl)m*Z*ddl+m,Z,ddl-m.Z.ddl/m0Z0ddl1m2Z2ddl3m4Z4ddl5m6Z6m7Z7m8Z8m9Z9ddl:m;Z;ddlZ>ddl?m@Z@mAZAmBZBe4eCZDde#de@fddZEGdddeZF   d:d!eGd"e eHd#e eHd$eGd%e eHde eHf d&d'ZId#e eHd$eGdeGfd(d)ZJ    d;d*e eGd+e eHd,e eHd-e eHd.eGdeGf d/d0ZKd1e e*d2e e eHddfd3d4ZLd5eMd6eGd7eGdeHfd8d9ZNdS)<N) SUPPRESS_HELPValues)IterableListOptional)canonicalize_name) WheelCache) cmdoptions)make_target_python)RequirementCommandwarn_if_run_as_root with_cleanup)ERRORSUCCESS) CommandErrorInstallationError) get_scheme)get_environment) FormatControl)ConflictDetailscheck_install_conflicts)install_given_reqs)InstallRequirement)get_requirement_tracker)WINDOWS)parse_distutils_argstest_writable_dir) getLogger) ensure_dirget_pip_version(protect_pip_from_modification_on_windows write_output) TempDirectory)running_under_virtualenvvirtualenv_no_global)BinaryAllowedPredicatebuild should_build_for_install_commandformat_controlreturncsdtdtffdd }|S)Nreqr*cs t|jpd}|}d|vS)NZbinary)rnameZget_allowed_formats)r+Zcanonical_nameZallowed_formatsr)Q/opt/alt/python310/lib/python3.10/site-packages/pip/_internal/commands/install.pycheck_binary_allowed5s z6get_check_binary_allowed..check_binary_allowed)rbool)r)r1r/r.r0get_check_binary_allowed4sr3c@seZdZdZdZdddZededee de fd d Z d e d e d e ddfddZdeedeefddZdede ddfddZdS)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] [package-index-options] ... %prog [options] -r [package-index-options] ... %prog [options] [-e] ... %prog [options] [-e] ... %prog [options] ...r*NcCsj|jt|jt|jt|jt|jt|jjdddddddt|j|jjddd d d |jjd dd t d |jjdddddd|jjdddddd|jt |jjdddd dd |jjdddddgdd|jjddd d d |jjd!d"d#d d$d |jt |jt |jt |jt|jt|jt|jjd%d d&d'd(d)|jjd*d d&d+d,|jjd-d d.d'd/d)|jjd0d d1d'd2d)|jt|jt|jt|jt|jtttj|j}|jd3||jd3|jdS)4Nz-tz--target target_dirdirzInstall packages into . By default this will not replace existing files/folders in . Use --upgrade to replace existing packages in with new versions.)destmetavardefaulthelpz--user use_user_site store_truezInstall 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.))r7actionr:z --no-userZ store_falsez--root root_pathz=Install everything relative to this alternate root directory.z--prefix prefix_pathzIInstallation prefix where lib, bin and other top-level folders are placedz-Uz --upgradeupgradezUpgrade all specified packages to the newest available version. The handling of dependencies depends on the upgrade-strategy used.z--upgrade-strategyupgrade_strategyzonly-if-neededZeageraGDetermines 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).)r7r9choicesr:z--force-reinstallforce_reinstallz;Reinstall all packages even if they are already up-to-date.z-Iz--ignore-installedignore_installedzIgnore 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 --compilecompileTz'Compile Python source files to bytecode)r=r7r9r:z --no-compilez.Do not compile Python source files to bytecode)r=r7r:z--no-warn-script-locationwarn_script_locationz0Do not warn when installing scripts outside PATHz--no-warn-conflictswarn_about_conflictsz%Do not warn about broken dependenciesr)Zcmd_optsZ add_optionr requirementsZ constraintsZno_depsZpreZeditableZadd_target_python_optionsrsrcignore_requires_pythonZno_build_isolation use_pep517Z no_use_pep517install_optionsglobal_optionsZ no_binaryZ only_binaryZ prefer_binaryZrequire_hashesZ progress_barZmake_option_groupZ index_groupparserZinsert_option_group)selfZ index_optsr/r/r0 add_optionsQs     zInstallCommand.add_optionsoptionsargsc) s*|jr |jdur tdt|d}|jr|j}tj|dd|jp$g}t dt t |j|j |j|j|jd|_d}d}|jrld|_tj|j|_tj|jr_tj|js_tdtdd }|j}|||jppg}||}t|} |j||| |jd } t|j|j} |t } t|j! d dd } z:|"||| |}|D]}d|_#qt$||j|j%| || || |jd }|j&|| || |j|j|j|j'||j(d }|)| |j*||j d}z|+d}Wn t,yd}Ynw|j-du}t.|dt/| jfdd|j01D}t2|| dggd\}}dd|D}|r-t3d4d5||D] }|j(s8d|_6q/|7|}d}|j8 oH|j9}|rQ|:|}|j;}|js\|j r^d}t<||||j||j ||j|j=d }t>|j||j|j |jd}t?|} |j@tABddg}!|D]*}"|"jC}#z| D|#}$|$dur|#d|$jE}#Wn tFyYnw|!G|#q|dur|jH||I|dd 5|!}%|%rtJd!|%Wn(tKy}&z|jLd"k}'tM|&|'|j}(t jN|(|'d#tOWYd}&~&Sd}&~&ww|jr|sJ|P|j||jtQtRS)$Nz'Can not combine '--user' and '--target'zto-satisfy-onlyT)Z check_targetzUsing %s)r?r5r> isolated_modez=Target path exists but is not a directory, will not continue.target)kind)rQsession target_pythonrJZinstall)deleterUZglobally_managed)Ztemp_build_dirrQ req_trackerrVfinderr;) preparerrZrQ wheel_cacher;rDrJrCrArK)Zcheck_supported_wheelsZpipF) modifying_pipcsg|] }t|r|qSr/)r(.0rr1r/r0 bs z&InstallCommand.run..)r\ZverifyZ build_optionsrMcSsg|]}|jr|jqSr/)rKr-r^r/r/r0rbrs zYCould not build wheels for {}, which is required to install pyproject.toml-based projectsz, i )roothomeprefixrFr;Z pycompile)userrdrcreisolatedr-)key-)resolver_variant zSuccessfully installed %s)exc_info)Sr;r5rr Zcheck_install_build_globalr@rAZcheck_dist_restrictionrLloggerverboser decide_user_installr?r>rSrDospathabspathexistsisdirr# enter_contextrMZget_default_sessionr Z_build_package_finderrJrZ cache_dirr)rZno_cleanZget_requirementsZpermit_editable_wheels'reject_location_related_install_optionsZmake_requirement_preparerZ make_resolverrCrKZtrace_basic_inforesolveZget_requirementKeyErrorZ satisfied_byr!r3rHvaluesr'rformatjoinZlegacy_install_reasonZget_installation_orderZignore_dependenciesrG_determine_conflictsrFrrEget_lib_location_guessesrsortoperator attrgetterr-Zget_distributionversion Exceptionappend_warn_about_conflictsZdetermine_resolver_variantr"OSError verbositycreate_os_error_messageerrorr_handle_target_dirr r))rOrQrRrArLtarget_temp_dirZtarget_temp_dir_pathrMrVrWrZr\rYZ directoryZreqsr+r[ZresolverZrequirement_setZpip_reqr]Z reqs_to_build_Zbuild_failuresZpep517_build_failure_namesr` to_installZ conflictsZshould_warn_about_conflictsrFZ installedZ lib_locationsenvitemsresultitemZinstalled_distZinstalled_descrshow_tracebackmessager/rar0runsf                             zInstallCommand.runr5rr@c sHt|g}td|jd}|j}|j}|j}tj|r!||tj|r0||kr0||tj|r;|||D]d} t | D]\} | |kratj || t fdd|ddDraqDtj || } tj| r|swt d| qDtj| rt d| qDtj| rt| nt| ttj | | | qDq=dS)Nr,)rdc3s|]}|VqdSN) startswith)r_sddirr/r0 sz4InstallCommand._handle_target_dir..zKTarget directory %s already exists. Specify --upgrade to force replacement.zTarget directory %s already exists and is a link. pip will not automatically replace links, please remove if replacement is desired.)rrrrpurelibplatlibdatarqrtrlistdirr|anyrnZwarningislinkrushutilZrmtreeremoveZmove) rOr5rr@Z lib_dir_listschemeZ purelib_dirZ platlib_dirZdata_dirZlib_dirrZtarget_item_dirr/rr0rsL          z!InstallCommand._handle_target_dirrcCs*zt|WStytdYdSw)NzwError while checking for conflicts. Please file an issue on pip's issue tracker: https://github.com/pypa/pip/issues/new)rrrn exception)rOrr/r/r0r} s  z#InstallCommand._determine_conflictsconflict_detailsrjc Cs|\}\}}|s |s dSg}|dkr|dn |dksJ|d|D]}||d}||D]} dj||| dd} || q1q%|D](}||d}||D]\} } } d j||| | | |dkrdd nd d } || qRqFtd |dS)Nlegacyzpip's legacy dependency resolver does not consider dependency conflicts when selecting packages. This behaviour is the source of the following dependency conflicts.z 2020-resolverzpip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.rz@{name} {version} requires {requirement}, which is not installed.rl)r-r requirementzg{name} {version} requires {requirement}, but {you} have {dep_name} {dep_version} which is incompatible.youzyou'll)r-rrdep_name dep_versionr )rr{rnZcriticalr|)rOrrjZ package_setZmissingZ conflictingpartsZ project_namerZ dependencyrrrr+r/r/r0rsL       z$InstallCommand._warn_about_conflicts)r*N)__name__ __module__ __qualname____doc__ZusagerPr rrstrintrr#r2rrrrr}rr/r/r/r0r4=s:  f 6  r4FrfrdrcrgrecCs td|||||d}|j|jgS)Nr,)rfrdrcrgre)rrr)rfrdrcrgrerr/r/r0r~Os r~cCstddtt||dDS)Ncss|]}t|VqdSrr)r_dr/r/r0rbs  z)site_packages_writable..rcrg)allsetr~rr/r/r0site_packages_writableasrr;r?r5r>rScCs|dur |s tddS|r#|rtdtrtdtddS|dus)J|s-|r4tddStjs>td dSt||d rKtd dStd dS) aZDetermine whether to do a user install based on the input options. If use_user_site is False, no additional checks are done. If use_user_site is True, it is checked for compatibility with other options. If use_user_site is None, the default behaviour depends on the environment, which is provided by the other arguments. Nz$Non-user install by explicit requestFzVCan not combine '--user' and '--prefix' as they imply different installation locationszZCan not perform a '--user' install. User site-packages are not visible in this virtualenv.z User install by explicit requestTz3Non-user install due to --prefix or --target optionz4Non-user install because user site-packages disabledrz0Non-user install because site-packages writeablezMDefaulting to user installation because normal site-packages is not writeable) rndebugrr%rsiteENABLE_USER_SITErinfo)r;r?r5r>rSr/r/r0rphs8        rprHrQcCsdttdttfdd}g}|D]}|j}t|}|r)|d|||q|r>t|}|r>|d|||sBdStdd |) zIf any location-changing --install-option arguments were passed for requirements or on the command-line, then show a deprecation warning. option_namesr*cSsdd|DS)NcSsg|] }d|ddqS)z--{}rri)r{replace)r_r-r/r/r0rbszSreject_location_related_install_options..format_options..r/)rr/r/r0format_optionssz?reject_location_related_install_options..format_optionsz {!r} from {}z{!r} from command lineNzLocation-changing options found in --install-option: {}. This is unsupported, use pip-level options like --user, --prefix, --root, and --target instead.z; ) rrrrLrrr{keysrr|)rHrQrZ offendersrrLZlocation_optionsr/r/r0rws0  rwrrusing_user_sitecCsg}|d|s|d|t|n|d|dd7<|jtjkrGd}d}ts=|s=||d|gn|||d tr^|jtjkr^|j r^t |j d kr^|d d | dS) zrFormat an error message for an OSError It may occur anytime during the execution of the install command. z,Could not install packages due to an OSErrorz: .rrz"Consider using the `--user` optionzCheck the permissionsz or z. izHINT: This error might have occurred since this system does not have Windows Long Path support enabled. You can find information on how to enable this at https://pip.pypa.io/warnings/enable-long-paths r,) rrerrnoZEACCESr$extendlowerrENOENTfilenamelenr|strip)rrrrZuser_option_partZpermissions_partr/r/r0rs>         r)FNNFN)NNNF)OrrrqrrZoptparserrtypingrrrZpip._vendor.packaging.utilsrZpip._internal.cacherZpip._internal.clir Zpip._internal.cli.cmdoptionsr Zpip._internal.cli.req_commandr r r Zpip._internal.cli.status_codesrrZpip._internal.exceptionsrrZpip._internal.locationsrZpip._internal.metadatarZ#pip._internal.models.format_controlrZpip._internal.operations.checkrrZpip._internal.reqrZpip._internal.req.req_installrZpip._internal.req.req_trackerrZpip._internal.utils.compatrZ"pip._internal.utils.distutils_argsrZpip._internal.utils.filesystemrZpip._internal.utils.loggingrZpip._internal.utils.miscrr r!r"Zpip._internal.utils.temp_dirr#Zpip._internal.utils.virtualenvr$r%Zpip._internal.wheel_builderr&r'r(rrnr3r4r2rr~rrprwrrr/r/r/r0s                   =  '