
    -h"              
         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 d dl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ej                  Zd0dZ d1dZ!d2dZ"d3dZ#d4dZ$d5d!Z%d6d#Z&d7d%Z'd8d'Z(d9d)Z)d:d+Z*ej+        e&ej,        e'ej-        e(ej.        e)ej/        e*iZ0d,ed-<   d;d/Z1dS )<    )annotationsN)Path	PosixPathWindowsPath)AnyCallable)expressions)KindParameterKind)
Alias	AttributeClass	Decorator	DocstringFunctionModuleObject	Parameter
Parametersz 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       M/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/_griffe/encoders.pyr"   zJSONEncoder.__init__0   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%   r-   zJSONEncoder.defaultF   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"   r-   __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   r3   s    r%   _load_docstringr:   U   s+    h118K01114r&   list[Decorator]c                B    d |                      dg           D             S )Nc                &    g | ]}t          d i |S )r8   )r   ).0decs     r%   
<listcomp>z$_load_decorators.<locals>.<listcomp>\   s&    GGGIGGGr&   
decorators)r+   r9   s    r%   _load_decoratorsrB   [   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clsr8   )getattrr	   popExprAttributevaluesparent
isinstanceExprName)rC   rF   exprpreviousvalues        r%   _load_expressionrQ   _   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kindr-   )rU   rV   r-   r7   )r   r   r:   r9   s    r%   _load_parameterrW   s   sL    L)8F+,,#!(++   r&   rN   expressions.Expr | str | NonerK   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)rL   r	   ExprrM   rK   rI   first)rN   rK   elems      r%   _attach_parent_to_exprr_   }   s    dK,--  ' 'dK011 	' DKKk788 	'Z
T_Th=i=i 	' &DJ	' 'r&   r'   Class | Function | Attributec                   t          | t                    rB| j        rt          | j        j        |           | j        D ]}t          |j        |           d S t          | t                    r| j        rt          | j        j        |           | j        D ]}t          |j        |           | j        D ],}t          |j        |           t          |j	        |           -t          | j
        |           d S t          | t                    r8| j        rt          | j        j        |           t          | j        |           d S d S r[   )rL   r   r7   r_   rP   rA   r   
parametersrU   r-   returnsr   )r'   rK   	decoratorparams       r%   _attach_parent_to_exprsrf      sc    #u 2= 	@"3=#6??? 	< 	<I"9?F;;;;	< 	<	C	"	" 2= 	@"3=#6??? 	< 	<I"9?F;;;;^ 	: 	: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2 2r&   r   c                   t          | d         t          | d                   t          |                     }|                     dg           }t	          |t
                    r|                                }|D ]-}|                    |j        |           t          ||           .|xj
        t          |                     dd                    z  c_
        |S )NrT   filepath)rT   rh   r7   memberslabelsr8   )r   r   r:   r+   rL   r4   rJ   
set_memberrT   rf   rj   set)r3   moduleri   module_members       r%   _load_modulero      s    &)D*9M4N4NZijrZsZstttFll9b))G'4   #..""  7 7-,m<<<v6666
MMSh33444MMMr&   r   c           	        t          | d         | d         |                     d          t          |           t          |           | d                   }|                     dg           }t	          |t
                    r|                                }|D ]-}|                    |j        |           t          ||           .|xj
        t          |                     dd                    z  c_
        t          ||           |S )	NrT   lineno	endlinenobases)rT   rq   rr   r7   rA   rs   ri   rj   r8   )r   r+   r:   rB   rL   r4   rJ   rk   rT   rf   rj   rl   )r3   class_ri   class_members       r%   _load_classrv      s    f!,,{++!(++#H--w  F ll9b))G'4   #.."" 6 6,+\:::f5555
MMSh33444MMFF+++Mr&   r   c                ,   t          | d         t          | d          | d         t          |           | d         |                     d          t	          |                     }|xj        t          |                     dd                    z  c_        |S )	NrT   rb   rc   rq   rr   )rT   rb   rc   rA   rq   rr   r7   rj   r8   )r   r   rB   r+   r:   rj   rl   )r3   functions     r%   _load_functionry      s    fx56##H--!,,{++!(++  H OOs8<<"55666OOOr&   r   c           
     6   t          | d         | d         |                     d          t          |           |                     d          |                     d                    }|xj        t	          |                     dd                    z  c_        |S )	NrT   rq   rr   rP   rU   )rT   rq   rr   r7   rP   rU   rj   r8   )r   r+   r:   rj   rl   )r3   	attributes     r%   _load_attributer|      s    f!,,{++!(++ll7##<<--  I HLL266777r&   r   c                r    t          | d         | d         | d         |                     d                    S )NrT   target_pathrq   rr   )rT   targetrq   rr   )r   r+   r9   s    r%   _load_aliasr      s@    f&!,,{++	   r&   zUdict[Kind, Callable[[dict[str, Any]], Module | Class | Function | Attribute | Alias]]_loader_mapDdict[str, Any] | Object | Alias | Parameter | str | expressions.Exprc                    d| v rt          |           S d| v rK	 t          | d                   }n# t          $ r t          |           cY S w xY w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.
    rF   rV   )rQ   r
   
ValueErrorrW   r   )r3   rV   s     r%   json_decoderr      s    " ))) 	-())DD 	- 	- 	-"8,,,,,	-4 *** Os   / A
A)r3   r4   r   r5   )r3   r4   r   r;   )rC   r4   r   rD   )r3   rR   r   r   )rN   rX   rK   rY   r   r   )r'   r`   rK   rY   r   r   )r3   rR   r   r   )r3   rR   r   r   )r3   rR   r   r   )r3   rR   r   r   )r3   rR   r   r   )r3   rR   r   r   )2
__future__r   jsonpathlibr   r   r   typingr   r   _griffer	   _griffe.enumerationsr
   r   _griffe.modelsr   r   r   r   r   r   r   r   r   r   strrl   sortedr   __annotations__r   r:   rB   rQ   rW   r_   rf   ro   rv   ry   r|   r   MODULECLASSFUNCTION	ATTRIBUTEALIASr   r   r8   r&   r%   <module>r      s   # " " " " " "  0 0 0 0 0 0 0 0 0 0                       4 4 4 4 4 4 4 4                        	#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 20      .   
 
 
 
    	KJM>NOJf         r&   