
    g<              
         d dl mZ d dlmZ d dlmZ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 er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&ddd)dZ'dd	 	 	 	 	 	 	 	 	 	 	 d*dZ(d+dZ)	 	 	 	 	 	 	 	 	 	 d,dZ*	 	 	 	 	 	 	 	 	 	 d-dZ+	 	 	 	 	 	 	 	 	 	 d-dZ,	 	 	 	 	 	 	 	 	 	 d-dZ-	 	 	 	 	 	 	 	 	 	 d-d Z.d-d!Z/	 	 	 	 	 	 	 	 	 	 d-d"Z0d.d#Z1d/d$Z2d0d%Z3d1d&Z4d2d'Z5 e$ee+       e$ee(       e$e e-       e$ee,       e$e#e.       e$e!e/       e$e"e0      gZ6y()3    )annotations)suppress)	dataclassfield)TYPE_CHECKINGAnyCallable)
DocstringAttributeDocstringParameterDocstringRaiseDocstringReturnDocstringSectionDocstringSectionAttributesDocstringSectionParametersDocstringSectionRaisesDocstringSectionReturnsDocstringSectionText)docstring_warning)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     N/var/www/openai/venv/lib/python3.12/site-packages/_griffe/docstrings/sphinx.py	<genexpr>z%_FieldType.matches.<locals>.<genexpr>:   s!     F:44??Qtf:.:s   !)anyr,   )selfr4   s    `r5   matchesz_FieldType.matches1   s     F4::FFF    N)r4   strr#   bool)__name__
__module____qualname____doc____annotations__r9    r:   r5   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;   r4   int
next_index	list[str]directive_partsvalueFr<   invalidN)r=   r>   r?   r@   rA   rJ   rB   r:   r5   rD   rD   =   s$    F
IOJGTr:   rD   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_factoryrG   descriptionzdict[str, DocstringParameter]
parameterszdict[str, str]param_typeszdict[str, DocstringAttribute]
attributesattribute_typeszlist[DocstringRaise]
exceptionsNzDocstringReturn | Nonereturn_value
str | Nonereturn_type)r=   r>   r?   r@   r   listrN   rA   dictrO   rP   rQ   rR   rS   rT   rV   rB   r:   r5   rL   rL   H   sw    J"48K805d0KJ-K"'"=K=05d0KJ-K&+D&AO^A',T'BJ$B+/L(/"K"r:   rL   )warn_unknown_paramsc               >   t               }d|i|}| 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.
        **options: Additional parsing options.

    Returns:
        A list of docstring sections.
    rY   r      )	rL   lineslen_field_typesr9   r-   rN   append_parsed_values_to_sections)	docstringrY   optionsparsed_valuesr\   curr_line_indexr4   
field_types           r5   parse_sphinxrf   V   s     "OM 	2
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   }n^t        |j                        dk(  r|j                  d   }|j                  d   }n't        | dd|j                   d       |j                  S ||j                  v rt        | dd| d       |j                  S |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   UxY w)N   r[      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'?)r3   
annotationrN   rI   )_parse_directiverJ   rF   r]   rH   r   r4   rO   r   AttributeErrorparent_determine_param_annotation_determine_param_defaultr   rI   )ra   offsetrc   rY   rb   parsed_directivedirective_typer3   paramsmessagestarred_namerm   defaults                r5   _read_parameterrz   z   s    (	6:***N
++,1//2	--	.!	3)99!<//2)Q*PQaQfQfPggh(ij***}''')Q*I$q(QR***n%%%00F6!'v-XY'(Z2dV$=L#v-%5l^2#FF %> ")Q8 & -Ynm\J&y$7G%7$**	&MT" &&&) &%s   )2F	F		Fc                    	 | j                   j                  |j                            j                  S # t        t
        f$ r Y y w xY wN)rp   rO   lstripry   ro   KeyError)ra   r3   s     r5   rr   rr      sA    **4;;=9AAAH% s   03 AAc                4   d }|j                   j                  |      }||}||}||t        | dd| d       |4	 | j                  j                  |j                            j                  }|S |S # t        t        f$ r t        | dd| d       Y |S w xY w)Nr   %Duplicate parameter information for 'rk   zNo matching parameter for ')	rP   getr   rp   rO   r}   rm   ro   r~   )ra   r3   ru   rc   rm   parsed_param_types         r5   rq   rq      s     %)J%1155d;$&
!#
!&7&C)Q*OPTvUV(WX	S"))44T[[]CNNJ : ) 	Si.I$q,QR	Ss   1A3 3 BBc                   t        | |      }|j                  r|j                  S t        |j                  j                               }t        |j                        dk(  r|j                  d   }n't        | dd|j                   d       |j                  S ||j                  |<   |j                  j                  |      }|0|j                  ||_        |j                  S t        | dd| d       |j                  S )Nrh   r[   r   z#Failed to get parameter name from 'rk   r   )rn   rJ   rF   _consolidate_descriptive_typerI   stripr]   rH   r   r4   rP   rO   r   rm   )ra   rs   rc   rb   rt   
param_type
param_namer   s           r5   _read_parameter_typer      s    (	6:***./?/E/E/K/K/MNJ
++,1%55a8
)Q*MN^NcNcMdde(fg***,6Mj)$$((4E#)E &&& i.ST^S__`,ab&&&r:   c                r   t        | |      }|j                  r|j                  S t        |j                        dk(  r|j                  d   }n't        | dd|j                   d       |j                  S d }|j                  j                  |      }||}n;t        t        t        t              5  | j                  |   j                  }d d d        ||j                  v rt        | dd| d       |j                  S t!        |||j"                        |j                  |<   |j                  S # 1 sw Y   exY w)Nrh   r[   r   rj   rk   zDuplicate attribute entry for 'r3   rm   rN   )rn   rJ   rF   r]   rH   r   r4   rR   r   r   ro   r~   	TypeErrorrp   rm   rQ   r
   rI   )ra   rs   rc   rb   rt   r3   rm   parsed_attribute_types           r5   _read_attributer      s8    (	6:***
++,1//2)Q*PQaQfQfPggh(ij***$(J *99==dC(*
 nh	:"))$/::J ; }''')Q*I$q(QR &&& *<!(..*
  & &&& ;:s   /D--D6c                   t        | |      }|j                  r|j                  S t        |j                  j                               }t        |j                        dk(  r|j                  d   }n't        | dd|j                   d       |j                  S ||j                  |<   |j                  j                  |      }|0|j                  ||_        |j                  S t        | dd| d       |j                  S )Nrh   r[   r   z#Failed to get attribute name from 'rk   z%Duplicate attribute information for ')rn   rJ   rF   r   rI   r   r]   rH   r   r4   rR   rQ   r   rm   )ra   rs   rc   rb   rt   attribute_typeattribute_name	attributes           r5   _read_attribute_typer     s    (	6:***23C3I3I3O3O3QRN
