
    f                         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y)    )DictOptional)get_flow_branch_keywordis_scopeget_parent_scope)execution_allowed)is_big_annoying_libraryc                   X    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y)
Statuslookup_tablevaluenamereturnNc                 F    || _         || _        | t        j                  |<   y N)_value_namer   r   )selfr   r   s      W/var/www/cvtools/html/venv/lib/python3.12/site-packages/jedi/inference/flow_analysis.py__init__zStatus.__init__   s     
%)E"    c                 F    | 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                 j    t         | |fv rt         S | j                  r|j                  rt        S t        S r   )r   r   r   r   )r   others     r   __and__zStatus.__and__   s*    dE]"M $9M+Mr   c                 N    dt        |       j                  d| j                  dS )N<z: >)type__name__r   r   s    r   __repr__zStatus.__repr__   s    !$Z00$**==r   )r%   
__module____qualname__r   r   r   bool__annotations__strr   r   r    r&    r   r   r   r      sH    35L$x~x/05*htn *C *D *
N>r   r   T	reachableFunreachableNunsurec              #   L   K   	 t        | d      } | t        |       ry |   w)NTinclude_flows)r   r   )nodes    r   _get_flow_scopesr4   '   s-     
D9<8D>
	 s   "$c                    t        |       s| j                  j                  st        S t	        |d      }|t        t        |            }t        t        |            }d}|D ]d  }||v st        ||      }	t        ||      }
|	|
k(  }|j                  dk(  r
|s+t        c S |j                  dk(  r|s|
dk(  r|	dk(  rt        c S |sd n |||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   /   s   w'**@@'DA!"2<"@A 0 67, 	J--6z4H!8\!R!-!???i/)**__
2)n.F , 8**!	, &</N  '..L &
 .>EEr   c                    t         }|j                  dk(  rs|j                  |      rB|j                         D ]  }t	        | |      }|t         t
        fv s n |j                         }n4|j                  |      }|!t	        | |      }n|j                  dv rt
        S |t        t
        fv r|S ||k7  r-||j                  k7  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 
%gz:	F 33 "((*I">>tDI$%gy9		6	6 [&))j [J4E4E%E%jE
<j$OOOr   c                 >   t        | j                  |      5 }|st        cd d d        S | j                  |      }t	        d |D              }t        |      dk(  r*t        j                  |j                            cd d d        S t        cd d d        S # 1 sw Y   y xY w)Nc              3   <   K   | ]  }|j                           y wr   )
py__bool__).0xs     r   	<genexpr>z_check_if.<locals>.<genexpr>y   s     3Q\\^3s      )	r   r:   r   
infer_nodesetlenr   r   pop)r?   r3   allowedtypesvaluess        r   rN   rN   s   s    	722D	9 	W	 	 ""4(3U33v;!&&vzz|4	 	 	 	 	s   BABBB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      sZ    ! Q Q 6 :> >4 4%	UM*	h	&FR6
r   