o
    tBh                     @  sP   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
dZ
dddZdS )z.Compute vtables of native (extension) classes.    )annotationsN)ClassIRVTableEntriesVTableMethod)is_same_method_signatureclsr   returnNonec              	     sz  | j durdS | jstdd | jD | _| jdd D ](}t| |js&q|j D ]\ }| jsCt fdd| j	D sC|| j < q+qi | _ | j
rb| j
j dusSJ | j | j
j  t| | j
| _| j}dd | jD }| g| j D ]1}t|j D ]&}|| |jkrt|| j |j< | j| |jf}|t||j|| q}qs| js|D ]}t| t| || j|< qdS dS )z)Compute the vtable structure for a class.Nc                 s  s    | ]}|j V  qd S N)inherits_python).0x r   k/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/mypyc/irbuild/vtable.py	<genexpr>   s    z!compute_vtable.<locals>.<genexpr>   c                 3  s    | ]} |j v V  qd S r
   )
attributes)r   bnamer   r   r      s    c                 S  s   g | ]}|j r|qS r   )is_trait)r   tr   r   r   
<listcomp>&   s    z"compute_vtable.<locals>.<listcomp>)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   r   r   r      sD   


r   parentr   c                 C  s   g }|j D ]F}|j|j}|sJ | |j}|rF|\}}t|j|js*|jdkr5t|j|j||j}nt|j|j|j	|j|jf |j}|
| q|S )zFGenerate the part of a vtable corresponding to a parent class or trait__init__)r$   r   r*   r   get_method_and_classr   sigr   shadow_methodr,   r.   )r   r6   updatedentryorig_parent_method
method_clschild_methoddefining_clsr   r   r   r#   9   s&   

r#   )r   r   r   r	   )r   r   r6   r   r   r   )__doc__
__future__r   r&   mypyc.ir.class_irr   r   r   mypyc.sametyper   r   r#   r   r   r   r   <module>   s    
.