++,1)99!<)Q*MN^NcNcMdde(fg***4BM!!.1((,,^<I'#1I  &&& i.STbSccd,ef&&&r:   c                ^   t        | |      }|j                  r|j                  S t        |j                        dk(  rK|j                  d   }|j
                  j                  t        ||j                               |j                  S t        | dd|j                   d       |j                  S )Nrh   r[   )rm   rN   r   z*Failed to parse exception directive from 'rk   )rn   rJ   rF   r]   rH   rS   r_   r   rI   r   r4   )ra   rs   rc   rb   rt   ex_types         r5   _read_exceptionr   5  s     (	6:***
++,1"2215  '''WgWmWm(no &&& 	)Q*TUeUjUjTkkl(mn&&&r:   c                T   t        | |      }|j                  r|j                  S |j                  |j                  }n	 | j                  j
                  }t        d||j                        |_        |j                  S # t        $ r  t        | dd|j                   d       d }Y Qw xY w)Nr   z!No return type or annotation at 'rk    r   )rn   rJ   rF   rV   rp   rm   ro   r   r4   r   rI   rT   )ra   rs   rc   rb   rt   rm   s         r5   _read_returnr   H  s    '	6:***   ,"..
	"))44J "1bZ]m]s]s!tM&&&  	i.OP`PePeOffg,hiJ	s   A> >&B'&B'c                    t        | |      }|j                  r|j                  S t        |j                  j                               }||_        |j                  }|||_        |j                  S r|   )	rn   rJ   rF   r   rI   r   rV   rT   rm   )ra   rs   rc   rb   rt   rV   rT   s          r5   _read_return_typer   a  sm     (	6:***/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_linesrN   r   rO   rW   valuesr_   r   rQ   r   rT   r   rS   r   )rc   textresultparam_valuesattribute_valuess        r5   r`   r`   t  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$ t	        | dd| d       t        ||g dd      cY S w xY w)
Nr0   rh   r   z-Failed to get ':directive: value' pair from 'rk   r   T)rJ    )_consolidate_continuation_linesr\   split
ValueErrorr   rD   r   )ra   rs   r4   rF   _	directiverI   s          r5   rn   rn     s    6yOD*H"jja09e
 KKMED*iooc.BEJJ  H)Q*WX\W]]^(_`j"b$GGHs   A *B
