
    i4                    *   % S SK Jr  S SKrS SKJrJrJr  S SKJrJ	r	  S SK
Jr  S SKJrJrJr  S SKJr  S SKJrJrJrJrJrJrJrJrJrJrJrJrJr  \\ \\ \\ \!\"0r#S	\$S
'    " S S\RJ                  5      r%SS jr&SS jr'S S jr(S!S jr)S"S jr*S#S jr+S$S jr,S%S jr-S&S jr.S'S jr/S(S jr0S)S jr1S*S jr2S+S jr3\Rh                  \.\Rj                  \/\Rl                  \0\Rn                  \1\Rp                  \2\Rr                  \30r:S\$S'       S,S jr;g)-    )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                  V   ^  \ rS rSrSrSS.       SU 4S jjjrSU 4S jjrSrU =r$ )	JSONEncoder%   aP  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U ]  " U0 UD6  Xl        g)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       S/home/james-whalen/.local/lib/python3.13/site-packages/griffe/_internal/encoders.pyr#   JSONEncoder.__init__4   s    $ 	$)&)	5    c                   >  UR                  U R                  S9$ ! [         a0    [        R	                  [        U5      [        TU ]  5      " U5      s $ f = f)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(   r0   JSONEncoder.defaultJ   sO    	J;;DII;.. 	J$((cEGODSII	Js    7AA)r%   r   r    boolr&   r   returnNone)r1   r   r4   r   )	__name__
__module____qualname____firstlineno____doc__r#   r0   __static_attributes____classcell__)r'   s   @r(   r   r   %   sI    " 66 6 	6
 
