o
    ^+)h                     @   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 d   n1 s<w   Y  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 )
SilentReporterNr   asciireplacec              	      s"   g | _ t ||||||| d S N)messagessuper__init__)selfsourcereport_level
halt_levelstreamdebugencodingerror_handler	__class__ bC:\Users\User\Downloads\Proyecto_IoT\venv\Lib\site-packages\setuptools/_distutils/command/check.pyr
      s   
zSilentReporter.__init__c                 O   s:   | j ||||f tjj|g|R || 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)Nr   r   r   )__name__
__module____qualname__r
   r   __classcell__r   r   r   r   r      s    r   c                   @   s\   e Zd ZdZdZg dZg d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 fails)r%   r'   r)   c                 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_options:   s   
zcheck.initialize_optionsc                 C   s   d S r   r   r-   r   r   r   finalize_optionsA   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   r0   D   s   z
check.warnc              
   C   s~   | j r|   | jr/dt v r(z|   W n ty' } ztt|d}~ww | jr/td| jr;| j	dkr=tddS 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   runI   s   
z	check.runc                 C   sL   | j j}g }dD ]}t||ds|| q|r$| dd|  dS dS )zEnsures that all required elements of meta-data are supplied.

        Required fields:
            name, version

        Warns if any are missing.
        )nameversionNzmissing required meta-data: %sz, )distributionr%   getattrr   r0   join)r   r%   missingattrr   r   r   r2   \   s   
zcheck.check_metadatac                 C   sX   | j  }| |D ]}|d d}|du r|d }nd|d |}| | q
dS )z4Checks if the long string fields are reST-compliant.lineNr+   z{} (line {}))r;   Zget_long_description_check_rst_datagetformatr0   )r   datawarningrA   r   r   r   r4   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 |jS  tyl } z|jdd| d	i f W Y d}~|jS d}~ww )
z8Returns warnings when the provided data doesn't compile.zsetup.py)
components   N)r   r   r   r   )r   r@   z!Could not finish the parsing: %s. )r;   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   rE   source_pathparsersettingsreporterrP   er   r   r   rB   y   s>   

zcheck._check_rst_dataN)r    r!   r"   __doc__descriptionZuser_optionsZboolean_optionsr.   r/   r0   r8   r2   r4   rB   r   r   r   r   r$   '   s    r$   )rX   
contextlibZdistutils.corer   Zdistutils.errorsr   suppressImportErrorZdocutils.utilsr   Zdocutils.parsers.rstZdocutils.frontendZdocutils.nodesutilsZReporterr   r$   r   r   r   r   <module>   s    