B
    `’»d  ã               @   sÚ   d dl mZ d dl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 d dlmZmZ d d	lmZ d d
lmZ d dlmZmZ er¼d dlmZ d dlmZmZ e e ¡Z!G dd„ de
ƒZ"dS )é    )Úabsolute_importN)Ú
WheelCache)Ú
cmdoptions)ÚRequirementCommandÚwith_cleanup)ÚCommandError)Úget_requirement_tracker)Ú
ensure_dirÚnormalize_path)ÚTempDirectory)ÚMYPY_CHECK_RUNNING)ÚbuildÚshould_build_for_wheel_command)ÚValues)ÚAnyÚListc                   s0   e Zd ZdZdZ‡ fdd„Zedd„ ƒZ‡  ZS )ÚWheelCommanda´  
    Build Wheel archives for your requirements and dependencies.

    Wheel is a built-package format, and offers the advantage of not
    recompiling your software during every install. For more details, see the
    wheel docs: https://wheel.readthedocs.io/en/latest/

    Requirements: setuptools>=0.8, and wheel.

    'pip wheel' uses the bdist_wheel setuptools extension from the wheel
    package to build individual wheels.

    zõ
      %prog [options] <requirement specifier> ...
      %prog [options] -r <requirements file> ...
      %prog [options] [-e] <vcs project url> ...
      %prog [options] [-e] <local project path> ...
      %prog [options] <archive url/path> ...c                sl  t t| ƒj||Ž | j}|jddddtjdd | t ¡ ¡ | t 	¡ ¡ | t 
¡ ¡ |jddd	d
dd | t ¡ ¡ | t ¡ ¡ | t ¡ ¡ | t ¡ ¡ | t ¡ ¡ | t ¡ ¡ | t ¡ ¡ | t ¡ ¡ | t ¡ ¡ | t ¡ ¡ | t ¡ ¡ |jddd
d	dd |jddddd | t ¡ ¡ t tj| j¡}| j d|¡ | j d|¡ d S )Nz-wz--wheel-dirÚ	wheel_dirÚdirzLBuild wheels into <dir>, where the default is the current working directory.)ÚdestÚmetavarÚdefaultÚhelpz--build-optionÚbuild_optionsÚoptionsÚappendz9Extra arguments to be supplied to 'setup.py bdist_wheel'.)r   r   Úactionr   z--global-optionÚglobal_optionszZExtra global options to be supplied to the setup.py call before the 'bdist_wheel' command.)r   r   r   r   z--preÚ
store_trueFzYInclude pre-release and development versions. By default, pip only finds stable versions.)r   r   r   r   )Úsuperr   Ú__init__Úcmd_optsÚ
add_optionÚosÚcurdirr   Ú	no_binaryÚonly_binaryÚprefer_binaryÚno_build_isolationÚ
use_pep517Úno_use_pep517ÚconstraintsÚeditableÚrequirementsÚsrcÚignore_requires_pythonÚno_depsÚ	build_dirÚprogress_barÚrequire_hashesÚmake_option_groupÚindex_groupÚparserÚinsert_option_group)ÚselfÚargsÚkwr!   Ú
index_opts)Ú	__class__© ú@/tmp/pip-unpacked-wheel-hu9qqap1/pip/_internal/commands/wheel.pyr    4   sZ    zWheelCommand.__init__c             C   s   t  |¡ |  |¡}|  ||¡}|jp*|j }t|j|jƒ}t	|j
ƒ|_
t|j
ƒ |  tƒ ¡}t|j|ddd}|  ||||¡}	| j||||||j
dd}
| j|
||||j|jd}|  |¡ |j|	dd}dd	„ |j ¡ D ƒ}t|||jpîg |jpög d
\}}x„|D ]|}|jr|jjs t‚|js,t‚yt  |j|j
¡ W n> t!k
r~ } zt" #d|j$|¡ | %|¡ W d d }~X Y nX qW t&|ƒdkrœt'dƒ‚d S )NÚwheelT)ÚdeleteÚkindÚglobally_managedF)Útemp_build_dirr   Úreq_trackerÚsessionÚfinderÚwheel_download_dirÚuse_user_site)ÚpreparerrF   r   Úwheel_cacher/   r)   )Úcheck_supported_wheelsc             S   s   g | ]}t |ƒr|‘qS r=   )r   )Ú.0Úrr=   r=   r>   ú
<listcomp>¤   s    z$WheelCommand.run.<locals>.<listcomp>)rJ   r   r   z Building wheel for %s failed: %sr   z"Failed to build one or more wheels)(r   Úcheck_install_build_globalÚget_default_sessionÚ_build_package_finderÚno_cleanr1   r   Ú	cache_dirÚformat_controlr
   r   r	   Úenter_contextr   r   Úget_requirementsÚmake_requirement_preparerÚmake_resolverr/   r)   Útrace_basic_infoÚresolver-   Úvaluesr   r   r   ÚlinkÚis_wheelÚAssertionErrorÚlocal_file_pathÚshutilÚcopyÚOSErrorÚloggerÚwarningÚnamer   Úlenr   )r8   r   r9   rE   rF   Úbuild_deleterJ   rD   Ú	directoryÚreqsrI   ÚresolverÚrequirement_setÚreqs_to_buildÚbuild_successesÚbuild_failuresÚreqÚer=   r=   r>   Úrunq   sf    







"zWheelCommand.run)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úusager    r   rq   Ú__classcell__r=   r=   )r<   r>   r      s   =r   )#Ú
__future__r   Úloggingr#   r`   Úpip._internal.cacher   Zpip._internal.clir   Úpip._internal.cli.req_commandr   r   Úpip._internal.exceptionsr   Úpip._internal.req.req_trackerr   Úpip._internal.utils.miscr	   r
   Úpip._internal.utils.temp_dirr   Úpip._internal.utils.typingr   Úpip._internal.wheel_builderr   r   Úoptparser   Útypingr   r   Ú	getLoggerrr   rc   r   r=   r=   r=   r>   Ú<module>   s"   
