ó
    pyüi  ã                  óŒ   • S r SSKJr  SSKrSSKrSSKrSSKrSSKJr   " S S\R                  5      r
S
S jrSS jrSSS	 jjrg)z4Utilities related to attribute docstring extraction.é    )ÚannotationsN)ÚAnyc                  óP   ^ • \ rS rSrSU 4S jjrSU 4S jjrS	S jrS
S jrSrU =r	$ )ÚDocstringVisitoré   c                óL   >• [         TU ]  5         S U l        0 U l        S U l        g ©N)ÚsuperÚ__init__ÚtargetÚattrsÚprevious_node_type)ÚselfÚ	__class__s    €Ú`/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pydantic/_internal/_docs_extraction.pyr   ÚDocstringVisitor.__init__   s$   ø€ Ü‰ÑÔà"&ˆŒØ%'ˆŒ
Ø8<ˆÕó    c                óF   >• [         TU ]  U5      n[        U5      U l        U$ r	   )r
   ÚvisitÚtyper   )r   ÚnodeÚnode_resultr   s      €r   r   ÚDocstringVisitor.visit   s#   ø€ Ü‘g‘m DÓ)ˆÜ"& t£*ˆÔØÐr   c                óŽ   • [        UR                  [        R                  5      (       a  UR                  R                  U l        g g r	   )Ú
isinstancer   ÚastÚNameÚid)r   r   s     r   Úvisit_AnnAssignÚ DocstringVisitor.visit_AnnAssign   s+   € Ü�d—k‘k¤3§8¡8×,Ñ,ØŸ+™+Ÿ.™.ˆD�Kð -r   c                óœ  • [        UR                  [        R                  5      (       a£  [        UR                  R                  [        5      (       ay  U R
                  [        R                  L a[  [        R                  " UR                  R                  5      nU R                  (       a  X R                  U R                  '   S U l	        g g g g r	   )r   Úvaluer   ÚConstantÚstrr   Ú	AnnAssignÚinspectÚcleandocr   r   )r   r   Ú	docstrings      r   Ú
visit_ExprÚDocstringVisitor.visit_Expr   s‡   € ä�t—z‘z¤3§<¡<×0Ñ0Ü˜4Ÿ:™:×+Ñ+¬S×1Ñ1Ø×'Ñ'¬3¯=©=Ò8ä×(Ò(¨¯©×)9Ñ)9Ó:ˆIØ�{�{Ø*3—
‘
˜4Ÿ;™;Ñ'ØˆD�Kð 9ð 2ð 1r   )r   r   r   )ÚreturnÚNone)r   zast.ASTr+   r   )r   zast.AnnAssignr+   r   )r   zast.Exprr+   r   )
Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   r)   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r      s   ø† ÷=÷ô
)÷	ò 	r   r   c                ó†   • [         R                  " SR                  U 5      5      nUR                  S5      (       a  SU 3nU$ )NÚ )Ú Ú	zdef dedent_workaround():
)ÚtextwrapÚdedentÚjoinÚ
startswith)ÚsourceÚdedent_sources     r   Ú_dedent_source_linesr=   )   s=   € ä—O’O B§G¡G¨F£OÓ4€MØ×Ñ ×,Ñ,ð 5°]°OÐDˆØÐr   c                óÚ  • [         R                  " 5       nU(       Ga.  [         R                  " U5      [         R                  " U 5      L aê  UR                  n [         R                  " U5      u  p4[         R
                  " X2S-
  S  5      n[        U5      n [        R                  " U5      nUR                  S   n[        U[        R                  5      (       a  UR                  S:X  a  UR                  S   n[        U[        R                  5      (       a  UR                  U R                  :X  a  U$ UR"                  nU(       a  GM-  g g ! [         a     N$f = f! [          a     N4f = f)Né   r   Údedent_workaround)r&   ÚcurrentframeÚ	getmoduleÚf_linenoÚ
findsourceÚgetblockr=   r   ÚparseÚbodyr   ÚFunctionDefÚnameÚClassDefr-   ÚSyntaxErrorÚOSErrorÚf_back)	ÚclsÚframeÚlnumÚlinesÚ_Úblock_linesr<   Ú
block_treeÚstmts	            r   Ú_extract_source_from_framerV   4   s"  € Ü× Ò Ó"€Eç
Ü×Ò˜UÓ#¤w×'8Ò'8¸Ó'=Ò=Ø—>‘>ˆDð+Ü"×-Ò-¨eÓ4‘�ô &×.Ò.¨u¸A±X°ZÐ/@ÓA�Ü 4°[Ó A�ð
+Ü!$§¢¨=Ó!9�Jð &Ÿ?™?¨1Ñ-�DÜ! $¬¯©×8Ñ8¸T¿Y¹YÐJ]Ó=]à#Ÿy™y¨™|˜Ü! $¬¯©×5Ñ5¸$¿)¹)ÀsÇ|Á|Ó:SØ*Ð*à—‘ˆ÷1 ‹%øô #ó Ùðûô ó ñ ðús$   ÁE ÂE Å
EÅEÅ
E*Å)E*c                óD  • U(       d  [         R                  S:¼  a   [        R                  " U 5      u  p#O[        U 5      nU(       d  0 $ [        U5      n[        5       nUR                  [        R                  " U5      5        UR                  $ ! [         a    0 s $ f = f)a<  Map model attributes and their corresponding docstring.

Args:
    cls: The class of the Pydantic model to inspect.
    use_inspect: Whether to skip usage of frames to find the object and use
        the `inspect` module instead.

Returns:
    A mapping containing attribute names and their corresponding docstring.
)é   é   )ÚsysÚversion_infor&   ÚgetsourcelinesrL   rV   r=   r   r   r   rF   r   )rN   Úuse_inspectr;   rR   r<   Úvisitors         r   Úextract_docstrings_from_clsr_   R   sˆ   € ö ”c×&Ñ&¨'Ó1ð
	Ü×.Ò.¨sÓ3‰IˆF�Aô
 ,¨CÓ0ˆæØˆ	ä(¨Ó0€MäÓ €GØ‡M�M”#—)’)˜MÓ*Ô+Ø�=‰=Ðøô ó 	ØŠIð	ús   �B ÂBÂB)r;   z	list[str]r+   r$   )rN   ú	type[Any]r+   zlist[str] | None)F)rN   r`   r]   Úboolr+   zdict[str, str])Ú__doc__Ú
__future__r   r   r&   rZ   r7   Útypingr   ÚNodeVisitorr   r=   rV   r_   © r   r   Ú<module>rg      s9   ðÙ :å "ã 
Û Û 
Û Ý ô�s—‘ô ô:ô÷<r   