
    sh"                     j    S r SSKr " S S\R                  5      r\S:X  a  \R
                  " 5         gg)z
This test is used by `docs/source/extending/interval-example.rst`.

The "magictoken" comments are used as markers for the beginning and ending of
example code.
    Nc                       \ rS rSrS rSrg)IntervalExampleTest
   c                   ^ ^^^^^ ^!^"^#  " S S[         5      mSSKJm#   " U4S jST#R                  5      mT" 5       m!SSKJn  UR                  T5      U!4S j5       nSS	KJn  UR                  TT!5        SS
KJn  U" T5      U!U#4S j5       nSSKJ	m"J
n  U" T5       " U"U#4S jST"R                  5      5       nSSKJn  U" TSS5        U" TSS5        SSKJn	  U	" TS5      S 5       n
SSKJn  SSKJm   U" TT#R"                  T#R"                  5      U 4S j5       nSSKJnJm  SSKJm  U" T5      UUU U#4S j5       nSSKJn  U" T5      UUU U#4S j5       nSSKJn  US 5       nUS 5       nUU4S  j5       nUU 4S! jnT" S"S#5      nT" S$S%5      nT" S&S'5      nU" S( 5      nU" UU" U5      5        T R1                  UR2                  U" U5      5         " S) S*5      nT R5                  [6        5         U" T" S"U" 5       5      5        S S S 5        T" S+S"5      nU?T R5                  [:        5         U" U5        S S S 5        T R=                  U" US%5      5        U" UU" UU5      5        g ! , (       d  f       Nh= f! , (       d  f       NH= f),Nc                   4    \ rS rSrSrS rS r\S 5       rSr	g)?IntervalExampleTest.test_interval_class_usage.<locals>.Interval   z/
A half-open interval on the real number line.
c                     Xl         X l        g Nlohi)selfr   r   s      ڂ/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/doc_examples/test_interval_example.py__init__HIntervalExampleTest.test_interval_class_usage.<locals>.Interval.__init__   s        c                 8    SU R                   U R                  4-  $ )NzInterval(%f, %f)r   r   s    r   __repr__HIntervalExampleTest.test_interval_class_usage.<locals>.Interval.__repr__   s    )TWWdgg,>>>r   c                 4    U R                   U R                  -
  $ r   r   r   r   s    r   widthEIntervalExampleTest.test_interval_class_usage.<locals>.Interval.width   s    ww((r   r   N)
__name__
__module____qualname____firstlineno____doc__r   r   propertyr   __static_attributes__ r   r   Intervalr      s%    ? ) )r   r$   r   )typesc                   ,   >^  \ rS rSrUU 4S jrSrU =r$ )CIntervalExampleTest.test_interval_class_usage.<locals>.IntervalType!   c                     > [         TU ]  SS9  g )Nr$   )name)superr   )r   IntervalType	__class__s    r   r   LIntervalExampleTest.test_interval_class_usage.<locals>.IntervalType.__init__"   s    lD2
2Cr   r#   )r   r   r   r   r   r"   __classcell__)r-   r,   s   @r   r,   r'   !   s    D Dr   r,   )typeof_implc                    > T$ r   r#   )valcinterval_types     r   typeof_indexCIntervalExampleTest.test_interval_class_usage.<locals>.typeof_index+   s	      r   )as_numba_type)type_callablec                    > UU4S jnU$ )Nc                 x   > [        U TR                  5      (       a  [        UTR                  5      (       a  T$ g g r   )
isinstanceFloat)r   r   r4   r%   s     r   typerSIntervalExampleTest.test_interval_class_usage.<locals>.type_interval.<locals>.typer;   s3    b%++..:b%++3N3N(( 4O.r   r#   )contextr=   r4   r%   s     r   type_intervalDIntervalExampleTest.test_interval_class_usage.<locals>.type_interval9   s    ) Lr   )modelsregister_modelc                   $   > \ rS rSrU U4S jrSrg)DIntervalExampleTest.test_interval_class_usage.<locals>.IntervalModelD   c                 v   > STR                   4STR                   4/nTR                  R                  XX#5        g )Nr   r   )float64StructModelr   )r   dmmfe_typemembersrB   r%   s       r   r   MIntervalExampleTest.test_interval_class_usage.<locals>.IntervalModel.__init__F   s8     %--0 %--03""++DwHr   r#   N)r   r   r   r   r   r"   )rB   r%   s   r   IntervalModelrE   D   s    I Ir   rN   )make_attribute_wrapperr   r   )overload_attributer   c                     S nU$ )Nc                 4    U R                   U R                  -
  $ r   r   intervals    r   getterPIntervalExampleTest.test_interval_class_usage.<locals>.get_width.<locals>.getterX   s    {{X[[00r   r#   )rT   rU   s     r   	get_width@IntervalExampleTest.test_interval_class_usage.<locals>.get_widthV   s    1Mr   )lower_builtin)cgutilsc                    > UR                   nUu  pVTR                  U5      " X5      nXWl        Xgl        UR	                  5       $ r   )return_typecreate_struct_proxyr   r   	_getvalue)	r?   buildersigargstypr   r   rT   rZ   s	           r   impl_intervalDIntervalExampleTest.test_interval_class_usage.<locals>.impl_intervala   sA    //CFB2237IHKK%%''r   )unboxNativeValue)	ExitStackc                   > TR                  UR                  TR                  5      nTR                  U 5      " UR                  UR                  5      nT
" 5        nUR
                  R                  US5      nTR                  UR                  XV5         UR                  R                  TR                  U5        SSS5        UR                  TR                  U5      nUR
                  R                  U5        TR                  UR                  XWR                  5         UR                  R                  TR                  U5        SSS5        UR
                  R                  US5      nTR                  UR                  XX5         UR                  R                  TR                  U5        SSS5        UR                  TR                  U5      n	UR
                  R                  U5        TR                  UR                  XYR                  5         UR                  R                  TR                  U5        SSS5        UR                  Ul        U	R                  Ul        SSS5        T" UR%                  5       UR                  R'                  U5      S9$ ! , (       d  f       GN= f! , (       d  f       GNl= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)z;
Convert a Interval object to a native interval structure.
r   Nr   )is_error)alloca_once_valuer_   	false_bitr]   r?   pyapiobject_getattr_stringearly_exit_if_nullstoretrue_bitre   rH   decrefearly_exit_ifri   valuer   r   r^   load)rb   objr3   is_error_ptrrT   stacklo_obj	lo_nativehi_obj	hi_nativerg   rf   rZ   r%   s             r   unbox_intervalEIntervalExampleTest.test_interval_class_usage.<locals>.unbox_intervalo   s   
 #44QYY@Q@QRL2237		199MH66sDA//		5IIIOOG$4$4lC JGGEMM6:	v&**199e=O=OPIIOOG$4$4lC Q 66sDA//		5IIIOOG$4$4lC JGGEMM6:	v&**199e=O=OPIIOOG$4$4lC Q (oo'oo% ( x113aiinn\>Z[[% JI QP JI QP so   9K!'J;A%K! 'J,A K!'J>.A%K!'K:*K!
J)	$K!,
J;	6K!>
K	K!
K	K!!
K/)boxc                   > TR                  UR                  UR                  R                  5      nUR                  R	                  5       nT" 5        nTR                  U 5      " UR                  UR                  US9nUR                  TR                  UR                  5      nTR                  UR                  XW5         UR                  R                  XC5        SSS5        UR                  TR                  UR                  5      nTR                  UR                  XX5         UR                  R                  U5        UR                  R                  XC5        SSS5        UR                  R                  UR                  R                  T5      5      n	TR                  UR                  XY5         UR                  R                  U5        UR                  R                  U5        UR                  R                  XC5        SSS5        UR                  R!                  XU45      n
UR                  R                  U5        UR                  R                  U5        UR                  R                  U	5        UR                  R                  X5        SSS5        UR                  R#                  U5      $ ! , (       d  f       GN= f! , (       d  f       GNw= f! , (       d  f       N= f! , (       d  f       N^= f)z<
Convert a native interval structure to an Interval object.
)rs   N)alloca_oncer_   rl   pyobjget_null_objectr]   r?   r~   rH   r   rn   ro   r   rq   unserializeserialize_objectcall_function_objargsrt   )rb   r2   r3   ret_ptrfail_objrw   rT   rx   rz   	class_objresrg   r$   rZ   r%   s              r   box_intervalCIntervalExampleTest.test_interval_class_usage.<locals>.box_interval   s   
 ))!))QWW]]CGww..0H"66s;AIIqyyX[\u}}hkk://		5IIIOOH6 J u}}hkk://		5IGGNN6*IIOOH6 J GG//0H0H0RS	//		5LGGNN6*GGNN6*IIOOH6 M gg33I?OPv&v&y)		-1 4 99>>'**/ JI JI
 ML sY   A.K1J<A
