
    %j5D              
      Z   d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
mZ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 d dlmZmZ e
rd dlmZ d d	lmZ d d
lm Z   e!d          Z" e!d          Z# e!d          Z$ e!d          Z% e!d          Z& e!d          Z' e!d          Z( ed           G d d                      Z)e G d d                      Z*e G d d                      Z+ G d ded          Z,ddddGd&Z-ddddHd,Z.dId0Z/dd1dJd4Z0dd1dKd5Z1dd1dKd6Z2dd1dKd7Z3dd1dKd8Z4ddd9dLd;Z5dd1dKd<Z6dMd=Z7dd1dNd>Z8dOdBZ9dPdDZ:dQdEZ; e)e#e1           e)e"e.           e)e%e3           e)e$e2           e)e(e4           e)e&e5           e)e'e6          gZ<dFS )R    )annotations)suppress)	dataclassfield)cleandoc)TYPE_CHECKINGAny	TypedDict)
DocstringAttributeDocstringParameterDocstringRaiseDocstringReturnDocstringSectionDocstringSectionAttributesDocstringSectionParametersDocstringSectionRaisesDocstringSectionReturnsDocstringSectionText)docstring_warningparse_docstring_annotation)Callable)Expr)	Docstring)param	parameterargargumentkeykeyword)type)varivarcvar)vartype)returnsreturn)rtype)raisesraiseexcept	exceptionT)frozenc                  0    e Zd ZU dZded<   ded<   dd
ZdS )
_FieldTypez)Maps directive names to parser functions.zfrozenset[str]namesz.Callable[[Docstring, int, _ParsedValues], int]readerlinestrr&   boolc                D    t          fd| j        D                       S )zCheck if a line matches the field type.

        Parameters:
            line: Line to check against

        Returns:
            True if the line matches the field type, False otherwise.
        c              3  H   K   | ]}                     d |           V  dS ):N)
