
    `i"                     f    d Z ddlZ G d dej                  Zedk    r ej                     dS dS )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                       e Zd Zd ZdS )IntervalExampleTestc                     !"#  G d dt                     ddlm#  G fdd#j                               !ddlm} |                              !fd            }dd	lm} |                    !           dd
lm}  |          !#fd            }ddlm	"m
}  |           G "#fdd"j                              }ddlm}  |dd            |dd           ddlm}	  |	d          d             }
ddlm} ddlm   |#j        #j                   fd            }ddlm}m ddlm  |           #fd            }ddlm}  |           #fd            }ddlm} |d             }|d             }|fd             } fd!} d"d#          } d$d%          } d&d'          } |d(           } || ||                                          |j         ||                      G d) d*          }                     t6                    5   | d" |                                 d d d            n# 1 swxY w Y    d+d"          }|`                     t:                    5   ||           d d d            n# 1 swxY w Y                         ||d%                      || |||                     d S ),Nc                   4    e Zd ZdZd Zd Zed             ZdS )?IntervalExampleTest.test_interval_class_usage.<locals>.IntervalzG
            A half-open interval on the real number line.
            c                 "    || _         || _        d S Nlohi)selfr   r   s      /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/numba/tests/doc_examples/test_interval_example.py__init__zHIntervalExampleTest.test_interval_class_usage.<locals>.Interval.__init__   s        c                 $    d| j         | j        fz  S )NzInterval(%f, %f)r
   r   s    r   __repr__zHIntervalExampleTest.test_interval_class_usage.<locals>.Interval.__repr__   s    )TWdg,>>>r   c                      | j         | j        z
  S r	   r   r   r   s    r   widthzEIntervalExampleTest.test_interval_class_usage.<locals>.Interval.width   s    w((r   N)__name__
__module____qualname____doc__r   r   propertyr    r   r   Intervalr      sW           ? ? ? ) ) X) ) )r   r   r   )typesc                   "     e Zd Z fdZ xZS )CIntervalExampleTest.test_interval_class_usage.<locals>.IntervalTypec                 P    t          |                               d           d S )Nr   )name)superr   )r   IntervalType	__class__s    r   r   zLIntervalExampleTest.test_interval_class_usage.<locals>.IntervalType.__init__"   s*    lD))22
2CCCCCr   )r   r   r   r   __classcell__)r%   r$   s   @r   r$   r    !   sH        D D D D D D D D D Dr   r$   )typeof_implc                     S r	   r   )valcinterval_types     r   typeof_indexzCIntervalExampleTest.test_interval_class_usage.<locals>.typeof_index+   s	      r   )as_numba_type)type_callablec                     fd}|S )Nc                 d    t          | j                  rt          |j                  rS d S d S r	   )
isinstanceFloat)r   r   r+   r   s     r   typerzSIntervalExampleTest.test_interval_class_usage.<locals>.type_interval.<locals>.typer;   sD    b%+.. ):b%+3N3N )(() ) ) )r   r   )contextr3   r+   r   s     r   type_intervalzDIntervalExampleTest.test_interval_class_usage.<locals>.type_interval9   s(    ) ) ) ) ) ) Lr   )modelsregister_modelc                       e Zd Z fdZdS )DIntervalExampleTest.test_interval_class_usage.<locals>.IntervalModelc                 f    dj         fdj         fg}j                            | |||           d S )Nr   r   )float64StructModelr   )r   dmmfe_typemembersr6   r   s       r   r   zMIntervalExampleTest.test_interval_class_usage.<locals>.IntervalModel.__init__F   sA     %-0 %-03"++D#wHHHHHr   N)r   r   r   r   )r6   r   s   r   IntervalModelr9   D   s;        I I I I I I I Ir   r@   )make_attribute_wrapperr   r   )overload_attributer   c                     d }|S )Nc                      | j         | j        z
  S r	   r   intervals    r   getterzPIntervalExampleTest.test_interval_class_usage.<locals>.get_width.<locals>.getterX   s    {X[00r   r   )rF   rG   s     r   	get_widthz@IntervalExampleTest.test_interval_class_usage.<locals>.get_widthV   s    1 1 1Mr   )lower_builtin)cgutilsc                     |j         }|\  }}                     |          | |          }||_        ||_        |                                S r	   )return_typecreate_struct_proxyr   r   	_getvalue)	r4   buildersigargstypr   r   rF   rJ   s	           r   impl_intervalzDIntervalExampleTest.test_interval_class_usage.<locals>.impl_intervala   sR    /CFB7w22377IIHHKHK%%'''r   )unboxNativeValue)	ExitStackc                 l                        |j        j                  }                     |           |j        |j                  } 
            5 }|j                            |d          }                    |j        ||          5  |j                            j	        |           ddd           n# 1 swxY w Y   |
                    j        |          }|j                            |                               |j        ||j                  5  |j                            j	        |           ddd           n# 1 swxY w Y   |j                            |d          }                    |j        ||          5  |j                            j	        |           ddd           n# 1 swxY w Y   |
                    j        |          }	|j                            |                               |j        ||	j                  5  |j                            j	        |           ddd           n# 1 swxY w Y   |j        |_        |	j        |_        ddd           n# 1 swxY w Y    |                                |j                            |                    S )zS
            Convert a Interval object to a native interval structure.
            r   Nr   )is_error)alloca_once_valuerO   	false_bitrM   r4   pyapiobject_getattr_stringearly_exit_if_nullstoretrue_bitrT   r;   decrefearly_exit_ifrX   valuer   r   rN   load)rR   objr*   is_error_ptrrF   stacklo_obj	lo_nativehi_obj	hi_nativerV   rU   rJ   r   s             r   unbox_intervalzEIntervalExampleTest.test_interval_class_usage.<locals>.unbox_intervalo   s   
 #44QY@QRRL7w22377	19MMH .66sDAA//	5&II D DIOOG$4lCCCD D D D D D D D D D D D D D DGGEM6::	v&&&**19eY=OPP D DIOOG$4lCCCD D D D D D D D D D D D D D D 66sDAA//	5&II D DIOOG$4lCCCD D D D D D D D D D D D D D DGGEM6::	v&&&**19eY=OPP D DIOOG$4lCCCD D D D D D D D D D D D D D D (o'o%. . . . . . . . . . . . . . .( ;x1133ainn\>Z>Z[[[[s   8I4!B:.I4:B>	>I4B>	AI4!E<I4E	I4E	:I4
!F7+I47F;	;I4>F;	?AI4!I9I4I			I4I		I44I8;I8)boxc                                         |j        |j        j                  }|j                                        }             5 }                     |           |j        |j        |          }|                    j        |j	                  }
                    |j        ||          5  |j                            ||           ddd           n# 1 swxY w Y   |                    j        |j                  }
                    |j        ||          5  |j                            |           |j                            ||           ddd           n# 1 swxY w Y   |j                            |j                                                }	
                    |j        ||	          5  |j                            |           |j                            |           |j                            ||           ddd           n# 1 swxY w Y   |j                            |	||f          }
|j                            |           |j                            |           |j                            |	           |j                            |
|           ddd           n# 1 swxY w Y   |j                            |          S )zT
            Convert a native interval structure to an Interval object.
            )rb   N)alloca_oncerO   r[   pyobjget_null_objectrM   r4   rl   r;   r   r]   r^   r   r`   unserializeserialize_objectcall_function_objargsrc   )rR   r)   r*   ret_ptrfail_objrf   rF   rg   ri   	class_objresrV   r   rJ   r   s              r   box_intervalzCIntervalExampleTest.test_interval_class_usage.<locals>.box_interval   sb   
 ))!)QW]CCGw..00H .;766s;;AIqyX[\\\u}hk:://	5&II 7 7IOOHg6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 u}hk:://	5&II 7 7GNN6***IOOHg6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 G//0H0H0R0RSS	//	5)LL 7 7GNN6***GNN6***IOOHg6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 g33I?OPPv&&&v&&&y)))	W---1. . . . . . . . . . . . . . .4 9>>'***s   
A(J52CJ5C	J5!C	"?J5!6E#J5#E'	'J5*E'	+AJ5<AHJ5H	J5H	 B	J55J9<J9)njitc                 6    | j         |cxk    o
| j        k     nc S r	   r
   )rF   xs     r   inside_intervalzFIntervalExampleTest.test_interval_class_usage.<locals>.inside_interval   s(    ;!1111hk11111r   c                     | j         S r	   )r   rE   s    r   interval_widthzEIntervalExampleTest.test_interval_class_usage.<locals>.interval_width   s
    >!r   c                 P     | j         |j         z   | j        |j        z             S r	   r
   )ijr   s     r   sum_intervalszDIntervalExampleTest.test_interval_class_usage.<locals>.sum_intervals   s%    8AD14K555r   c                                          |                                 |                               | j        |j                                       | j        |j                   d S r	   )assertIsInstanceassertEqualr   r   )r{   yr   r   s     r   check_equal_intervalszLIntervalExampleTest.test_interval_class_usage.<locals>.check_equal_intervals   si    !!!X...!!!X...QT14(((QT14(((((r                     c                     | S r	   r   )r{   s    r   <lambda>z?IntervalExampleTest.test_interval_class_usage.<locals>.<lambda>   s    Q r   c                       e Zd Zd ZdS )@IntervalExampleTest.test_interval_class_usage.<locals>.NotAFloatc                      t          d          )NzI am not a float)RuntimeErrorr   s    r   	__float__zJIntervalExampleTest.test_interval_class_usage.<locals>.NotAFloat.__float__   s    "#5666r   N)r   r   r   r   r   r   r   	NotAFloatr      s#        7 7 7 7 7r   r      )objectnumbar   Typenumba.extendingr'   registerr-   r.   r6   r7   r<   rA   rB   rI   
numba.corerJ   r2   rT   rU   
contextlibrV   rl   ry   r   r   assertRaises	TypeErrorr   AttributeErrorassertFalse)$r   r'   r,   r-   r.   r5   r7   r@   rA   rB   rH   rI   rS   rT   rk   rl   rx   ry   r|   r~   r   r   abr*   return_funcr   bad_intervalrV   r   r$   rU   rJ   r+   r6   r   s$   `                           @@@@@@@@r   test_interval_class_usagez-IntervalExampleTest.test_interval_class_usage   s   	) 	) 	) 	) 	)v 	) 	) 	)" 	 	D 	D 	D 	D 	D 	D 	D5: 	D 	D 	D % 	0/////			h	'	'	! 	! 	! 	! 
(	'	!
 	211111x777 	211111	x	 	 	 	 	 	 	 
!	 	 	;:::::::		%	%	I 	I 	I 	I 	I 	I 	I 	IF. 	I 	I 
&	%	I 	;:::::|T4888|T4888 	766666		L'	2	2	 	 
3	2	 	211111&&&&&&	xek	:	:	( 	( 	( 	( 
;	:	( 	76666666((((((	|			\ 	\ 	\ 	\ 	\ 	\ 	\ 
		\> 	('''''	\		!	+ !	+ !	+ !	+ !	+ !	+ !	+ 
	!	+J 			2 	2 
	2 
	" 	" 
	" 
	6 	6 	6 	6 
	6	) 	) 	) 	) 	) 	) HQNNHQNNHQNN d;;''aQ000 	.."3"3444	7 	7 	7 	7 	7 	7 	7 	7 y)) 	5 	5N88Ayy{{33444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5  x1~~O~.. 	) 	)N<(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	A../// 	aq!!4!455555s$   >I((I,/I,J33J7:J7N)r   r   r   r   r   r   r   r   r   
   s(        b6 b6 b6 b6 b6r   r   __main__)r   unittestTestCaser   r   mainr   r   r   <module>r      sv     d6 d6 d6 d6 d6(+ d6 d6 d6N zHMOOOOO r   