o
    *Î®cÕ  ã                   @   s  d dl mZmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ eƒ ZeZeeedZdd„ Zd	d
„ ZG dd„ dƒZG dd„ dƒZG dd„ deƒZG dd„ deƒZG dd„ deƒ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 )*é    )ÚDictÚAny)Údispatch)ÚAmbiguityWarning)ÚraisesÚwarns)Úpartial©Ú	namespacec                     sz   t tƒdd„ ƒ‰ t tƒdd„ ƒ} t tƒdd„ ƒ‰ ˆ dƒdks J ‚| dƒdks(J ‚ˆ d	ƒd
ks0J ‚tt‡ fdd„ƒs;J ‚d S )Nc                 S   ó   | d S ©Né   © ©Úxr   r   úM/tmp/pip-target-vg8gfxp4/lib/python/sympy/multipledispatch/tests/test_core.pyÚf   ó   ztest_singledispatch.<locals>.fc                 S   r   ©Né   r   r   r   r   r   Úg   r   ztest_singledispatch.<locals>.gc                 S   s   | d S r   r   r   r   r   r   r      r   r   r   é   ç      ð?r   c                      s   ˆ dƒS )NÚhellor   r   ©r   r   r   Ú<lambda>   s    z%test_singledispatch.<locals>.<lambda>)r   ÚintÚfloatr   ÚNotImplementedError)r   r   r   r   Útest_singledispatch   s   


r   c                  C   sL   t ttƒdd„ ƒ} t ttƒdd„ ƒ} | ddƒdksJ ‚| ddƒd	ks$J ‚d S )
Nc                 S   s   | | S ©Nr   ©r   Úyr   r   r   r   #   r   z test_multipledispatch.<locals>.fc                 S   s   | | S r    r   r!   r   r   r   r   '   r   r   r   r   r   g       @g      ð¿)r   r   r   r   r   r   r   Útest_multipledispatch"   s   

r#   c                   @   ó   e Zd ZdS )ÚAN©Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r%   /   ó    r%   c                   @   r$   )ÚBNr&   r   r   r   r   r+   0   r*   r+   c                   @   r$   )ÚCNr&   r   r   r   r   r,   1   r*   r,   c                   @   r$   )ÚDNr&   r   r   r   r   r-   2   r*   r-   c                   @   r$   )ÚENr&   r   r   r   r   r.   3   r*   r.   c                  C   sZ   t tƒdd„ ƒ} t tƒdd„ ƒ} | tƒ ƒdksJ ‚| tƒ ƒdks"J ‚| tƒ ƒdks+J ‚d S )Nc                 S   ó   dS )NÚar   r   r   r   r   r   7   ó   ztest_inheritance.<locals>.fc                 S   r/   )NÚbr   r   r   r   r   r   ;   r1   r0   r2   )r   r%   r+   r,   r   r   r   r   Útest_inheritance6   s   

r3   c                      sž   t ttƒdd„ ƒ‰ t ttƒdd„ ƒ‰ ˆ tƒ tƒ ƒttfksJ ‚ˆ tƒ tƒ ƒttfks,J ‚ˆ tƒ tƒ ƒdks7J ‚ˆ tƒ tƒ ƒdksBJ ‚tt‡ fdd„ƒsMJ ‚d S )Nc                 S   s   t | ƒt |ƒfS r    )Útyper!   r   r   r   r   E   s   z1test_inheritance_and_multiple_dispatch.<locals>.fc                 S   r/   )Nr   r   r!   r   r   r   r   I   r1   r   c                      s   ˆ t ƒ t ƒ ƒS r    )r+   r   r   r   r   r   Q   s    z8test_inheritance_and_multiple_dispatch.<locals>.<lambda>)r   r%   r+   r,   r   r   r   r   r   r   Ú&test_inheritance_and_multiple_dispatchD   s   

r5   c                  C   s6   t tƒdd„ ƒ} t tƒdd„ ƒ} | tƒ ƒdksJ ‚d S )Nc                 S   r/   r   r   r   r   r   r   ÚhU   r1   z#test_competing_solutions.<locals>.hc                 S   r/   r   r   r   r   r   r   r6   Y   r1   r   )r   r%   r,   r-   ©r6   r   r   r   Útest_competing_solutionsT   s
   