K1'7KAK16AK BK1<
K	K1
K	K1 
K.	*K11
K?)njitc                 T    U R                   Us=:*  =(       a    U R                  :  $ s  $ r   r   )rT   xs     r   inside_intervalFIntervalExampleTest.test_interval_class_usage.<locals>.inside_interval   s#    ;;!11hkk1111r   c                     U R                   $ r   )r   rS   s    r   interval_widthEIntervalExampleTest.test_interval_class_usage.<locals>.interval_width   s    >>!r   c                 r   > T" U R                   UR                   -   U R                  UR                  -   5      $ r   r   )ijr$   s     r   sum_intervalsDIntervalExampleTest.test_interval_class_usage.<locals>.sum_intervals   s(    ADD144K55r   c                    > TR                  U T5        TR                  UT5        TR                  U R                  UR                  5        TR                  U R                  UR                  5        g r   )assertIsInstanceassertEqualr   r   )r   yr$   r   s     r   check_equal_intervalsLIntervalExampleTest.test_interval_class_usage.<locals>.check_equal_intervals   sS    !!!X.!!!X.QTT144(QTT144(r                     c                     U $ r   r#   )r   s    r   <lambda>?IntervalExampleTest.test_interval_class_usage.<locals>.<lambda>   s    Qr   c                       \ rS rSrS rSrg)@IntervalExampleTest.test_interval_class_usage.<locals>.NotAFloat   c                     [        S5      e)NzI am not a float)RuntimeErrorr   s    r   	__float__JIntervalExampleTest.test_interval_class_usage.<locals>.NotAFloat.__float__   s    "#566r   r#   N)r   r   r   r   r   r"   r#   r   r   	NotAFloatr      s    7r   r      )objectnumbar%   Typenumba.extendingr0   registerr7   r8   rB   rC   rI   rO   rP   rY   
numba.corerZ   r<   re   rf   
contextlibrg   r~   r   r   r   assertRaises	TypeErrorr   AttributeErrorassertFalse)$r   r0   r5   r7   r8   r@   rC   rN   rO   rP   rW   rY   rc   re   r|   r~   r   r   r   r   r   r   abr3   return_funcr   bad_intervalrg   r$   r,   rf   rZ   r4   rB   r%   s$   `                           @@@@@@@@r   test_interval_class_usage-IntervalExampleTest.test_interval_class_usage   s   	)v 	)" 	 	D5:: 	D % 	0			h	'	! 
(	!
 	2x7 	2	x	 	 
!	 	;		%	I 	IF.. 	I 
&	I 	;|T48|T48 	7	L'	2	 
3	 	2&	xekk	:	( 
;	( 	7(	|		\ 
	\> 	(	\	!	+ 
!	+J 			2 
	2 
	" 
	" 
	6 
	6	) QNQNQN ;'aQ0 	."34	7 	7 y)8Ay{34 *  1~O~.<( / 	A./ 	aq!!45 *) /.s   4I+1	I<+
I9<
J
r#   N)r   r   r   r   r   r"   r#   r   r   r   r   
   s    b6r   r   __main__)r    unittestTestCaser   r   mainr#   r   r   <module>r      s<    d6(++ d6N zMMO r   