o
    b                     @   s   d Z ddlZddlZddlZddl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 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 e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rxe  dS dS )zHCheck a project and backend by attempting to build using PEP 517 hooks.
    N)isfile)join)CalledProcessError)mkdtemp   )tomllib)enable_colourful_output)BuildEnvironment)Pep517HookCallerc              
   C   @  t  }z|| td W n ty&   td Y W d    dS w z| i }td| W n tyK   tjddd Y W d    dS w z|| td W n tym   td	 Y W d    dS w t }td
| zz| 	|i }td| W n ty   tjddd Y W t
| W d    dS w |dstd| W t
| W d    dS t||}t|rtd| ntd| W t
| W d    dS t|rtd ntd W t
| W d    dS W t
| nt
| w 	 W d    dS 1 sw   Y  d S )N#Installed static build dependencies+Failed to install static build dependenciesFGot build requires: %s'Failure in get_requires_for_build_sdistTexc_info$Installed dynamic build dependencies,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 extensionOutput file %s exists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shutilrmtreeendswithpjoinr   tarfileZ
is_tarfilehooksZbuild_sys_requiresenvreqstdfilenamepath r)   0usr/lib/python3.10/site-packages/pep517/check.pycheck_build_sdist   sz   









%
	
,

-&r+   c              
   C   r   )Nr   r   Fr   r   Tr   r   r   zTrying to build wheel in %szbuild_wheel returned %rzFailure in build_wheelz.whlz'Filename %s doesn't have .whl extensionr   r   z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   r    r   zipfile
is_zipfiler"   r)   r)   r*   check_build_wheelP   sv   









$
	
+

,&r0   c              	   C   s   t | d}t|rtd ntd dS z2t|d}t|}W d    n1 s,w   Y  |d }|d }|d }|d	}td
 W n tj	t
fy\   tjddd Y dS w t| ||}t||}	t||}
|	sttd |
s{td |	S )Nzpyproject.tomlzFound pyproject.tomlzMissing pyproject.tomlFrbzbuild-systemrequireszbuild-backendzbackend-pathzLoaded pyproject.tomlzInvalid pyproject.tomlTr   z%Sdist checks failed; scroll up to seezWheel checks failed)r    r   r   r   r   openr   loadgetTOMLDecodeErrorKeyErrorr
   r+   r0   warning)
source_dir	pyprojectfZpyproject_dataZbuildsysr2   backendbackend_pathr#   Zsdist_okZwheel_okr)   r)   r*   check   s4   






r>   c                 C   sl   t d t }|jddd || }t  t|j}|r(t	t
dd d S t	t
dd td	 d S )
NzQpep517.check is deprecated. Consider switching to https://pypi.org/project/build/r9   z%A directory containing pyproject.toml)helpzChecks passedgreenzChecks failedredr   )r   r8   argparseArgumentParseradd_argument
parse_argsr   r>   r9   printansisysexit)argvZapargsokr)   r)   r*   main   s   


rM   z[0mz[1mz[31mz[32m)resetZboldrA   r@   c                 C   s4   t jdkrtj rt| t|  td  S t| S )NntrN   )osnamerH   stdoutisatty
ansi_codesstr)sattrr)   r)   r*   rG      s   rG   __main__)N)!__doc__rB   loggingrP   r   rH   r!   r.   os.pathr   r   r    
subprocessr   tempfiler   Z_compatr   Zcolorlogr   Zenvbuildr	   wrappersr
   	getLogger__name__r   r+   r0   r>   rM   rT   rG   r)   r)   r)   r*   <module>   s<    
98
"
