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 |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/rar0runsd                             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|d|D]}||d}||D]} dj||| dd} || q+q|D](}||d}||D]\} } } dj||| | | |d kr^d nd d } || qLq@td |dS)Nlegacyzpip's legacy dependency resolver does not consider dependency conflicts when selecting packages. This behaviour is the source of the following dependency conflicts.zpip'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.z 2020-resolveryouzyou'll)r-rrdep_name dep_versionr )rr{rnZcriticalr|)rOrrjZ package_setZmissingZ conflictingpartsZ project_namerZ dependencyrrrr+r/r/r0rsJ      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|s'|r.tddStjs8td dSt||d rEtd 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/r0rphs6       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                   =  '