U
    9%eT                     @   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   k/var/www/html/Darija-Ai-API/env/lib/python3.8/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sFt	W 5 Q R X | 
ttksbt	| ddksrt	| ddkst	d S )NfF)Ztest_stacklevelr            ?        )r   addintr   floatr   r	   DeprecationWarningresolveAssertionErrordispatchr   r   r   r   test_dispatcher   s    r    c                  C   s>   t d} | ttft | ddks*t| ddks:td S )Nr   r   r   r          @)r   registerr   r   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<t| ddksLt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   r   test_dispatcher_as_decorator)   s    

r$   c                  C   s4   G dd d} | d}| dg}|j |j ks0t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
   
r0      )r&   r   )r0   abr   r   r   test_register_instance_method8   s    
r4   c                     s   t d} dd }dg  fdd}| jttf||d  d rBt| jttf||d  d rbt| jttf||d  d st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r8   r   )r   r   r/   r   r   )r   r   r8   r   r7   r   test_on_ambiguityJ   s    r:   c                      s"   t d tt fddstd S )Nr   c                      s     dtS )N)r   )r   r   r   r   r   r   <lambda>^   r5   z/test_raise_error_on_non_class.<locals>.<lambda>r   r   	TypeErrorr   r   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kslt|j |jkst|j| j |j|j k std
|jkst||jkst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__stripr   findrB   rD   rE   
master_docr   r   r   r   test_docstringa   s    rN   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snt|dd|jkstd S )Nc                 S   s   | | S r?   r   r@   r   r   r   rB   ~   s    ztest_help.<locals>.onec                 S   s   | | S rC   r   r@   r   r   r   rD      s    ztest_help.<locals>.twoc                 S   s   | | S )z Docstring number three r   r@   r   r   r   rE      s    ztest_help.<locals>.threerF   r   rG   r   r   r!   )r   r   r/   r   r   Z_helprI   r   rL   r   r   r   	test_help}   s    rO   c                  C   sl   dd } dd }d}t d|d}|ttf|  |ttf| d|d	d	ksTtd
|ddkshtd S )Nc                 S   s   | | S r?   r   r@   r   r   r   rB      s    ztest_source.<locals>.onec                 S   s   | | S rC   r   r@   r   r   r   rD      s    ztest_source.<locals>.tworF   r   rG   zx + yr   zx - yr   )r   r   r   r   _sourcer   )rB   rD   rM   r   r   r   r   test_source   s    rQ   c                      s"   t d tt fddstd S )Nr   c                      s
     dS r   )sourcer   r   r   r   r;      r5   z8test_source_raises_on_missing_function.<locals>.<lambda>r<   r   r   r   r   &test_source_raises_on_missing_function   s    rS   c                     s   dg  fdd} t d}t  dd }|ttf| |ttf|  dgksVtt| d  dgksntt|jttfttfhkstd S )	Nr   c                    s    d  d7  < d S )Nr   r   r   )r2   r3   gr   r   r8      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>.funcr9   r   )	r   r   r   r   r/   r   r   setZordering)r8   r   rW   r   rT   r   test_halt_method_resolution   s    
rY   c                      s"   t d tt fddstd S )Nr   c                      s    dS Nhellor   r   r   r   r   r;      r5   z)test_no_implementations.<locals>.<lambda>)r   r   NotImplementedErrorr   r   r   r   r   test_no_implementations   s    r]   c                     sz   t d  t tdd }  ddks4t dddgdddgksPttt fd	d
sft| ddksvt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   r1   )r1   r   r   r   r   r1   c                      s    dS rZ   r   r   r   r   r   r;      r5   z(test_register_stacking.<locals>.<lambda>r[   Zolleh)r   r"   r.   tupler   r   r\   )r`   r   r   r   test_register_stacking   s    rb   c                  C   sz   t d} | tdd }| ttdd }G dd dt}| t|ksPt| ||ksbt| tt|ksvt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   rd   )r   r"   r.   r   r   r   )r   r`   r   rd   r   r   r   test_dispatch_method   s    


re   c                     sv   t d  tdd }  tdd }  ddks<t ddksLt d	dks\ttt fd
dsrt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   rg      s    r[   rf   r   rh   r1   c                      s
    ddS )Nr   r   r   r   r   r   r   r;      r5   z&test_not_implemented.<locals>.<lambda>)r   r"   r/   r   r   r   r\   rg   r   r   r   test_not_implemented   s    

rk   c                     s4   t d  tdd } tt fdds0td S )Nr   c                 S   s
   t  d S r
   ri   )r2   r   r   r   rg     s    z%test_not_implemented_error.<locals>._c                      s    dS )Nr   r   r   r   r   r   r;   	  r5   z,test_not_implemented_error.<locals>.<lambda>)r   r"   r   r   r\   r   rj   r   r   r   test_not_implemented_error  s    
rl   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	std S )Nr   c                   @   s   e Zd ZdS )z3test_ambiguity_register_error_ignore_dup.<locals>.ANrc   r   r   r   r   A  s   rm   c                   @   s   e Zd ZdS )z3test_ambiguity_register_error_ignore_dup.<locals>.BNrc   r   r   r   r   B  s   rn   c                   @   s   e Zd ZdS )z3test_ambiguity_register_error_ignore_dup.<locals>.CNrc   r   r   r   r   C  s   ro   c                 S   s   d S r
   r   r@   r   r   r   r;     r5   z:test_ambiguity_register_error_ignore_dup.<locals>.<lambda>c                 S   s   d S r
   r   r@   r   r   r   r;     r5   c                 S   s   d S r
   r   r@   r   r   r   r;     r5   c                 S   s   d S r
   r   r@   r   r   r   r;     r5   c                      s      S r
   r   r   rn   ro   r   r   r   r;     r5   )r   r   r   r   r\   r   )rm   r   rp   r   (test_ambiguity_register_error_ignore_dup  s    rq   N)Z!sympy.multipledispatch.dispatcherr   r   r   r   r   r   Zsympy.testing.pytestr   r	   r   r   r   r    r#   r$   r4   r:   r>   rN   rO   rQ   rS   rY   r]   rb   re   rk   rl   rq   r   r   r   r   <module>   s*    	