§
    öyIfj  ã                  óº   — d Z ddlmZ ddlZ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mZmZ  ej        d
¦  «        Zdd„Z G d„ de¦  «        ZdS )z)Docstring checker from the basic checker.é    )ÚannotationsN)ÚLiteral)Únodes)Ú
interfaces)Úutils)Ú_BasicChecker)Úis_overload_stubÚis_property_deleterÚis_property_setterz^_Únodeú1nodes.Module | nodes.ClassDef | nodes.FunctionDefÚreturnú
str | Nonec                óÈ   — 	 | d         }n# t           $ r Y d S w xY wt          j        |¦  «        }|sd S t          |t          j        ¦  «        sd S t          |j        ¦  «        S )NÚ__doc__)ÚKeyErrorr   Ú
safe_inferÚ
isinstancer   ÚConstÚstrÚvalue)r   Ú	docstrings     úZ/var/www/piapp/venv/lib/python3.11/site-packages/pylint/checkers/base/docstring_checker.pyÚ_infer_dunder_doc_attributer      s|   € ðØ˜”Oˆ	ˆ	øÝð ð ð Øˆtˆtðøøøõ Ô  Ñ+Ô+€IØð ØˆtÝ�i¥¤Ñ-Ô-ð ØˆtÝˆyŒÑÔÐs   ‚ ‹
˜c                  ó>  — e Zd Zdddddgifddddd	gifd
dddd	gifddddd	gifdœZdeddddœfddddddœffZd/d„Z ej        dd¦  «        d0d „¦   «         Z	 ej        dd¦  «        d1d"„¦   «         Z
 ej        dd¦  «        d2d$„¦   «         ZeZd%ej        fd3d-„Zd.S )4ÚDocStringCheckerzEmpty %s docstringúempty-docstringz^Used when a module, function, class or method has an empty docstring (it would be too easy ;).Ú	old_names)ÚW0132zold-empty-docstringzMissing module docstringúmissing-module-docstringzNUsed when a module has no docstring. Empty modules do not require a docstring.)ÚC0111zmissing-docstringzMissing class docstringúmissing-class-docstringzNUsed when a class has no docstring. Even an empty class must have a docstring.z$Missing function or method docstringúmissing-function-docstringzoUsed when a function or method has no docstring. Some special methods like __init__ do not require a docstring.)ÚC0112ÚC0114ÚC0115ÚC0116zno-docstring-rgxÚregexpz<regexp>zcRegular expression which should only match function or class names that do not require a docstring.)ÚdefaultÚtypeÚmetavarÚhelpzdocstring-min-lengthéÿÿÿÿÚintz<int>z[Minimum line length for functions/classes that require docstrings, shorter ones are exempt.r   ÚNonec                óB   — | j         j                             ¦   «          d S )N)ÚlinterÚstatsÚreset_undocumented)Úselfs    r   ÚopenzDocStringChecker.openg   s   € ØŒÔ×,Ò,Ñ.Ô.Ð.Ð.Ð.ó    r   únodes.Modulec                ó2   — |                       d|¦  «         d S )NÚmodule)Ú_check_docstring©r4   r   s     r   Úvisit_modulezDocStringChecker.visit_modulej   s   € à×Ò˜h¨Ñ-Ô-Ð-Ð-Ð-r6   únodes.ClassDefc                óˆ   — | j         j        j                             |j        ¦  «        €|                      d|¦  «         d S d S )NÚclass)r1   ÚconfigÚno_docstring_rgxÚmatchÚnamer:   r;   s     r   Úvisit_classdefzDocStringChecker.visit_classdefn   sE   € àŒ;ÔÔ.×4Ò4°T´YÑ?Ô?ÐGØ×!Ò! '¨4Ñ0Ô0Ð0Ð0Ð0ð HÐGr6   únodes.FunctionDefc                ó”  — | j         j        j                             |j        ¦  «        �€�|                     ¦   «         rdnd}t          |¦  «        st          |¦  «        st          |¦  «        rd S t          |j
                             ¦   «         t          j        ¦  «        rÚd}t          j        |j
                             ¦   «         ¦  «        rt           j        nt           j        }|j
                             ¦   «                              ¦   «         D ]M}|                     ¦   «         dk    rŒ|j        |v r)t          ||j                 t          j        ¦  «        rd} nŒN|                      ||| |¬¦  «         d S t          |j
                             ¦   «         t          j        ¦  «        r|                      ||¦  «         d S d S d S )NÚmethodÚfunctionFzbuiltins.objectT)Úreport_missingÚ
