
    xKgR                         d dl mZmZ d dlmZ d dlZd dlmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZmZ  G d	 d
ej$                        Z G d dej$                        Zedk(  r ej,                          yy)    )productpermutations)defaultdictN)OverloadSelector)
cpu_target)builtin_registryRegistryLoader)types)NumbaNotImplementedErrorNumbaTypeErrorc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestOverloadSelectorc                 X   t               }|j                  dt        j                  t        j                  f       |j                  dt        j                  t        j
                  f       |j                  dt        j                  t        j                  f       |j                  dt        j                  t        j                  f       |j                  t        j                  t        j                  f      }| j                  t        |      d       |j                  |      \  }}| j                  t        |      d       | j                  t        |      d       | j                  |d   t        j                  t        j                  f       | j                  |t        j                  t        j                  f   d       | j                  |t        j                  t        j                  f   d       | j                  |t        j                  t        j                  f   d       y N            r   )r   appendr
   AnyBooleanInteger_select_compatiblebooleanassertEquallen_sort_signaturesselfoscompatsorderedscorings        l/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_target_overloadselector.pytest_select_and_sort_1z+TestOverloadSelector.test_select_and_sort_1   sk   
		!eii/0
		!emmU]]34
		!emmUYY/0
		!emmU]]34''(FGWq)..w7Wq)Wq)emmU]]%CD!=>B		!9:A>EMM!9:A>    c                    t               }|j                  dt        j                  f       |j                  dt        j                  f       |j                  dt        j
                  f       |j                  dt        j                  f       |j                  t        j                  f      }| j                  t        |      d       |j                  |      \  }}| j                  t        |      d       | j                  t        |      d       | j                  |d   t        j                  f       | j                  |t        j                  f   d       | j                  |t        j
                  f   d       | j                  |t        j                  f   d       | j                  |t        j                  f   d       y r   )r   r   r
   	ContainerSequenceMutableSequenceListr   r   r   r   r   s        r$   test_select_and_sort_2z+TestOverloadSelector.test_select_and_sort_2   sQ   
		!eoo'(
		!enn&'
		!e++-.
		!ejj]#''6Wq)..w7Wq)Wq)ejj]3%**/3%"7"7!9:A>%..!23Q7%//!34a8r&   c                    t               }| j                  |j                  t        j                  t        j
                               | j                  |j                  t        j                  t        j                               | j                  t        t        j                  t        j                               | j                  |j                  t        j                  t        j                               | j                  |j                  t        j                  t        j                               | j                  |j                  t        j                  t        j                               | j                  |j                  t        j                  t        j                               | j                  |j                  t        j                  t        j                               y )N)formalactual)r   
assertTrue_matchr
   r   r   
issubclassr)   r(   assertFalser   r   r    s     r$   
test_matchzTestOverloadSelector.test_match.   s"   		u}}	MN		u}}	MN
5>>5??CD		). " 9 	:%..*/// # ; 	< 			599	EF		5??	KL%//%))LMr&   c                    t               }|j                  dt        j                  t        j                  f       |j                  dt        j
                  t        j                  f       | j                  |j                  t        j                  t        j                  f      d       | j                  t              5 }|j                  t        j                  t        j                  f       d d d        |j                  dt        j                  t        j                  f       | j                  |j                  t        j                  t        j                  f      d       | j                  |j                  t        j                  t        j                  f      d       |j                  dt        j                  t        j                  f       | j                  t              5 }|j                  t        j                  t        j                  f       d d d        | j                  dt        j                               |j                  dt        j                  t        j                  f       | j                  |j                  t        j                  t        j                  f      d       y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   r   r   r   z2 ambiguous signatures   )r   r   r
   r   r   r   r   findr   assertRaisesr   int32r   assertInstr	exception)r   r    raisess      r$   test_ambiguous_detectionz-TestOverloadSelector.test_ambiguous_detection=   s   
		!eii/0
		!emmU]]34%--!?@!D78FGGU]]EKK01 9 			!eii+,%--!=>B%--!?@!D
		!emmUYY/0~.&GGU]]EMM23 /.F4D4D0EF
		!emmU]]34%--!?@!D 98 /.s   ?0J7*0K7KKc                    t               }| j                  t        t        j                  t        j
                               |j                  dt        j
                  t        j
                  f       t        j                  t        j                        }| j                  |j                  ||f      d       |j                  dt        j
                  t        j                  f       | j                  |j                  ||f      d       y )Nr   r   )r   r0   r2   r
   r)   r(   r   r+   r   r   r8   )r   r    lsttys      r$   test_subclass_specializationz1TestOverloadSelector.test_subclass_specializationS   s    
