
0c@_I                 @   sY  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 d d d i Z! d d   Z" e d k rUe    d S)zHCheck a project and backend by attempting to build using PEP 517 hooks.
    N)isfilejoin)TomlDecodeErrorload)CalledProcessError)mkdtemp   )enable_colourful_output)BuildEnvironment)Pep517HookCallerc          0   C   s  t    } y | j |  t j d  Wn# t k
 rO t j d  d SYn Xy# |  j i   } t j d |  Wn) t k
 r t j d d d d SYn Xy | j |  t j d  Wn# t k
 r t j d	  d SYn Xt   } t j d
 |  z y& |  j	 | i   } t j d |  Wn) t k
 rPt j d d d d SYn X| j
 d  stt j d |  d St | |  } t |  rt j d |  n t j d |  d St j |  rt j d  n t j d  d SWd  t j |  Xd SWd  QRXd  S)Nz#Installed static build dependenciesz+Failed to install static build dependenciesFzGot build requires: %sz'Failure in get_requires_for_build_sdistexc_infoTz$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   errorZget_requires_for_build_sdist	Exceptionr   Zbuild_sdistendswithpjoinr   tarfile
is_tarfileshutilrmtree)hooksbuild_sys_requiresenvreqstdfilenamepath r   7/tmp/pip-build-jynh7p1z/pip/pip/_vendor/pep517/check.pycheck_build_sdist   sV    					
r!   c          0   C   s  t    } y | j |  t j d  Wn# t k
 rO t j d  d SYn Xy# |  j i   } t j d |  Wn) t k
 r t j d d d d SYn Xy | j |  t j d  Wn# t k
 r t j d	  d SYn Xt   } t j d
 |  z y& |  j	 | i   } t j d |  Wn) t k
 rPt j d d d d SYn X| j
 d  stt j d |  d St | |  } t |  rt j d |  n t j d |  d St j |  rt j d  n t j d  d SWd  t j |  Xd SWd  QRXd  S)Nz#Installed static build dependenciesz+Failed to install static build dependenciesFzGot build requires: %sz'Failure in get_requires_for_build_sdistr   Tz$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   Zget_requires_for_build_wheelr   r   Zbuild_wheelr   r   r   zipfile
is_zipfiler   r   )r   r   r   r   r   r   r   r   r   r    check_build_wheelO   sT    					r$   c             C   s(  t  |  d  } t |  r+ t j d  n t j d  d Sy` t |   } t |  } Wd  QRX| d } | d } | d } | j d  } t j d	  Wn/ t t	 f k
 r t j d
 d d d SYn Xt
 |  | |  } t | |  }	 t | |  }
 |	 st j d  |
 s$t j d  |	 S)Nzpyproject.tomlzFound pyproject.tomlzMissing pyproject.tomlFzbuild-systemrequireszbuild-backendzbackend-pathzLoaded pyproject.tomlzInvalid pyproject.tomlr   Tz%Sdist checks failed; scroll up to seezWheel checks failed)r   r   r   r   r   open	toml_loadgetr   KeyErrorr   r!   r$   warning)
source_dirZ	pyprojectfZpyproject_dataZbuildsysr%   backendZbackend_pathr   Zsdist_okZwheel_okr   r   r    check   s0    


	r.   c             C   s   t  j   } | j d d d | j |   } t   t | j  } | r` t t d d   n  t t d d   t	 j
 d  d  S)	Nr+   helpz%A directory containing pyproject.tomlz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=   resetz[0mZboldz[1mr1   z[31mr0   z[32mc             C   sF   t  j d k r8 t j j   r8 t | t |   t d St |   Sd  S)Nntr>   )osnamer8   stdoutisatty
ansi_codesstr)sattrr   r   r    r7      s    r7   __main__)#__doc__r2   loggingr@   os.pathr   r   r   Zpip._vendor.tomlr   r   r'   r   
subprocessr   r8   r   tempfiler   r"   Zcolorlogr	   Zenvbuildr
   Zwrappersr   	getLogger__name__r   r!   r$   r.   r=   rD   r7   r   r   r   r    <module>   s4   98"