§
    ƒÛgV  ã                   ó„  — 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dS )é    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       úI/granary/edev/quantum/lib/python3.11/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||}}||}}|}|}	|                      |||	¦  «        }
|                     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�   € ð ”�J€Sˆ#Ø�L€Tˆ4ð �eŒjÒÐØ˜ˆSˆØ˜4ˆdˆà€HØ€Gà
×
Ò
˜g x°Ñ
9Ô
9€CØ
�,Š,•wÔ*¨7°C´IÑ>Ô>Ñ
?Ô
?€CÝ˜g w°´ÀÑEÔEÐEr   c                 óŠ   — |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   .   sO   € ð
 ”€JØ
�,Š,�w  s¨JÑ
7Ô
7€CØ
×
Ò
˜j¨$Ñ
/Ô
/€CØˆ3ˆw˜ ¨S°$Ñ7Ô7Ð7r   c                 óÜ   — |j         \  }}|\  }}|j        }	|                      ||||	¦  «        }t          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   sw   € ð
 ”H�M€FˆEØ�K€FˆCØ”+€KØ�\Š\˜' 6¨6°;Ñ?Ô?€FåÔ˜cœo¨{¸EÑBÔB€FØ
×
Ò
˜d FÑ
+Ô
+€CØˆ3ˆw˜ ˜Ñ&Ô&Ð&r   c                 ód  — |                       |||¬¦  «        }t          j        ||j        ¦  «        }|                       ||¦  «        }|                     |¦  «        5 \  }}	|5  t          j        |_        |                      ||j        |j        |j        ¦  «        |_        ddd¦  «         n# 1 swxY w Y   |	5  t          j	        |_        t          j
        |j        j        ¦  «        |_        ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   |                     ¦   «         S )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ÝÔ" 7¨F¬LÑ9Ô9€Hà×#Ò# G¨TÑ2Ô2€Ià	�Š˜Ñ	"Ô	"ð %Ñ&> x°Øð 	Bð 	Bå%Ô.ˆIŒOØ$Ÿ\š\¨'°6´;Ø*0¬+°t´yñBô BˆIŒNð	Bð 	Bð 	Bñ 	Bô 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bøøøð 	Bð 	Bð 	Bð 	Bð ð 	%ð 	%å%Ô/ˆIŒOÝ$Ô3Ø”Ô#ñ%ô %ˆIŒNð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%ð%ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð ×ÒÑ Ô Ð sZ   ÁDÁ$>B.Â"DÂ.B2	Â2DÂ5B2	Â6DÂ;5C<Ã0DÃ<D 	Ä DÄD 	ÄDÄDÄDc                 óÊ   — |t           j        k    r|                      ||j        ¦  «        S |                      ||||j        ¦  «        }|                      ||j        |¦  «        S r   )r   r   Úmake_optional_noner*   r+   Úmake_optional_value)r   r   rC   rD   r1   s        r   Úany_to_optionalrN   g   sZ   € à•”ÒÐØ×)Ò)¨'°4´9Ñ=Ô=Ð=à�lŠl˜7 C¨°´Ñ;Ô;ˆØ×*Ò*¨7°D´I¸sÑCÔCÐCr   c                 óˆ  — |                       |||¬¦  «        }t          j        ||j        ¦  «        }|                     |                     |¦  «        d¬¦  «        5  d|j        ›d�}| j                             |t          |f¦  «         d d d ¦  «         n# 1 swxY w Y   |  
                    ||j        |j        |¦  «        S )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ÝÔ" 7¨F¬LÑ9Ô9€HØ	�Š˜Ÿš hÑ/Ô/¸ˆÑ	>Ô	>ð Fð Fð FØ)/¬¨¨Ð6ˆØÔ×)Ò)¨'µ9¸s¸fÑEÔEÐEðFð Fð Fñ Fô Fð Fð Fð Fð Fð Fð Føøøð Fð Fð Fð Fð �<Š<˜ ¤¨f¬k¸4Ñ@Ô@Ð@s   Á.BÂBÂB)Ú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_      s  ðØ €€€à -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -ð8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð 8ð
ð ð ðð ð ðFð Fð Fð* 4€€ˆhŒl˜EœJ¨¬
Ñ 3Ô 3Ð4KÑ LÔ LÐ Lð 8€€ˆhŒl˜EœN¨E¬JÑ 7Ô 7Ð8HÑ IÔ IÐ IØ 7€€ˆhŒl˜EœJ¨¬Ñ 7Ô 7Ð8HÑ IÔ IÐ Ið Ð�u”~Ñ&Ô&ð8ð 8ñ 'Ô&ð8ð Ð�u”~Ñ&Ô&ð'ð 'ñ 'Ô&ð'ð €ˆEŒN˜EœNÑ+Ô+ð!ð !ñ ,Ô+ð!ð< €ˆEŒI�u”~Ñ&Ô&ðDð Dñ 'Ô&ðDð €ˆEŒN˜EœIÑ&Ô&Ø€ˆEŒN˜EœMÑ*Ô*ðAð Añ +Ô*ñ 'Ô&ðAð Að Ar   