6 6,J Jr*   r   c                ,    SU ;   a  [        S0 U S   D6$ g )N	docstring )r   obj_dicts    r(   _load_docstringrB   Y   s     h18K011r*   c                d    U R                  S/ 5       Vs/ s H  n[        S0 UD6PM     sn$ s  snf )N
decoratorsr?   )r.   r   )rA   decs     r(   _load_decoratorsrF   _   s/    (0\2(FG(FI(FGGGs   -c                    [        [        U R                  S5      5      nU" S0 U D6nU[        R                  L aA  S nUR                   H/  nUb  X4l        [        U[        R                  5      (       d  M-  UnM1     U$ )Nclsr?   )getattrr	   popExprAttributevaluesparent
isinstanceExprName)
expressionrH   exprpreviousvalues        r(   _load_expressionrT   c   sq    
+z~~e4
5CD k'''[[E#'%!5!566 	 !
 Kr*   c           	     X    [        U S   U S   [        U S   5      U S   [        U 5      S9$ )Nname
annotationkindr0   )rW   rX   r0   r>   )r   r   rB   r@   s    r(   _load_parameterrY   w   s<    L)8F+,#!(+ r*   c                D    [        U S   [        U S   5      U S   U S   S9$ )NrV   rX   rW   r0   )rX   boundr0   )r   r   r@   s    r(   _load_type_parameterr\      s4    x/0|$#	 r*   c                D    [        [        U S   5      U S   U S   U S   S9$ )N
repositoryservice
remote_urlcommit_hash)r^   r_   r`   ra   )r   r   r@   s    r(   _load_git_inforb      s4    ./#L)]+	 r*   c                \   [        U [        R                  5      (       d  g U  H  n[        U[        R                  5      (       a  Xl        M*  [        U[        R
                  5      (       d  MK  [        UR                  [        R                  5      (       d  Mv  XR                  l        M     g N)rN   r	   ExprrO   rM   rK   first)rQ   rM   elems      r(   _attach_parent_to_exprrh      sn    dK,,--dK0011 Kk7788Z

T_ThTh=i=i &JJ	 r*   c                \   [        U [        5      (       a  U R                  (       a   [        U R                  R                  U5        U R
                   H  n[        UR                  U5        M     U R                   H/  n[        UR                  U5        [        UR                  U5        M1     g [        U [        5      (       a  U R                  (       a   [        U R                  R                  U5        U R
                   H  n[        UR                  U5        M     U R                   H/  n[        UR                  U5        [        UR                  U5        M1     U R                   H/  n[        UR                  U5        [        UR                  U5        M1     [        U R                  U5        g [        U [        5      (       aH  U R                  (       a   [        U R                  R                  U5        [        U R                  U5        g [        U [        5      (       a  U R                  (       a   [        U R                  R                  U5        U R                   H/  n[        UR                  U5        [        UR                  U5        M1     [        U R                  U5        g g rd   )rN   r   r>   rh   rS   rD   type_parametersrW   r0   r   
parametersreturnsr   r   )r1   rM   	decoratortype_parameterparams        r(   _attach_parent_to_exprsrp      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           	     Z   U R                  S5      nUb2  [        U[        5      (       a  / [        [        U5      QO
[	        U5      n[        U S   U[        U 5      U R                  SS5      U R                  S5      S9nU R                  S/ 5      n[        U[        5      (       a  UR                  5       nU H*  nUR                  UR                  U5        [        XB5        M,     U=R                  [        U R                  SS	5      5      -  sl        U R                  S
5      Ul        U R                  S0 5      Ul        U R                  S5      Ul        U R                  S5      Ul        U R                  S5      Ul        U R                  S5      =n(       a  ['        U5      Ul        U$ )NfilepathrV   runtimeTanalysis)rV   rr   r>   rs   rt   memberslabelsr?   exportsimports
deprecatedpublicsource_linkgit_info)r.   rN   listmapr   r   rB   dictrL   
set_memberrV   rp   rv   setrw   rx   ry   rz   r{   rb   r|   )rA   rr   moduleru   module_memberr|   s         r(   _load_moduler      s^   ||J'H-7$-G-G)Sx()TRZ^f!(+Y-j)F ll9b)G'4  .." -,,m<6 ! MMSh344M\\),FN\\)R0FN \2FLL*FM!m4F<<
++x+(2Mr*   c                   [        U S   U S   U R                  S5      [        U 5      [        U 5      SU ;   a  [	        U S   6 OS U S   U R                  SS5      U R                  S5      S	9	nU R                  S
/ 5      n[        U[        5      (       a  UR                  5       nU H*  nUR                  UR                  U5        [        X15        M,     U=R                  [        U R                  SS5      5      -  sl        U R                  S0 5      Ul        U R                  S5      Ul        U R                  S5      Ul        U R                  S5      Ul        [        X5        U R                  S5      =n(       a  [#        U5      Ul        U$ )NrV   lineno	endlinenorj   basesrs   Trt   )	rV   r   r   r>   rD   rj   r   rs   rt   ru   rv   r?   rx   ry   rz   r{   r|   )r   r.   rB   rF   r   rN   r   rL   r   rV   rp   rv   r   rx   ry   rz   r{   rb   r|   )rA   class_ru   class_memberr|   s        r(   _load_classr      sW   f!,,{+!(+#H-HY]eHe1B(CDkowY-j)
F ll9b)G'4  ..",++\:5   MMSh344M\\)R0FN \2FLL*FM!m4FF+<<
++x+(2Mr*   c                    [        U S   [        U S   6 U S   [        U 5      SU ;   a  [        U S   6 OS U S   U R	                  S5      [        U 5      U R	                  SS5      U R	                  S	5      S
9
nU=R                  [        U R	                  SS5      5      -  sl        U R	                  S5      Ul        U R	                  S5      Ul	        U R	                  S5      Ul
        U R	                  S5      =n(       a  [        U5      Ul        U$ )NrV   rk   rl   rj   r   r   rs   Trt   )
rV   rk   rl   rD   rj   r   r   r>   rs   rt   rv   r?   ry   rz   r{   r|   )r   r   rF   r   r.   rB   rv   r   ry   rz   r{   rb   r|   )rA   functionr|   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                   [        U S   U S   U R                  S5      [        U 5      U R                  S5      U R                  S5      U R                  S5      S9nU=R                  [	        U R                  SS	5      5      -  sl        U R                  S
S5      Ul        U R                  S5      Ul        U R                  S5      Ul        U R                  S5      Ul        U R                  S5      =n(       a  [        U5      Ul
        U$ )NrV   r   r   rS   rW   rt   )rV   r   r   r>   rS   rW   rt   rv   r?   rs   Try   rz   r{   r|   )r   r.   rB   rv   r   rs   ry   rz   r{   rb   r|   )rA   	attributer|   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                
   [        U S   U S   U S   U R                  S5      U R                  SS5      U R                  SS5      U R                  S	5      S
9nU R                  S5      Ul        U R                  S5      Ul        U$ )NrV   target_pathr   r   rs   T	inheritedFrt   )rV   targetr   r   rs   r   rt   rz   ry   )r   r.   rz   ry   )rA   aliass     r(   _load_aliasr   +  s    f&!,,{+Y-,,{E2j)E <<)EL||L1ELr*   c                   [        U S   U S   [        U S   6 U S   U R                  S5      [        U 5      U R                  S5      S9nU=R                  [        U R                  SS	5      5      -  sl        U R                  S
S5      Ul        U R                  S5      Ul        U R                  S5      Ul        U R                  S5      Ul	        U R                  S5      =n(       a  [        U5      Ul        U$ )NrV   rS   rj   r   r   rt   )rV   rS   rj   r   r   r>   rt   rv   r?   rs   Try   rz   r{   r|   )r   r   r.   rB   rv   r   rs   ry   rz   r{   rb   r|   )rA   
type_aliasr|   s      r(   _load_type_aliasr   :  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                $   SU ;   a  [        U 5      $ SU ;   ax  U S   nU[        ;   a  [        U   " U 5      $ U[        R                  R	                  5       ;   a  [        U 5      $ U[        R                  R	                  5       ;   a  [        U 5      $ U $ )a>  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.
rH   rX   )rT   r   r   __members__rL   rY   r   r\   )rA   rX   s     r(   json_decoderr   X  s    & )) ;t$X..=,,3355"8,,$007799'11 Or*   )rA   r   r4   zDocstring | None)rA   r   r4   zlist[Decorator])rP   r   r4   zexpressions.Expr)rA   dict[str, Any]r4   r   )rA   r   r4   r   )rA   r   r4   r   )rQ   zexpressions.Expr | str | NonerM   Module | Classr4   r5   )r1   z(Class | Function | Attribute | TypeAliasrM   r   r4   r5   )rA   r   r4   r   )rA   r   r4   r   )rA   r   r4   r   )rA   r   r4   r   )rA   r   r4   r   )rA   r   r4   r   )rA   r   r4   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   strr   sortedr   __annotations__r   rB   rF   rT   rY   r\   rb   rh   rp   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>@,(* 	KKJJMM>NNOJJOO%GC ##Y#r*   