
    Ji4                       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ejJ                        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Z.d'dZ/d(dZ0d)dZ1d*dZ2d+dZ3ejh                  e.ejj                  e/ejl                  e0ejn                  e1ejp                  e2ejr                  e3iZ:de$d<   	 	 	 	 d,dZ;y)-    )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                  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       k/var/www/html/BankruptcyAI-uat/bankruptcy-ai/venv/lib/python3.12/site-packages/griffe/_internal/encoders.pyr"   zJSONEncoder.__init__4   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.defaultJ   sO    	J;;DII;.. 	J$((cEGODSII	Js    5AA)r$   r   r   boolr%   r   returnNone)r/   r   r1   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=   Y   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_decoratorsrA   _   s)    (0\2(FGI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)
expressionrC   exprpreviousvalues        r'   _load_expressionrO   c   su    
+z~~e4
5CD k'''[[ 	!E#'%!5!56 		!
 Kr(   c           	     ^    t        | d   | d   t        | d         | d   t        |             S )Nname
annotationkindr.   )rR   rS   r.   r9   )r   r   r=   r;   s    r'   _load_parameterrT   w   s<    L)8F+,#!(+ r(   c                J    t        | d   t        | d         | d   | d         S )NrQ   rS   rR   r.   )rS   boundr.   )r   r   r;   s    r'   _load_type_parameterrW      s4    x/0|$#	 r(   c                J    t        t        | d         | d   | d   | d         S )N
repositoryservice
remote_urlcommit_hash)rY   rZ   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)rI   r	   ExprrJ   rH   rF   first)rL   rH   elems      r'   _attach_parent_to_exprrc      sk    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_   )rI   r   r9   rc   rN   r?   type_parametersrR   r.   r   
parametersreturnsr   r   )r/   rH   	decoratortype_parameterparams        r'   _attach_parent_to_exprsrk      s    #u=="3==#6#6? 	<I"9??F;	<!11 	CN">#<#<fE">#9#96B	C 
C	"=="3==#6#6? 	<I"9??F;	<!11 	CN">#<#<fE">#9#96B	C ^^ 	:E"5#3#3V<"5==&9	: 	s{{F3	C	#=="3==#6#6?syy&1	C	#=="3==#6#6?!11 	CN">#<#<fE">#9#96B	C 	syy&1 
$r(   c           	     >   | j                  d      }|-t        |t              rg t        t        |      n
t	        |      }t        | d   |t        |       | j                  dd      | j                  d            }| j                  dg       }t        |t              r|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filepathrQ   runtimeTanalysis)rQ   rm   r9   rn   ro   memberslabelsr:   exportsimports
deprecatedpublicsource_linkgit_info)r,   rI   listmapr   r   r=   dictrG   
set_memberrQ   rk   rq   setrr   rs   rt   ru   rv   r]   rw   )r<   rm   modulerp   module_memberrw   s         r'   _load_moduler      s_   ||J'H-7$-G)Sx()TRZ^f!(+Y-j)F ll9b)G'4 .."  7-,,m<v67 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
g       }t        |t              r|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 )NrQ   lineno	endlinenore   basesrn   Tro   )	rQ   r   r   r9   r?   re   r   rn   ro   rp   rq   r:   rs   rt   ru   rv   rw   )r   r,   r=   rA   r   rI   rz   rG   r{   rQ   rk   rq   r|   rs   rt   ru   rv   r]   rw   )r<   class_rp   class_memberrw   s        r'   _load_classr      s]   f!,,{+!(+#H-HY]eHe1B(CDkowY-j)
F ll9b)G'4 .." 6,++\:f56 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 )NrQ   rf   rg   re   r   r   rn   Tro   )
rQ   rf   rg   r?   re   r   r   r9   rn   ro   rq   r:   rt   ru   rv   rw   )r   r   rA   r   r,   r=   rq   r|   rt   ru   rv   r]   rw   )r<   functionrw   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 )NrQ   r   r   rN   rR   ro   )rQ   r   r   r9   rN   rR   ro   rq   r:   rn   Trt   ru   rv   rw   )r   r,   r=   rq   r|   rn   rt   ru   rv   r]   rw   )r<   	attributerw   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 )NrQ   target_pathr   r   rn   T	inheritedFro   )rQ   targetr   r   rn   r   ro   ru   rt   )r   r,   ru   rt   )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 )NrQ   rN   re   r   r   ro   )rQ   rN   re   r   r   r9   ro   rq   r:   rn   Trt   ru   rv   rw   )r   r   r,   r=   rq   r|   rn   rt   ru   rv   r]   rw   )r<   
type_aliasrw   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                   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.
    rC   rS   )rO   r   r   __members__rG   rT   r   rW   )r<   rS   s     r'   json_decoderr   X  s    & )) ;t$X..=,,3355"8,,$007799'11 Or(   )r<   rz   r1   zDocstring | None)r<   rz   r1   zlist[Decorator])rK   rz   r1   zexpressions.Expr)r<   dict[str, Any]r1   r   )r<   r   r1   r   )r<   r   r1   r   )rL   zexpressions.Expr | str | NonerH   Module | Classr1   r2   )r/   z(Class | Function | Attribute | TypeAliasrH   r   r1   r2   )r<   r   r1   r   )r<   r   r1   r   )r<   r   r1   r   )r<   r   r1   r   )r<   r   r1   r   )r<   r   r1   r   )r<   r   r1   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   r=   rA   rO   rT   rW   r]   rc   rk   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(   