a
    khT                     @   s   d dl mZmZmZmZmZmZ d dlmZm	Z	 dd Z
dd Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+S ),    )
DispatcherMDNotImplementedErrorMethodDispatcherhalt_orderingrestart_ordering#ambiguity_register_error_ignore_dup)raiseswarnsc                 C   s   | S N xr   r   Z/var/www/auris/lib/python3.9/site-packages/sympy/multipledispatch/tests/test_dispatcher.pyidentity   s    r   c                 C   s   | d S N   r   r   r   r   r   inc   s    r   c                 C   s   | d S r   r   r   r   r   r   dec   s    r   c                  C   s   t d} | tft | tft ttdd$ | tftksFJ W d    n1 sZ0    Y  | 	ttu svJ | ddksJ | ddksJ d S )NfF)Ztest_stacklevelr            ?        )
r   addintr   floatr   r	   DeprecationWarningresolvedispatchr   r   r   r   test_dispatcher   s    2r   c                  C   s>   t d} | ttft | ddks*J | ddks:J d S )Nr   r   r   r          @)r   registerr   r   r   r   r   r   r   test_union_types!   s    r"   c                  C   sP   t d} | tdd }| tdd }| ddks<J | ddksLJ d S )	Nr   c                 S   s   | d S r   r   r   r   r   r   r   ,   s    z)test_dispatcher_as_decorator.<locals>.incc                 S   s   | d S r   r   r   r   r   r   r   0   s    r   r   r   r   )r   r!   r   r   )r   r   r   r   r   test_dispatcher_as_decorator)   s    

r#   c                  C   s4   G dd d} | d}| dg}|j |j ks0J d S )Nc                   @   s8   e Zd ZedZeedd Zeedd Z	dS )z+test_register_instance_method.<locals>.Testr   c                 S   s
   || _ d S r
   data)selfr%   r   r   r   
_init_list=   s    z6test_register_instance_method.<locals>.Test._init_listc                 S   s   |g| _ d S r
   r$   )r&   Zdatumr   r   r   	_init_objA   s    z5test_register_instance_method.<locals>.Test._init_objN)
__name__
__module____qualname__r   __init__r!   listr'   objectr(   r   r   r   r   Test:   s
   
r/      r$   )r/   abr   r   r   test_register_instance_method8   s    
r3   c                     s   t d} dd }dg  fdd}| jttf||d  d rBJ | jttf||d  d rbJ | jttf||d  d sJ d S )	Nr   c                 S   s   | S r
   r   r   r   r   r   r   M       z#test_on_ambiguity.<locals>.identityFc                    s   d d< d S )NTr   r   )
dispatcherZambZambiguitiesr   r   on_ambiguityQ   s    z'test_on_ambiguity.<locals>.on_ambiguityr7   r   )r   r   r.   r   )r   r   r7   r   r6   r   test_on_ambiguityJ   s    r9   c                      s"   t d tt fddsJ d S )Nr   c                      s     dtS )N)r   )r   r   r   r   r   r   <lambda>^   r4   z/test_raise_error_on_non_class.<locals>.<lambda>r   r   	TypeErrorr   r   r   r   test_raise_error_on_non_class\   s    r=   c                  C   s   dd } dd }dd }d}t d|d	}|ttf|  |ttf| |ttf| | j |jv slJ |j |jv sJ |j| j |j|j k sJ d
|jv sJ ||jv sJ d S )Nc                 S   s   | | S z Docstring number one r   r   yr   r   r   onec   s    ztest_docstring.<locals>.onec                 S   s   | | S z Docstring number two r   r?   r   r   r   twog   s    ztest_docstring.<locals>.twoc                 S   s   | | S r
   r   r?   r   r   r   threek   s    ztest_docstring.<locals>.threeDoc of the multimethod itselfr   doczobject, object)r   r   r.   r   r   __doc__stripfindrA   rC   rD   
master_docr   r   r   r   test_docstringa   s    rM   c                  C   s   dd } dd }dd }d}t d|d	}|ttf|  |ttf| |ttf| |d
d
|jksnJ |dd|jksJ d S )Nc                 S   s   | | S r>   r   r?   r   r   r   rA   ~   s    ztest_help.<locals>.onec                 S   s   | | S rB   r   r?   r   r   r   rC      s    ztest_help.<locals>.twoc                 S   s   | | S )z Docstring number three r   r?   r   r   r   rD      s    ztest_help.<locals>.threerE   r   rF   r   r   r    )r   r   r.   r   r   Z_helprH   rK   r   r   r   	test_help}   s    rN   c                  C   sl   dd } dd }d}t d|d}|ttf|  |ttf| d|d	d	v sTJ d
|ddv shJ d S )Nc                 S   s   | | S r>   r   r?   r   r   r   rA      s    ztest_source.<locals>.onec                 S   s   | | S rB   r   r?   r   r   r   rC      s    ztest_source.<locals>.tworE   r   rF   zx + yr   zx - yr   )r   r   r   r   _source)rA   rC   rL   r   r   r   r   test_source   s    rP   c                      s"   t d tt fddsJ d S )Nr   c                      s
     dS r   )sourcer   r   r   r   r:      r4   z8test_source_raises_on_missing_function.<locals>.<lambda>r;   r   r   r   r   &test_source_raises_on_missing_function   s    rR   c                     s   dg  fdd} t d}t  dd }|ttf| |ttf|  dgksVJ t| d  dgksnJ t|jttfttfhksJ d S )	Nr   c                    s    d  d7  < d S )Nr   r   r   )r1   r2   gr   r   r7      s    z1test_halt_method_resolution.<locals>.on_ambiguityr   c                  W   s   d S r
   r   )argsr   r   r   func   s    z)test_halt_method_resolution.<locals>.funcr8   r   )r   r   r   r   r.   r   setZordering)r7   r   rV   r   rS   r   test_halt_method_resolution   s    
