o
    w!gu                     @  sd  U 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
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z# d dl$m%Z%m&Z& d dl'm(Z(m)Z) d d	l*m+Z+ erd d
lm,Z, d dlm-Z-m.Z. d dl*m/Z/ d dl0m1Z1 e(j2e(j3e(j4e(j5e(j6e(j7e(j8e(j9e(j:e(j;e(j<e(j<e(j=e(j>dZ?d|ddZ@d|ddZAd}ddZBd~d!d"ZCd#ZDdeEd$< d%ZFdeEd&< d'ZGdeEd(< d)ZHdeEd*< eId+eG d,eH d-eG d.eH d/	ejJejKB ZLd0eEd1< eLZMd0eEd2< eLZNd0eEd3< eId4eG d5eG d6eD d7eF d8eH d9ejJejKB ZOd0eEd:< eId;ZPd0eEd<< eId=ZQd0eEd>< d?d@ddCdDZRddFdGZSd?d@ddIdJZTddLdMZUddOdPZVddRdSZWddUdVZXddXdYZYdd[d\ZZdd^d_Z[ddadbZ\ddddeZ]ddgdhZ^d?diddldmZ_ddtduZ`e(j3eSe(j4eTe(j2eUe(j8eYe(j9eZe(j:e_e(j;e[e(j<e\e(j=e]e(j>e^e(j5eVe(j6eWe(j7eXiZadvd?d?dwddzd{ZbdS )    )annotationsN)suppress)dedent)TYPE_CHECKING)DocstringAttributeDocstringClassDocstringFunctionDocstringModuleDocstringParameterDocstringRaiseDocstringReceiveDocstringReturnDocstringSectionDocstringSectionAdmonitionDocstringSectionAttributesDocstringSectionClassesDocstringSectionDeprecatedDocstringSectionExamplesDocstringSectionFunctionsDocstringSectionModulesDocstringSectionOtherParametersDocstringSectionParametersDocstringSectionRaisesDocstringSectionReceivesDocstringSectionReturnsDocstringSectionTextDocstringSectionWarnsDocstringSectionYieldsDocstringWarnDocstringYield)docstring_warningparse_docstring_annotation)DocstringSectionKindLogLevel)ExprName)Pattern)AnyLiteral)Expr)	Docstring)
deprecated
parameterszother parametersreturnsyieldsreceivesraiseswarnsexamples
attributes	functionsmethodsclassesmoduleslinestrreturnboolc                 C  s
   |    S )N)stripr7    r=   Z/mnt/skqttb/ctump_chatbot/chatbot/lib/python3.10/site-packages/_griffe/docstrings/numpy.py_is_empty_lineU   s   
r?   c                 C  s   t |  ot | ddS )N- )r?   replacer<   r=   r=   r>   _is_dash_lineY   s   rC   	docstringr)   offsetintoptionsr&   tuple[list[list[str]], int]c          	      K  sH  | j }|t|krg |fS |}g }t|| r!|d7 }t|| s|| g}|d7 }|t|k r|| }t|r>|d nO|drM||dd   n@|drtt|t|  }|||d   t| |d|d  d|  n|d t|k rt||d  rn|| |g}|d7 }|t|k s0|r|| ||d fS )N   rA   z        z,Confusing indentation for continuation line z' in docstring, should be 4 spaces, not )lineslenr?   append
startswithlstripr    rC   )	rD   rE   rG   rL   
new_offsetitemscurrent_itemr7   cont_indentr=   r=   r>   _read_block_items]   sF   


 
 
rU   tuple[str, int]c                K  s   | j }|t|krd|fS |}g }t|| r!|d7 }t|| s|t|k rdt|| }|r@|t|d k r@t||d  r@n$|rS|t|d k rSt||d  rSn|||  |d7 }|t|k s'd|d|d fS )NrA   rI      
)rL   rM   r?   rC   rN   joinrstrip)rD   rE   rG   rL   rQ   blockis_emptyr=   r=   r>   _read_block   s$   $$r]   z\{_RE_OBz\}_RE_CBz\*{0,2}[_a-z][_a-z0-9]*_RE_NAMEz.+_RE_TYPEz
    (?:
        (?P<nt_name>z)\s*:\s*(?P<nt_type>z4)  # name and type
        |  # or
        (?P<name>zu)\s*:\s*  # just name
        |  # or
        \s*:\s*$  # no name, no type
        |  # or
        (?::\s*)?(?P<type>z)\s*  # just type
    )
    r%   _RE_RETURNS
