
    %j                        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
 d dlmZ erd dlmZ d dlmZmZmZmZmZmZ d.dZd/dZd0dZd1dZd2dZd3dZd4dZd5d!Zd6d%Zd7d(Zd5d)Z d8d,Z!d-S )9    annotations)suppress)TYPE_CHECKING)AliasResolutionErrorCyclicAliasError)Expr)logger)Sequence)	AttributeClassFunctionModuleObject	TypeAliasmoduler   stubsreturnNonec                f    t          | |           t          | |           t          | |           d S N)_merge_stubs_docstring_merge_stubs_overloads_merge_stubs_members)r   r   s     _/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/griffe/_internal/merger.py_merge_module_stubsr      s8    65)))65)))'''''    class_r   c                    t          | |           t          | |           t          | |           t          | |           d S r   )r   r   _merge_stubs_type_parametersr   )r   r   s     r   _merge_class_stubsr!      sH    65)))65))) ///'''''r   functionr   c                   t          | |           |j        D ]J}t          t                    5  |j        | j        |j                 _        d d d            n# 1 swxY w Y   K|j        | _        t          | |           d S r   )r   
parametersr   KeyError
annotationnamereturnsr    )r"   r   	parameters      r   _merge_function_stubsr*      s    8U+++% R R	h 	R 	R=F=QH	/:	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R 	R}H 511111s   AA	A		attributer   c                l    t          | |           |j        | _        |j        dvr|j        | _        d S d S )N)Nz...)r   r&   value)r+   r   s     r   _merge_attribute_stubsr.   (   s?    9e,,, +I{-''+	 ('r   
type_aliasr   c                F    t          | |           t          | |           d S r   )r   r    )r/   r   s     r   _merge_type_alias_stubsr1   /   s(    :u--- U33333r   objr   c                B    | j         s|j         r|j         | _         d S d S d S r   )	docstringr2   r   s     r   r   r   4   s6    = (U_ (( ( ( (r   Class | Function | TypeAliasc                B    | j         s|j         r|j         | _         d S d S d S r   )type_parametersr5   s     r   r    r    9   s<     45#8 4#34 4 4 4r   Module | Classc                   t          |j                                                  D ]^\  }}|rOt          t                    5  t          |                     |          |           d d d            n# 1 swxY w Y   |j        |= _d S r   )list	overloadsitemsr   r%   _merge_overload_annotations
get_member)r2   r   function_namer<   s       r   r   r   >   s    $()>)>)@)@$A$A + + y 	V(## V V+CNN=,I,I9UUUV V V V V V V V V V V V V V VOM**	+ +s   $A22A6	9A6	r   Sequence[Expr]Expr | Nonec                l    t          |           dk    r| d         S | rt          j        | d          S d S )N   r   |)op)lenr	   	_to_binopr   s    r   _merge_annotationsrI   F   sA    
;11~ 3~kc22224r   r<   list[Function]c                   || _         | j        D ]}|j        t                      }g }|D ]}t	          t
                    5  |j        |j                 j        }t          |          }t          |t                    r)||vr% |j
        |           |                    |           d d d            n# 1 swxY w Y   t          |          |_        | j        t                      }g }|D ]c}t          |j                  }t          |j        t                    r3||vr/|
                    |j                   |                    |           dt          |          | _        d S d S r   )r<   r$   r&   setr   r%   r'   str
isinstancer	   appendaddrI   r(   )	r"   r<   r)   seenr   overloadr&   str_annotationreturn_annotationss	            r   r>   r>   N   s   "H( C C	'55DK% 1 1h'' 1 1!)!4Y^!D!OJ%(__N!*d33 1d8R8R**:6660001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 $6k#B#BI uu! 	) 	)H !122N(*D11 )nD6P6P"))(*:;;;(((-.@AA  s    A%B11B58B5c                   | j                             |j                    |j        |j        | _        |j                                        D ]9\  }}|| j        v r|j        r|                     |          }t          t          t                    5  |j
        |j
        ur6t          j        d|j                   |                     |j        |           nw|j        rt#          ||           n_|j        rt'          ||           nG|j        rt+          ||           n/|j        rt/          ||           n|j        rt3          ||           d d d            n# 1 swxY w Y   d|_        |                     ||           ;d S )Nz6Source object `%s` will be overwritten by stub object.F)importsupdateexportsmembersr=   is_aliasr?   r   r   r   kindr
   debugpath
set_memberr'   	is_moduler   is_classr!   is_functionr*   is_attributer.   is_type_aliasr1   runtime)r2   r   member_namestub_member
obj_members        r   r   r   g   s   Ku}%%% } m$)M$7$7$9$9 !5 !5 [#+%% # 44J.0@AA E E
 ?+*::: LP"   NN;#3[AAAA) 	E'
K@@@@( E&z;????+ E)*kBBBB, E*:{CCCC- E+JDDD-E E E E E E E E E E E E E E E0 #(KNN;4444C!5 !5s   B<EE	"E	mod1mod2c                    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   )rh   ri   r   r   s       r   merge_stubsrn      sy     L,dmT]KKK}v%%			'	'LMMM&&&Mr   N)r   r   r   r   r   r   )r   r   r   r   r   r   )r"   r   r   r   r   r   )r+   r   r   r   r   r   )r/   r   r   r   r   r   )r2   r   r   r   r   r   )r2   r6   r   r6   r   r   )r2   r9   r   r9   r   r   )r   rA   r   rB   )r"   r   r<   rJ   r   r   )rh   r   ri   r   r   r   )"
__future__r   
contextlibr   typingr   griffe._internal.exceptionsr   r   griffe._internal.expressionsr	   griffe._internal.loggerr
   collections.abcr   griffe._internal.modelsr   r   r   r   r   r   r   r!   r*   r.   r1   r   r    r   rI   r>   r   rn    r   r   <module>rx      s   # " " " " "                   N N N N N N N N - - - - - - * * * * * * ^((((((]]]]]]]]]]]]]]]]( ( ( (( ( ( (2 2 2 2& & & &4 4 4 4
( ( ( (
4 4 4 4
+ + + +   B B B B2)5 )5 )5 )5X     r   