
    Ji                        d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 erd dlmZmZmZmZmZm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y)    )annotations)suppress)TYPE_CHECKING)AliasResolutionErrorCyclicAliasError)logger)	AttributeClassFunctionModuleObject	TypeAliasc                L    t        | |       t        | |       t        | |       y N)_merge_stubs_docstring_merge_stubs_overloads_merge_stubs_members)modulestubss     i/var/www/html/BankruptcyAI-uat/bankruptcy-ai/venv/lib/python3.12/site-packages/griffe/_internal/merger.py_merge_module_stubsr      s     65)65)'    c                d    t        | |       t        | |       t        | |       t        | |       y r   )r   r   _merge_stubs_type_parametersr   )class_r   s     r   _merge_class_stubsr      s*    65)65) /'r   c                   t        | |       |j                  D ]B  }t        t              5  |j                  | j                  |j
                     _        d d d        D |j                  | _        t        | |       y # 1 sw Y   lxY wr   )r   
parametersr   KeyError
annotationnamereturnsr   )functionr   	parameters      r   _merge_function_stubsr%      s    8U+%% R	h 	R=F=Q=QH	/:	R 	RR }}H 51	R 	Rs   )A<<B	c                ~    t        | |       |j                  | _        |j                  dvr|j                  | _        y y )N)Nz...)r   r    value)	attributer   s     r   _merge_attribute_stubsr)   %   s6    9e, ++I{{-'++	 (r   c                4    t        | |       t        | |       y r   )r   r   )
type_aliasr   s     r   _merge_type_alias_stubsr,   ,   s    :u- U3r   c                Z    | j                   s|j                   r|j                   | _         y y y r   )	docstringobjr   s     r   r   r   1   s!    ==U__ -=r   c                Z    | j                   s|j                   r|j                   | _         y y y r   )type_parametersr/   s     r   r   r   6   s)    5#8#8#33 $9r   c                    t        |j                  j                               D ]B  \  }}|r.t        t              5  || j                  |      _        d d d        |j                  |= D y # 1 sw Y   xY wr   )list	overloadsitemsr   r   
get_member)r0   r   function_namer5   s       r   r   r   ;   si    $()>)>)@$A + y(# D:C}-7DOOM*	+D Ds   A**A3	c                V   | j                   j                  |j                          |j                  |j                  | _        |j                  j	                         D ]<  \  }}|| j                  v r|j
                  r#| j                  |      }t        t        t              5  |j                  |j                  ur=t        j                  d|j                         | j                  |j                  |       n||j                   rt#        ||       nc|j$                  rt'        ||       nJ|j(                  rt+        ||       n1|j,                  rt/        ||       n|j0                  rt3        ||       d d d        $d|_        | j                  ||       ? y # 1 sw Y   KxY w)Nz6Source object `%s` will be overwritten by stub object.F)importsupdateexportsmembersr6   is_aliasr7   r   r   r   kindr   debugpath
set_memberr!   	is_moduler   is_classr   is_functionr%   is_attributer)   is_type_aliasr,   runtime)r0   r   member_namestub_member
obj_members        r   r   r   C   s]   KKu}}% }} mm$)MM$7$7$9 !5 [#++% ##4J.0@A E
 ??+*:*:: LLP" NN;#3#3[A))'
K@((&z;?++)*kB,,*:{C--+JD-E E0 #(KNN;4C!5E Es   %CFF(	c                   t        j                  d| j                  |j                         | j                  j                  dk(  r| }|}n)|j                  j                  dk(  r|}| }nt	        d      t        ||       |S )a  Merge stubs into a module.

    Parameters:
        mod1: A regular module or stubs module.
        mod2: A regular module or stubs module.

    Raises:
        ValueError: When both modules are regular modules (no stubs is passed).

    Returns:
        The regular module.
    zTrying to merge %s and %sz.pyiz1cannot merge regular (non-stubs) modules together)r   r@   filepathsuffix
ValueErrorr   )mod1mod2r   r   s       r   merge_stubsrR   o   sp     LL,dmmT]]K}}v%				'LMM&Mr   N)r   r   r   r   returnNone)r   r
   r   r
   rS   rT   )r#   r   r   r   rS   rT   )r(   r	   r   r	   rS   rT   )r+   r   r   r   rS   rT   )r0   r   r   r   rS   rT   )r0   Class | Function | TypeAliasr   rU   rS   rT   )r0   Module | Classr   rV   rS   rT   )rP   r   rQ   r   rS   r   )
__future__r   
contextlibr   typingr   griffe._internal.exceptionsr   r   griffe._internal.loggerr   griffe._internal.modelsr	   r
   r   r   r   r   r   r   r%   r)   r,   r   r   r   r   rR    r   r   <module>r^      sR    #    N *]]((2&4
(
4
+)5Xr   