startswith).0namer1   s     j/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/griffe/_internal/docstrings/sphinx.py	<genexpr>z%_FieldType.matches.<locals>.<genexpr>=   s5      FF44??:t::..FFFFFF    )anyr/   )selfr1   s    `r:   matchesz_FieldType.matches4   s*     FFFF4:FFFFFFr<   N)r1   r2   r&   r3   )__name__
__module____qualname____doc____annotations__r?    r<   r:   r.   r.   -   sN         33::::	G 	G 	G 	G 	G 	Gr<   r.   c                  J    e Zd ZU dZded<   ded<   ded<   ded<   d	Zd
ed<   dS )_ParsedDirectivez<Directive information that has been parsed from a docstring.r2   r1   int
next_index	list[str]directive_partsvalueFr3   invalidN)r@   rA   rB   rC   rD   rM   rE   r<   r:   rG   rG   @   sP         FFIIIOOOJJJGr<   rG   c                      e Zd ZU dZ ee          Zded<    ee          Z	ded<    ee          Z
ded<    ee          Zd	ed
<    ee          Zded<    ee          Zded<   dZded<   dZded<   dS )_ParsedValuesz@Values parsed from the docstring to be used to produce sections.)default_factoryrJ   descriptionzdict[str, DocstringParameter]
parameterszdict[str, str | Expr]param_typeszdict[str, DocstringAttribute]
attributeszdict[str, str]attribute_typeszlist[DocstringRaise]
exceptionsNzDocstringReturn | Nonereturn_value
str | Nonereturn_type)r@   rA   rB   rC   r   listrQ   rD   dictrR   rS   rT   rU   rV   rW   rY   rE   r<   r:   rO   rO   K   s         JJ"U4888K888805d0K0K0KJKKKK).t)D)D)DKDDDD05d0K0K0KJKKKK&+eD&A&A&AOAAAA',uT'B'B'BJBBBB+/L////"K""""""r<   rO   c                  *    e Zd ZU dZded<   	 ded<   dS )SphinxOptionsz,Options for parsing Sphinx-style docstrings.r3   warn_unknown_paramswarningsN)r@   rA   rB   rC   rD   rE   r<   r:   r]   r]   Y   s0         663NNN77r<   r]   F)totalr^   r_   	docstringr   r^   r3   r_   r&   list[DocstringSection]c               T   t                      }||d}| j        }d}|t          |          k     rk||         }t          D ])}|                    |          r |j        | ||fi |} n*|j                            |           |dz  }|t          |          k     kt          |          S )a$  Parse a Sphinx-style docstring.

    Parameters:
        docstring: The docstring to parse.
        warn_unknown_params: Warn about documented parameters not appearing in the signature.
        warnings: Whether to log warnings at all.

    Returns:
        A list of docstring sections.
    ra   r      )	rO   lineslen_field_typesr?   r0   rQ   append_parsed_values_to_sections)	rb   r^   r_   parsed_valuesoptionsrf   curr_line_indexr1   
field_types	            r:   parse_sphinxro   b   s      "OOM  3 G
 OEO
CJJ
&
&_%& 	3 	3J!!$'' "3*"3IP]"i"iah"i"i
 %,,T2221 CJJ
&
& &m444r<   offsetrH   rk   rl   r	   c                  t          | ||          }|j        r|j        S d }t          |j                  dk    r|j        d         }nt          |j                  dk    r)t          |j        d         |           }|j        d         }net          |j                  dk    r*|j        d         }|rt          | dd|j         d           n#|rt          | dd|j         d           |j        S ||j        v r|rt          | dd	| d           |j        S |rq|rot          t                    5  | j        j        }	||	vr3d
| d}
d| d| fD ]}||	v r|
d| dz  }
 nt          | d|
           d d d            n# 1 swxY w Y   t          | ||||          }t          | |          }t          |||j        |          |j        |<   |j        S )Nr_      re      r   &Failed to parse field directive from ''zDuplicate parameter entry for 'zParameter 'z+' does not appear in the function signature*z**z. Did you mean 'z'?)r9   
annotationrQ   rL   )_parse_directiverM   rI   rg   rK   r   r   r1   rR   r   AttributeErrorparent_determine_param_annotation_determine_param_defaultr   rL   )rb   rp   rk   r^   r_   rl   parsed_directivedirective_typer9   paramsmessagestarred_namery   defaults                 r:   _read_parameterr      s    (	6HMMM +**N
+,,11/2	-	.	.!	3	33,Q/
 
  /2	-	.	.	2	2  /3 	oi,mUeUj,m,m,mnnn 	oi,mUeUj,m,m,mnnn**}''' 	Wi,Ud,U,U,UVVV** 	9' 	9n%% 	9 	9%0F6!!YYYY%/ZZd$=  L#v--#Fl#F#F#FF . ")Q888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 -YnmfnoooJ&y$77G%7$*	& & &MT" &&s   .AE>>FFr9   r2   rX   c                    	 | j         j        |                                         j        S # t          t
          f$ r Y d S w xY w)N)r|   rR   lstripr   r{   KeyError)rb   r9   s     r:   r~   r~      sJ    *4;;==9AAH%   tts   (+ A A rr   r   str | Expr | Nonec               :   d }|j                             |          }||}||}|r||t          | dd| d           |Y	 | j        j        |                                         j        }n.# t          t          f$ r |rt          | dd| d           Y nw xY w|S )Nr   %Duplicate parameter information for 'rw   zNo matching parameter for ')	rS   getr   r|   rR   r   ry   r{   r   )rb   r9   r   rk   r_   ry   parsed_param_types          r:   r}   r}      s     %)J%155d;;$&
!#
 YN.3D3P)Q(WPT(W(W(WXXX	W")4T[[]]CNJJ) 	W 	W 	W W!)Q0Ud0U0U0UVVV	W s   )A- -(BBc                  t          | ||          }|j        r|j        S t          |j                                                  }t          ||           }t          |j                  dk    r|j        d         }n#|rt          | dd|j
         d           |j        S ||j        |<   |j                            |          }	|	$|	j        ||	_        nt          | dd| d           |j        S )Nrr   rs   re   r   z#Failed to get parameter name from 'rw   r   )rz   rM   rI   _consolidate_descriptive_typerL   stripr   rg   rK   r   r1   rS   rR   r   ry   )
rb   rp   rk   r_   rl   r   param_type_str
param_type
param_namer   s
             r:   _read_parameter_typer      s    (	6HMMM +**23C3I3O3O3Q3QRRN+NIFFJ
+,,11%5a8

 	li,jRbRg,j,j,jkkk**,6Mj)$((44E#)Ei,aT^,a,a,abbb&&r<   c               8   t          | ||          }|j        r|j        S t          |j                  dk    r|j        d         }n#|rt          | dd|j         d           |j        S d }|j                            |          }||}nJt          t          t          t                    5  | j        |         j        }d d d            n# 1 swxY w Y   ||j        v r|rt          | dd| d           nt!          |||j                  |j        |<   |j        S )	Nrr   rs   re   r   rv   rw   zDuplicate attribute entry for 'r9   ry   rQ   )rz   rM   rI   rg   rK   r   r1   rU   r   r   r{   r   	TypeErrorr|   ry   rT   r   rL   )	rb   rp   rk   r_   rl   r   r9   ry   parsed_attribute_types	            r:   _read_attributer     s    (	6HMMM +**
+,,11/2 	oi,mUeUj,m,m,mnnn**$(J *9==dCC(*

 nh	:: 	; 	;")$/:J	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; }''' 	Wi,Ud,U,U,UVVV);!(.*
 *
 *
 & &&s   +C

CCc                  t          | ||          }|j        r|j        S t          |j                                                  }t          |j                  dk    r|j        d         }n#|rt          | dd|j	         d           |j        S ||j
        |<   |j                            |          }|&|j        ||_        n|rt          | dd| d           |j        S )Nrr   rs   re   r   z#Failed to get attribute name from 'rw   z%Duplicate attribute information for ')rz   rM   rI   r   rL   r   rg   rK   r   r1   rU   rT   r   ry   )	rb   rp   rk   r_   rl   r   attribute_typeattribute_name	attributes	            r:   _read_attribute_typer   B  s    (	6HMMM +**23C3I3O3O3Q3QRRN
+,,11)9!< 	li,jRbRg,j,j,jkkk**4BM!.1(,,^<<I'#1I   	gi,eTb,e,e,efff&&r<   c               0   t          | ||          }|j        r|j        S t          |j                  dk    r<|j        d         }|j                            t          ||j                             n|rt          | dd|j
         d           |j        S )Nrr   rs   re   )ry   rQ   r   z*Failed to parse exception directive from 'rw   )rz   rM   rI   rg   rK   rV   ri   r   rL   r   r1   )rb   rp   rk   r_   rl   r   ex_types          r:   _read_exceptionr   `  s     (	6HMMM +**
+,,11"215 '''WgWm(n(n(noooo	 o)Q(mUeUj(m(m(mnnn&&r<   )warn_missing_typesr_   r   c               "   t          | ||          }|j        r|j        S |j        |j        }n>	 | j        j        }n0# t          $ r# |r|rt          | dd|j         d           d }Y nw xY wt          d||j
                  |_        |j        S )Nrr   r   z!No return type or annotation at 'rw    r   )rz   rM   rI   rY   r|   ry   r{   r   r1   r   rL   rW   )rb   rp   rk   r   r_   rl   r   ry   s           r:   _read_returnr   u  s     (	6HMMM +**  ,".

	")4JJ 	 	 	 n. n!)Q0lTdTi0l0l0lmmmJJJ	 "1bZ]m]s!t!t!tM&&s   > *A+*A+c                   t          | ||          }|j        r|j        S t          |j                                                  }||_        |j        }|||_        |j        S )Nrr   )	rz   rM   rI   r   rL   r   rY   rW   ry   )rb   rp   rk   r_   rl   r   rY   rW   s           r:   _read_return_typer     sq     (	6HMMM +**/0@0F0L0L0N0NOOK +M -L"-&&r<   c                j   d                     t          | j                            }t          |          g}| j        rHt          | j                                                  }|                    t          |                     | j	        rHt          | j	                                                  }|                    t          |                     | j        (|                    t          | j        g                     | j        r'|                    t          | j                             |S )N
)join_strip_blank_linesrQ   r   rR   rZ   valuesri   r   rT   r   rW   r   rV   r   )rk   textresultparam_valuesattribute_valuess        r:   rj   rj     s   99'(ABBCCD&:4&@&@%AF @M4;;==>>0>>??? D 8 ? ? A ABB01ABBCCC!--}/I.JKKLLL H,]-EFFGGGMr<   c               R   t          | j        |          \  }}	 |                    dd          \  }}}n;# t          $ r. |rt	          | dd| d           t          ||g dd          cY S w xY w|                                }t          |||                    d	          |          S )
Nr6   rs   r   z-Failed to get ':directive: value' pair from 'rw   r   T)rM    )_consolidate_continuation_linesrf   split
ValueErrorr   rG   r   )rb   rp   r_   r1   rI   _	directiverL   s           r:   rz   rz     s    6yOOD*H"jja009ee H H H 	ei,c\`,c,c,cdddj"b$GGGGGGH
 KKMMED*iooc.B.BEJJJs   5 5A-,A-rf   rJ   tuple[str, int]c                   |}| |                                          g}|dz  }|t          |           k     ri| |                             d          sN|                    | |                    |dz  }|t          |           k     r| |                             d          Nt	          d                    |                                        d          |dz
  fS )Nre   r6   r   )r   rg   r7   ri   r   r   rstrip)rf   rp   rm   blocks       r:   r   r     s    O?#**,,-E qO