Bc                Z   |}| |   j                         g}|dz  }|t        |       k  r^| |   j                  d      sJ|j                  | |   j                                |dz  }|t        |       k  r| |   j                  d      sJdj	                  |      j                  d      |dz
  fS )Nr[   r0   r   r   )r}   r]   r1   r_   r   rstrip)r\   rs   rd   blocks       r5   r   r     s    O?#**,-E qO
CJ
&u_/E/P/PQT/UU?+22451 CJ
&u_/E/P/PQT/U 88E?!!$'1)<<<r:   c                &    | j                  dd      S )Nz or z | )replace)descriptive_types    r5   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   r[   T)	enumerateisspace)r\   content_foundinitial_contentfinal_contentindexr4   s         r5   r   r     sd     MOM 'tt||~ 1$ M!M ( =1#455r:   N)ra   r   rY   r<   rb   r   r#   list[DocstringSection])ra   r   rs   rE   rc   rL   rY   r<   rb   r   r#   rE   )ra   r   r3   r;   r#   rU   )
ra   r   r3   r;   ru   rU   rc   rL   r#   r   )
ra   r   rs   rE   rc   rL   rb   r   r#   rE   )rc   rL   r#   r   )ra   r   rs   rE   r#   rD   )r\   rG   rs   rE   r#   ztuple[str, int])r   r;   r#   r;   )r\   rG   r#   rG   )7
__future__r   
contextlibr   dataclassesr   r   typingr   r   r	   _griffe.docstrings.modelsr
   r   r   r   r   r   r   r   r   r   _griffe.docstrings.utilsr   _griffe.expressionsr   _griffe.modelsr   	frozenset_PARAM_NAMES_PARAM_TYPE_NAMES_ATTRIBUTE_NAMES_ATTRIBUTE_TYPE_NAMES_RETURN_NAMES_RETURN_TYPE_NAMES_EXCEPTION_NAMESr+   rD   rL   rf   rz   rr   rq   r   r   r   r   r   r   r`   rn   r   r   r   r^   rB   r:   r5   <module>r      s   #  ( / /   7(( TUi( 45 !,/ /0z* GH  $G G G$    
# 
# 
# GK !5R !%0'0'0' !0'
 0' 0' 	0'f
  !	
 	@''' !' 	'
 	'6('('(' !(' 	('
 	('V''' !' 	'
 	'6''' !' 	'
 	'&'2''' !' 	'
 	'& 	K
=36&  "67|_-$&:;11}l+!#45r:   