
    5'h                        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 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Objectc                L    t        | |       t        | |       t        | |       y N_merge_stubs_docstring_merge_stubs_overloads_merge_stubs_members)modulestubss     U/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/_griffe/merger.py_merge_module_stubsr           65)65)'    c                L    t        | |       t        | |       t        | |       y r   r   )class_r   s     r   _merge_class_stubsr      r   r   c                    t        | |       |j                  D ]B  }t        t              5  |j                  | j                  |j
                     _        d d d        D |j                  | _        y # 1 sw Y   `xY wr   )r   
parametersr   KeyError
annotationnamereturns)functionr   	parameters      r   _merge_function_stubsr%      su    8U+%% R	h 	R=F=Q=QH	/:	R 	RR }}H	R 	Rs   )A00A9	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                Z    | j                   s|j                   r|j                   | _         y y y r   )	docstring)objr   s     r   r   r   *   s!    ==U__ -=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)r,   r   function_namer/   s       r   r   r   /   si    $()>)>)@$A + y(# D:C}-7DOOM*	+D Ds   A**A3	c                @   | j                   j                  |j                          |j                  |j                  | _        |j                  j	                         D ]1  \  }}|| j                  v r|j
                  r#| j                  |      }t        t        t              5  |j                  |j                  urKt        j                  d|j                  |j                  j                  |j                  j                         nc|j                  rt!        ||       nJ|j"                  rt%        ||       n1|j&                  rt)        ||       n|j*                  rt-        ||       d d d        d|_        | j1                  ||       4 y # 1 sw Y   @xY w)Nz(Cannot merge stubs for %s: kind %s != %sF)importsupdateexportsmembersr0   is_aliasr1   r   r   r   kindr   debugpathr'   	is_moduler   is_classr   is_functionr%   is_attributer)   runtime
set_member)r,   r   member_namestub_member
obj_members        r   r   r   7   sO   KKu}}% }} mm$)MM$7$7$9 5 [#++% ##4J.0@A D
 ??+*:*::LLB"#((.."--	  ))'
K@((&z;?++)*kB,,*:{C'D D* #(KNN;4=5D D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_stubsrK   `   sp     LL,dmmT]]K}}v%				'LMM&Mr   N)r   r   r   r   returnNone)r   r
   r   r
   rL   rM   )r#   r   r   r   rL   rM   )r(   r	   r   r	   rL   rM   )r,   r   r   r   rL   rM   )r,   Module | Classr   rN   rL   rM   )rI   r   rJ   r   rL   r   )
__future__r   
contextlibr   typingr   _griffe.exceptionsr   r   _griffe.loggerr   _griffe.modelsr	   r
   r   r   r   r   r   r%   r)   r   r   r   rK    r   r   <module>rV      sH    #    E !II((%&(
+&5Rr   