
    iKj*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jN                        Z'ddZ(d dZ)d!dZ*d"dZ+d#dZ,d$dZ-d%dZ.d&dZ/d'dZ0d(dZ1d)dZ2d*dZ3d+dZ4d,dZ5ejl                  e0ejn                  e1ejp                  e2ejr                  e3ejt                  e4ejv                  e5iZ<de&d<   	 	 	 	 d-dZ=y).    )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                  D     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fullc               2    t        |   |i | || _        y)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    argskwargs	__class__s       j/Users/ahmed/devFolder/Ultron/claude-voice/.venv/lib/python3.12/site-packages/griffe/_internal/encoders.pyr#   zJSONEncoder.__init__7   s!    $ 	$)&)	5    c                    	 |j                  | j                        S # t        $ r/ t        j	                  t        |      t        |         |      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$   objr'   s     r(   r/   zJSONEncoder.defaultM   sO    	J;;DII;.. 	J$((cEGODSII	Js    5AA)r%   r   r    boolr&   r   returnNone)r0   r   r2   r   )__name__
__module____qualname____doc__r#   r/   __classcell__)r'   s   @r(   r   r   (   sD    " 66 6 	6
 
6,J Jr)   r   c                (    d| v rt        di | d   S y )N	docstring )r   obj_dicts    r(   _load_docstringr>   \   s     h18K011r)   c                ^    | j                  dg       D cg c]  }t        di | c}S c c}w )N
decoratorsr;   )r-   r   )r=   decs     r(   _load_decoratorsrB   b   s/    (0\2(FG(FI(FGGGs   *c                    t        t        | j                  d            } |di | }|t        j                  u r9d }|j                  D ](  }|||_        t        |t        j                        s'|}* |S )Nclsr;   )getattrr	   popExprAttributevaluesparent
isinstanceExprName)
expressionrD   exprpreviousvalues        r(   _load_expressionrP   f   sp    
+z~~e4
5CD k'''[[E#'%!5!56 	 !
 Kr)   c           	     ^    t        | d   | d   t        | d         | d   t        |             S )Nname
annotationkindr/   )rS   rT   r/   r:   )r   r   r>   r<   s    r(   _load_parameterrU   z   s<    L)8F+,#!(+ r)   c                J    t        | d   t        | d         | d   | d         S )NrR   rT   rS   r/   )rT   boundr/   )r   r   r<   s    r(   _load_type_parameterrX      s4    x/0|$#	 r)   c                J    t        t        | d         | d   | d   | d         S )N
repositoryservice
remote_urlcommit_hash)rZ   r[   r\   r]   )r   r   r<   s    r(   _load_git_infor^      s4    ./#L)]+	 r)   c                .   t        | t        j                        sy | D ]u  }t        |t        j                        r||_        %t        |t        j
                        s@t        |j                  t        j                        se||j                  _        w y N)rJ   r	   ExprrK   rI   rG   first)rM   rI   elems      r(   _attach_parent_to_exprrd      sf    dK,,-dK001 DKk778Z

T_ThTh=i &DJJ	 r)   c                   t        | t              r| j                  r t        | j                  j                  |       | j
                  D ]  }t        |j                  |        | j                  D ].  }t        |j                  |       t        |j                  |       0 y t        | t              r| j                  r t        | j                  j                  |       | j
                  D ]  }t        |j                  |        | j                  D ].  }t        |j                  |       t        |j                  |       0 | j                  D ].  }t        |j                  |       t        |j                  |       0 t        | j                  |       y t        | t              rC| j                  r t        | j                  j                  |       t        | j                  |       y t        | t              r| j                  r t        | j                  j                  |       | j                  D ].  }t        |j                  |       t        |j                  |       0 t        | j                  |       y y r`   )rJ   r   r:   rd   rO   r@   type_parametersrS   r/   r   
parametersreturnsr   r   )r0   rI   	decoratortype_parameterparams        r(   _attach_parent_to_exprsrl      s    #u=="3==#6#6?I"9??F; (!11N">#<#<fE">#9#96B 2 
C	"=="3==#6#6?I"9??F; (!11N">#<#<fE">#9#96B 2 ^^E"5#3#3V<"5==&9 $ 	s{{F3	C	#=="3==#6#6?syy&1	C	#=="3==#6#6?!11N">#<#<fE">#9#96B 2 	syy&1 
$r)   c           	        | j                  d      }|-t        |t              rg t        t        |      n
t	        |      }t        | d   |t        |       | j                  dd      | j                  d            }| j                  di       j                         }|D ]*  }|j                  |j                  |       t        ||       , |xj                  t        | j                  dd	            z  c_        | j                  d
      |_        | j                  di       |_        | j                  d      |_        | j                  d      |_        | j                  d      |_        | j                  d      x}rt%        |      |_        |S )NfilepathrR   runtimeTanalysis)rR   rn   r:   ro   rp   memberslabelsr;   exportsimports
deprecatedpublicsource_linkgit_info)r-   rJ   listmapr   r   r>   rH   
set_memberrR   rl   rr   setrs   rt   ru   rv   rw   r^   rx   )r=   rn   modulerq   module_memberrx   s         r(   _load_moduler      sP   ||J'H@J8UY@Z&<D((;&<`dem`nf!(+Y-j)F ll9b)002G -,,m<v6 ! MMSh344M\\),FN\\)R0FN \2FLL*FM!m4F<<
++x+(2Mr)   c                   t        | d   | d   | j                  d      t        |       t        |       d| v rt	        | d    nd | d   | j                  dd      | j                  d      		      }| j                  d
i       j                         }|D ]*  }|j                  |j                  |       t        ||       , |xj                  t        | j                  dd            z  c_	        | j                  di       |_        | j                  d      |_        | j                  d      |_        | j                  d      |_        t        ||       | j                  d      x}rt        |      |_        |S )NrR   lineno	endlinenorf   basesro   Trp   )	rR   r   r   r:   r@   rf   r   ro   rp   rq   rr   r;   rt   ru   rv   rw   rx   )r   r-   r>   rB   r   rH   r{   rR   rl   rr   r|   rt   ru   rv   rw   r^   rx   )r=   class_rq   class_memberrx   s        r(   _load_classr      sK   f!,,{+!(+#H-HY]eHe1B(CDkowY-j)
F ll9b)002G,++\:f5   MMSh344M\\)R0FN \2FLL*FM!m4FFF+<<
++x+(2Mr)   c                   t        | d   t        | d    | d   t        |       d| v rt        | d    nd | d   | j	                  d      t        |       | j	                  dd      | j	                  d	      

      }|xj                  t        | j	                  dd            z  c_        | j	                  d      |_        | j	                  d      |_	        | j	                  d      |_
        | j	                  d      x}rt        |      |_        |S )NrR   rg   rh   rf   r   r   ro   Trp   )
rR   rg   rh   r@   rf   r   r   r:   ro   rp   rr   r;   ru   rv   rw   rx   )r   r   rB   r   r-   r>   rr   r|   ru   rv   rw   r^   rx   )r=   functionrx   s      r(   _load_functionr      s    fx56##H-HY]eHe1B(CDko!,,{+!(+Y-j)H OOs8<<"566O",,|4Hll8,HO#<<6H<<
++x+*84Or)   c                   t        | d   | d   | j                  d      t        |       | j                  d      | j                  d      | j                  d            }|xj                  t	        | j                  dd	            z  c_        | j                  d
d      |_        | j                  d      |_        | j                  d      |_        | j                  d      |_        | j                  d      x}rt        |      |_
        |S )NrR   r   r   rO   rS   rp   )rR   r   r   r:   rO   rS   rp   rr   r;   ro   Tru   rv   rw   rx   )r   r-   r>   rr   r|   ro   ru   rv   rw   r^   rx   )r=   	attributerx   s      r(   _load_attributer     s    f!,,{+!(+ll7#<<-j)I HLL2677 Y5I#<<5I||H-I$LL7I<<
++x++H5	r)   c                   t        | d   | d   | d   | j                  d      | j                  dd      | j                  dd      | j                  d	      
      }| j                  d      |_        | j                  d      |_        |S )NrR   target_pathr   r   ro   T	inheritedFrp   )rR   targetr   r   ro   r   rp   rv   ru   )r   r-   rv   ru   )r=   aliass     r(   _load_aliasr   &  s    f&!,,{+Y-,,{E2j)E <<)EL||L1ELr)   c                   t        | d   | d   t        | d    | d   | j                  d      t        |       | j                  d            }|xj                  t        | j                  dd	            z  c_        | j                  d
d      |_        | j                  d      |_        | j                  d      |_        | j                  d      |_	        | j                  d      x}rt        |      |_        |S )NrR   rO   rf   r   r   rp   )rR   rO   rf   r   r   r:   rp   rr   r;   ro   Tru   rv   rw   rx   )r   r   r-   r>   rr   r|   ro   ru   rv   rw   r^   rx   )r=   
type_aliasrx   s      r(   _load_type_aliasr   5  s    fw&1B(CD!,,{+!(+j)J X\\(B788!i6J$LL6J X.J%\\-8J<<
++x+,X6
r)   z6dict[Kind, Callable[[dict[str, Any]], Object | Alias]]_loader_mapc                   d| v rt        |       S d| v rq| d   }|t        v rt        |   |       S |t        j                  j	                         v rt        |       S |t        j                  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.
    rD   rT   )rP   r   r   __members__rH   rU   r   rX   )r=   rT   s     r(   json_decoderr   S  s    & )) ;t$X..=,,3355"8,,$007799'11 Or)   )r=   dictr2   zDocstring | None)r=   r   r2   zlist[Decorator])rL   r   r2   zexpressions.Expr)r=   dict[str, Any]r2   r   )r=   r   r2   r   )r=   r   r2   r   )rM   zexpressions.Expr | str | NonerI   Module | Classr2   r3   )r0   z(Class | Function | Attribute | TypeAliasrI   r   r2   r3   )r=   r   r2   r   )r=   r   r2   r   )r=   r   r2   r   )r=   r   r2   r   )r=   r   r2   r   )r=   r   r2   r   )r=   r   r2   zTdict[str, Any] | Object | Alias | Parameter | TypeParameter | str | expressions.Expr)>
__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>   rB   rP   rU   rX   r^   rd   rl   r   r   r   r   r   r   MODULECLASSFUNCTION	ATTRIBUTEALIAS
TYPE_ALIASr   r   r;   r)   r(   <module>r      s   #  0 0 % ( P P (     ( 	#s	7 3 1J$"" 1JhH('"2J68,(* 	KKJJMM>NNOJJOO%GC ##Y#r)   