r8   c                  C   s>   t ttƒdd„ ƒ} t ttƒdd„ ƒ} | tƒ tƒ ƒdksJ ‚d S )Nc                 S   r/   r   r   r!   r   r   r   r6   a   r1   z"test_competing_multiple.<locals>.hc                 S   r/   r   r   r!   r   r   r   r6   e   r1   r   )r   r%   r+   r,   r-   r7   r   r   r   Útest_competing_multiple`   s
   

r9   c                  C   s–   t ƒ } tt| d}|ttƒdd„ ƒ}ttdd |ttƒdd„ ƒ}W d   ƒ n1 s,w   Y  |tƒ tƒ ƒ|tƒ tƒ ƒ  krFdksIJ ‚ J ‚d S )Nr	   c                 S   r/   r   r   r!   r   r   r   r   p   r1   z#test_competing_ambiguous.<locals>.fF)Útest_stacklevelc                 S   r/   r   r   r!   r   r   r   r   u   r1   r   )Údictr   Úorig_dispatchr%   r,   r   r   )Útest_namespacer   r   r   r   r   Útest_competing_ambiguousl   s   
þ4r>   c                  C   sH   t tƒdd„ ƒ} | tƒ ƒdksJ ‚t tƒdd„ ƒ} | tƒ ƒdks"J ‚d S )Nc                 S   r/   r   r   r   r   r   r   r   ~   r1   z(test_caching_correct_behavior.<locals>.fr   c                 S   r/   r   r   r   r   r   r   r   „   r1   r   ©r   r%   r,   r   r   r   r   Útest_caching_correct_behavior}   s   

r@   c                  C   s<   t ttfƒdd„ ƒ} | tƒ ƒdksJ ‚| tƒ ƒdksJ ‚d S )Nc                 S   r/   r   r   r   r   r   r   r   Œ   r1   ztest_union_types.<locals>.fr   r?   r   r   r   r   Útest_union_types‹   s   

rA   c                  C   s`   t ƒ } t ƒ }dd„ }tt| d|ƒ}dd„ }tt|d|ƒ}|dƒdks&J ‚|dƒdks.J ‚d S )Nc                 S   r/   r   r   r   r   r   r   Úfoo˜   ó   ztest_namespaces.<locals>.foor	   c                 S   r/   r   r   r   r   r   r   rB   œ   rC   r   r   r   )r;   r<   r   )Úns1Úns2rB   Úfoo1Úfoo2r   r   r   Útest_namespaces”   s   rH   c                  C   sN   G dd„ dƒ} | ƒ }|  d¡dksJ ‚|  d¡dksJ ‚| d¡dks%J ‚d S )Nc                   @   s<   e Zd Zeeƒdd„ ƒZeeƒdd„ ƒZeeƒdd„ ƒZdS )ztest_methods.<locals>.Fooc                 S   s   |d S r   r   ©Úselfr   r   r   r   r   ³   r   ztest_methods.<locals>.Foo.fc                 S   ó   |d S r   r   rI   r   r   r   r   ·   r   c                 S   rK   )Nr   r   rI   r   r   r   r   »   r   ztest_methods.<locals>.Foo.gN)r'   r(   r)   r   r   r   r   r   r   r   r   r   ÚFoo²   s    

rL   r   r   r   g        é   )r   r   ©rL   rB   r   r   r   Útest_methods±   s
   rO   c                  C   s`   G dd„ dƒ} | ƒ }|  tƒ tƒ ¡dksJ ‚|  tƒ tƒ ¡dks"J ‚|  tƒ tƒ ¡dks.J ‚d S )Nc                   @   s0   e Zd Zeeeƒdd„ ƒZeeeƒdd„ ƒZdS )z+test_methods_multiple_dispatch.<locals>.Fooc                 S   r/   r   r   r!   r   r   r   r   È   r1   z-test_methods_multiple_dispatch.<locals>.Foo.fc                 S   r/   r   r   r!   r   r   r   r   Ì   r1   N)r'   r(   r)   r   r%   r   r,   r   r   r   r   rL   Ç   s
    
rL   r   r   )r   r%   r,   rN   r   r   r   Útest_methods_multiple_dispatchÆ   s
   
rP   N)!Útypingr   ÚtDictr   Úsympy.multipledispatchr   Úsympy.multipledispatch.conflictr   Úsympy.testing.pytestr   r   Ú	functoolsr   r;   r=   r<   r   r#   r%   r+   r,   r-   r.   r3   r5   r8   r9   r>   r@   rA   rH   rO   rP   r   r   r   r   Ú<module>   s4    	