U
    Sh                     @  s|   d 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dd	d
dddZ
ddddddddddddZdS )z4Central handling of warnings for the myst extension.    )annotations)Enum)Sequence)nodesc                   @  st   e Zd ZdZdZdZdZdZdZdZ	dZ
dZd	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdS )MystWarningszMyST warning types.
deprecatedZnot_supportedrenderZ	topmatterZduplicate_defZfootnoteheaderZdirective_parseZdirective_optionZdirective_commentsZdirective_bodyZdirective_unknownZrole_unknownZxref_ambiguousZxref_missingZinv_retrievalZiref_missingZiref_ambiguousdomainsZheading_slugZstrikethroughhtml	attributeZsubstitutionN)__name__
__module____qualname____doc__Z
DEPRECATEDZNOT_SUPPORTEDZRENDER_METHODZMD_TOPMATTERZMD_DEF_DUPEZMD_FOOTNOTE_DUPEZMD_FOOTNOTE_MISSINGZMD_HEADING_NON_CONSECUTIVEZDIRECTIVE_PARSINGZDIRECTIVE_OPTIONZDIRECTIVE_OPTION_COMMENTSZDIRECTIVE_BODYZUNKNOWN_DIRECTIVEZUNKNOWN_ROLEZXREF_AMBIGUOUSZXREF_MISSINGZINV_LOADZIREF_MISSINGZIREF_AMBIGUOUSZLEGACY_DOMAINZHEADING_SLUGZSTRIKETHROUGHZ
HTML_PARSEZINVALID_ATTRIBUTEZSUBSTITUTION r   r   H/root/rtd-docs/venv/lib/python3.8/site-packages/myst_parser/warnings_.pyr      s6   r   strzSequence[str]bool)typesubtypesuppress_warningsreturnc                 C  sZ   | dkrdS |D ]D}d|kr.| dd\}}n
|d }}|| kr|d|dfkr dS qdS )zCheck whether the warning is suppressed or not.

    Mirrors:
    https://github.com/sphinx-doc/sphinx/blob/47d9035bca9e83d6db30a0726a02dc9265bd66b1/sphinx/util/logging.py
    NF.   *T)split)r   r   r   Zwarning_typetargetZ	subtargetr   r   r   _is_suppressed_warningI   s    
r   N)line	append_toznodes.documentz
int | Noneznodes.Element | Noneznodes.system_message | None)documentmessager   r   r    r   c          	      C  s   d}g }z| j jjjj}W n  tk
r:   | j jp4g }Y nX t||j|rNdS |dk	r^d|ini }| d| d|j d}| j	j
|f|}|dk	r|| |S )zGenerate a warning, logging if it is necessary.

    If the warning type is listed in the ``suppress_warnings`` configuration,
    then ``None`` will be returned and no warning logged.
    ZmystNr   z [r   ])settingsenvZappconfigr   AttributeErrorZmyst_suppress_warningsr   valuereporterwarningappend)	r!   r"   r   r   r    Zwtyper   kwargsZmsg_noder   r   r   create_warningb   s    
r-   )r   
__future__r   enumr   typingr   Zdocutilsr   r   r   r-   r   r   r   r   <module>   s   >