confidence)r1   r@   rA   rB   rC   Ú	is_methodr   r
   r	   r   ÚparentÚframer   ÚClassDefr   Úhas_known_basesr   Ú	INFERENCEÚINFERENCE_FAILUREÚ	ancestorsÚqnameÚFunctionDefr:   ÚModule)r4   r   ÚftypeÚ
overriddenrJ   Úancestors         r   Úvisit_functiondefz"DocStringChecker.visit_functiondefs   sÊ  € àŒ;ÔÔ.×4Ò4°T´YÑ?Ô?ÑGØ $§¢Ñ 0Ô 0Ð@�H�H°jˆEå" 4Ñ(Ô(ðå& tÑ,Ô,ðõ $ DÑ)Ô)ðð
 �å˜$œ+×+Ò+Ñ-Ô-­u¬~Ñ>Ô>ð Ø"�
õ Ô,¨T¬[×->Ò->Ñ-@Ô-@ÑAÔAð6•JÔ(Ð(å#Ô5ð ð !%¤× 1Ò 1Ñ 3Ô 3× =Ò =Ñ ?Ô ?ð ð �HØ—~’~Ñ'Ô'Ð+<Ò<Ð<Ø Ø”y HÐ,Ð,µØ  ¤Ô+­UÔ->ñ2ô 2Ð,ð &*˜
Ø˜øØ×%Ò%Ø˜4°J°È:ð &ñ ô ð ð ð õ ˜DœK×-Ò-Ñ/Ô/µ´Ñ>Ô>ð Ø×%Ò% e¨TÑ2Ô2Ð2Ð2Ð2à�ð? HÐGr6   TÚ	node_typeú0Literal['class', 'function', 'method', 'module']r   rI   ÚboolrJ   úinterfaces.Confidencec                óV  — |j         r|j         j        nd}|€t          |¦  «        }|�€Š|sdS t          j        |¦  «        |j        z
  }|dk    r|sdS | j        j        j        }|dk    r|dk    r||k     rdS |dk    r | j        j	        j
        dxx         dz  cc<   n| j        j	        j
        |xx         dz  cc<   |j        rÁt          |j        d         t          j        ¦  «        rœt          |j        d         j        t          j        ¦  «        rrt          j        |j        d         j        j        ¦  «        }t          |t$          j        ¦  «        r/t          |j        t$          j        ¦  «        r|j        j        dv rdS |dk    rd	}	n|dk    rd
}	nd}	|                      |	||¬¦  «         dS |                     ¦   «         sa|dk    r | j        j	        j
        dxx         dz  cc<   n| j        j	        j
        |xx         dz  cc<   |                      d||f|¬¦  «         dS dS )z,Check if the node has a non-empty docstring.Nr9   r-   r?   Úklassé   r   >   r   ÚbytesÚunicoder    r"   r#   )r   rJ   r   )r   ÚargsrJ   )Údoc_noder   r   r   Úget_node_last_linenoÚlinenor1   r@   Údocstring_min_lengthr2   ÚundocumentedÚbodyr   r   ÚExprÚCallr   ÚfuncÚastroidÚBoundMethodÚboundÚInstancerC   Úadd_messageÚstrip)
