3
[                 @   s   d Z ddlZddlZddlZddlmZmZ ddlm	Z	m
Z ddlZddlmZ ddlZddlZddlmZ ddlZddlmZ dd	lmZ dd
lmZ ejeZdd Zdd Zdd ZdddZ dddddZ!dd Z"edkre   dS )zHCheck a project and backend by attempting to build using PEP 517 hooks.
    N)isfilejoin)	TomlErrorload)CalledProcessError)mkdtemp   )enable_colourful_output)BuildEnvironment)Pep517HookCallerc          -   C   s  t  z}y|j| j tjd W n tk
rB   tjd dS X y| ji }tjd| W n   tjddd dS y|j| tjd W n tk
r   tjd	 dS X t }tjd
| zy| j	|i }tjd| W n   tjddd dS |j
dstjd| dS t||}t|r8tjd| ntjd| dS tj|r`tjd ntjd dS W d tj| X dS Q R X d S )Nz#Installed static build dependenciesz+Failed to install static build dependenciesFzGot build requires: %sz'Failure in get_requires_for_build_sdistT)exc_infoz$Installed dynamic build dependenciesz,Failed to install dynamic build dependencieszTrying to build sdist in %szbuild_sdist returned %rzFailure in build_sdistz.tar.gzz*Filename %s doesn't have .tar.gz extensionzOutput file %s existszOutput file %s does not existzOutput file is a tar filezOutput file is not a tar file)r
   pip_installbuild_sys_requiresloginfor   errorZget_requires_for_build_sdistr   Zbuild_sdistendswithpjoinr   tarfile
is_tarfileshutilrmtree)hooksenvreqstdfilenamepath r   9/tmp/pip-install-65viz3iy/pip/pip/_vendor/pep517/check.pycheck_build_sdist   sT    







r    c          -   C   s  t  z}y|j| j tjd W n tk
rB   tjd dS X y| ji }tjd| W n   tjddd dS y|j| tjd W n tk
r   tjd	 dS X t }tjd
| zy| j	|i }tjd| W n   tjddd dS |j
dstjd| dS t||}t|r8tjd| ntjd| dS tj|r`tjd ntjd dS W d tj| X dS Q R X d S )Nz#Installed static build dependenciesz+Failed to install static build dependenciesFzGot build requires: %sz'Failure in get_requires_for_build_sdistT)r   z$Installed dynamic build dependenciesz,Failed to install dynamic build dependencieszTrying to build wheel in %szbuild_wheel returned %rzFailure in build_wheelz.whlz'Filename %s doesn't have .whl extensionzOutput file %s existszOutput file %s does not existzOutput file is a zip filezOutput file is not a zip file)r
   r   r   r   r   r   r   Zget_requires_for_build_wheelr   Zbuild_wheelr   r   r   zipfile
is_zipfiler   r   )r   r   r   r   r   r   r   r   r   check_build_wheelL   sT    







r#   c       
      C   s   t | d}t|rtjd ntjd dS yBt|}t|}W d Q R X |d }|d }|d }tjd W n& ttfk
r   tjd	d
d dS X t	| |}t
|}t|}	|stjd |	stjd |S )Nzpyproject.tomlzFound pyproject.tomlzMissing pyproject.tomlFzbuild-systemrequireszbuild-backendzLoaded pyproject.tomlzInvalid pyproject.tomlT)r   z%Sdist checks failed; scroll up to seezWheel checks failed)r   r   r   r   r   open	toml_loadr   KeyErrorr   r    r#   warning)

source_dirZ	pyprojectfZpyproject_dataZbuildsysr$   backendr   Zsdist_okZwheel_okr   r   r   check   s.    





r,   c             C   s`   t j }|jddd |j| }t  t|j}|rDttdd nttdd t	j
d d S )	Nr)   z%A directory containing pyproject.toml)helpzChecks passedgreenzChecks failedredr   )argparseArgumentParseradd_argument
parse_argsr	   r,   r)   printansisysexit)argvZapargsokr   r   r   main   s    

r;   z[0mz[1mz[31mz[32m)resetZboldr/   r.   c             C   s8   t jdkr,tjj r,t| t|  td  S t| S d S )Nntr<   )osnamer6   stdoutisatty
ansi_codesstr)sattrr   r   r   r5      s    r5   __main__)N)#__doc__r0   loggingr>   os.pathr   r   r   Zpip._vendor.pytomlr   r   r&   r   
subprocessr   r6   r   tempfiler   r!   Zcolorlogr	   Zenvbuildr
   Zwrappersr   	getLogger__name__r   r    r#   r,   r;   rB   r5   r   r   r   r   <module>   s4   
78!
