ó
    °"³jN  ã                  ó   • % S SK Jr  S SKrS SKrS SKJr  S SKJr  S SK	J
r
  S SKJrJrJrJr  S SKJrJrJrJr  \(       a  SS	KJr  \S
   r        SS jrSS jrS/ SQS4S/ SQS4S/ SQS4/rS\S'   \S 5       rg)é    )ÚannotationsN)ÚCallable)Úcontextmanager)Ú	Signature)ÚTYPE_CHECKINGÚAnyÚLiteralÚcast)Ú	DocstringÚDocstringSectionKindÚGoogleOptionsÚObjecté   )ÚDocstringFormat)ÚgoogleÚnumpyÚsphinxc               óæ  • U R                   nUc  S0 4$ [        [        U5      nUS:X  a  [        U5      OUnUS:X  a
  [	        SSS9OSn[        USUUUS9n[        5          UR                  5       nSSS5        0 n	[        S W 5       S5      =n
(       a0  U
R                   Vs0 s H  o»R                  UR                  _M     n	nS	n[        S
 U 5       S5      =n(       a  UR                  n[        S U 5       S5      =n(       aS  UR                  S   nUR                  nUR                  nU(       a  SU S3OS	nSU SU S3nU(       a  SU SU 3nXÉ4$ UnXÉ4$ ! , (       d  f       Nò= fs  snf )aŽ  Extract the function description and parameter descriptions from a function's docstring.

The function parses the docstring using the specified format (or infers it if 'auto')
and extracts both the main description and parameter descriptions. If a returns section
is present in the docstring, the main description will be formatted as XML.

Returns:
    A tuple containing:
    - str: Main description string, which may be either:
        * Plain text if no returns section is present
        * XML-formatted if returns section exists, including <summary> and <returns> tags
    - dict[str, str]: Dictionary mapping parameter names to their descriptions
NÚautor   F)Úreturns_named_valueÚreturns_multiple_itemsr   )ÚlinenoÚparserÚparentÚparser_optionsc              3  ód   #   • U  H&  oR                   [        R                  :X  d  M"  Uv •  M(     g 7f©N)Úkindr   Ú
parameters©Ú.0Úps     ÚP/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pydantic_ai/_griffe.pyÚ	<genexpr>Ú#doc_descriptions.<locals>.<genexpr>=   s"   é € Ð\¢h ·&±&Ô<P×<[Ñ<[Ñ2[Ÿ1™1¢hùó   ‚!0§	0Ú c              3  ód   #   • U  H&  oR                   [        R                  :X  d  M"  Uv •  M(     g 7fr   )r   r   Útextr    s     r#   r$   r%   A   s"   é € ÐP¢˜1¯F©FÔ6J×6OÑ6OÑ,O—Q‘Q¢ùr&   c              3  ód   #   • U  H&  oR                   [        R                  :X  d  M"  Uv •  M(     g 7fr   )r   r   Úreturnsr    s     r#   r$   r%   D   s"   é € ÐV¢8˜a¯v©vÔ9M×9UÑ9UÑ/UŸ™¢8ùr&   r   z<type>z</type>
z
<returns>
z<description>z</description>
</returns>z	<summary>z</summary>
)Ú__doc__r
   ÚGriffeObjectÚ_infer_docstring_styler   r   Ú_disable_griffe_loggingÚparseÚnextÚvalueÚnameÚdescriptionÚ
annotation)ÚfuncÚsigÚdocstring_formatÚdocr   Údocstring_styler   Ú	docstringÚsectionsÚparamsr   r"   Ú	main_descÚmainÚreturn_Úreturn_statementÚreturn_descÚreturn_typeÚtype_tagÚ
return_xmls                       r#   Údoc_descriptionsrF      s¡  € ð& �,‰,€CØ
�{Ø�Rˆxˆô ”, Ó$€Fà5EÈÓ5OÔ,¨SÔ1ÐUe€Oð SbÐemÓRmŒ¨%ÈÒNÐswð ô ØØØØØ%ñ€Iô 
!Õ	"Ø—?‘?Ó$ˆ÷ 
#ð €FÜÑ\¡hÓ\Ð^bÓcÐc€zÕcØ1;×1AÒ1AÓBÒ1A¨A—&‘&˜!Ÿ-™-Ò'Ñ1AˆÐBà€IÜÑP¡ÓPÐRVÓWÐW€tÕWØ—J‘Jˆ	äÑV¡8ÓVÐX\Ó]Ð]€wÕ]Ø"Ÿ=™=¨Ñ+ÐØ&×2Ñ2ˆØ&×1Ñ1ˆÞ6A�V˜K˜=¨	Ñ2ÀrˆØ" 8 *¨M¸+¸ÐF`Ðaˆ
æØ# I ;¨l¸:¸,ÐGˆIð ÐÐð #ˆIàÐÐ÷/ 
#Õ	"üò
 Cs   Á EÂ# E.Å
E+c                ój   ^ ^• [          H'  u  mpU U4S jU 5       n[        U5      (       d  M%  Us  $    g)z%Simplistic docstring style inference.c              3  ó°   >#   • U  HK  n[         R                  " TR                  U5      T[         R                  [         R                  -  5      v •  MM     g 7fr   )ÚreÚsearchÚformatÚ
IGNORECASEÚ	MULTILINE)r!   Úreplacementr9   Úpatterns     €€r#   r$   Ú)_infer_docstring_style.<locals>.<genexpr>V   s<   øé € ð 
ÚiuÐZeŒB�IŠI�g—n‘n [Ó1°3¼¿¹ÌÏÉÑ8T×UÐUÒiuùs   ƒAAr   )Ú_docstring_style_patternsÚany)r9   ÚreplacementsÚstyleÚmatchesrO   s   `   @r#   r.   r.   S   s7   ù€ ç(AÑ$ˆ�õ
Ùiuó
ˆô ˆw�<‹<ØŠLñ )Bð ó    z&\n[ \t]*:{0}([ \t]+\w+)*:([ \t]+.+)?\n)ÚparamÚ	parameterÚargÚargumentÚkeyÚkeywordÚtypeÚvarÚivarÚcvarÚvartyper+   ÚreturnÚrtypeÚraisesÚraiseÚexceptÚ	exceptionr   z!\n[ \t]*{0}:([ \t]+.+)?\n[ \t]+.+)ÚargsÚ	argumentsr=   r   zkeyword argszkeyword argumentsz
other argszother argumentszother paramsúother parametersrd   Ú
exceptionsr+   ÚyieldsÚreceivesÚexamplesÚ
attributesÚ	functionsÚmethodsÚclassesÚmodulesÚwarnsÚwarningsr   z\n[ \t]*{0}\n[ \t]*---+\n)Ú
deprecatedr   rj   r+   rl   rm   rd   rt   ro   rp   rq   rr   rs   r   z+list[tuple[str, list[str], DocstringStyle]]rQ   c               #  óè   #   • [         R                  R                  5       n [         R                  R                  [         R                  5        S v •  [         R                  R                  U 5        g 7fr   )ÚloggingÚrootÚgetEffectiveLevelÚsetLevelÚERROR)Ú	old_levels    r#   r/   r/   ¬   sD   é € ô —‘×.Ñ.Ó0€IÜ‡L�L×Ñœ'Ÿ-™-Ô(Û	Ü‡L�L×Ñ˜)Õ$ùs   ‚A0A2)r6   zCallable[..., Any]r7   r   r8   r   rb   z!tuple[str | None, dict[str, str]])r9   Ústrrb   ÚDocstringStyle)Ú
__future__r   Ú_annotationsrx   rI   Úcollections.abcr   Ú
contextlibr   Úinspectr   Útypingr   r   r	   r
   Úgriffer   r   r   r   r-   Útoolsr   r   rF   r.   rQ   Ú__annotations__r/   © rV   r#   Ú<module>rŠ      sÈ   ðÞ 2ã Û 	Ý $Ý %Ý ß 4Ó 4ç YÓ YæÝ&àÐ4Ñ5€ð>Ø
ð>à	ð>ð &ð	>ð
 'ô>ôB	ð 	2ò	
ð( 	ð-ð2 	-ò	
ð2 	ð7ð< 	%ò	
ð 	ð#ðmIJÐ ÐFó IðX ñ%ó ñ%rV   