a
    b                     @   s   d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ ddd	Zd
d ZedddZdd ZedddZdddZdddZdd ZdS )    )debug)ValueSet	NO_VALUES)to_list)StubModuleValue)try_to_load_stub_cached	DecorateeFc                    s   |   }| st| gS d t| tr.| j|  }|rNt| dd  |  } | 	 }|d u rbt
S |  }|r|d }|d d }d}d  t|||}|rt fdd|D }|r||}d urtfdd|D }|S )NZ
_argumentsTc                 3   s0   | ](}|  r d u r| n| V  qd S N)is_classexecute_with_valuesZexecute.0c)	arguments @lib/python3.9/site-packages/jedi/inference/gradual/conversion.py	<genexpr>&   s   z,_stub_to_python_value_set.<locals>.<genexpr>c                 3   s   | ]}t | V  qd S r   r   )r   v)	decoratesr   r   r   0       )get_root_contextis_stubr   
isinstancer	   Z_original_valueis_instancegetattrpy__class__get_qualified_namesr   is_bound_method_infer_from_stub	from_setspy__getattribute__)
stub_valueignore_compiledstub_module_contextwas_instancequalified_nameswas_bound_methodmethod_namevaluesr   )r   r   r   _stub_to_python_value_set
   s:    


r+   c                 C   sZ   ddl m} |  }t|t|fs*J | |j}|rB|dd }|D ]}||}qF|S )Nr   )MixedObjectc                 S   s
   |    S r   )Zis_compiled)r   r   r   r   <lambda>:   r   z"_infer_from_stub.<locals>.<lambda>)Zjedi.inference.compiled.mixedr,   	get_valuer   r   Znon_stub_value_setfilterr"   )r%   r'   r$   r,   stub_moduleZ	non_stubsnamer   r   r   r    4   s    r    c           	      c   s   | D ]}|  }| s |V  q|jdkrTt| |d}|r|D ]}|jV  qBqnX| }|d urt||d}|r||	 }|r|D ]}|   r|V  q|V  qq|V  qd S )Nmoduler$   )
r   r   api_typeconvert_valuesinferr1   get_defining_qualified_valuer+   gotoget_public_name)	namesprefer_stub_to_compiledr1   module_contextr*   r   	convertedconverted_namesnr   r   r   _try_stub_to_python_names@   s.    

r@   c                 C   s.   |   r| S t| j| jt| gd | j dS )N)Zimport_namesZpython_value_setZparent_module_valueZsys_path)r   r   Zinference_stateZstring_namesr   Zget_sys_path)r2   r   r   r   _load_stub_modulea   s    rA   c                 c   s   | D ]}|  }| r |V  q|jdkrd}| D ]T}|jdkrlt| dd}|D ]}|jV  d}qXq6t|g|dD ]}|V  d}qzq6|rqn:| }|d urt	|}	|	r|	|
 }
|
r|
E d H  q|r|V  qd S )Nr2   FT)
only_stubsfallback_to_python)r   r   r4   r8   r5   r6   r1   _python_to_stub_namesr7   to_stubr9   )r:   rD   r1   r<   Z
found_namer?   r*   r   xr=   r>   r   r   r   rE   m   s8    


rE   Tc                 C   sz   |r|rt dtdL |s$|r>t| |dW  d    S t| |dW  d    S W d    n1 sl0    Y  d S )Nz3You cannot use both of only_stubs and prefer_stubs.zconvert namesrC   )r;   )
ValueErrorr   increase_indent_cmrE   r@   )r:   rB   prefer_stubsr;   r   r   r   convert_names   s    rK   c                    s   |rrJ t dd |s rFtfdd| D W  d    S t fdd| D W  d    S W d    n1 s0    Y  d S )Nzconvert valuesc                 3   s(   | ] }t |p rt|hntV  qd S r   )rF   r   r   )r   value)rJ   r   r   r      s   z!convert_values.<locals>.<genexpr>c                 3   s$   | ]}t | d pt|hV  qdS )r3   N)r+   r   )r   r#   r3   r   r   r      s   )r   rI   r   r!   )r*   rB   rJ   r$   r   )r$   rJ   r   r5      s    r5   c                 C   s   |   rt| gS |  }|r&|  } |  }t|   }|d u sN|d u rRtS | 	 }|rv|d }|d d }d}t|g}|D ]}|
|}q|rtdd |D }|r|
|}|S )Nr
   Tc                 s   s   | ]}|  r| V  qd S r   )r   r   r   r   r   r   r      s   zto_stub.<locals>.<genexpr>)r   r   r   r   r   rA   r   r.   r   r   r"   r!   )rL   r&   r'   r0   r(   r)   Zstub_valuesr1   r   r   r   rF      s0    



rF   N)F)F)F)FFT)FFT)Zjedir   Zjedi.inference.base_valuer   r   Zjedi.inference.utilsr   Z!jedi.inference.gradual.stub_valuer   Zjedi.inference.gradual.typeshedr   Zjedi.inference.value.decoratorr	   r+   r    r@   rA   rE   rK   r5   rF   r   r   r   r   <module>   s   
* $

