
    -h\@              
         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+dAd-Z*dd+dBd.Z+dd+dBd/Z,dd+dBd0Z-dd+dBd1Z.dd+dBd2Z/dd+dBd3Z0dCd4Z1dd+dDd5Z2dEd9Z3dFd;Z4dGd<Z5 e$ee+           e$ee(           e$e e-           e$ee,           e$e#e.           e$e!e/           e$e"e0          gZ6d=S )H    )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                  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namer.   s     V/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/_griffe/docstrings/sphinx.py	<genexpr>z%_FieldType.matches.<locals>.<genexpr>:   s5      FF44??:t::..FFFFFF    )anyr,   )selfr.   s    `r7   matchesz_FieldType.matches1   s*     FFFF4:FFFFFFr9   N)r.   r/   r#   r0   )__name__
__module____qualname____doc____annotations__r<    r9   r7   r+   r+   *   sN         33::::	G 	G 	G 	G 	G 	Gr9   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.r/   r.   int
next_index	list[str]directive_partsvalueFr0   invalidN)r=   r>   r?   r@   rA   rJ   rB   r9   r7   rD   rD   =   sP         FFIIIOOOJJJGr9   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<   dS )_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   r9   r7   rL   rL   H   s         JJ"U4888K888805d0K0K0KJKKKK"'%"="="=K====05d0K0K0KJKKKK&+eD&A&A&AOAAAA',uT'B'B'BJBBBB+/L////"K""""""r9   rL   warn_unknown_paramswarnings	docstringr   rZ   r0   r[   optionsr   r#   list[DocstringSection]c               X   t                      }||d|}| j        }d}|t          |          k     rk||         }t          D ])}|                    |          r |j        | ||fi |} n*|j                            |           |dz  }|t          |          k     kt          |          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_typesr<   r-   rN   append_parsed_values_to_sections)	r\   rZ   r[   r]   parsed_valuesra   curr_line_indexr.   
field_types	            r7   parse_sphinxri   V   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4r9   offsetrE   rf   c                  t          | ||          }|j        r|j        S d }t          |j                  dk    r|j        d         }nVt          |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 |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[      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'?)r6   
annotationrN   rI   )_parse_directiverJ   rF   rb   rH   r   r.   rO   r   AttributeErrorparent_determine_param_annotation_determine_param_defaultr   rI   )r\   rj   rf   rZ   r[   r]   parsed_directivedirective_typer6   paramsmessagestarred_namerr   defaults                 r7   _read_parameterr~      sU    (	6HMMM +**N
+,,11/2	-	.	.!	3	3)9!</2 	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D..D25D2r6   r/   rU   c                    	 | j         j        |                                         j        S # t          t
          f$ r Y d S w xY w)N)ru   rO   lstripr}   rt   KeyError)r\   r6   s     r7   rw   rw      sJ    *4;;==9AAH%   tts   (+ A A rl   ry   c               :   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 'rp   zNo matching parameter for ')	rP   getr   ru   rO   r   rr   rt   r   )r\   r6   ry   rf   r[   rr   parsed_param_types          r7   rv   rv      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          |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 )Nrl   rm   r`   r   z#Failed to get parameter name from 'rp   r   )rs   rJ   rF   _consolidate_descriptive_typerI   striprb   rH   r   r.   rP   rO   r   rr   )	r\   rj   rf   r[   r]   rx   
param_type
param_namer   s	            r7   _read_parameter_typer      s	    (	6HMMM +**./?/E/K/K/M/MNNJ
+,,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&&r9   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 )	Nrl   rm   r`   r   ro   rp   zDuplicate attribute entry for 'r6   rr   rN   )rs   rJ   rF   rb   rH   r   r.   rR   r   r   rt   r   	TypeErrorru   rr   rQ   r
   rI   )	r\   rj   rf   r[   r]   rx   r6   rr   parsed_attribute_types	            r7   _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 )Nrl   rm   r`   r   z#Failed to get attribute name from 'rp   z%Duplicate attribute information for ')rs   rJ   rF   r   rI   r   rb   rH   r   r.   rR   rQ   r   rr   )	r\   rj   rf   r[   r]   rx   attribute_typeattribute_name	attributes	            r7   _read_attribute_typer   /  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&&r9   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 )Nrl   rm   r`   )rr   rN   r   z*Failed to parse exception directive from 'rp   )rs   rJ   rF   rb   rH   rS   rd   r   rI   r   r.   )r\   rj   rf   r[   r]   rx   ex_types          r7   _read_exceptionr   M  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&&r9   c                  t          | ||          }|j        r|j        S |j        |j        }n<	 | j        j        }n.# t          $ r! |rt          | dd|j         d           d }Y nw xY wt          d||j
                  |_        |j        S )Nrl   r   z!No return type or annotation at 'rp    r   )rs   rJ   rF   rV   ru   rr   rt   r   r.   r   rI   rT   )r\   rj   rf   r[   r]   rx   rr   s          r7   _read_returnr   b  s     (	6HMMM +**  ,".

	")4JJ 	 	 	 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 )Nrl   )	rs   rJ   rF   r   rI   r   rV   rT   rr   )r\   rj   rf   r[   r]   rx   rV   rT   s           r7   _read_return_typer     sq     (	6HMMM +**/0@0F0L0L0N0NOOK +M -L"-&&r9   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_linesrN   r   rO   rW   valuesrd   r   rQ   r   rT   r   rS   r   )rf   textresultparam_valuesattribute_valuess        r7   re   re     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Mr9   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 )
