
    Mh                         d dl mZmZ d dlmZmZmZ d dlmZ d dl	m
Z
  G d d          Z edd          Z ed	d
          Z edd          Zd ZddZd Zd ZdS )    )DictOptional)get_flow_branch_keywordis_scopeget_parent_scope)execution_allowed)is_big_annoying_libraryc                   l    e Zd ZU i Zeee         d f         ed<   dee         deddfdZ	d Z
d Zd	 ZdS )
Statuslookup_tablevaluenamereturnNc                 @    || _         || _        | t          j        |<   d S N)_value_namer   r   )selfr   r   s      \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jedi/inference/flow_analysis.py__init__zStatus.__init__   s#    
%)E"""    c                 P    | t           u rt          S | t          u rt           S t          S r   )	REACHABLEUNREACHABLEUNSUREr   s    r   invertzStatus.invert   s)    9[  Mr   c                 ^    t           | |fv rt           S | j        r|j        rt          nt          S r   )r   r   r   r   )r   others     r   __and__zStatus.__and__   s.    dE]""M $MM99+Mr   c                 B    dt          |           j        d| j        dS )N<z: >)type__name__r   r   s    r   __repr__zStatus.__repr__   s$     !$ZZ000$***==r   )r%   
__module____qualname__r   r   r   bool__annotations__strr   r   r    r&    r   r   r   r      s         35L$x~x/0555*htn *C *D * * * *
  N N N> > > > >r   r   T	reachableFunreachableNunsurec              #   Z   K   	 t          | d          } | t          |           rd S | V  ))NTinclude_flows)r   r   )nodes    r   _get_flow_scopesr4   '   s?      D999<8D>><F


	r   c                    t          |           s| j        j        st          S t	          |d          }|t          t          |                    }t          t          |                    }d}|D ]i}||v rct          ||          }	t          ||          }
|	|
k    }|j        dk    r|s	t          c S n"|j        dk    r|s|
dk    r|	dk    r	t          c S |r nj|||k    r	|rt          S |j        }|t          | |||          S )NTr1   if_stmttry_stmtelseexcept)r	   inference_stateflow_analysis_enabledr   r   listr4   r   r$   r   r   parent_break_check)contextvalue_scoper3   origin_scopefirst_flow_scopeorigin_flow_scopesnode_flow_scopesbranch_matches
flow_scopenode_keywordorigin_keywords              r   reachability_checkrI   /   sc   w'' *@'DAAA!"2<"@"@AA 0 6 677, 	 	J---6z4HH!8\!R!R!-!??i//) +****+_
22) +n.F.F , 8 8****! E &<//N/  '.L &
 .>EEEr   c                    t           }|j        dk    r|                    |          rN|                                D ]$}t	          | |          }|t           t
          fv r n%|                                }n8|                    |          }|t	          | |          }n|j        dv rt
          S |t          t
          fv r|S ||k    r1||j	        k    r&t          |d          }|t          | |||          z  S |S )Nr6   )r7   
while_stmtTr1   )r   r$   is_node_after_elseget_test_nodes	_check_ifr   r   get_corresponding_test_noder   r=   r   r>   )r?   r@   rF   r3   r-   
check_node	flow_nodes          r   r>   r>   X   s   I)##((.. 		:(7799  
%gz::	F 333E 4!((**II">>tDDI$%gy99		6	6	6 [&)))j  [J4E%E%E%jEEE
<j$OOOOr   c                 z   t          | j        |          5 }|st          cd d d            S |                     |          }t	          d |D                       }t          |          dk    r0t          j        |                                         cd d d            S t          cd d d            S # 1 swxY w Y   d S )Nc              3   >   K   | ]}|                                 V  d S r   )
py__bool__).0xs     r   	<genexpr>z_check_if.<locals>.<genexpr>y   s*      33Q\\^^333333r      )	r   r:   r   
infer_nodesetlenr   r   pop)r?   r3   allowedtypesvaluess        r   rN   rN   s   s+   	72D	9	9 	W 		 	 	 	 	 	 	 	 ""4((33U33333v;;!&vzz||4	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   	B0A$B0B00B47B4r   )typingr   r   jedi.parser_utilsr   r   r   jedi.inference.recursionr   jedi.inference.helpersr	   r   r   r   r   r4   rI   r>   rN   r,   r   r   <module>rd      s   ! ! ! ! ! ! ! ! Q Q Q Q Q Q Q Q Q Q 6 6 6 6 6 6 : : : : : :> > > > > > > >4 F4%%	fUM**	h		  &F &F &F &FR  6
 
 
 
 
r   