_RE_YIELDS_RE_RECEIVESz
    (?P<names>z(?:,\sz5)*)
    (?:
        \s:\s
        (?:
            (?:z(?P<choices>.+)z)|
            (?P<type>z)
        )?
    )?
    _RE_PARAMETERz^\s*<BLANKLINE>\s*$_RE_DOCTEST_BLANKLINEz(\s*#\s*doctest:.+)$_RE_DOCTEST_FLAGST)warn_unknown_paramsrh   $tuple[list[DocstringParameter], int]c             
     s  g }t | fd|i|\}}|D ],}t|d }|s)t| |d|d  d q|dd}	|dp7d  |d}
d |
rL|
 |
dd	d n r`td
 }|r`|d|d  rm drm d d  t|d	kr~d	|d	d  
 nd d u r|	D ] }ttt | jj| j 	 W d     n1 sw   Y  qt| |d|	  nt | tjd d u r|	D ] }ttt | jj| j	 W d     n	1 sw   Y  q|r/tt? | jj}|	D ]0}||vrd| d}d| d| fD ]}||v r|d| d7 } nqt| || qW d    n	1 s*w   Y  | fdd|	D  q||fS )NrE   r   Could not parse line ''namesz, typechoicesrI   z8^(?P<annotation>.+),\s+default(?: |: |=)(?P<default>.+)$default
annotationz
, optionalirX   rA   z'No types or annotations for parameters 	log_levelzParameter 'z+' does not appear in the function signature*z**z. Did you mean 'z'?c                 3  s     | ]}t | d V  qdS ))valuerp   descriptionN)r
   ).0namerp   ro   ru   r=   r>   	<genexpr>  s    
z#_read_parameters.<locals>.<genexpr>)rU   re   matchr    groupsplitreendswithrM   rY   rZ   r   AttributeErrorKeyErrorparentr+   rp   r!   r#   debugro   extend)rD   rE   rh   rG   r+   rR   rQ   itemrz   rl   rn   rw   paramsmessagestarred_namer=   rx   r>   _read_parameters   sn   



&""



r   -tuple[DocstringSectionParameters | None, int]c                K  sB   t | fd|i|\}}|rt||fS t| |d|  d |fS )NrE   z!Empty parameters section at line )r   r   r    )rD   rE   rG   r+   rQ   r=   r=   r>   _read_parameters_section  s
   r   2tuple[DocstringSectionOtherParameters | None, int]c                K  sD   t | f|dd|\}}|rt||fS t| |d|  d |fS )NF)rE   rh   z'Empty other parameters section at line )r   r   r    )rD   rE   rh   rG   r+   rQ   r=   r=   r>   _read_other_parameters_section,  s
   r   -tuple[DocstringSectionDeprecated | None, int]c                K  s   t | fd|i|\}}|st| |d|  d |fS t|dkr*t| |d|  |d }|d }td|dd  }t||d|fS )NrE   z!Empty deprecated section at line rI   zToo many deprecated items at r   rX   )versiontext)rU   r    rM   r   rY   r   )rD   rE   rG   rR   rQ   r   r   r   r=   r=   r>   _read_deprecated_section<  s   	r   *tuple[DocstringSectionReturns | None, int]c             	   K  s  t | fd|i|\}}|st| |d|  d |fS g }t|D ]\}}t|d }|s;t| |d|d  d q!| }	|	d pF|	d }
|	d pN|	d	 }td
|dd  }|d u rtt	t
tS | jjrn| jj}n| jjrw| jj}ntt|dkr|jr|jj| }n'|jr|j}n|jr|jjd }ntt|tr|}n|jr|jj| }n|}W d    n1 sw   Y  nt|| tjd}|t|
pd||d q!t||fS )NrE   zEmpty returns section at line r   rj   rk   nt_namerw   nt_typerm   rX   rI   rW   rq   rA   rw   rp   ru   )rU   r    	enumeraterb   rz   	groupdictr   rY   r   r   r   
ValueErrorr   is_functionr,   is_attributerp   rM   is_tuplesliceelementsis_iteratoris_generator
isinstancer$   r!   r#   r   rN   r   r   )rD   rE   rG   rR   rQ   r,   indexr   rz   groupsrw   rp   r   return_itemr=   r=   r>   _read_returns_sectionT  sP   


