Ë
    /æjd  ã                  ó„   — d Z ddlmZ ddlZddlZddlZddlZddlmZ  G d„ dej                  «      Z
d
d„Zdd„Zddd	„Zy)z4Utilities related to attribute docstring extraction.é    )ÚannotationsN)ÚAnyc                  óT   ‡ — e Zd Zdˆ fd„Zd	ˆ fd„Zd
d„Zdd„Zdd„Zdd„Zdd„Z	ˆ xZ
S )ÚDocstringVisitorc                óL   •— t         ‰| �  «        d | _        i | _        d | _        y ©N)ÚsuperÚ__init__ÚtargetÚattrsÚprevious_node_type)ÚselfÚ	__class__s    €úf/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/pydantic/_internal/_docs_extraction.pyr
   zDocstringVisitor.__init__   s$   ø€ Ü‰ÑÔà"&ˆŒØ%'ˆŒ
Ø8<ˆÕó    c                óF   •— t         ‰| �  |«      }t        |«      | _        |S r   )r	   ÚvisitÚtyper   )r   ÚnodeÚnode_resultr   s      €r   r   zDocstringVisitor.visit   s#   ø€ Ü‘g‘m DÓ)ˆÜ"& t£*ˆÔØÐr   c                ó„   — t        |j                  t        j                  «      r|j                  j                  | _        y y r   )Ú
isinstancer   ÚastÚNameÚid©r   r   s     r   Úvisit_AnnAssignz DocstringVisitor.visit_AnnAssign   s(   € Ü�d—k‘k¤3§8¡8Ô,ØŸ+™+Ÿ.™.ˆD�Kð -r   c                ó|  — t        |j                  t        j                  «      r˜t        |j                  j                  t        «      rs| j
                  t        j                  u rVt        j                  |j                  j                  «      }| j                  r|| j                  | j                  <   d | _	        y y y y r   )r   Úvaluer   ÚConstantÚstrr   Ú	AnnAssignÚinspectÚcleandocr   r   )r   r   Ú	docstrings      r   Ú
visit_ExprzDocstringVisitor.visit_Expr   sƒ   € ä�t—z‘z¤3§<¡<Ô0Ü˜4Ÿ:™:×+Ñ+¬SÔ1Ø×'Ñ'¬3¯=©=Ñ8ä×(Ñ(¨¯©×)9Ñ)9Ó:ˆIØ�{Š{Ø*3�—
‘
˜4Ÿ;™;Ñ'ØˆD�Kð 9ð 2ð 1r   c                 ó   — y r   © r   s     r   Úvisit_ClassDefzDocstringVisitor.visit_ClassDef)   ó   € Ør   c                 ó   — y r   r(   r   s     r   Úvisit_FunctionDefz"DocstringVisitor.visit_FunctionDef,   r*   r   c                 ó   — y r   r(   r   s     r   Úvisit_AsyncFunctionDefz'DocstringVisitor.visit_AsyncFunctionDef/   r*   r   )ÚreturnÚNone)r   zast.ASTr/   r   )r   zast.AnnAssignr/   r   )r   zast.Exprr/   r   )r   zast.ClassDefr/   r   )r   zast.FunctionDefr/   r   )r   zast.AsyncFunctionDefr/   r   )Ú__name__Ú
__module__Ú__qualname__r
   r   r   r&   r)   r,   r.   Ú__classcell__)r   s   @r   r   r      s&   ø„ õ=õó
)ó	óó÷r   r   c                óz   — t        j                  dj                  | «      «      }|j                  d«      rd|› �}|S )NÚ )ú ú	zdef dedent_workaround():
)ÚtextwrapÚdedentÚjoinÚ
startswith)ÚsourceÚdedent_sources     r   Ú_dedent_source_linesr?   3   s:   € ä—O‘O B§G¡G¨F£OÓ4€MØ×Ñ Ô,ð 5°]°OÐDˆØÐr   c                óž  — t        j                  «       }|�rt        j                  |«      t        j                  | «      u rÝ|j                  }	 t        j                  |«      \  }}t        j
                  ||dz
  d  «      }t        |«      }	 t        j                  |«      }|j                  d   }t        |t        j                  «      r|j                  dk(  r|j                  d   }t        |t        j                  «      r|j                  | j                  k(  r|S |j"                  }|r�Œy y # t        $ r Y Œw xY w# t         $ r Y Œ,w xY w)Né   r   Údedent_workaround)r#   ÚcurrentframeÚ	getmoduleÚf_linenoÚ
findsourceÚgetblockr?   r   ÚparseÚbodyr   ÚFunctionDefÚnameÚClassDefr1   ÚSyntaxErrorÚOSErrorÚf_back)	ÚclsÚframeÚlnumÚlinesÚ_Úblock_linesr>   Ú
block_treeÚstmts	            r   Ú_extract_source_from_framerX   >   s  € Ü× Ñ Ó"€Eâ
Ü×Ñ˜UÓ#¤w×'8Ñ'8¸Ó'=Ñ=Ø—>‘>ˆDð+Ü"×-Ñ-¨eÓ4‘��qô &×.Ñ.¨u°T¸A±X°ZÐ/@ÓA�Ü 4°[Ó A�ð
+Ü!$§¡¨=Ó!9�Jð &Ÿ?™?¨1Ñ-�DÜ! $¬¯©Ô8¸T¿Y¹YÐJ]Ò=]à#Ÿy™y¨™|˜Ü! $¬¯©Ô5¸$¿)¹)ÀsÇ|Á|Ò:SØ*Ð*à—‘ˆõ1 øô #ò Ùðûô ò ñ ðús$   ÁE  ÂD1 Ä1	D=Ä<D=Å 	EÅEc                óÄ  — |st         j                  dk\  r	 t        j                  | «      \  }}nt        | «      }|si S t        |«      }t        j                  |«      j                  d   }t        |t        j                  «      r|j                  dk(  r|j                  d   }t        «       }|j                  |«       |j                   S # t        t
        f$ r i cY S w xY w)aX  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.
    )é   é   r   rB   )ÚsysÚversion_infor#   ÚgetsourcelinesrN   Ú	TypeErrorrX   r?   r   rH   rI   r   rJ   rK   r   Úgeneric_visitr   )rP   Úuse_inspectr=   rT   r>   rW   Úvisitors          r   Úextract_docstrings_from_clsrc   \   sÆ   € ñ ”c×&Ñ&¨'Ò1ð
	Ü×.Ñ.¨sÓ3‰IˆF‘Aô
 ,¨CÓ0ˆáØˆ	ä(¨Ó0€Mä�9‰9�]Ó#×(Ñ(¨Ñ+€DÜ�$œŸ™Ô(¨T¯Y©YÐ:MÒ-Mà�y‰y˜‰|ˆäÓ €GØ×Ñ˜$ÔØ�=‰=Ðøô% œÐ#ò 	ØŠIð	ús   —C ÃCÃC)r=   z	list[str]r/   r!   )rP   ú	type[Any]r/   zlist[str] | None)F)rP   rd   ra   Úboolr/   zdict[str, str])Ú__doc__Ú
__future__r   r   r#   r\   r9   Útypingr   ÚNodeVisitorr   r?   rX   rc   r(   r   r   ú<module>rj      s:   ðÙ :å "ã 
Û Û 
Û Ý ô$�s—‘ô $óNóõ<$r   