rX   c                      s"   t d tt fddsJ d S )Nr   c                      s    dS Nhellor   r   r   r   r   r:      r4   z)test_no_implementations.<locals>.<lambda>)r   r   NotImplementedErrorr   r   r   r   test_no_implementations   s    r\   c                     sv   t d  t tdd }  ddks4J  g dg dksLJ tt fddsbJ | dd	ksrJ d S )
Nr   c                 S   s   | d d d S Nr   r   r   r   r   rev   s    z#test_register_stacking.<locals>.rev)r   r   r0   )r0   r   r   c                      s    dS rY   r   r   r   r   r   r:      r4   z(test_register_stacking.<locals>.<lambda>rZ   Zolleh)r   r!   r-   tupler   r[   )r_   r   r   r   test_register_stacking   s    ra   c                  C   sz   t d} | tdd }| ttdd }G dd dt}| t|u sPJ | ||u sbJ | tt|u svJ d S )Nr   c                 S   s   | d d d S r]   r   r   r   r   r   r_      s    z!test_dispatch_method.<locals>.revc                 S   s   | | S r
   r   r?   r   r   r   r      s    z!test_dispatch_method.<locals>.addc                   @   s   e Zd ZdS )z$test_dispatch_method.<locals>.MyListNr)   r*   r+   r   r   r   r   MyList   s   rc   )r   r!   r-   r   r   )r   r_   r   rc   r   r   r   test_dispatch_method   s    


rd   c                     sv   t d  tdd }  tdd }  ddks<J  ddksLJ  d	dks\J tt fd
dsrJ d S )Nr   c                 S   s   dS )Ndefaultr   r   r   r   r   _   s    ztest_not_implemented.<locals>._c                 S   s   | d dkrdS t  d S )Nr   r   evenr   r   r   r   r   rf      s    rZ   re   r   rg   r0   c                      s
    ddS )Nr   r   r   r   r   r   r   r:      r4   z&test_not_implemented.<locals>.<lambda>)r   r!   r.   r   r   r[   rf   r   r   r   test_not_implemented   s    

rj   c                     s4   t d  tdd } tt fdds0J d S )Nr   c                 S   s
   t  d S r
   rh   )r1   r   r   r   rf     s    z%test_not_implemented_error.<locals>._c                      s    dS )Nr   r   r   r   r   r   r:   	  r4   z,test_not_implemented_error.<locals>.<lambda>)r   r!   r   r   r[   ri   r   r   r   test_not_implemented_error  s    
rk   c                     s   t dG dd d} G dd d|  G dd d| |  fdd	 t  | fd
d	 t | fdd	 t | fdd	 t tt fdd	sJ d S )Nr   c                   @   s   e Zd ZdS )z3test_ambiguity_register_error_ignore_dup.<locals>.ANrb   r   r   r   r   A  s   rl   c                   @   s   e Zd ZdS )z3test_ambiguity_register_error_ignore_dup.<locals>.BNrb   r   r   r   r   B  s   rm   c                   @   s   e Zd ZdS )z3test_ambiguity_register_error_ignore_dup.<locals>.CNrb   r   r   r   r   C  s   rn   c                 S   s   d S r
   r   r?   r   r   r   r:     r4   z:test_ambiguity_register_error_ignore_dup.<locals>.<lambda>c                 S   s   d S r
   r   r?   r   r   r   r:     r4   c                 S   s   d S r
   r   r?   r   r   r   r:     r4   c                 S   s   d S r
   r   r?   r   r   r   r:     r4   c                      s      S r
   r   r   rm   rn   r   r   r   r:     r4   )r   r   r   r   r[   )rl   r   ro   r   (test_ambiguity_register_error_ignore_dup  s    rp   N)Z!sympy.multipledispatch.dispatcherr   r   r   r   r   r   Zsympy.testing.pytestr   r	   r   r   r   r   r"   r#   r3   r9   r=   rM   rN   rP   rR   rX   r\   ra   rd   rj   rk   rp   r   r   r   r   <module>   s*    	