r   )tuple[DocstringSectionYields | None, int]c             	   K  sx  t | fd|i|\}}|st| |d|  d |fS g }t|D ]\}}t|d }|s;t| |d|d  d q!| }	|	d pF|	d }
|	d pN|	d	 }td
|dd  }|d u rtt	t
tt3 | jj}|jrq|j}n|jr{|jjd }ntt|tr|}n|jr|jj| }n|}W d    n1 sw   Y  nt|| tjd}|t|
pd||d q!t||fS )NrE   zEmpty yields section at line r   rj   rk   r   rw   r   rm   rX   rI   rq   rA   r   )rU   r    r   rc   rz   r   r   rY   r   r   
IndexErrorr   r   r   rp   r   r   r   r   r   r$   r   r!   r#   r   rN   r   r   )rD   rE   rG   rR   rQ   r-   r   r   rz   r   rw   rp   r   
yield_itemr=   r=   r>   _read_yields_section  sB   	
r   +tuple[DocstringSectionReceives | None, int]c             	   K  s`  t | fd|i|\}}|st| |d|  d |fS g }t|D ]\}}t|d }|s;t| |d|d  d q!| }	|	d pF|	d }
|	d pN|	d	 }td
|dd  }|d u rtt	t
) | jj}|jr|jjd }t|try|}n|jr|jj| }n|}W d    n1 sw   Y  nt|| tjd}|t|
pd||d q!t||fS )NrE   zEmpty receives section at line r   rj   rk   r   rw   r   rm   rX   rI   rq   rA   r   )rU   r    r   rd   rz   r   r   rY   r   r   r   r   r,   r   r   r   r   r$   r   r!   r#   r   rN   r   r   )rD   rE   rG   rR   rQ   r.   r   r   rz   r   rw   rp   r   receives_itemr=   r=   r>   _read_receives_section  s<   	
r   )tuple[DocstringSectionRaises | None, int]c          	      K     t | fd|i|\}}|st| |d|  d |fS g }|D ]}t|d | }td|dd  }|t||d qt||fS )NrE   zEmpty raises section at line r   rX   rI   rp   ru   )rU   r    r!   r   rY   rN   r   r   )	rD   rE   rG   rR   rQ   r/   r   rp   r   r=   r=   r>   _read_raises_section     	r   (tuple[DocstringSectionWarns | None, int]c          	      K  r   )NrE   zEmpty warns section at line r   rX   rI   r   )rU   r    r!   r   rY   rN   r   r   )	rD   rE   rG   rR   rQ   r0   r   rp   r   r=   r=   r>   _read_warns_section  r   r   -tuple[DocstringSectionAttributes | None, int]c             	   K  s
  t | fd|i|\}}|st| |d|  d |fS g }|D ]_}|d }d|v r<|dd\}}	| }|	 p:d }	n|}d }	|	d u ratttt | j| j	}	W d    n1 s[w   Y  nt
|	| tjd}	td|dd  }
|t||	|
d qt||fS )	NrE   z!Empty attributes section at line r   :rI   rq   rX   r   )rU   r    r|   r;   r   r   r   	TypeErrorr   rp   r!   r#   r   r   rY   rN   r   r   )rD   rE   rG   rR   rQ   r2   r   	name_typerw   rp   r   r=   r=   r>   _read_attributes_section  s,   	r   ,tuple[DocstringSectionFunctions | None, int]c                K     t | fd|i|\}}|st| |d|  d |fS g }|D ]6}|d }d|v r:|ddd }| }| }	n|}d }	td|dd   }
|t||	|
d qt||fS )NrE   z(Empty functions/methods section at line r   (rI   rX   r   )	rU   r    r|   r;   r   rY   rN   r   r   )rD   rE   rG   rR   rQ   r3   r   name_signaturerw   	signaturer   r=   r=   r>   _read_functions_section;      
r   *tuple[DocstringSectionClasses | None, int]c                K  r   )NrE   zEmpty classes section at line r   r   rI   rX   r   )	rU   r    r|   r;   r   rY   rN   r   r   )rD   rE   rG   rR   rQ   r5   r   r   rw   r   r   r=   r=   r>   _read_classes_sectionY  r   r   *tuple[DocstringSectionModules | None, int]c                K  r   )NrE   zEmpty modules section at line r   r   rI   rX   r   )	rU   r    r|   r;   r   rY   rN   r	   r   )rD   rE   rG   rR   rQ   r6   r   r   rw   r   r   r=   r=   r>   _read_modules_sectionw  r   r   )trim_doctest_flagsr   +tuple[DocstringSectionExamples | None, int]c                K  s  t | fd|i|\}}g }d}d}g }	g }
|dD ]x}t|r;|r5|
r2|tjd|
f g }
d}q|	| q|rQ|rKtd|}t	d|}|
| q|
dr_| }|	| q|rg|	| q|
dr|	r~|tjd|	df g }	d}|rtd|}|
| q|	| q|	r|tjd|	df n|
r|tjd|
f |rt||fS t| |d|  d |fS )	NrE   FrX   rA   ```z>>>TzEmpty examples section at line )r]   r|   r?   rN   r"   r1   rY   rg   subrf   rO   r   rZ   r   r    )rD   rE   r   rG   r   rQ   sub_sectionsin_code_examplein_code_blockcurrent_textcurrent_exampler7   r=   r=   r>   _read_examples_section  sR   

