
    %j4                       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rd d	l m!Z! ee"ee"ee"e#e$iZ%d
e&d<    G d dej'                  Z'd8dZ(d9dZ)d:dZ*d;dZ+d<dZ,d=dZ-d>d$Z.d?d'Z/d@d)Z0dAd+Z1dBd-Z2dCd/Z3dDd1Z4dEd3Z5ej6        e0ej7        e1ej8        e2ej9        e3ej:        e4ej;        e5iZ<d4e&d5<   dFd7Z=dS )G    )annotationsN)Path	PosixPathWindowsPath)TYPE_CHECKINGAny)expressions)KindParameterKindTypeParameterKind)GitInfo)Alias	AttributeClass	Decorator	DocstringFunctionModuleObject	Parameter
Parameters	TypeAliasTypeParameterTypeParameters)Callablez dict[type, Callable[[Any], Any]]_json_encoder_mapc                  6     e Zd ZdZddd fdZd fdZ x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               H     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__s       a/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/griffe/_internal/encoders.pyr(   zJSONEncoder.__init__7   s.    $ 	$)&)))	55    objc                    	 |                     | j                  S # t          $ rD t                              t          |          t                      j                  |          cY S w xY w)zReturn 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*   s     r+   r3   zJSONEncoder.defaultM   sn    	J;;DI;... 	J 	J 	J$((cEGGODDSIIIII	Js    AA,+A,)r!   r   r    r"   r#   r   r$   r%   )r-   r   r$   r   )__name__
__module____qualname____doc__r(   r3   __classcell__)r*   s   @r+   r   r   (   s~         " 6 6 6 6 6 6 6 6,J J J J J J J J J Jr,   r   obj_dictdictr$   Docstring | Nonec                2    d| v rt          di | d         S d S )N	docstring )r   r9   s    r+   _load_docstringr@   \   s+    h118K01114r,   list[Decorator]c                B    d |                      dg           D             S )Nc                &    g | ]}t          d i |S )r>   )r   ).0decs     r+   
<listcomp>z$_load_decorators.<locals>.<listcomp>c   s&    GGGIGGGr,   
decorators)r1   r?   s    r+   _load_decoratorsrH   b   s$    GG\2(F(FGGGGr,   
expressionexpressions.Exprc                    t          t          |                     d                    } |di | }|t          j        u r1d }|j        D ]'}|||_        t          |t          j                  r|}(|S )Nclsr>   )getattrr	   popExprAttributevaluesparent
isinstanceExprName)rI   rL   exprpreviousvalues        r+   _load_expressionrW   f   s    
+z~~e44
5
5C3D k'''[ 	! 	!E#'%!566 ! Kr,   dict[str, Any]r   c           	         t          | d         | d         t          | d                   | d         t          |                     S )Nname
annotationkindr3   )r[   r\   r3   r=   )r   r   r@   r?   s    r+   _load_parameterr]   z   sL    L)8F+,,#!(++   r,   r   c                r    t          | d         t          | d                   | d         | d                   S )NrZ   r\   r[   r3   )r\   boundr3   )r   r   r?   s    r+   _load_type_parameterr`      sA    x/00|$#	   r,   r   c                r    t          t          | d                   | d         | d         | d                   S )N
repositoryservice
remote_urlcommit_hash)rb   rc   rd   re   )r   r   r?   s    r+   _load_git_inforf      sA    .//#L)]+	   r,   rT   expressions.Expr | str | NonerQ   Module | Classr%   c                   t          | t          j                  sd S | D ]i}t          |t          j                  r||_        $t          |t          j                  r+t          |j        t          j                  r||j        _        jd S N)rR   r	   ExprrS   rQ   rO   first)rT   rQ   elems      r+   _attach_parent_to_exprrn      s    dK,--  ' 'dK011 	' DKKk788 	'Z
T_Th=i=i 	' &DJ	' 'r,   r-   (Class | Function | Attribute | TypeAliasc                `   t          | t                    rv| j        rt          | j        j        |           | j        D ]}t          |j        |           | j        D ],}t          |j        |           t          |j        |           -d S t          | t                    r| j        rt          | j        j        |           | j        D ]}t          |j        |           | j        D ],}t          |j        |           t          |j        |           -| j
        D ],}t          |j        |           t          |j        |           -t          | j        |           d S t          | t                    r8| j        rt          | j        j        |           t          | j        |           d S t          | t                    rl| j        rt          | j        j        |           | j        D ],}t          |j        |           t          |j        |           -t          | j        |           d S d S rj   )rR   r   r=   rn   rV   rG   type_parametersr[   r3   r   
parametersreturnsr   r   )r-   rQ   	decoratortype_parameterparams        r+   _attach_parent_to_exprsrw      sh    #u 2= 	@"3=#6??? 	< 	<I"9?F;;;;!1 	C 	CN">#<fEEE">#96BBBB	C 	C 
C	"	" 2= 	@"3=#6??? 	< 	<I"9?F;;;;!1 	C 	CN">#<fEEE">#96BBBB^ 	: 	:E"5#3V<<<"5=&9999s{F33333	C	#	# 
2= 	@"3=#6???sy&11111	C	#	# 2= 	@"3=#6???!1 	C 	CN">#<fEEE">#96BBBBsy&111112 2r,   r   c           	        |                      d          }|;t          |t                    rg t          t          |          nt	          |          }t          | d         |t          |           |                      dd          |                      d                    }|                      di                                           }|D ]-}|                    |j	        |           t          ||           .|xj        t          |                      dd	                    z  c_        |                      d
          |_        |                      di           |_        |                      d          |_        |                      d          |_        |                      d          |_        |                      d          x}rt%          |          |_        |S )NfilepathrZ   runtimeTanalysis)rZ   ry   r=   rz   r{   memberslabelsr>   exportsimports
deprecatedpublicsource_linkgit_info)r1   rR   listmapr   r   r@   rP   
set_memberrZ   rw   r}   setr~   r   r   r   r   rf   r   )r9   ry   moduler|   module_memberr   s         r+   _load_moduler      s   ||J''H-7$-G-G[)Sx(())TRZ^^f!(++Y--j))  F ll9b))0022G  7 7-,m<<<v6666
MMSh33444MM\\),,FN\\)R00FN \22FLL**FM!m44F<<
+++x 3(22Mr,   r   c                   t          | d         | d         |                     d          t          |           t          |           d| v rt	          | d          nd | d         |                     dd          |                     d          		  	        }|                     d
i                                           }|D ]-}|                    |j        |           t          ||           .|xj	        t          |                     dd                    z  c_	        |                     di           |_        |                     d          |_        |                     d          |_        |                     d          |_        t          ||           |                     d          x}rt          |          |_        |S )NrZ   lineno	endlinenorq   basesrz   Tr{   )	rZ   r   r   r=   rG   rq   r   rz   r{   r|   r}   r>   r   r   r   r   r   )r   r1   r@   rH   r   rP   r   rZ   rw   r}   r   r   r   r   r   rf   r   )r9   class_r|   class_memberr   s        r+   _load_classr      s   f!,,{++!(++#H--HY]eHeHe1B(CDDkowY--j))
 
 
F ll9b))0022G 6 6,+\:::f5555
MMSh33444MM\\)R00FN \22FLL**FM!m44FFF+++<<
+++x 3(22Mr,   r   c                   t          | d         t          | d          | d         t          |           d| v rt          | d          nd | d         |                     d          t          |           |                     dd          |                     d	          

  
        }|xj        t          |                     dd                    z  c_        |                     d          |_        |                     d          |_	        |                     d          |_
        |                     d          x}rt          |          |_        |S )NrZ   rr   rs   rq   r   r   rz   Tr{   )
rZ   rr   rs   rG   rq   r   r   r=   rz   r{   r}   r>   r   r   r   r   )r   r   rH   r   r1   r@   r}   r   r   r   r   rf   r   )r9   functionr   s      r+   _load_functionr      s0   fx56##H--HY]eHeHe1B(CDDko!,,{++!(++Y--j))  H OOs8<<"55666OO",,|44Hll8,,HO#<<66H<<
+++x 5*844Or,   r   c                   t          | d         | d         |                     d          t          |           |                     d          |                     d          |                     d                    }|xj        t	          |                     dd	                    z  c_        |                     d
d          |_        |                     d          |_        |                     d          |_        |                     d          |_        |                     d          x}rt          |          |_
        |S )NrZ   r   r   rV   r[   r{   )rZ   r   r   r=   rV   r[   r{   r}   r>   rz   Tr   r   r   r   )r   r1   r@   r}   r   rz   r   r   r   rf   r   )r9   	attributer   s      r+   _load_attributer     s   f!,,{++!(++ll7##<<--j))  I HLL266777 Y55I#<<55I||H--I$LL77I<<
+++x 6+H55	r,   r   c                Z   t          | d         | d         | d         |                     d          |                     dd          |                     dd          |                     d	          
          }|                     d          |_        |                     d          |_        |S )NrZ   target_pathr   r   rz   T	inheritedFr{   )rZ   targetr   r   rz   r   r{   r   r   )r   r1   r   r   )r9   aliass     r+   _load_aliasr   &  s    f&!,,{++Y--,,{E22j))  E <<))EL||L11ELr,   r   c                `   t          | d         | d         t          | d          | d         |                     d          t          |           |                     d                    }|xj        t          |                     dd	                    z  c_        |                     d
d          |_        |                     d          |_        |                     d          |_        |                     d          |_	        |                     d          x}rt          |          |_        |S )NrZ   rV   rq   r   r   r{   )rZ   rV   rq   r   r   r=   r{   r}   r>   rz   Tr   r   r   r   )r   r   r1   r@   r}   r   rz   r   r   r   rf   r   )r9   
type_aliasr   s      r+   _load_type_aliasr   5  s   fw&1B(CD!,,{++!(++j))  J X\\(B77888!i66J$LL66J X..J%\\-88J<<
+++x 7,X66
r,   z6dict[Kind, Callable[[dict[str, Any]], Object | Alias]]_loader_mapTdict[str, Any] | Object | Alias | Parameter | TypeParameter | str | expressions.Exprc                <   d| v rt          |           S d| v r| d         }|t          v rt          |         |           S |t          j                                        v rt          |           S |t          j                                        v rt          |           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.
    rL   r\   )rW   r   r   __members__rP   r]   r   r`   )r9   r\   s     r+   json_decoderr   S  s    & ))) ;t$X...=,335555"8,,,$0779999'111 Or,   )r9   r:   r$   r;   )r9   r:   r$   rA   )rI   r:   r$   rJ   )r9   rX   r$   r   )r9   rX   r$   r   )r9   rX   r$   r   )rT   rg   rQ   rh   r$   r%   )r-   ro   rQ   rh   r$   r%   )r9   rX   r$   r   )r9   rX   r$   r   )r9   rX   r$   r   )r9   rX   r$   r   )r9   rX   r$   r   )r9   rX   r$   r   )r9   rX   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   collections.abcr   strr   sortedr   __annotations__r   r@   rH   rW   r]   r`   rf   rn   rw   r   r   r   r   r   r   MODULECLASSFUNCTION	ATTRIBUTEALIAS
TYPE_ALIASr   r   r>   r,   r+   <module>r      s;   # " " " " " "  0 0 0 0 0 0 0 0 0 0 % % % % % % % % ( ( ( ( ( ( P P P P P P P P P P ( ( ( ( ( (                                )(((((( 	#s	7     1J 1J 1J 1J 1J$" 1J 1J 1Jh   H H H H   (         ' ' ' '"2 "2 "2 "2J   6   8   ,   (      * 	KJM>NOJO%G    # # # # # #r,   