r4   rZ   r   rI   rJ   r   ÚlinesÚ	max_linesrl   Úmessages
             r   r:   z!DocStringChecker._check_docstring˜   s‰  € ð ,0¬=ÐB�D”MÔ'Ð'¸dˆ	ØÐÝ3°DÑ9Ô9ˆIàÑØ!ð Ø�ÝÔ.¨tÑ4Ô4°t´{ÑBˆEà˜HÒ$Ð$¨UÐ$ð �ØœÔ*Ô?ˆIà˜HÒ$Ð$¨°Rª¨¸EÀIÒ<MÐ<MØ�Ø˜GÒ#Ð#Ø”Ô!Ô.¨wÐ7Ð7Ô7¸1Ñ<Ð7Ð7Ñ7Ð7à”Ô!Ô.¨yÐ9Ð9Ô9¸QÑ>Ð9Ð9Ñ9à”	ðå˜tœy¨œ|­U¬ZÑ8Ô8ðõ ˜tœy¨œ|Ô1µ5´:Ñ>Ô>ðõ Ô'¨¬	°!¬Ô(:Ô(?Ñ@Ô@�Ý˜d¥GÔ$7Ñ8Ô8ð ½ZØ”J¥Ô 0ñ>ô >ð ð ”z”Ð*EÐEÐEØ˜Ø˜HÒ$Ð$Ø4��Ø˜gÒ%Ð%Ø3��à6�Ø×Ò˜W¨4¸JÐÑGÔGÐGÐGÐGØ—’Ñ"Ô"ð 	Ø˜GÒ#Ð#Ø”Ô!Ô.¨wÐ7Ð7Ô7¸1Ñ<Ð7Ð7Ñ7Ð7à”Ô!Ô.¨yÐ9Ð9Ô9¸QÑ>Ð9Ð9Ñ9Ø×ÒØ!¨°I°<ÈJð ñ ô ð ð ð ð	ð 	r6   N)r   r/   )r   r7   r   r/   )r   r=   r   r/   )r   rE   r   r/   )
rZ   r[   r   r   rI   r\   rJ   r]   r   r/   )Ú__name__Ú
__module__Ú__qualname__ÚmsgsÚNO_REQUIRED_DOC_RGXÚoptionsr5   r   Úonly_required_for_messagesr<   rD   rY   Úvisit_asyncfunctiondefr   ÚHIGHr:   © r6   r   r   r   -   sÀ  € € € € € ð !Øð2àÐ;Ð<Ð=ð
ð 'Ø&ð8àÐ9Ð:Ð;ð
ð &Ø%ð9àÐ9Ð:Ð;ð
ð 3Ø(ðð Ð9Ð:Ð;ð
ð-ð €DðB à.Ø Ø%ðð	ð ð
	
ð #àØØ"ðDðð ð	
ð€Gð4/ð /ð /ð /ð &€UÔ%Ð&@ÐBSÑTÔTð.ð .ð .ñ UÔTð.ð &€UÔ%Ð&?ÐARÑSÔSð1ð 1ð 1ñ TÔSð1ð &€UÔ%Ð&BÐDUÑVÔVð ð  ð  ñ WÔVð ðD /Ðð  $Ø,6¬Oð8ð 8ð 8ð 8ð 8ð 8ð 8r6   r   )r   r   r   r   )r   Ú
__future__r   ÚreÚtypingr   rm   r   Úpylintr   Úpylint.checkersr   Ú"pylint.checkers.base.basic_checkerr   Úpylint.checkers.utilsr	   r
   r   Úcompilerz   r   r   r   r6   r   ú<module>rˆ      s#  ðð
 0Ð /à "Ð "Ð "Ð "Ð "Ð "à 	€	€	€	Ø Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø <Ð <Ð <Ð <Ð <Ð <ðð ð ð ð ð ð ð ð ð ð !�b”j Ñ&Ô&Ð ð ð  ð  ð  ð"cð cð cð cð c�}ñ cô cð cð cð cr6   