U
    õ¸~f™  ã                   @   s²   d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZ d d	lmZ d d
lmZmZmZ d dlmZ e  e¡ZG dd„ deƒZdS )é    N)ÚValues)ÚList)Ú
cmdoptions)Úmake_target_python)ÚRequirementCommandÚwith_cleanup)ÚSUCCESS)Úget_build_tracker)Úcheck_legacy_setup_py_options)Ú
ensure_dirÚnormalize_pathÚwrite_output)ÚTempDirectoryc                   @   s<   e Zd ZdZdZddœdd„Zeeee	 e
dœdd	„ƒZdS )
ÚDownloadCommandaL  
    Download packages from:

    - PyPI (and other indexes) using requirement specifiers.
    - VCS project urls.
    - Local project directories.
    - Local or remote source archives.

    pip also supports downloading from "requirements files", which provide
    an easy way to specify a whole environment to be downloaded.
    a  
      %prog [options] <requirement specifier> [package-index-options] ...
      %prog [options] -r <requirements file> [package-index-options] ...
      %prog [options] <vcs project url> ...
      %prog [options] <local project path> ...
      %prog [options] <archive url/path> ...N)Úreturnc              
   C   s\  | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t 	¡ ¡ | j  t 
¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j  t ¡ ¡ | j jddddddtjdd t | j ¡ t tj| j¡}| j d	|¡ | j d	| j ¡ d S )
Nz-dz--destz--destination-dirz--destination-directoryÚdownload_dirÚdirzDownload packages into <dir>.)ÚdestÚmetavarÚdefaultÚhelpr   )Úcmd_optsÚ
add_optionr   ÚconstraintsÚrequirementsÚno_depsÚglobal_optionsÚ	no_binaryÚonly_binaryÚprefer_binaryÚsrcÚpreÚrequire_hashesÚprogress_barÚno_build_isolationÚ
use_pep517Úno_use_pep517Úcheck_build_depsÚignore_requires_pythonÚosÚcurdirÚadd_target_python_optionsÚmake_option_groupÚindex_groupÚparserÚinsert_option_group)ÚselfÚ
index_opts© r2   úR/home/mars/bis/venv/lib/python3.8/site-packages/pip/_internal/commands/download.pyÚadd_options&   sB    øþzDownloadCommand.add_options)ÚoptionsÚargsr   c              
   C   sJ  d|_ g |_t |¡ t|jƒ|_t|jƒ |  |¡}t|ƒ}| j	||||j
d}|  tƒ ¡}t|j ddd}|  ||||¡}t||ƒ | j||||||jd| jd}	| j|	|||j
|j|jd}
|  |¡ |
j|dd}g }|j ¡ D ]4}|jd krê|jd k	st‚|	 |¡ | |j¡ qê|	 |j ¡ ¡ |rFt d	d
 !|¡ƒ t"S )NT)r5   ÚsessionÚtarget_pythonr(   Údownload)ÚdeleteÚkindÚglobally_managedF)Útemp_build_dirr5   Úbuild_trackerr7   Úfinderr   Úuse_user_siteÚ	verbosity)Úpreparerr?   r5   r(   r%   Úpy_version_info)Úcheck_supported_wheelszSuccessfully downloaded %sú )#Úignore_installedÚ	editablesr   Úcheck_dist_restrictionr   r   r   Úget_default_sessionr   Ú_build_package_finderr(   Úenter_contextr	   r   Úno_cleanÚget_requirementsr
   Úmake_requirement_preparerrA   Úmake_resolverr%   Úpython_versionÚtrace_basic_infoÚresolver   ÚvaluesÚsatisfied_byÚnameÚAssertionErrorÚsave_linked_requirementÚappendÚ prepare_linked_requirements_morer   Újoinr   )r0   r5   r6   r7   r8   r?   r>   Ú	directoryÚreqsrB   ÚresolverÚrequirement_setZ
downloadedÚreqr2   r2   r3   ÚrunM   sf    


üý
øú	


zDownloadCommand.run)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úusager4   r   r   r   ÚstrÚintr`   r2   r2   r2   r3   r      s
   'r   )Úloggingr)   Úoptparser   Útypingr   Zpip._internal.clir   Zpip._internal.cli.cmdoptionsr   Úpip._internal.cli.req_commandr   r   Úpip._internal.cli.status_codesr   Ú,pip._internal.operations.build.build_trackerr	   Zpip._internal.req.req_installr
   Úpip._internal.utils.miscr   r   r   Úpip._internal.utils.temp_dirr   Ú	getLoggerra   Úloggerr   r2   r2   r2   r3   Ú<module>   s   
