o
    óæhz4  ã                   @  sš  U d dl mZ d dlZd dlmZmZmZ d dlmZm	Z	 d dl
mZ d dl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mZmZmZ ee ee ee e!e"iZ#d	e$d
< G dd„ dej%ƒZ%dFdd„Z&dGdd„Z'dHdd„Z(dIdd„Z)dJdd „Z*dKd"d#„Z+dLd)d*„Z,dMd-d.„Z-dNd0d1„Z.dOd3d4„Z/dPd6d7„Z0dQd9d:„Z1dRd<d=„Z2dSd?d@„Z3ej4e.ej5e/ej6e0ej7e1ej8e2ej9e3iZ:dAe$dB< dTdDdE„Z;dS )Ué    )ÚannotationsN)ÚPathÚ	PosixPathÚWindowsPath)ÚAnyÚCallable)Úexpressions)ÚKindÚParameterKindÚTypeParameterKind)ÚGitInfo)ÚAliasÚ	AttributeÚClassÚ	DecoratorÚ	DocstringÚFunctionÚModuleÚObjectÚ	ParameterÚ
ParametersÚ	TypeAliasÚTypeParameterÚTypeParametersz dict[type, Callable[[Any], Any]]Ú_json_encoder_mapc                      s6   e Zd ZdZddœd‡ fdd„Zd‡ fdd„Z‡  ZS )ÚJSONEncoderat  JSON encoder.

    JSON encoders can be used directly, or through
    the [`json.dump`][] or [`json.dumps`][] methods.

    Examples:
        >>> from griffe import JSONEncoder
        >>> JSONEncoder(full=True).encode(..., **kwargs)

        >>> import json
        >>> from griffe import JSONEncoder
        >>> json.dumps(..., cls=JSONEncoder, full=True, **kwargs)
    F©ÚfullÚargsr   r   ÚboolÚkwargsÚreturnÚNonec                  s   t ƒ j|i |¤Ž || _dS )a  Initialize the encoder.

        Parameters:
            *args: See [`json.JSONEncoder`][].
            full: Whether to dump full data or base data.
                If you plan to reload the data in Python memory
                using the [`json_decoder`][griffe.json_decoder],
                you don't need the full data as it can be inferred again
                using the base data. If you want to feed a non-Python
                tool instead, dump the full data.
            **kwargs: See [`json.JSONEncoder`][].
        N)ÚsuperÚ__init__r   )Úselfr   r   r    ©Ú	__class__© úZ/var/www/html/openai_agents/venv/lib/python3.10/site-packages/griffe/_internal/encoders.pyr$   4   s   zJSONEncoder.__init__Úobjc                   s<   z|j | jdW S  ty   t t|ƒtƒ j¡|ƒ Y S w )z¾Return a serializable representation of the given object.

        Parameters:
            obj: The object to serialize.

        Returns:
            A serializable representation.
        r   )Úas_dictr   ÚAttributeErrorr   ÚgetÚtyper#   Údefault)r%   r*   r&   r(   r)   r/   J   s
   	ÿzJSONEncoder.default)r   r   r   r   r    r   r!   r"   )r*   r   r!   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r$   r/   Ú__classcell__r(   r(   r&   r)   r   %   s
    ýr   Úobj_dictÚdictr!   úDocstring | Nonec                 C  s   d| v rt di | d ¤ŽS d S )NÚ	docstringr(   )r   ©r5   r(   r(   r)   Ú_load_docstringY   s   r:   úlist[Decorator]c                 C  s   dd„ |   dg ¡D ƒS )Nc                 S  s   g | ]	}t d i |¤Ž‘qS )r(   )r   )Ú.0Údecr(   r(   r)   Ú
<listcomp>`   s    z$_load_decorators.<locals>.<listcomp>Ú
decorators)r-   r9   r(   r(   r)   Ú_load_decorators_   s   r@   Ú
expressionúexpressions.Exprc                 C  sZ   t t|  d¡ƒ}|di | ¤Ž}|tju r+d }|jD ]}|d ur"||_t|tjƒr*|}q|S )NÚclsr(   )Úgetattrr   ÚpopÚExprAttributeÚvaluesÚparentÚ
isinstanceÚExprName)rA   rC   ÚexprÚpreviousÚvaluer(   r(   r)   Ú_load_expressionc   s   

€rN   údict[str, Any]r   c                 C  s*   t | d | d t| d ƒ| d t| ƒdS )NÚnameÚ
annotationÚkindr/   )rQ   rR   r/   r8   )r   r
   r:   r9   r(   r(   r)   Ú_load_parameterw   s   
ûrS   r   c                 C  s$   t | d t| d ƒ| d | d dS )NrP   rR   rQ   r/   )rR   Úboundr/   )r   r   r9   r(   r(   r)   Ú_load_type_parameter   s   
ürU   r   c                 C  s$   t t| d ƒ| d | d | d dS )NÚ
repositoryÚserviceÚ
remote_urlÚcommit_hash)rV   rW   rX   rY   )r   r   r9   r(   r(   r)   Ú_load_git_infoŠ   s   
ürZ   rK   úexpressions.Expr | str | NonerH   úModule | Classr"   c                 C  sT   t | tjƒsd S | D ]}t |tjƒr||_q
t |tjƒr't |jtjƒr'||j_q
d S ©N)rI   r   ÚExprrJ   rH   rF   Úfirst)rK   rH   Úelemr(   r(   r)   Ú_attach_parent_to_expr“   s   €üra   r*   ú(Class | Function | Attribute | TypeAliasc                 C  sp  t | tƒr/| jrt| jj|ƒ | jD ]}t|j|ƒ q| jD ]}t|j|ƒ t|j|ƒ qd S t | t	ƒrv| jr>t| jj|ƒ | jD ]}t|j|ƒ qA| jD ]}t|j|ƒ t|j|ƒ qM| j
D ]}t|j|ƒ t|j|ƒ q_t| j|ƒ d S t | tƒr| jr…t| jj|ƒ t| j|ƒ d S t | tƒr¶| jrœt| jj|ƒ | jD ]}t|j|ƒ t|j|ƒ qŸt| j|ƒ d S d S r]   )rI   r   r8   ra   rM   r?   Útype_parametersrQ   r/   r   Ú
parametersÚreturnsr   r   )r*   rH   Ú	decoratorÚtype_parameterÚparamr(   r(   r)   Ú_attach_parent_to_exprs   sB   


þ






úri   r   c                 C  sð   t | d d| v rt| d ƒnd t| ƒ|  dd¡|  d¡d}|  dg ¡}t|tƒr-| ¡ }|D ]}| |j|¡ t	||ƒ q/| j
t|  dd	¡ƒO  _
|  d
¡|_|  di ¡|_|  d¡|_|  d¡|_|  d¡|_|  d¡ }rvt|ƒ|_|S )NrP   ÚfilepathÚruntimeTÚanalysis)rP   rj   r8   rk   rl   ÚmembersÚlabelsr(   ÚexportsÚimportsÚ
deprecatedÚpublicÚsource_linkÚgit_info)r   r   r:   r-   rI   r6   rG   Ú
set_memberrP   ri   rn   Úsetro   rp   rq   rr   rs   rZ   rt   )r5   Úmodulerm   Úmodule_memberrt   r(   r(   r)   Ú_load_moduleÂ   s,   
û

ry   r   c                 C  s  t | d | d |  d¡t| ƒt| ƒd| v rt| d Ž nd | d |  dd¡|  d¡d		}|  d
g ¡}t|tƒr:| ¡ }|D ]}| |j	|¡ t
||ƒ q<| jt|  dd¡ƒO  _|  di ¡|_|  d¡|_|  d¡|_|  d¡|_t
||ƒ |  d¡ }r‚t|ƒ|_|S )NrP   ÚlinenoÚ	endlinenorc   Úbasesrk   Trl   )	rP   rz   r{   r8   r?   rc   r|   rk   rl   rm   rn   r(   rp   rq   rr   rs   rt   )r   r-   r:   r@   r   rI   r6   rG   ru   rP   ri   rn   rv   rp   rq   rr   rs   rZ   rt   )r5   Úclass_rm   Úclass_memberrt   r(   r(   r)   Ú_load_classÞ   s4   
÷


r   r   c                 C  sº   t | d t| d Ž | d t| ƒd| v rt| d Ž nd | d |  d¡t| ƒ|  dd¡|  d	¡d

}| jt|  dd¡ƒO  _|  d¡|_|  d¡|_	|  d¡|_
|  d¡ }r[t|ƒ|_|S )NrP   rd   re   rc   rz   r{   rk   Trl   )
rP   rd   re   r?   rc   rz   r{   r8   rk   rl   rn   r(   rq   rr   rs   rt   )r   r   r@   r   r-   r:   rn   rv   rq   rr   rs   rZ   rt   )r5   Úfunctionrt   r(   r(   r)   Ú_load_functionþ   s&   

ö
r   r   c              
   C  s¢   t | d | d |  d¡t| ƒ|  d¡|  d¡|  d¡d}| jt|  dd	¡ƒO  _|  d
d¡|_|  d¡|_|  d¡|_|  d¡|_|  d¡ }rOt	|ƒ|_
|S )NrP   rz   r{   rM   rQ   rl   )rP   rz   r{   r8   rM   rQ   rl   rn   r(   rk   Trq   rr   rs   rt   )r   r-   r:   rn   rv   rk   rq   rr   rs   rZ   rt   )r5   Ú	attributert   r(   r(   r)   Ú_load_attribute  s"   ù	
rƒ   r   c              
   C  sZ   t | d | d | d |  d¡|  dd¡|  dd¡|  d	¡d
}|  d¡|_|  d¡|_|S )NrP   Útarget_pathrz   r{   rk   TÚ	inheritedFrl   )rP   Útargetrz   r{   rk   r…   rl   rr   rq   )r   r-   rr   rq   )r5   Úaliasr(   r(   r)   Ú_load_alias(  s   

ù	rˆ   r   c              
   C  s¢   t | d | d t| d Ž | d |  d¡t| ƒ|  d¡d}| jt|  dd	¡ƒO  _|  d
d¡|_|  d¡|_|  d¡|_|  d¡|_	|  d¡ }rOt
|ƒ|_|S )NrP   rM   rc   rz   r{   rl   )rP   rM   rc   rz   r{   r8   rl   rn   r(   rk   Trq   rr   rs   rt   )r   r   r-   r:   rn   rv   rk   rq   rr   rs   rZ   rt   )r5   Ú
type_aliasrt   r(   r(   r)   Ú_load_type_alias7  s"   
ù	
rŠ   z6dict[Kind, Callable[[dict[str, Any]], Object | Alias]]Ú_loader_mapúTdict[str, Any] | Object | Alias | Parameter | TypeParameter | str | expressions.Exprc                 C  sd   d| v rt | ƒS d| v r0| d }|tv rt| | ƒS |tj ¡ v r%t| ƒS |tj ¡ v r0t| ƒS | S )af  Decode dictionaries as data classes.

    The [`json.loads`][] method walks the tree from bottom to top.

    Examples:
        >>> import json
        >>> from griffe import json_decoder
        >>> json.loads(..., object_hook=json_decoder)

    Parameters:
        obj_dict: The dictionary to decode.

    Returns:
        An instance of a data class.
    rC   rR   )rN   r‹   r
   Ú__members__rG   rS   r   rU   )r5   rR   r(   r(   r)   Újson_decoderU  s   rŽ   )r5   r6   r!   r7   )r5   r6   r!   r;   )rA   r6   r!   rB   )r5   rO   r!   r   )r5   rO   r!   r   )r5   rO   r!   r   )rK   r[   rH   r\   r!   r"   )r*   rb   rH   r\   r!   r"   )r5   rO   r!   r   )r5   rO   r!   r   )r5   rO   r!   r   )r5   rO   r!   r   )r5   rO   r!   r   )r5   rO   r!   r   )r5   rO   r!   rŒ   )<Ú
__future__r   ÚjsonÚpathlibr   r   r   Útypingr   r   Úgriffe._internalr   Úgriffe._internal.enumerationsr	   r
   r   Úgriffe._internal.gitr   Úgriffe._internal.modelsr   r   r   r   r   r   r   r   r   r   r   r   r   Ústrrv   Úsortedr   Ú__annotations__r   r:   r@   rN   rS   rU   rZ   ra   ri   ry   r   r   rƒ   rˆ   rŠ   ÚMODULEÚCLASSÚFUNCTIONÚ	ATTRIBUTEÚALIASÚ
TYPE_ALIASr‹   rŽ   r(   r(   r(   r)   Ú<module>   sH   <ü
4





	
	


%

 


ú
