
    X-Ph                    N    d Z ddlmZ ddlZddlmZmZmZ ddlm	Z	 dd
Z
ddZdS )z.Compute vtables of native (extension) classes.    )annotationsN)ClassIRVTableEntriesVTableMethod)is_same_method_signatureclsr   returnNonec           
     4   | j         dS | j        s#t          d | j        D                       | _        | j        dd         D ]i}t          |           |j        s|j                                        D ]6\  }| j        s*t          fd| j	        D                       s
|| j        <   7ji | _         | j
        rL| j
        j         J | j                             | j
        j                    t          | | j
                  | _        | j        }d | j        D             }| g| j        z   D ]}t          j        |j                                                  D ]}||                     |j        d          k    rgt+          |          | j         |j        <   | j                            | |j        f          }|                    t3          ||j        ||                     | j        s,|D ]+}t          |           t          | |          | j        |<   *dS dS )z)Compute the vtable structure for a class.Nc              3  $   K   | ]}|j         V  d S N)inherits_python).0xs     T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypyc/irbuild/vtable.py	<genexpr>z!compute_vtable.<locals>.<genexpr>   s%      >>1,>>>>>>       c              3  *   K   | ]}|j         v V  d S r   )
attributes)r   bnames     r   r   z!compute_vtable.<locals>.<genexpr>   s*      +W+WQDAL,@+W+W+W+W+W+Wr   c                     g | ]}|j         	|S  )is_trait)r   ts     r   
<listcomp>z"compute_vtable.<locals>.<listcomp>&   s    333
3!333r   Tprefer_method)vtableis_generatedanymrohas_dictcompute_vtabler   r   itemsbase_mrobaseupdatespecialize_parent_vtablevtable_entriestraits	itertoolschainmethodsvalues
get_methodr   lenglue_methodsgetappendr   trait_vtables)	r   r   typentries
all_traitsfnshadowtraitr   s	           @r   r%   r%      s\   
z ?>>cg>>>>>WQRR[ + +qz 	++-- 	+ 	+ID#< ++W+W+W+W#,+W+W+W(W(W +'*t$	+ CJ
x Ex***
#(/***5c38DD  G33SW333JUSZ E E/!)"2"2"4"455 	E 	EBS^^BG4^@@@@&)'ll
27# )--sBGn==|ArwFCCDDD	E < L 	L 	LE5!!!'?U'K'KCe$$L L	L 	Lr   parentr   c                   g }|j         D ]}|j                            |j        d          }|sJ |                     |j        d          }|r|\  }}t          |j        |j                  s|j        dk    r"t          |j        |j        ||j                  }n8t          |j        |j        |j	        |j        |j        f         |j                  }|
                    |           |S )zFGenerate the part of a vtable corresponding to a parent class or traitTr   __init__)r+   r   r1   r   get_method_and_classr   sigr   shadow_methodr3   r5   )r   r=   updatedentryorig_parent_method
method_clschild_methoddefining_clss           r   r*   r*   9   s   G&   #Y11%*D1QQ!!!!--ej-MM
 	)3&L, ));)?AQRR%*j88$UY
L%J]^^$IJ -uy%*.EF'	  	uNr   )r   r   r	   r
   )r   r   r=   r   r	   r   )__doc__
__future__r   r-   mypyc.ir.class_irr   r   r   mypyc.sametyper   r%   r*   r   r   r   <module>rM      s    4 4 " " " " " "     B B B B B B B B B B 3 3 3 3 3 3+L +L +L +L\     r   