o
    #h                     @   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   w/var/www/html/construction_image-detection-poc/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    