5>>5??CD
		!eoou89

5==)%0!4
		!eoou~~78%0!4r&   c                    t               }| j                  t        |j                        d       |j	                  dt
        j                  f       | j                  |j                  t
        j                  f      d       | j                  t        |j                        d       |j	                  dt
        j                  f       | j                  t        |j                        d       | j                  |j                  t
        j                  f      d       | j                  t        |j                        d       y )Nr   r   r   )
r   r   r   _cacher   r
   r   r8   r:   r   r4   s     r$   
test_cachezTestOverloadSelector.test_cache\   s    RYY+
		!eii\"%++0!4RYY+
		!emm%&RYY+%++0!4RYY+r&   N)	__name__
__module____qualname__r%   r,   r5   r?   rB   rE    r&   r$   r   r      s"    ? 9"NE,5	,r&   r   c                   .    e Zd Zed        Zd Zd Zd Zy)TestAmbiguousOverloadsc                 @    t         j                  j                          y N)r   target_contextrefresh)clss    r$   
setUpClassz!TestAmbiguousOverloads.setUpClassj   s     	!!))+r&   c                     t               }t        t              }|j                  |      D ]  \  }}|j	                  ||        |S rM   )r   r	   r   new_registrationsr   )r   kindr    loaderimplsigs         r$   create_overload_selectorz/TestAmbiguousOverloads.create_overload_selectoro   sA     0111$7ID#IIdC  8	r&   c                     | j                  d      }t        d |j                  D              }t        |d      D ]  }	 |j	                  |        y # t
        $ r Y #w xY w)Ncasts)rT   c              3   4   K   | ]  \  }}|D ]  }|   y wrM   rI   .0rW   rV   ts       r$   	<genexpr>z>TestAmbiguousOverloads.test_ambiguous_casts.<locals>.<genexpr>x   s     D;ic41;   r   )r)rX   setversionsr   r8   r   )r   r    	all_typesrW   s       r$   test_ambiguous_castsz+TestAmbiguousOverloads.test_ambiguous_castsv   s`    ***8D2;;DD	  	Q/C 0 , s    A	A A c                 n   t        t              }t        t              }|j	                  d      D ]  \  }}}||   }|j                  ||        |j                         D ]D  \  }}t        d |j                  D              }t        ||      D ]  }	 |j                  |        F y # t        $ r Y %w xY w)N	functionsc              3   4   K   | ]  \  }}|D ]  }|   y wrM   rI   r\   s       r$   r_   zBTestAmbiguousOverloads.test_ambiguous_functions.<locals>.<genexpr>   s     H{)#tCqACA{r`   )r	   r   r   r   rS   r   itemsrb   rc   r   r8   r   )r   rU   	selectorsrV   fnrW   r    rd   s           r$   test_ambiguous_functionsz/TestAmbiguousOverloads.test_ambiguous_functions   s     01 01	#55kBMD"c2BIIdC  C  oo'FBHr{{HHIy)4GGCL 5 ( 0 s   B((	B43B4N)rF   rG   rH   classmethodrQ   rX   re   rl   rI   r&   r$   rK   rK   h   s#    , ,	r&   rK   __main__)	itertoolsr   r   collectionsr   unittestnumba.core.baser   numba.core.registryr   numba.core.imputilsr   r	   
numba.corer
   numba.core.errorsr   r   TestCaser   rK   rF   mainrI   r&   r$   <module>ry      s_    + #  , * @  FY,8,, Y,x'X.. 'V zHMMO r&   