
    xKgV                        d dl Z d dlmZmZmZ d dlmZmZmZm	Z	m
Z
 d Zd Zd Z  ee j                  ej                  ej                        e         ee j                  ej                   ej                        e         ee j                  ej                  ej                         e        eej                         d        Z e
ej                         d        Z eej                   ej                         d	        Z eej(                  ej                         d
        Z eej                   ej(                         eej                   ej,                        d               Zy)    N)typestypingcgutils)
lower_castlower_builtinlower_getattr_genericimpl_ret_untrackedlower_setattr_genericc                 "    t         j                  S N)r   true_bitcontextbuildersigargss       W/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/core/optional.pyalways_return_true_implr   
   s        c                 "    t         j                  S r   )r   	false_bitr   s       r   always_return_false_implr      s    r   c                    |j                   \  }}|\  }}|t        j                  k(  r||}}||}}|}|}	| j                  |||	      }
|j	                  t        j                  ||
j                              }t        | ||j                  |      S )z/
    Check if an Optional value is invalid
    )
r   r   nonemake_helpernot_r   as_bool_bitvalidr	   return_type)r   r   r   r   ltyrtylvalrvalopt_typeopt_valoptress               r   optional_is_noner(      s     JS#LT4 ejjS4dHG


gx
9C
,,w**7CII>
?CgwEEr   c                 ~    |j                   }| j                  ||||      }| j                  ||      } || ||||      S )z?
    Optional.__getattr__ => redirect to the wrapped type.
    )typecastget_getattr)r   r   typvalueattr
inner_typevalimps           r   optional_getattrr3   .   sF    
 J
,,wsJ
7C


j$
/CwS$77r   c                     |j                   \  }}|\  }}|j                  }	| j                  ||||	      }t        j                  |j
                  |	|      }
| j                  ||
      } ||||f      S )z?
    Optional.__setattr__ => redirect to the wrapped type.
    )r   r*   r+   r   	signaturer   get_setattr)r   r   r   r   r/   basetyvaltytargetr1   target_typenewsigr2   s               r   optional_setattrr<   9   sr    
 HHMFEKFC++K\\'66;?Fcoo{EBF


dF
+Cw&&r   c                    | j                  |||      }t        j                  ||j                        }| j                  ||      }|j	                  |      5 \  }}	|5  t        j
                  |_        | j                  ||j                  |j                  |j                        |_        ddd       |	5  t        j                  |_        t        j                  |j                  j                        |_        ddd       ddd       |j                         S # 1 sw Y   oxY w# 1 sw Y   -xY w# 1 sw Y   |j                         S xY w)a  
    The handling of optional->optional cast must be special cased for
    correct propagation of None value.  Given type T and U. casting of
    T? to U? (? denotes optional) should always succeed.   If the from-value
    is None, the None value the casted value (U?) should be None; otherwise,
    the from-value is casted to U. This is different from casting T? to U,
    which requires the from-value must not be None.
    r.   N)r   r   r   r   if_elser   r+   datar*   r   get_null_value	_getvalue)
r   r   fromtytotyr1   optvalvalidbit	outoptvalis_validis_not_valids
             r   optional_to_optionalrJ   H   s      & <F""7FLL9H##GT2I		"&>x%..IO$\\'6;;*0++tyyBIN  %//IO$33##%IN  
#    X \ 
#   s>   D1AD+
D15AD%9D1D"	D1%D.	*D11E	c                     |t         j                  k(  r| j                  ||j                        S | j	                  ||||j                        }| j                  ||j                  |      S r   )r   r   make_optional_noner*   r+   make_optional_value)r   r   rC   rD   r1   s        r   any_to_optionalrN   g   sV    ))'499==ll7C;**7DIIsCCr   c                    | j                  |||      }t        j                  ||j                        }|j	                  |j                  |      d      5  d|j                  d}| j                  j                  |t        |f       d d d        | j                  ||j                  |j                  |      S # 1 sw Y   1xY w)Nr>   F)likelyz	expected z
, got None)r   r   r   r   if_thenr   r*   	call_convreturn_user_exc	TypeErrorr+   r@   )r   r   rC   rD   r1   rE   rF   msgs           r   optional_to_anyrV   p   s       & <F""7FLL9H	h/	>)/6))'9sfE 
? <<fkk4@@	 
?	>s   3B::C)operator
numba.corer   r   r   numba.core.imputilsr   r   r   r	   r
   r   r   r(   is_r   Optionalr3   r<   rJ   AnyrN   BooleanrV    r   r   <module>r_      sJ    - -8 8
F* 4hllEJJ

 34K L 8hllENNEJJ 78H I 7hllEJJ 78H I u~~&8 '8 u~~&' '' ENNENN+! ,!< EIIu~~&D 'D ENNEII&ENNEMM*A + 'Ar   