B � f��@s�dZddlmZddlmZyTddlmZddlmZddl m Z ddl m Z ddl m Z Gd d �d e�Zd ZWnek r�d ZYnXGd d�de�ZdS)zCdistutils.command.check Implements the Distutils 'check' command. �)�Command)�DistutilsSetupError)�Reporter)�Parser)�frontend)�nodes)�StringIOc@seZdZd dd�Zdd�ZdS) �SilentReporterNr�ascii�replacec Cs"g|_t�||||||||�dS)N)�messagesr�__init__)�self�source� report_level� halt_level�stream�debug�encoding� error_handler�r�}|d�d�}|dkr:|d}nd|d|f}|�|�qWdS)z4Checks if the long string fields are reST-compliant.������lineNr(z %s (line %s))r4Zget_long_description�_check_rst_data�getr,)r�dataZwarningr:rrrr0ns  zcheck.check_restructuredtextc Cs�|jjp d}t�}tjtfd���}d|_d|_d|_t ||j |j |j |j |j|jd�}tj|||d�}|�|d�y|�||�Wn:tk r�}z|j�dd|d if�Wdd}~XYnX|jS) z8Returns warnings when the provided data doesn't compile.zsetup.py)Z components�N)rrrr)rr9z!Could not finish the parsing: %s.�)r4Z script_namerrZ OptionParserZget_default_valuesZ tab_widthZpep_referencesZrfc_referencesr rrZwarning_streamrZerror_encodingZerror_encoding_error_handlerr�documentZ note_source�parse�AttributeErrorr r)rr=� source_path�parserZsettingsZreporterr@�errrr;ys*   $zcheck._check_rst_dataN)rrr �__doc__Z descriptionZ user_optionsZboolean_optionsr*r+r,r1r.r0r;rrrrr!$s  r!N)rFZdistutils.corerZdistutils.errorsrZdocutils.utilsrZdocutils.parsers.rstrZdocutilsrr�iorr r/� Exceptionr!rrrr�s