U
    Zޫ^                     @   s   d dl mZ d dlZd dl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mZmZ d dlmZ eeZG d	d
 d
e	ZdS )    )absolute_importN)
cmdoptions)make_target_python)RequirementCommandwith_cleanup)get_requirement_tracker)
ensure_dirnormalize_pathwrite_output)TempDirectoryc                       s0   e Zd ZdZdZ fddZedd Z  Z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> ...c              
      s@  t t| j|| | j}|t  |t  |t  |t	  |t
  |t  |t  |t  |t  |t  |t  |t  |t  |t  |t  |jddddddtjdd t| ttj| j}| jd	| | jd	| d S )
Nz-dz--destz--destination-dirz--destination-directorydownload_dirdirzDownload packages into <dir>.)destmetavardefaulthelpr   )superr   __init__cmd_opts
add_optionr   constraintsrequirements	build_dirno_depsglobal_options	no_binaryonly_binaryprefer_binarysrcprerequire_hashesprogress_barno_build_isolation
use_pep517no_use_pep517oscurdiradd_target_python_optionsmake_option_groupindex_groupparserinsert_option_group)selfargskwr   
index_opts	__class__ C/tmp/pip-unpacked-wheel-huh_82lg/pip/_internal/commands/download.pyr   '   sD       
zDownloadCommand.__init__c              	   C   s   d|_ g |_t| t|j|_t|j | |}t|}| j	|||d}|j
pX|j }| t }t|j|ddd}| ||||}	| j||||||jdd}
| j|
|||jd}| | |j|	dd}d	d
d |j D }|rtd| |S )NT)optionssessiontarget_pythondownload)deletekindglobally_managedF)temp_build_dirr5   req_trackerr6   finderr   use_user_site)preparerr>   r5   py_version_info)check_supported_wheels c                 S   s   g | ]}|j r|jqS r3   )successfully_downloadedname).0reqr3   r3   r4   
<listcomp>   s   z'DownloadCommand.run.<locals>.<listcomp>zSuccessfully downloaded %s)ignore_installed	editablesr   check_dist_restrictionr	   r   r   get_default_sessionr   _build_package_finderno_cleanr   enter_contextr   r   Zget_requirementsmake_requirement_preparermake_resolverpython_versiontrace_basic_inforesolvejoinr   valuesr
   )r-   r5   r.   r6   r7   r>   build_deleter=   	directoryreqsr@   resolverrequirement_set
downloadedr3   r3   r4   runN   s^    




 

zDownloadCommand.run)	__name__
__module____qualname____doc__usager   r   r]   __classcell__r3   r3   r1   r4   r      s
   'r   )
__future__r   loggingr&   Zpip._internal.clir   Zpip._internal.cli.cmdoptionsr   pip._internal.cli.req_commandr   r   pip._internal.req.req_trackerr   pip._internal.utils.miscr   r	   r
   pip._internal.utils.temp_dirr   	getLoggerr^   loggerr   r3   r3   r3   r4   <module>   s   
