o
    Ëý°j  ã                   @   s�   d Z ddlmZ ddlmZ 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y=   dZY nw G dd„ deƒZdS )zCdistutils.command.check

Implements the Distutils 'check' command.
é    )ÚCommand)ÚDistutilsSetupError)ÚReporter)ÚParser)Úfrontend)Únodesc                   @   s"   e Zd Z		d	dd„Zdd„ ZdS )
ÚSilentReporterNr   ÚasciiÚreplacec              
   C   s"   g | _ t | |||||||¡ d S ©N)Úmessagesr   Ú__init__)ÚselfÚsourceÚreport_levelÚ
halt_levelÚstreamÚdebugÚencodingÚerror_handler© r   ú–/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/setuptools/_distutils/command/check.pyr      s   ÿzSilentReporter.__init__c                 O   s8   | j  ||||f¡ tj|g|¢R || j| dœ|¤ŽS )N)ÚlevelÚtype)r   Úappendr   Úsystem_messageÚlevels)r   r   ÚmessageÚ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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 )Úcheckz6This 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_options0   s   
zcheck.initialize_optionsc                 C   s   d S r   r   r,   r   r   r   Úfinalize_options7   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   r/   :   s   z
check.warnc                 C   sP   | j r|  ¡  | jrtr|  ¡  n| jrtdƒ‚| jr$| jdkr&tdƒ‚dS 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 }dD ]}t||ƒrt||ƒs| |¡ q|r&|  dd |¡ ¡ |jr5|js3|  d¡ dS dS |j	rD|j
sB|  d¡ dS dS |  d¡ dS )a  Ensures that all required elements of meta-data are supplied.

        Required fields:
            name, version, URL

        Recommended fields:
            (author and author_email) or (maintainer and maintainer_email))

        Warns if any are missing.
        )ÚnameÚversionÚurlzmissing required meta-data: %sz, zNmissing meta-data: if 'author' supplied, 'author_email' should be supplied toozVmissing meta-data: if 'maintainer' supplied, 'maintainer_email' should be supplied toozkmissing meta-data: either (author and author_email) or (maintainer and maintainer_email) should be suppliedN)Údistributionr$   ÚhasattrÚgetattrr   r/   ÚjoinÚauthorÚauthor_emailÚ
maintainerÚmaintainer_email)r   r$   ÚmissingÚattrr   r   r   r1   O   s"   
€ÿÿzcheck.check_metadatac                 C   sX   | j  ¡ }|  |¡D ]}|d  d¡}|du r|d }nd|d |f }|  |¡ q
dS )z4Checks if the long string fields are reST-compliant.éÿÿÿÿÚlineNr*   z%s (line %s))r8   Úget_long_descriptionÚ_check_rst_dataÚgetr/   )r   ÚdataÚwarningrC   r   r   r   r3   p   s   

úzcheck.check_restructuredtextc              
   C   sÊ   | j jpd}tƒ }tjtfd� ¡ }d|_d|_d|_t	||j
|j|j|j|j|jd�}tj|||d�}| |d¡ z
| ||¡ W |jS  tyd } 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   rB   z!Could not finish the parsing: %s.Ú )r8   Úscript_namer   r   ÚOptionParserÚget_default_valuesÚ	tab_widthÚpep_referencesÚrfc_referencesr   r   r   Úwarning_streamr   Úerror_encodingÚerror_encoding_error_handlerr   ÚdocumentÚnote_sourceÚparseÚAttributeErrorr   r   )r   rG   Úsource_pathÚparserÚsettingsÚreporterrU   Úer   r   r   rE   {   s4   úüÿ€üzcheck._check_rst_dataN)r    r!   r"   Ú__doc__ÚdescriptionÚuser_optionsÚboolean_optionsr-   r.   r/   r4   r1   r3   rE   r   r   r   r   r#   #   s    !r#   N)r^   Údistutils.corer   Údistutils.errorsr   Údocutils.utilsr   Údocutils.parsers.rstr   Údocutilsr   r   r   r2   Ú	Exceptionr#   r   r   r   r   Ú<module>   s    ý