r   sectionslistcurrent	list[str]admonition_titleNonec                 C  s~   |r&|  dd}|dv r|d d }| t|d|d|d d S |r;t|r=| td|d d S d S d S )NrK   r@   )warningsnotesrX   )kindr   title)lowerrB   rN   r   rY   rZ   anyr   )r   r   r   r   r=   r=   r>   _append_section  s   r   F)ignore_init_summaryr   rh   r   list[DocstringSection]c                K  s  g }g }d}d}| j }	|||d|}|d o0| jduo0| jjdko0| jjo0| jjduo0| jjj}
|
r5dnd}|t|	k r|	|  }|rW|d	d
rOd}|	|	|  nz|d	d
rid}|	|	|  nht
|	| ru|	d n\|t|	d kr|	|	|  t||| d}g }nBt|	|d  rt||| g }|tv rd}tt|  }|| fd|d i|\}}|r|	| n|	| }|d7 }n|	|	|  |d7 }|t|	k s=t||| |S )aK  Parse a Numpydoc-style docstring.

    This function iterates on lines of a docstring to build sections.
    It then returns this list of sections.

    Parameters:
        docstring: The docstring to parse.
        ignore_init_summary: Whether to ignore the summary in `__init__` methods' docstrings.
        trim_doctest_flags: Whether to remove doctest flags from Python example blocks.
        warn_unknown_params: Warn about documented parameters not appearing in the signature.
        **options: Additional parsing options.

    Returns:
        A list of docstring sections.
    rA   F)r   r   rh   r   N__init__rW   r   rK   r   TrI   rE   )rL   r   rw   r   is_classrM   r   rP   rO   rN   r?   r   rC   _section_kind_section_reader)rD   r   r   rh   rG   r   current_sectionr   r   rL   ignore_summaryrE   
line_lowerreadersectionr=   r=   r>   parse_numpy  sp   

	

5r   )r7   r8   r9   r:   )rD   r)   rE   rF   rG   r&   r9   rH   )rD   r)   rE   rF   rG   r&   r9   rV   )
rD   r)   rE   rF   rh   r:   rG   r&   r9   ri   )rD   r)   rE   rF   rG   r&   r9   r   )
rD   r)   rE   rF   rh   r:   rG   r&   r9   r   )rD   r)   rE   rF   rG   r&   r9   r   )rD   r)   rE   rF   rG   r&   r9   r   )rD   r)   rE   rF   rG   r&   r9   r   )rD   r)   rE   rF   rG   r&   r9   r   )rD   r)   rE   rF   rG   r&   r9   r   )rD   r)   rE   rF   rG   r&   r9   r   )rD   r)   rE   rF   rG   r&   r9   r   )rD   r)   rE   rF   rG   r&   r9   r   )rD   r)   rE   rF   rG   r&   r9   r   )rD   r)   rE   rF   rG   r&   r9   r   )
rD   r)   rE   rF   r   r:   rG   r&   r9   r   )r   r   r   r   r   r8   r9   r   )rD   r)   r   r:   r   r:   rh   r:   rG   r&   r9   r   )c
__future__r   r}   
contextlibr   textwrapr   typingr   _griffe.docstrings.modelsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _griffe.docstrings.utilsr    r!   _griffe.enumerationsr"   r#   _griffe.expressionsr$   r%   r&   r'   r(   _griffe.modelsr)   r*   r+   other_parametersr,   r-   r.   r/   r0   r1   r2   r3   r5   r6   r   r?   rC   rU   r]   r^   __annotations__r_   r`   ra   compile
IGNORECASEVERBOSErb   rc   rd   re   rf   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r=   r=   r=   r>   <module>   s   p



<



F


8
0
,


%

"
?