h fx @sdZddlmZddlmZypddlmZddlmZddl m Z ddl m Z ddl m Z Gd d d eZd ZWnek rd ZYnXGd ddeZdS)zCdistutils.command.check Implements the Distutils 'check' command. )Command)DistutilsSetupError)Reporter)Parser)frontend)nodes)StringIOc@s4eZdZddddddZddZdS) SilentReporterNrasciireplacec Cs/g|_tj||||||||dS)N)messagesr__init__)selfsource report_level halt_levelstreamdebugencoding error_handlerr|j r|j s|jdd qn|jd d d d S)zEnsures that all required elements of meta-data are supplied. name, version, URL, (author and author_email) or (maintainer and maintainer_email)). Warns if any are missing. nameversionurlzmissing required meta-data: %sz, z)missing meta-data: if 'author' supplied, z#'author_email' must be supplied tooz-missing meta-data: if 'maintainer' supplied, z''maintainer_email' must be supplied tooz4missing meta-data: either (author and author_email) z%or (maintainer and maintainer_email) zmust be suppliedN)znamezversionr7) distributionr"hasattrgetattrrr/joinZauthorZ author_emailZ maintainerZmaintainer_email)rr"Zmissingattrrrrr1Ps$        zcheck.check_metadatacCsz|jj}xd|j|D]S}|djd}|dkrQ|d}nd|d|f}|j|qWdS)z4Checks if the long string fields are reST-compliant.r+lineNz %s (line %s))r8Zget_long_description_check_rst_datagetr/)rdataZwarningr=rrrr3ns  zcheck.check_restructuredtextcCst}t}tjdtfj}d|_d|_d|_t||j |j d|j d|j d|j d|j}tj||d|}|j|d y|j||WnEtk r}z%|jjd d |d ifWYdd}~XnX|jS)z8Returns warnings when the provided data doesn't compile.Z componentsNrrrrrr+z!Could not finish the parsing: %s.r>r>)rrrZ OptionParserZget_default_valuesZ tab_widthZpep_referencesZrfc_referencesr rrZwarning_streamrZerror_encodingZerror_encoding_error_handlerrdocumentZ note_sourceparseAttributeErrorr r)rrA source_pathparserZsettingsZreporterrDerrrr?ys*           *zcheck._check_rst_dataN)zmetadatar#r$)zrestructuredtextr&r')zstrictr)r*)rrr __doc__Z descriptionZ user_optionsZboolean_optionsr-r.r/r4r1r3r?rrrrr!$s        r!N)rJZdistutils.corerZdistutils.errorsrZdocutils.utilsrZdocutils.parsers.rstrZdocutilsrriorr r2 Exceptionr!rrrrs