
    iKj5D              
         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	 	 	 	 	 	 	 d1dZ-ddd	 	 	 	 	 	 	 	 	 	 	 	 	 d2d Z.d3d!Z/dd"	 	 	 	 	 	 	 	 	 	 	 d4d#Z0dd"	 	 	 	 	 	 	 	 	 	 	 d5d$Z1dd"	 	 	 	 	 	 	 	 	 	 	 d5d%Z2dd"	 	 	 	 	 	 	 	 	 	 	 d5d&Z3dd"	 	 	 	 	 	 	 	 	 	 	 d5d'Z4ddd(	 	 	 	 	 	 	 	 	 	 	 	 	 d6d)Z5dd"	 	 	 	 	 	 	 	 	 	 	 d5d*Z6d7d+Z7dd"d8d,Z8d9d-Z9d:d.Z:d;d/Z; e)e#e1       e)e"e.       e)e%e3       e)e$e2       e)e(e4       e)e&e5       e)e'e6      gZ<y0)<    )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                  .    e Zd ZU dZded<   ded<   ddZy)	
_FieldTypez)Maps directive names to parser functions.zfrozenset[str]namesz.Callable[[Docstring, int, _ParsedValues], int]readerc                @    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  F   K   | ]  }j                  d |         yw):N)
startswith).0namelines     s/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/griffe/_internal/docstrings/sphinx.py	<genexpr>z%_FieldType.matches.<locals>.<genexpr>=   s!     F:44??Qtf:.:s   !)anyr/   )selfr7   s    `r8   matchesz_FieldType.matches4   s     F4::FFF    N)r7   strr&   bool)__name__
__module____qualname____doc____annotations__r<    r=   r8   r.   r.   -   s    3::	Gr=   r.   c                  H    e Zd ZU dZded<   ded<   ded<   ded<   d	Zd
ed<   y)_ParsedDirectivez<Directive information that has been parsed from a docstring.r>   r7   int
next_index	list[str]directive_partsvalueFr?   invalidN)r@   rA   rB   rC   rD   rM   rE   r=   r8   rG   rG   @   s$    F
IOJGT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<   y)_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=   r8   rO   rO   K   sx    J"48K805d0KJ-K).t)DK&D05d0KJ-K&+D&AO^A',T'BJ$B+/L(/"K"r=   rO   c                  (    e Zd ZU dZded<   	 ded<   y)SphinxOptionsz,Options for parsing Sphinx-style docstrings.r?   warn_unknown_paramswarningsN)r@   rA   rB   rC   rD   rE   r=   r8   r]   r]   Y   s    63N7r=   r]   F)totalr^   r_   c               <   t               }||d}| j                  }d}|t        |      k  rg||   }t        D ]*  }|j	                  |      s |j
                  | ||fi |} n |j                  j                  |       |dz  }|t        |      k  rgt        |      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)		docstringr^   r_   parsed_valuesoptionsrd   curr_line_indexr7   
field_types	            r8   parse_sphinxrn   b   s      "OM  3G
 OOEO
CJ
&_%&J!!$'"3*"3"3IP]"iah"i	 ' %%,,T21 CJ
& &m44r=   c                  t        | ||      }|j                  r|j                  S d }t        |j                        dk(  r|j                  d   }nt        |j                        dk(  r)t        |j                  d   |       }|j                  d   }nnt        |j                        dkD  r-|j                  d   }|rEt        | dd|j                   d       n)|rt        | dd|j                   d       |j                  S ||j                  v r|rt        | dd	| d       |j                  S |re|rct        t              5  | j                  j                  }	||	vr1d
| d}
d| d| fD ]  }||	v s|
d| dz  }
 n t        | d|
       d d d        t        | ||||      }t        | |      }t        |||j                  |      |j                  |<   |j                  S # 1 sw Y   WxY w)Nr_      rc      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'?)r6   
annotationrQ   rL   )_parse_directiverM   rI   re   rK   r   r   r7   rR   r   AttributeErrorparent_determine_param_annotation_determine_param_defaultr   rL   )ri   offsetrj   r^   r_   rk   parsed_directivedirective_typer6   paramsmessagestarred_namerw   defaults                 r8   _read_parameterr      s    (	6HM***N
++,1//2	--	.!	33,,Q/
  //2	--	.	2  //3i.TUeUjUjTkkl,mni.TUeUjUjTkkl,mn***}'''i.MdVST,UV***'n%%%00F6!'v-XY'(Z2dV$=L#v-%5l^2#FF %> ")Q8 & -YnmfnoJ&y$7G%7$**	&MT" &&&) &%s    2G"3G""G+c                    	 | j                   j                  |j                            j                  S # t        t
        f$ r Y y w xY w)N)rz   rR   lstripr   ry   KeyError)ri   r6   s     r8   r|   r|      sA    **4;;=9AAAH% s   03 AArp   c               <   d }|j                   j                  |      }||}||}|r||t        | dd| d       |4	 | j                  j                  |j                            j                  }|S |S # t        t        f$ r |rt        | dd| d       Y |S w xY w)Nr   %Duplicate parameter information for 'ru   zNo matching parameter for ')	rS   getr   rz   rR   r   rw   ry   r   )ri   r6   r   rj   r_   rw   parsed_param_types          r8   r{   r{      s     %)J%1155d;$&
!#
N.3D3P)Q*OPTvUV(WX	W"))44T[[]CNNJ
 :	 ) 	W!)Q2MdVST0UV		Ws    1A5 5"BBc                  t        | ||      }|j                  r|j                  S t        |j                  j                               }t        ||       }t        |j                        dk(  r|j                  d   }n)|rt        | dd|j                   d       |j                  S ||j                  |<   |j                  j                  |      }	|	0|	j                  ||	_        |j                  S t        | dd| d       |j                  S )Nrp   rq   rc   r   z#Failed to get parameter name from 'ru   r   )rx   rM   rI   _consolidate_descriptive_typerL   stripr   re   rK   r   r7   rS   rR   r   rw   )
ri   r}   rj   r_   rk   r~   param_type_str
param_type
param_namer   s
             r8   _read_parameter_typer      s    (	6HM***23C3I3I3O3O3QRN+NIFJ
++,1%55a8
i.QRbRgRgQhhi,jk***,6Mj)$$((4E#)E &&& i.ST^S__`,ab&&&r=   c               ~   t        | ||      }|j                  r|j                  S t        |j                        dk(  r|j                  d   }n)|rt        | dd|j                   d       |j                  S d }|j                  j                  |      }||}n;t        t        t        t              5  | j                  |   j                  }d d d        ||j                  v r|rt        | dd| d       |j                  S t!        |||j"                        |j                  |<   |j                  S # 1 sw Y   gxY w)	Nrp   rq   rc   r   rt   ru   zDuplicate attribute entry for 'r6   rw   rQ   )rx   rM   rI   re   rK   r   r7   rU   r   r   ry   r   	TypeErrorrz   rw   rT   r   rL   )	ri   r}   rj   r_   rk   r~   r6   rw   parsed_attribute_types	            r8   _read_attributer     sA    (	6HM***
++,1//2i.TUeUjUjTkkl,mn***$(J *99==dC(*
 nh	:"))$/::J ; }'''i.MdVST,UV &&& *<!(..*
  & &&& ;:s   3D33D<c               
   t        | ||      }|j                  r|j                  S t        |j                  j                               }t        |j                        dk(  r|j                  d   }n)|rt        | dd|j                   d       |j                  S ||j                  |<   |j                  j                  |      }|2|j                  ||_        |j                  S |rt        | dd| d       |j                  S )Nrp   rq   rc   r   z#Failed to get attribute name from 'ru   z%Duplicate attribute information for ')rx   rM   rI   r   rL   r   re   rK   r   r7   rU   rT   r   rw   )	ri   r}   rj   r_   rk   r~   attribute_typeattribute_name	attributes	            r8   _read_attribute_typer   B  s    (	6HM***23C3I3I3O3O3QRN
