3
Ug                 @   s   d Z ddlZddlZddlZddl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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)CalledProcessError)mkdtemp   )enable_colourful_output)TOMLDecodeError	toml_load)BuildEnvironment)Pep517HookCallerc          0   C   s  t  }y|j| tjd W n tk
r@   tjd dS X y| ji }tjd| W n" tk
r~   tjddd dS X 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k
r   tjddd dS X |j
ds*tjd| dS t||}t|rLtjd| ntjd| dS tj|rtt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loginfor   errorget_requires_for_build_sdist	Exceptionr   build_sdistendswithpjoinr   tarfile
is_tarfileshutilrmtree)hooksbuild_sys_requiresenvreqstdfilenamepath r!   </tmp/pip-unpacked-wheel-0ht26j5g/pip/_vendor/pep517/check.pycheck_build_sdist   sV    








r#   c          0   C   s  t  }y|j| tjd W n tk
r@   tjd dS X y| ji }tjd| W n" tk
r~   tjddd dS X 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k
r   tjddd dS X |j
ds*tjd| dS t||}t|rLtjd| ntjd| dS tj|rtt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   get_requires_for_build_wheelr   r   build_wheelr   r   r   zipfile
is_zipfiler   r   )r   r   r   r   r   r   r    r!   r!   r"   check_build_wheelP   sT    








r(   c             C   s   t | d}t|rtjd ntjd dS yPtj|d}t|}W d Q R X |d }|d }|d }|j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.tomlFrbzbuild-systemrequireszbuild-backendzbackend-pathzLoaded pyproject.tomlzInvalid pyproject.tomlT)r   z%Sdist checks failed; scroll up to seezWheel checks failed)r   r   r   r   r   ioopenr	   getr   KeyErrorr   r#   r(   warning)
source_dir	pyprojectfZpyproject_dataZbuildsysr*   backendbackend_pathr   Zsdist_okZwheel_okr!   r!   r"   check   s0    






r5   c             C   sj   t jd tj }|jddd |j| }t  t|j}|rNt	t
dd nt	t
dd tjd	 d S )
NzQpep517.check is deprecated. Consider switching to https://pypi.org/project/build/r0   z%A directory containing pyproject.toml)helpzChecks passedgreenzChecks failedredr   )r   r/   argparseArgumentParseradd_argument
parse_argsr   r5   r0   printansisysexit)argvZapargsokr!   r!   r"   main   s    


rD   z[0mz[1mz[31mz[32m)resetZboldr8   r7   c             C   s8   t jdkr,tjj r,t| t|  td  S t| S d S )NntrE   )osnamer?   stdoutisatty
ansi_codesstr)sattrr!   r!   r"   r>      s    r>   __main__)N)#__doc__r9   r+   loggingrG   os.pathr   r   r   r   
subprocessr   r?   r   tempfiler   r&   Zcolorlogr   compatr   r	   Zenvbuildr
   wrappersr   	getLogger__name__r   r#   r(   r5   rD   rK   r>   r!   r!   r!   r"   <module>   s6   
98"
