
    
_d                         d Z ddlZddlmZ ddlmZ  ej                  e      5  ddlZ	ddl
Z	ddlZ	ddlZ	 G d de	j                  j                        Zddd        G d d	e      Zy# 1 sw Y   xY w)
zCdistutils.command.check

Implements the Distutils 'check' command.
    N   )Command)DistutilsSetupErrorc                   .     e Zd Z	 	 	 	 d fd	Zd Z xZS )SilentReporterc           	      >    g | _         t        | 	  |||||||       y N)messagessuper__init__)	selfsourcereport_level
halt_levelstreamdebugencodingerror_handler	__class__s	           E/usr/lib/python3/dist-packages/setuptools/_distutils/command/check.pyr   zSilentReporter.__init__   s(     DMGj&%=    c                     | j                   j                  ||||f       t        j                  j                  |g||| j
                  |   d|S )N)leveltype)r
   appenddocutilsnodessystem_messagelevels)r   r   messagechildrenkwargss        r   r   zSilentReporter.system_message    sZ    MM  %(F!CD>>00@H$4;;u+=LR r   )Nr   asciireplace)__name__
__module____qualname__r   r   __classcell__)r   s   @r   r   r      s     #		r   r   c                   N    e Zd ZdZdZg dZg dZd Zd Zd Z	d Z
d	 Zd
 Zd Zy)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                 <    d| _         d| _        d| _        d| _        y)z Sets default values for options.r      N)r-   r+   r/   	_warningsr   s    r   initialize_optionszcheck.initialize_options:   s     !r   c                      y r	    r4   s    r   finalize_optionszcheck.finalize_optionsA   s    r   c                 X    | xj                   dz  c_         t        j                  | |      S )z*Counts the number of warnings that occurs.r2   )r3   r   warn)r   msgs     r   r:   z
check.warnD   s!    !||D#&&r   c                 V   | j                   r| j                          | j                  r5dt               v r	 | j	                          n| j                  rt        d      | j                  r| j                  dkD  rt        d      yy# t
        $ r}t        t        |            d}~ww xY w)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/   r3   )r   excs     r   runz	check.runI   s     ==!  WY&8//1 )*KLL ;;4>>A-%&DEE .; ! 8-c#h778s   B 	B(B##B(c                     | j                   j                  }g }dD ]!  }t        ||d      r|j                  |       # |r$| j	                  ddj                  |      z         yy)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   r:   join)r   r+   missingattrs       r   r=   zcheck.check_metadata\   sf     $$--% 	%D8T40t$	% II679KKL r   c                     | j                   j                         }| j                  |      D ]D  }|d   j                  d      }||d   }ndj	                  |d   |      }| j                  |       F y)z4Checks if the long string fields are reST-compliant.lineNr2   z{} (line {}))rG   get_long_description_check_rst_datagetformatr:   )r   datawarningrN   s       r   r?   zcheck.check_restructuredtextn   sr      557++D1 	G2;??6*D|!!*(//
DAIIg	r   c           	         | j                   j                  xs d}t        j                  j                  j                         }t        j                  j                  t        j                  j                  j
                  f      j                         }d|_	        d|_
        d|_        t        ||j                  |j                  |j                  |j                   |j"                  |j$                        }t        j&                  j)                  |||      }|j+                  |d       	 |j-                  ||       |j0                  S # t.        $ r7}|j0                  j3                  dd|z  d	i f       Y d}~|j0                  S d}~ww xY w)
z8Returns warnings when the provided data doesn't compile.zsetup.py)
components   N)r   r   r   r   )r   rM   z!Could not finish the parsing: %s. )rG   script_namer   parsersrstParserfrontend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   rS   source_pathparsersettingsreporterrf   es           r   rP   zcheck._check_rst_datay   sg    ''33Az!!%%,,.$$11 ((,,335 2 



 	 "&"&!!!**..,,"??
 >>**8Xk*R["-	LLx(      	$$81<b"E     	s   ,E
 
	F
"FF
N)r%   r&   r'   __doc__descriptionuser_optionsboolean_optionsr5   r8   r:   rC   r=   r?   rP   r7   r   r   r*   r*   '   s>    ;6KL AO'
F&M$	!r   r*   )ro   
contextlibcorer   errorsr   suppressImportErrordocutils.utilsr   docutils.parsers.rstdocutils.frontenddocutils.nodesutilsReporterr   r*   r7   r   r   <module>r~      sj      (Z% 00 :p!G p!; s   0A))A2