++,1)99!<i.QRbRgRgQhhi,jk***4BM!!.1((,,^<I'#1I  &&& i.STbSccd,ef&&&r=   c               f   t        | ||      }|j                  r|j                  S t        |j                        dk(  rK|j                  d   }|j
                  j                  t        ||j                               |j                  S |rt        | dd|j                   d       |j                  S )Nrp   rq   rc   )rw   rQ   r   z*Failed to parse exception directive from 'ru   )rx   rM   rI   re   rK   rV   rg   r   rL   r   r7   )ri   r}   rj   r_   rk   r~   ex_types          r8   _read_exceptionr   `  s     (	6HM***
++,1"2215  '''WgWmWm(no &&& 
)Q*TUeUjUjTkkl(mn&&&r=   )warn_missing_typesr_   c               `   t        | ||      }|j                  r|j                  S |j                  |j                  }n	 | j                  j
                  }t        d||j                        |_        |j                  S # t        $ r$ |r|rt        | dd|j                   d       d }Y Uw xY w)Nrp   r   z!No return type or annotation at 'ru    r   )rx   rM   rI   rY   rz   rw   ry   r   r7   r   rL   rW   )ri   r}   rj   r   r_   rk   r~   rw   s           r8   _read_returnr   u  s     (	6HM***   ,"..
	"))44J "1bZ]m]s]s!tM&&&  	.!)Q2STdTiTiSjjk0lmJ	s   B   *B-,B-c                   t        | ||      }|j                  r|j                  S t        |j                  j                               }||_        |j                  }|||_        |j                  S )Nrp   )	rx   rM   rI   r   rL   r   rY   rW   rw   )ri   r}   rj   r_   rk   r~   rY   rW   s           r8   _read_return_typer     so     (	6HM***/0@0F0F0L0L0NOK +M --L"-&&&r=   c                L   dj                  t        | j                              }t        |      g}| j                  r=t        | j                  j                               }|j                  t        |             | j                  r=t        | j                  j                               }|j                  t        |             | j                  %|j                  t        | j                  g             | j                  r$|j                  t        | j                               |S )N
)join_strip_blank_linesrQ   r   rR   rZ   valuesrg   r   rT   r   rW   r   rV   r   )rj   textresultparam_valuesattribute_valuess        r8   rh   rh     s    99'(A(ABCD&:4&@%AFM44;;=>0>? 8 8 ? ? AB01ABC!!--}/I/I.JKL,]-E-EFGMr=   c                   t        | j                  |      \  }}	 |j                  dd      \  }}}|j                         }t        |||j                  d	      |      S # t        $ r& |rt	        | dd| d       t        ||g dd      cY S w xY w)
Nr3   rq   r   z-Failed to get ':directive: value' pair from 'ru   r   T)rM    )_consolidate_continuation_linesrd   split
ValueErrorr   rG   r   )ri   r}   r_   r7   rI   _	directiverL   s           r8   rx   rx     s    6yOD*H"jja09e KKMED*iooc.BEJJ  Hi.[\`[aab,cdj"b$GGHs   A ,BBc                P   |}| |   j                         g}|dz  }|t        |       k  rP| |   j                  d      s<|j                  | |          |dz  }|t        |       k  r| |   j                  d      s<t	        dj                  |            j                  d      |dz
  fS )Nrc   r3   r   )r   re   r4   rg   r   r   rstrip)rd   r}   rl   blocks       r8   r   r     s    O?#**,-E qO
CJ
&u_/E/P/PQT/UU?+,1 CJ
&u_/E/P/PQT/U DIIe$%,,T2Oa4GGGr=   c                &    | j                  dd      S )Nz or z | )replace)descriptive_types    r8   r   r     s    ##FE22r=   c                    | s| S d}d}d}t        |       D ]$  \  }}|r|j                         r	|r|dz  }!d}|}& | ||dz    S )NFr   rc   T)	enumerateisspace)rd   content_foundinitial_contentfinal_contentindexr7   s         r8   r   r     sd     MOM 'tt||~ 1$ M!M ( =1#455r=   N)ri   r   r^   r?   r_   r?   r&   list[DocstringSection])ri   r   r}   rH   rj   rO   r^   r?   r_   r?   rk   r	   r&   rH   )ri   r   r6   r>   r&   rX   )ri   r   r6   r>   r   zstr | Expr | Nonerj   rO   r_   r?   r&   r	   )ri   r   r}   rH   rj   rO   r_   r?   rk   r	   r&   rH   )ri   r   r}   rH   rj   rO   r   r?   r_   r?   rk   r	   r&   rH   )rj   rO   r&   r   )ri   r   r}   rH   r_   r?   r&   rG   )rd   rJ   r}   rH   r&   ztuple[str, int])r   r>   r&   r>   )rd   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]   rn   r   r|   r{   r   r   r   r   r   r   rh   rx   r   r   r   rf   rE   r=   r8   <module>r      s   #  (  0 0   \(11 TUi( 45 !,/ /0z* GH  $G G G$    
# 
# 
#8IU 8 !%	&5&5 &5 	&5
 &5\ !%<'<'<' !<'
 <' <' <' 	<'~   
  &  !	    	 P ''' !'
 ' ' 	'H ,',',' !,'
 ,' ,' 	,'h ''' !'
 ' ' 	'F ''' !'
 ' ' 	'4  $''' !'
 ' ' ' 	'N ''' !'
 ' ' 	'*  MQ 
K
H36&  "67|_-$&:;11}l+!#45r=   