
    5'h\@              
      b   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*dZ'ddd	 	 	 	 	 	 	 	 	 	 	 	 	 d+dZ(d,dZ)dd	 	 	 	 	 	 	 	 	 	 	 d-dZ*dd	 	 	 	 	 	 	 	 	 	 	 d.dZ+dd	 	 	 	 	 	 	 	 	 	 	 d.dZ,dd	 	 	 	 	 	 	 	 	 	 	 d.d Z-dd	 	 	 	 	 	 	 	 	 	 	 d.d!Z.dd	 	 	 	 	 	 	 	 	 	 	 d.d"Z/dd	 	 	 	 	 	 	 	 	 	 	 d.d#Z0d/d$Z1ddd0d%Z2d1d&Z3d2d'Z4d3d(Z5 e$ee+       e$ee(       e$e e-       e$ee,       e$e#e.       e$e!e/       e$e"e0      gZ6y))4    )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     `/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/_griffe/docstrings/sphinx.py	<genexpr>z%_FieldType.matches.<locals>.<genexpr>:   s      F44??Qtf:.Fs   !)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_paramswarningsc               @   t               }||d|}| j                  }d}|t        |      k  rg||   }t        D ]*  }|j	                  |      s |j
                  | ||fi |} n |j                  j                  |       |dz  }|t        |      k  rgt        |      S )aS  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.
        **options: Additional parsing options.

    Returns:
        A list of docstring sections.
    rY   r      )	rL   lineslen_field_typesr9   r-   rN   append_parsed_values_to_sections)		docstringrZ   r[   optionsparsed_valuesr^   curr_line_indexr4   
field_types	            r5   parse_sphinxrh   V   s    $ "OM  3 G OOEO
CJ
&_%& 	3J!!$'"3*"3"3IP]"iah"i		3 %%,,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)|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[      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   )rc   offsetre   rZ   r[   rd   parsed_directivedirective_typer3   paramsmessagestarred_namerp   defaults                 r5   _read_parameterr}      s    (	6HM***N
++,1//2	--	.!	3)99!<//2i.TUeUjUjTkkl,mn***}'''i.MdVST,UV***'n% 	9%%00F6!'v-XY'(Z2dV$= L#v-%5l^2#FF ")Q8	9 -YnmfnoJ&y$7G%7$**	&MT" &&&)	9 	9s   12F$FFc                    	 | j                   j                  |j                            j                  S # t        t
        f$ r Y y w xY w)N)rs   rO   lstripr|   rr   KeyError)rc   r3   s     r5   ru   ru      sA    **4;;=9AAAH% s   03 AArj   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 'rn   zNo matching parameter for ')	rP   getr   rs   rO   r   rp   rr   r   )rc   r3   rx   re   r[   rp   parsed_param_types          r5   rt   rt      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        |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 )Nrj   rk   r]   r   z#Failed to get parameter name from 'rn   r   )rq   rJ   rF   _consolidate_descriptive_typerI   stripr_   rH   r   r4   rP   rO   r   rp   )	rc   rv   re   r[   rd   rw   
param_type
param_namer   s	            r5   _read_parameter_typer      s	    (	6HM***./?/E/E/K/K/MNJ
++,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)	Nrj   rk   r]   r   rm   rn   zDuplicate attribute entry for 'r3   rp   rN   )rq   rJ   rF   r_   rH   r   r4   rR   r   r   rr   r   	TypeErrorrs   rp   rQ   r
   rI   )	rc   rv   re   r[   rd   rw   r3   rp   parsed_attribute_types	            r5   _read_attributer      sH    (	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 )Nrj   rk   r]   r   z#Failed to get attribute name from 'rn   z%Duplicate attribute information for ')rq   rJ   rF   r   rI   r   r_   rH   r   r4   rR   rQ   r   rp   )	rc   rv   re   r[   rd   rw   attribute_typeattribute_name	attributes	            r5   _read_attribute_typer   /  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 )Nrj   rk   r]   )rp   rN   r   z*Failed to parse exception directive from 'rn   )rq   rJ   rF   r_   rH   rS   ra   r   rI   r   r4   )rc   rv   re   r[   rd   rw   ex_types          r5   _read_exceptionr   M  s     (	6HM***
++,1"2215  '''WgWmWm(no &&& 
)Q*TUeUjUjTkkl(mn&&&r:   c               \   t        | ||      }|j                  r|j                  S |j                  |j                  }n	 | j                  j
                  }t        d||j                        |_        |j                  S # t        $ r" |rt        | dd|j                   d       d }Y Sw xY w)Nrj   r   z!No return type or annotation at 'rn    r   )rq   rJ   rF   rV   rs   rp   rr   r   r4   r   rI   rT   )rc   rv   re   r[   rd   rw   rp   s          r5   _read_returnr   b  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 )Nrj   )	rq   rJ   rF   r   rI   r   rV   rT   rp   )rc   rv   re   r[   rd   rw   rV   rT   s           r5   _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_linesrN   r   rO   rW   valuesra   r   rQ   r   rT   r   rS   r   )re   textresultparam_valuesattribute_valuess        r5   rb   rb     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)
Nr0   rk   r   z-Failed to get ':directive: value' pair from 'rn   r   T)rJ    )_consolidate_continuation_linesr^   split
ValueErrorr   rD   r   )rc   rv   r[   r4   rF   _	directiverI   s           r5   rq   rq     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                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   ra   r   rstrip)r^   rv   rf   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     si     MOM ' "tt||~ 1$ M!M" =1#455r:   N)
rc   r   rZ   r<   r[   r<   rd   r   r#   list[DocstringSection])rc   r   rv   rE   re   rL   rZ   r<   r[   r<   rd   r   r#   rE   )rc   r   r3   r;   r#   rU   )rc   r   r3   r;   rx   rU   re   rL   r[   r<   r#   r   )rc   r   rv   rE   re   rL   r[   r<   rd   r   r#   rE   )re   rL   r#   r   )rc   r   rv   rE   r[   r<   r#   rD   )r^   rG   rv   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   rh   r}   ru   rt   r   r   r   r   r   r   rb   rq   r   r   r   r`   rB   r:   r5   <module>r      s   #  ( / /   7(( TUi( 45 !,/ /0z* GH  $G G G$    
# 
# 
#  !%	)5)5 )5 	)5
 )5 )5b !%3'3'3' !3'
 3' 3' 3' 	3'l   
    !	    	 P ''' !'
 ' ' 	'F ,',',' !,'
 ,' ,' 	,'h ''' !'
 ' ' 	'F ''' !'
 ' ' 	'4 ''' !'
 ' ' 	'L ''' !'
 ' ' 	'*  MQ 
K
=36&  "67|_-$&:;11}l+!#45r:   