U
    aÊ¹j!  ã                	   @   s‚   d Z ddlZddlmZ ddlmZ e e¡�: ddlZ	ddl
Z	ddlZ	ddlZ	G dd„ de	jjƒZW 5 Q R X G dd	„ d	eƒZdS )
zCdistutils.command.check

Implements the Distutils 'check' command.
é    Né   )ÚCommand)ÚDistutilsSetupErrorc                       s&   e Zd Zd	‡ fdd„	Zdd„ Z‡  ZS )
ÚSilentReporterNFÚasciiÚreplacec              	      s"   g | _ tƒ  |||||||¡ d S ©N)ÚmessagesÚsuperÚ__init__)ÚselfÚsourceÚreport_levelÚ
halt_levelÚstreamÚdebugÚencodingÚerror_handler©Ú	__class__© úb/var/www/html/bwave/python/venv/lib/python3.8/site-packages/setuptools/_distutils/command/check.pyr      s    
      ÿzSilentReporter.__init__c                 O   s8   | j  ||||f¡ tjj|f|ž|| j| dœ|—ŽS )N)ÚlevelÚtype)r	   ÚappendÚdocutilsÚnodesÚsystem_messageZlevels)r   r   ÚmessageÚchildrenÚkwargsr   r   r   r   !   s    ÿÿ ÿÿzSilentReporter.system_message)NFr   r   )Ú__name__Ú
__module__Ú__qualname__r   r   Ú__classcell__r   r   r   r   r      s       ør   c                   @   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 )Úcheckz1This command checks the meta-data of the package.z"perform some checks on the package)ÚmetadataÚmzVerify meta-data)ÚrestructuredtextÚrzEChecks if long string meta-data syntax are reStructuredText-compliant)ÚstrictÚsz(Will exit with an error if a check failsr&   r(   r*   c                 C   s   d| _ d| _d| _d| _dS )z Sets default values for options.Fé   r   N)r(   r&   r*   Ú	_warnings©r   r   r   r   Úinitialize_options;   s    zcheck.initialize_optionsc                 C   s   d S r   r   r.   r   r   r   Úfinalize_optionsB   s    zcheck.finalize_optionsc                 C   s   |  j d7  _ t | |¡S )z*Counts the number of warnings that occurs.r,   )r-   r   Úwarn)r   Úmsgr   r   r   r1   E   s    z
check.warnc              
   C   s†   | j r|  ¡  | jrjdtƒ kr\z|  ¡  W qj tk
rX } ztt|ƒƒ‚W 5 d}~X Y qjX n| jrjtdƒ‚| jr‚| j	dkr‚tdƒ‚dS )zRuns the command.r   NzThe docutils package is needed.r   zPlease correct your package.)
r&   Úcheck_metadatar(   ÚglobalsÚcheck_restructuredtextÚ	TypeErrorr   Ústrr*   r-   )r   Úexcr   r   r   ÚrunJ   s    
 z	check.runc                    s8   | j j‰ ‡ fdd„dD ƒ}|r4|  d d |¡¡¡ dS )z�Ensures that all required elements of meta-data are supplied.

        Required fields:
            name, version

        Warns if any are missing.
        c                    s   g | ]}t ˆ |d ƒs|‘qS r   )Úgetattr)Ú.0Úattr©r&   r   r   Ú
<listcomp>g   s     z(check.check_metadata.<locals>.<listcomp>)ÚnameÚversionzmissing required meta-data: {}z, N)Údistributionr&   r1   ÚformatÚjoin)r   Úmissingr   r=   r   r3   ]   s    
ÿzcheck.check_metadatac                 C   s\   | j  ¡ }|  |¡D ]B}|d  d¡}|dkr8|d }n|d › d|› d�}|  |¡ qdS )z4Checks if the long string fields are reST-compliant.éÿÿÿÿÚlineNr,   z (line ú))rA   Úget_long_descriptionÚ_check_rst_dataÚgetr1   )r   ÚdataÚwarningrF   r   r   r   r5   n   s    

zcheck.check_restructuredtextc              
   C   sÚ   | j jp
d}tjj ¡ }tjjtjjjfd� ¡ }d|_	d|_
d|_t||j|j|j|j|j|jd�}tjj|||d�}| |d¡ z| ||¡ W n> tk
rÒ } z |j dd|› d	�d
i f¡ W 5 d}~X Y nX |jS )z8Returns warnings when the provided data doesn't compile.zsetup.py)Ú
componentsé   N)r   r   r   r   )r   rE   zCould not finish the parsing: Ú.Ú )rA   Úscript_namer   ÚparsersÚrstÚParserZfrontendÚOptionParserÚ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   rK   Úsource_pathÚparserÚsettingsÚreporterrW   Úer   r   r   rI   y   s:    
ÿ
ù

üzcheck._check_rst_dataN)r!   r"   r#   Ú__doc__ÚdescriptionÚuser_optionsÚboolean_optionsr/   r0   r1   r9   r3   r5   rI   r   r   r   r   r%   (   s   ö
r%   )r_   Ú
contextlibÚcorer   Úerrorsr   ÚsuppressÚImportErrorZdocutils.frontendr   Zdocutils.nodesZdocutils.parsers.rstZdocutils.utilsÚutilsZReporterr   r%   r   r   r   r   Ú<module>   s   