
    e                        d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ erd dlmZ  G d	 d
ej                        ZddZy)    )annotationsN)TYPE_CHECKING)nodes)checkers)only_required_for_messages)HIGH)PyLinterc                  f    e Zd ZdZdZdddZ edd      dd       Zdd	Zdd
Z	e	Z
	 	 	 	 	 	 ddZy)DocStringStyleCheckerz.Checks format of docstrings based on PEP 0257.docstyle)z2Bad docstring quotes in %s, expected """, given %sbad-docstring-quotesz9Used when a docstring does not have triple double quotes.)z First line empty in %s docstringdocstring-first-line-emptyz@Used when a blank line is found at the beginning of a docstring.)C0198C0199r   r   c                (    | j                  d|       y )Nmodule_check_docstringselfnodes     </usr/lib/python3/dist-packages/pylint/extensions/docstyle.pyvisit_modulez"DocStringStyleChecker.visit_module&   s    h-    c                (    | j                  d|       y )Nclassr   r   s     r   visit_classdefz$DocStringStyleChecker.visit_classdef*   s    gt,r   c                P    |j                         rdnd}| j                  ||       y )Nmethodfunction)	is_methodr   )r   r   ftypes      r   visit_functiondefz'DocStringStyleChecker.visit_functiondef-   s"     NN,*eT*r   c                   |j                   r|j                   j                  nd }|r"|d   dk(  r| j                  d||ft               |r|j                  dz   }t        j                  |j                         j                  |      j                         }|r|j                  d      dk(  ry |rd|v rd}n|r|d   dk(  rd}n|r|d   d	k(  rd	}nd
}|r| j                  d|||ft               y y y )Nr   
r   )r   args
confidence   z"""z'''"' r   )doc_nodevalueadd_messager   
fromlineno	linecachegetlinerootfilelstripfind)r   	node_typer   	docstringlinenolinequotess          r   r   z&DocStringStyleChecker._check_docstring3   s    ,0==DMM''d	1-,\	   __q(F$$TYY[%5%5v>EEGD		%(A-$q'S.$q'S.  *#V,#	 !   r   N)r   znodes.ModulereturnNone)r   znodes.ClassDefr;   r<   )r   znodes.FunctionDefr;   r<   )r6   strr   z1nodes.Module | nodes.ClassDef | nodes.FunctionDefr;   r<   )__name__
__module____qualname____doc__namemsgsr   r   r   r#   visit_asyncfunctiondefr    r   r   r   r      sh    8D


D   <>TU. V.-+ /""$U"	"r   r   c                8    | j                  t        |              y )N)register_checkerr   )linters    r   registerrI   X   s    
1&9:r   )rH   r	   r;   r<   )
__future__r   r0   typingr   astroidr   pylintr   pylint.checkers.utilsr   pylint.interfacesr   pylint.lintr	   BaseCheckerr   rI   rE   r   r   <module>rR      s<   
 #      < "$AH00 AH;r   