???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \x                 @   s   d Z ddlmZ ddlmZ yTddlmZ ddlmZ ddl	m
Z
 ddl	mZ ddlmZ G d	d
 d
eZdZW n ek
r   dZY nX G dd deZdS )zCdistutils.command.check

Implements the Distutils 'check' command.
    )Command)DistutilsSetupError)Reporter)Parser)frontend)nodes)StringIOc               @   s   e Zd Zd	ddZdd ZdS )
SilentReporterNr   asciireplacec          	   C   s"   g | _ tj| ||||||| d S )N)messagesr   __init__)selfsourcereport_level
halt_levelstreamdebugencodingerror_handler r   //usr/lib64/python3.6/distutils/command/check.pyr      s    zSilentReporter.__init__c             O   s6   | j j||||f tj|f||| j| d|S )N)leveltype)r   appendr   system_messageZlevels)r   r   messageZchildrenkwargsr   r   r   r      s    zSilentReporter.system_message)Nr   r
   r   )__name__
__module____qualname__r   r   r   r   r   r   r	      s    
r	   TFc               @   s`   e Zd ZdZdZdddgZddd	gZdd Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )checkz6This command checks the meta-data of the package.
    z"perform some checks on the packagemetadatamVerify meta-datarestructuredtextrEChecks if long string meta-data syntax are reStructuredText-compliantstricts(Will exit with an error if a check failsc             C   s   d| _ d| _d| _d| _dS )z Sets default values for options.r      N)r%   r"   r(   	_warnings)r   r   r   r   initialize_options1   s    zcheck.initialize_optionsc             C   s   d S )Nr   )r   r   r   r   finalize_options8   s    zcheck.finalize_optionsc             C   s   |  j d7  _ tj| |S )z*Counts the number of warnings that occurs.r+   )r,   r   warn)r   msgr   r   r   r/   ;   s    z
check.warnc             C   sL   | j r| j  | jr0tr"| j  n| jr0td| jrH| jdkrHtddS )zRuns the command.zThe docutils package is needed.r   zPlease correct your package.N)r"   check_metadatar%   HAS_DOCUTILScheck_restructuredtextr(   r   r,   )r   r   r   r   run@   s    
z	check.runc             C   s   | j j}g }x*dD ]"}t||o(t||s|j| qW |rP| jddj|  |jrh|js| jd n"|j	r|j
s| jd n
| jd dS )zEnsures that all required elements of meta-data are supplied.

        name, version, URL, (author and author_email) or
        (maintainer and maintainer_email)).

        Warns if any are missing.
        nameversionurlzmissing required meta-data: %sz, z)missing meta-data: if 'author' supplied, z#'author_email' must be supplied tooz-missing meta-data: if 'maintainer' supplied, z''maintainer_email' must be supplied tooz4missing meta-data: either (author and author_email) z%or (maintainer and maintainer_email) zmust be suppliedN)r5   r6   r7   zLmissing meta-data: if 'author' supplied, 'author_email' must be supplied toozTmissing meta-data: if 'maintainer' supplied, 'maintainer_email' must be supplied toozYmissing meta-data: either (author and author_email) or (maintainer and maintainer_email) zimissing meta-data: either (author and author_email) or (maintainer and maintainer_email) must be supplied)distributionr"   hasattrgetattrr   r/   joinZauthorZauthor_emailZ
maintainerZmaintainer_email)r   r"   Zmissingattrr   r   r   r1   P   s$    
 zcheck.check_metadatac             C   s\   | j j }xL| j|D ]>}|d jd}|dkr:|d }nd|d |f }| j| qW dS )z4Checks if the long string fields are reST-compliant.r+   lineNz%s (line %s))r8   Zget_long_description_check_rst_datagetr/   )r   dataZwarningr=   r   r   r   r3   n   s    

zcheck.check_restructuredtextc             C   s   t  }t }tjtfdj }d|_d|_d|_t||j	|j
|j|j|j|jd}tj|||d}|j|d	 y|j|| W n: tk
r } z|jjd
d| di f W Y dd}~X nX |jS )z8Returns warnings when the provided data doesn't compile.)Z
components   N)r   r   r   r   )r   r+   z!Could not finish the parsing: %s. r>   r>   )r   r   r   ZOptionParserZget_default_valuesZ	tab_widthZpep_referencesZrfc_referencesr	   r   r   Zwarning_streamr   Zerror_encodingZerror_encoding_error_handlerr   documentZnote_sourceparseAttributeErrorr   r   )r   rA   source_pathparserZsettingsZreporterrD   er   r   r   r?   y   s*    
$zcheck._check_rst_dataN)r"   r#   r$   )r%   r&   r'   )r(   r)   r*   )r   r   r    __doc__ZdescriptionZuser_optionsZboolean_optionsr-   r.   r/   r4   r1   r3   r?   r   r   r   r   r!   $   s     
r!   N)rJ   Zdistutils.corer   Zdistutils.errorsr   Zdocutils.utilsr   Zdocutils.parsers.rstr   Zdocutilsr   r   ior   r	   r2   	Exceptionr!   r   r   r   r   <module>   s   