Nr3   rm   r   z-Failed to get ':directive: value' pair from 'rp   r   T)rJ    )_consolidate_continuation_linesra   split
ValueErrorr   rD   r   )r\   rj   r[   r.   rF   _	directiverI   s           r7   rs   rs     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-ra   rG   tuple[str, int]c                   |}| |                                          g}|dz  }|t          |           k     r{| |                             d          s`|                    | |                                                     |dz  }|t          |           k     r| |                             d          `d                    |                              d          |dz
  fS )Nr`   r3   r   r   )r   rb   r4   rd   r   rstrip)ra   rj   rg   blocks       r7   r   r     s    O?#**,,-E qO
CJJ
&
&u_/E/P/PQT/U/U
&U?+22445551 CJJ
&
&u_/E/P/PQT/U/U
& 88E??!!$''1)<<<r9   descriptive_typec                .    |                      dd          S )Nz or z | )replace)r   s    r7   r   r     s    ##FE222r9   c                    | s| S d}d}d}t          |           D ]'\  }}|r|                                r|s|dz  }#d}|}(| ||dz            S )NFr   r`   T)	enumerateisspace)ra   content_foundinitial_contentfinal_contentindexr.   s         r7   r   r     s      MOM '' " "t 	"t||~~ 	"  %1$ M!MM=1#4455r9   N)
r\   r   rZ   r0   r[   r0   r]   r   r#   r^   )r\   r   rj   rE   rf   rL   rZ   r0   r[   r0   r]   r   r#   rE   )r\   r   r6   r/   r#   rU   )r\   r   r6   r/   ry   rU   rf   rL   r[   r0   r#   r   )r\   r   rj   rE   rf   rL   r[   r0   r]   r   r#   rE   )rf   rL   r#   r^   )r\   r   rj   rE   r[   r0   r#   rD   )ra   rG   rj   rE   r#   r   )r   r/   r#   r/   )ra   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   ri   r~   rw   rv   r   r   r   r   r   r   re   rs   r   r   r   rc   rB   r9   r7   <module>r      s   # " " " " "       ( ( ( ( ( ( ( ( / / / / / / / / / /                        7 6 6 6 6 6 )(((((((((((( yTUUIi(( 9455 !	,// 	/00Yz** 9GHH  $G G G G G G G G$         
# 
# 
# 
# 
# 
# 
# 
#  !%	)5 )5 )5 )5 )5 )5b !%3' 3' 3' 3' 3' 3'l               P ' ' ' ' ' 'F ,' ,' ,' ,' ,' ,'h ' ' ' ' ' 'F ' ' ' ' ' '4 ' ' ' ' ' 'L ' ' ' ' ' '*     MQ 
K 
K 
K 
K 
K 
K
= 
= 
= 
=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r9   