
    J/PhR                         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                     dS dS )    )productpermutations)defaultdictN)OverloadSelector)
cpu_target)builtin_registryRegistryLoader)types)NumbaNotImplementedErrorNumbaTypeErrorc                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestOverloadSelectorc                 j   t                      }|                    dt          j        t          j        f           |                    dt          j        t          j        f           |                    dt          j        t          j        f           |                    dt          j        t          j        f           |                    t          j        t          j        f          }|                     t          |          d           |
                    |          \  }}|                     t          |          d           |                     t          |          d           |                     |d         t          j        t          j        f           |                     |t          j        t          j        f         d           |                     |t          j        t          j        f         d           |                     |t          j        t          j        f         d           d S N            r   )r   appendr
   AnyBooleanInteger_select_compatiblebooleanassertEquallen_sort_signaturesselfoscompatsorderedscorings        h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_target_overloadselector.pytest_select_and_sort_1z+TestOverloadSelector.test_select_and_sort_1   s   
		!ei/000
		!emU]3444
		!emUY/000
		!emU]3444''(FGGWq)))..w77Wq)))Wq)))emU]%CDDD!=>BBB	!9:A>>>EM!9:A>>>>>    c                    t                      }|                    dt          j        f           |                    dt          j        f           |                    dt          j        f           |                    dt          j        f           |                    t          j        f          }|                     t          |          d           |
                    |          \  }}|                     t          |          d           |                     t          |          d           |                     |d         t          j        f           |                     |t          j        f         d           |                     |t          j        f         d           |                     |t          j        f         d           |                     |t          j        f         d           d S 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   s   
		!eo'(((
		!en&'''
		!e+-...
		!ej]###''66Wq)))..w77Wq)))Wq)))ej]333%*/333%"7!9:A>>>%.!23Q777%/!34a88888r&   c                    t                      }|                     |                    t          j        t          j                             |                     |                    t          j        t          j                             |                     t          t          j        t          j                             |                     |                    t          j        t          j                             | 	                    |                    t          j        t          j                             |                     |                    t          j
        t          j
                             |                     |                    t          j
        t          j                             | 	                    |                    t          j        t          j
                             d S )N)formalactual)r   
assertTrue_matchr
   r   r   
issubclassr)   r(   assertFalser   r   r    s     r$   
test_matchzTestOverloadSelector.test_match.   s_   		u}	MMNNN		u}	MMNNN
5>5?CCDDD		). " 9 9 	: 	: 	:%.*// # ; ; 	< 	< 	< 			59	EEFFF		5?	KKLLL%/%)LLMMMMMr&   c                    t                      }|                    dt          j        t          j        f           |                    dt          j        t          j        f           |                     |                    t          j        t          j        f          d           | 	                    t                    5 }|                    t          j        t          j        f           d d d            n# 1 swxY w Y   |                    dt          j        t          j        f           |                     |                    t          j        t          j        f          d           |                     |                    t          j        t          j        f          d           |                    dt          j        t          j        f           | 	                    t                    5 }|                    t          j        t          j        f           d d d            n# 1 swxY w Y   |                     dt          |j                             |                    dt          j        t          j        f           |                     |                    t          j        t          j        f          d           d S )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=   su   
		!ei/000
		!emU]3444%-!?@@!DDD788 	2FGGU]EK0111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 			!ei+,,,%-!=>>BBB%-!?@@!DDD
		!emUY/000~.. 	4&GGU]EM2333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4.F4D0E0EFFF
		!emU]3444%-!?@@!DDDDDs$    ,C88C<?C<3,H++H/2H/c                 (   t                      }|                     t          t          j        t          j                             |                    dt          j        t          j        f           t          j        t          j                  }| 	                    |
                    ||f          d           |                    dt          j        t          j        f           | 	                    |
                    ||f          d           d S )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CDDD
		!eou8999
5=))%00!444
		!eou~7888%00!44444r&   c                    t                      }|                     t          |j                  d           |                    dt
          j        f           |                     |                    t
          j        f          d           |                     t          |j                  d           |                    dt
          j	        f           |                     t          |j                  d           |                     |                    t
          j        f          d           |                     t          |j                  d           d S )Nr   r   r   )
r   r   r   _cacher   r
   r   r8   r:   r   r4   s     r$   
test_cachezTestOverloadSelector.test_cache\   s   RY+++
		!ei\"""%+00!444RY+++
		!em%&&&RY+++%+00!444RY+++++r&   N)	__name__
__module____qualname__r%   r,   r5   r?   rB   rE    r&   r$   r   r      st        ? ? ? 9 9 9"N N NE E E,5 5 5	, 	, 	, 	, 	,r&   r   c                   6    e Zd Zed             Zd Zd Zd ZdS )TestAmbiguousOverloadsc                 B    t           j                                         d S N)r   target_contextrefresh)clss    r$   
setUpClassz!TestAmbiguousOverloads.setUpClassj   s     	!))+++++r&   c                     t                      }t          t                    }|                    |          D ]\  }}|                    ||           |S rM   )r   r	   r   new_registrationsr   )r   kindr    loaderimplsigs         r$   create_overload_selectorz/TestAmbiguousOverloads.create_overload_selectoro   sX     01111$77 	! 	!ID#IIdC    	r&   c                     |                      d          }t          d |j        D                       }t          |d          D ](}	 |                    |           # t
          $ r Y %w xY wd S )Ncasts)rT   c              3   *   K   | ]\  }}|D ]}|V  d S rM   rI   .0rW   rV   ts       r$   	<genexpr>z>TestAmbiguousOverloads.test_ambiguous_casts.<locals>.<genexpr>x   s3      DDic4DD1DDDDDDDr&   r   )r)rX   setversionsr   r8   r   )r   r    	all_typesrW   s       r$   test_ambiguous_castsz+TestAmbiguousOverloads.test_ambiguous_castsv   s    ***88DD2;DDDDD	  	Q/// 	 	C+   	 	s   	A
A,+A,c                    t          t                    }t          t                    }|                    d          D ]$\  }}}||         }|                    ||           %|                                D ]\\  }}t          d |j        D                       }t          ||          D ](}	 |
                    |           # t          $ r Y %w xY w]d S )N	functionsc              3   *   K   | ]\  }}|D ]}|V  d S rM   rI   r\   s       r$   r_   zBTestAmbiguousOverloads.test_ambiguous_functions.<locals>.<genexpr>   s3      HH)#tCHHqAHHHHHHHr&   )r	   r   r   r   rS   r   itemsra   rb   r   r8   r   )r   rU   	selectorsrV   fnrW   r    rc   s           r$   test_ambiguous_functionsz/TestAmbiguousOverloads.test_ambiguous_functions   s     011 011	#55kBB 	! 	!MD"c2BIIdC    oo'' 	 	FBHHr{HHHHHIy)44  GGCLLLL/   D	 	s   -C
CCN)rF   rG   rH   classmethodrQ   rX   rd   rk   rI   r&   r$   rK   rK   h   sZ        , , [,  	 	 	    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>rx      s(   + + + + + + + + # # # # # #  , , , , , , * * * * * * @ @ @ @ @ @ @ @       F F F F F F F FY, Y, Y, Y, Y,8, Y, Y, Y,x' ' ' ' 'X. ' ' 'V zHMOOOOO r&   