
    JiE              
         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
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 d dlmZ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* G d ded      Z+ddd	 	 	 	 	 	 	 	 	 d0dZ,ddd	 	 	 	 	 	 	 	 	 	 	 	 	 d1dZ-d2d Z.dd!	 	 	 	 	 	 	 	 	 	 	 d3d"Z/dd!	 	 	 	 	 	 	 	 	 	 	 d4d#Z0dd!	 	 	 	 	 	 	 	 	 	 	 d4d$Z1dd!	 	 	 	 	 	 	 	 	 	 	 d4d%Z2dd!	 	 	 	 	 	 	 	 	 	 	 d4d&Z3ddd'	 	 	 	 	 	 	 	 	 	 	 	 	 d5d(Z4dd!	 	 	 	 	 	 	 	 	 	 	 d4d)Z5d6d*Z6dd!d7d+Z7d8d,Z8d9d-Z9d:d.Z: e(e"e0       e(e!e-       e(e$e2       e(e#e1       e(e'e3       e(e%e4       e(e&e5      gZ;y/);    )annotations)suppress)	dataclassfield)TYPE_CHECKINGAnyCallable	TypedDict)warn)
DocstringAttributeDocstringParameterDocstringRaiseDocstringReturnDocstringSectionDocstringSectionAttributesDocstringSectionParametersDocstringSectionRaisesDocstringSectionReturnsDocstringSectionText)docstring_warningparse_docstring_annotation)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     t/var/www/html/BankruptcyAI-uat/bankruptcy-ai/venv/lib/python3.12/site-packages/griffe/_internal/docstrings/sphinx.py	<genexpr>z%_FieldType.matches.<locals>.<genexpr>;   s      F44??Qtf:.Fs   !)anyr/   )selfr7   s    `r8   matchesz_FieldType.matches2   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   I   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]   W   s    63N7r=   r]   F)totalr^   r_   c               d   t               }|rt        dt        d       ||d}| j                  }d}|t	        |      k  rg||   }t
        D ]*  }|j                  |      s |j                  | ||fi |} n |j                  j                  |       |dz  }|t	        |      k  rgt        |      S )ap  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: Swallowing keyword arguments for backward-compatibility.

    Returns:
        A list of docstring sections.
    zDPassing additional options is deprecated, these options are ignored.   )
stacklevelra   r      )rO   r   DeprecationWarninglineslen_field_typesr<   r0   rQ   append_parsed_values_to_sections)		docstringr^   r_   optionsparsed_valuesrg   curr_line_indexr7   
field_types	            r8   parse_sphinxrq   `   s    & "OM SUgtuv  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   }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   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'?)r6   
annotationrQ   rL   )_parse_directiverM   rI   rh   rK   r   r   r7   rR   r   AttributeErrorparent_determine_param_annotation_determine_param_defaultr   rL   )rl   offsetrn   r^   r_   rm   parsed_directivedirective_typer6   paramsmessagestarred_namery   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% 	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    2G"3G""G+c                    	 | j                   j                  |j                            j                  S # t        t
        f$ r Y y w xY w)N)r|   rR   lstripr   r{   KeyError)rl   r6   s     r8   r~   r~      sA    **4;;=9AAAH% s   03 AArs   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 'rw   zNo matching parameter for ')	rS   getr   r|   rR   r   ry   r{   r   )rl   r6   r   rn   r_   ry   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 )Nrs   rc   re   r   z#Failed to get parameter name from 'rw   r   )rz   rM   rI   _consolidate_descriptive_typerL   stripr   rh   rK   r   r7   rS   rR   r   ry   )
rl   r   rn   r_   rm   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)	Nrs   rc   re   r   rv   rw   zDuplicate attribute entry for 'r6   ry   rQ   )rz   rM   rI   rh   rK   r   r7   rU   r   r   r{   r   	TypeErrorr|   ry   rT   r   rL   )	rl   r   rn   r_   rm   r   r6   ry   parsed_attribute_types	            r8   _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 )Nrs   rc   re   r   z#Failed to get attribute name from 'rw   z%Duplicate attribute information for ')rz   rM   rI   r   rL   r   rh   rK   r   r7   rU   rT   r   ry   )	rl   r   rn   r_   rm   r   attribute_typeattribute_name	attributes	            r8   _read_attribute_typer   G  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 )Nrs   rc   re   )ry   rQ   r   z*Failed to parse exception directive from 'rw   )rz   rM   rI   rh   rK   rV   rj   r   rL   r   r7   )rl   r   rn   r_   rm   r   ex_types          r8   _read_exceptionr   e  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)Nrs   r   z!No return type or annotation at 'rw    r   )rz   rM   rI   rY   r|   ry   r{   r   r7   r   rL   rW   )rl   r   rn   r   r_   rm   r   ry   s           r8   _read_returnr   z  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 )Nrs   )	rz   rM   rI   r   rL   r   rY   rW   ry   )rl   r   rn   r_   rm   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   valuesrj   r   rT   r   rW   r   rV   r   )rn   textresultparam_valuesattribute_valuess        r8   rk   rk     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   rc   r   z-Failed to get ':directive: value' pair from 'rw   r   T)rM    )_consolidate_continuation_linesrg   split
ValueErrorr   rG   r   )rl   r   r_   r7   rI   _	directiverL   s           r8   rz   rz     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 )Nre   r3   r   r   )r   rh   r4   rj   r   rstrip)rg   r   ro   blocks       r8   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    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   re   T)	enumerateisspace)rg   content_foundinitial_contentfinal_contentindexr7   s         r8   r   r     si     MOM ' "tt||~ 1$ M!M" =1#455r=   N)
rl   r   r^   r?   r_   r?   rm   r   r&   list[DocstringSection])rl   r   r   rH   rn   rO   r^   r?   r_   r?   rm   r   r&   rH   )rl   r   r6   r>   r&   rX   )rl   r   r6   r>   r   zstr | Expr | Nonern   rO   r_   r?   r&   r   )rl   r   r   rH   rn   rO   r_   r?   rm   r   r&   rH   )rl   r   r   rH   rn   rO   r   r?   r_   r?   rm   r   r&   rH   )rn   rO   r&   r   )rl   r   r   rH   r_   r?   r&   rG   )rg   rJ   r   rH   r&   ztuple[str, int])r   r>   r&   r>   )rg   rJ   r&   rJ   )<
__future__r   
contextlibr   dataclassesr   r   typingr   r   r	   r
   r_   r   "griffe._internal.docstrings.modelsr   r   r   r   r   r   r   r   r   r   !griffe._internal.docstrings.utilsr   r   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]   rq   r   r~   r}   r   r   r   r   r   r   rk   rz   r   r   r   ri   rE   r=   r8   <module>r      s   #  ( : :    \11 TUi( 45 !,/ /0z* GH  $G G G$    
# 
# 
#8IU 8 !%	-5-5 -5 	-5 -5 -5j !%<'<'<' !<'
 <' <' <' 	<'~   
  &  !	    	 P ''' !'
 ' ' 	'H ,',',' !,'
 ,' ,' 	,'h ''' !'
 ' ' 	'F ''' !'
 ' ' 	'4  $''' !'
 ' ' ' 	'N ''' !'
 ' ' 	'*  MQ 
K
=36&  "67|_-$&:;11}l+!#45r=   