CJJ
&
&u_/E/P/PQT/U/U
&U?+,,,1 CJJ
&
&u_/E/P/PQT/U/U
& DIIe$$%%,,T22Oa4GGGr<   descriptive_typec                .    |                      dd          S )Nz or z | )replace)r   s    r:   r   r     s    ##FE222r<   c                    | s| S d}d}d}t          |           D ]'\  }}|r|                                r|s|dz  }#d}|}(| ||dz            S )NFr   re   T)	enumerateisspace)rf   content_foundinitial_contentfinal_contentindexr1   s         r:   r   r     s      MOM '' " "t 	"t||~~ 	"  %1$ M!MM=1#4455r<   N)rb   r   r^   r3   r_   r3   r&   rc   )rb   r   rp   rH   rk   rO   r^   r3   r_   r3   rl   r	   r&   rH   )rb   r   r9   r2   r&   rX   )rb   r   r9   r2   r   r   rk   rO   r_   r3   r&   r	   )rb   r   rp   rH   rk   rO   r_   r3   rl   r	   r&   rH   )rb   r   rp   rH   rk   rO   r   r3   r_   r3   rl   r	   r&   rH   )rk   rO   r&   rc   )rb   r   rp   rH   r_   r3   r&   rG   )rf   rJ   rp   rH   r&   r   )r   r2   r&   r2   )rf   rJ   r&   rJ   )=
__future__r   
contextlibr   dataclassesr   r   inspectr   typingr   r	   r
   "griffe._internal.docstrings.modelsr   r   r   r   r   r   r   r   r   r   !griffe._internal.docstrings.utilsr   r   collections.abcr   griffe._internal.expressionsr   griffe._internal.modelsr   	frozenset_PARAM_NAMES_PARAM_TYPE_NAMES_ATTRIBUTE_NAMES_ATTRIBUTE_TYPE_NAMES_RETURN_NAMES_RETURN_TYPE_NAMES_EXCEPTION_NAMESr.   rG   rO   r]   ro   r   r~   r}   r   r   r   r   r   r   rj   rz   r   r   r   rh   rE   r<   r:   <module>r      s   # " " " " "       ( ( ( ( ( ( ( (       0 0 0 0 0 0 0 0 0 0                        \ [ [ [ [ [ [ [ 2((((((111111111111 yTUUIi(( 9455 !	,// 	/00Yz** 9GHH  $G G G G G G G G$         
# 
# 
# 
# 
# 
# 
# 
#8 8 8 8 8IU 8 8 8 8 !%	&5 &5 &5 &5 &5 &5\ !%<' <' <' <' <' <'~               P ' ' ' ' ' 'H ,' ,' ,' ,' ,' ,'h ' ' ' ' ' 'F ' ' ' ' ' '4  $' ' ' ' ' 'N ' ' ' ' ' '*     MQ 
K 
K 
K 
K 
K 
K
H 
H 
H 
H3 3 3 36 6 6 6& J "677J|_--J$&:;;J11J11J}l++J!#455r<   