U
    —9%e¥  ã                   @   sÔ   U d Z ddlmZ ddlmZ ddlZddlmZmZm	Z	m
Z
 ddlmZ ddlmZ ee	ee
ee
f  ed< eeeefgZz6dd	lmZmZ e eeed
ƒƒeeed
ƒƒf¡ W n ek
rÆ   Y nX dd„ ZdS )z‡
test_pythonmpq.py

Test the PythonMPQ class for consistency with gmpy2's mpq type. If gmpy2 is
installed run the same tests for both.
é    )ÚFraction)ÚDecimalN)ÚCallableÚListÚTupleÚType)Úraises)Ú	PythonMPQÚrational_types)ÚmpqÚmpzé   c                     sx	  t D 	]l\‰ ‰} ‰‡‡fdd„}|ˆ dƒƒdks4t‚|ˆ ddƒƒdksJt‚|ˆ ˆ ddƒƒƒdksdt‚|ˆ dƒƒdksxt‚|ˆ d	ƒƒdksŒt‚|ˆ tddƒƒƒdks¦t‚ˆ tkrÆ|ˆ td
ƒƒƒdksÆt‚tt‡ fdd„ƒ tt‡ fdd„ƒ |ˆ ddƒƒdkst‚|ˆ ddƒƒdkst‚|ˆ ddƒƒdks2t‚|ˆ ddƒƒdksJt‚|ˆ ddƒƒdksbt‚tˆ ddƒƒdkszt‚tˆ ddƒƒdks’t‚tˆ ddƒƒdksªt‚tˆ ddƒƒdksÂt‚t	ˆ ddƒƒdksÚt‚t	ˆ ddƒƒdksòt‚ˆ tkr.t
ˆ ddƒƒdkst‚t
ˆ ddƒƒdks^t‚n0t
ˆ ddƒƒdksFt‚t
ˆ ddƒƒd ks^t‚tˆ ddƒƒd!ksvt‚tˆ d"ƒƒd#ksŒt‚ˆ ddƒˆ ddƒkd!ksªt‚ˆ ddƒˆ ddƒkd#ksÈt‚ˆ ddƒˆ ddƒkd#ksæt‚ˆ ddƒˆ ddƒkd!kst‚tˆ ddƒƒttddƒƒks&t‚ˆ ddƒ}t t |¡¡|ksJt‚ˆ ddƒˆ ddƒk d!ksht‚ˆ ddƒˆ ddƒk d#ks†t‚ˆ ddƒˆ ddƒk d#ks¤t‚ˆ ddƒˆ ddƒk d!ksÂt‚ˆ ddƒˆ ddƒk d#ksàt‚ˆ ddƒˆ ddƒkd!ksþt‚ˆ ddƒˆ ddƒkd!kst‚ˆ ddƒˆ ddƒkd#ks:t‚ˆ ddƒˆ ddƒkd!ksXt‚ˆ ddƒˆ ddƒkd#ksvt‚ˆ ddƒˆ ddƒkd#ks”t‚ˆ ddƒˆ ddƒkd#ks²t‚ˆ ddƒˆ ddƒkd!ksÐt‚ˆ ddƒˆ ddƒkd#ksît‚ˆ ddƒˆ ddƒkd!kst‚ˆ ddƒˆ ddƒkd#ks*t‚ˆ ddƒˆ ddƒkd!ksHt‚ˆ ddƒˆ ddƒkd!ksft‚ˆ ddƒˆ ddƒkd#ks„t‚ˆ ddƒˆ ddƒkd!ks¢t‚tˆ ddƒƒtˆ ddƒƒ  krÔˆ ddƒksÚn t‚ˆ ddƒ
 ˆ ddƒksöt‚ˆ ddƒ ˆ ddƒkst‚ˆ ddƒˆ dd$ƒ ˆ d%d&ƒks6t‚ˆ ddƒd ˆ ddƒksTt‚dˆ ddƒ ˆ ddƒksrt‚tt‡ fd'd„ƒ tt‡ fd(d„ƒ ˆ ddƒˆ dd$ƒ ˆ dd&ƒksºt‚ˆ ddƒd ˆ ddƒksØt‚dˆ ddƒ ˆ ddƒksöt‚tt‡ fd)d„ƒ tt‡ fd*d„ƒ ˆ ddƒˆ dd$ƒ ˆ d+d&ƒks>t‚ˆ ddƒd ˆ ddƒks\t‚dˆ ddƒ ˆ ddƒkszt‚tt‡ fd,d„ƒ tt‡ fd-d„ƒ ˆ ddƒd ˆ d.d/ƒks¼t‚ˆ ddƒd ˆ ddƒksÚt‚ˆ ddƒd ˆ d.d/ƒksøt‚ˆ ddƒd ˆ ddƒkst‚ˆ tkrDtt‡ fd0d„ƒ tt‡ fd1d„ƒ tt‡ fd2d„ƒ tt‡ fd3d„ƒ ˆ ddƒˆ dd$ƒ ˆ d4d5ƒksŒt‚ˆ ddƒd ˆ ddƒksªt‚dˆ ddƒ ˆ ddƒksÈt‚tt‡ fd6d„ƒ tt‡ fd7d„ƒ tt‡ fd8d„ƒ ˆ tkrtt‡ fd9d„ƒ tt‡ fd:d„ƒ tt‡ fd;d„ƒ tt‡ fd<d„ƒ tt‡ fd=d„ƒ tt‡ fd>d„ƒ qd S )?Nc                    s:   t | ˆ ƒst‚t | jˆƒst‚t | jˆƒs.t‚| j| jfS ©N)Ú
isinstanceÚAssertionErrorÚ	numeratorÚdenominator)Úq)ÚTQÚTZ© úb/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/external/tests/test_pythonmpq.pyÚcheck_Q#   s    ztest_PythonMPQ.<locals>.check_Qé   )r   r   é   )r   r   g      à?)r   é   z0.5z0.6c                      s   ˆ g ƒS r   r   r   ©ÚQr   r   Ú<lambda>6   ó    z test_PythonMPQ.<locals>.<lambda>c                      s
   ˆ g g ƒS r   r   r   r   r   r   r   7   r   r   )r   r   éþÿÿÿ)r    r   éýÿÿÿé   é   )r   r   r   éûÿÿÿéÿÿÿÿg      @g      ÀÚ2z1/2zMPQ(2,1)zMPQ(1,2)zmpq(2,1)zmpq(1,2)Tr   Fé   é   é   c                      s   g ˆ dƒ S ©Nr   r   r   r   r   r   r   …   r   c                      s   ˆ dƒg  S r*   r   r   r   r   r   r   †   r   c                      s   g ˆ dƒ S r*   r   r   r   r   r   r   Œ   r   c                      s   ˆ dƒg  S r*   r   r   r   r   r   r      r   é
   c                      s   g ˆ dƒ S r*   r   r   r   r   r   r   “   r   c                      s   ˆ dƒg  S r*   r   r   r   r   r   r   ”   r   é   é	   c                      s   dˆ ddƒ S )Nr   r   r   r   r   r   r   r   r   œ   r   c                      s   ˆ ddƒˆ ddƒ S )Nr   r,   r   r   r   r   r   r   r      r   c                      s   g ˆ dƒ S r*   r   r   r   r   r   r   ž   r   c                      s   ˆ dƒg  S r*   r   r   r   r   r   r   Ÿ   r   é   é   c                      s   g ˆ dƒ S r*   r   r   r   r   r   r   ¥   r   c                      s   ˆ dƒg  S r*   r   r   r   r   r   r   ¦   r   c                      s   ˆ ddƒˆ dƒ S )Nr   r   r   r   r   r   r   r   r   §   r   c                      s   ˆ ddƒˆ ddƒ S ©Nr   r   r   r   r   r   r   r   r   «   r   c                      s   ˆ ddƒˆ ddƒ S r0   r   r   r   r   r   r   ¬   r   c                      s   dˆ ddƒ S ©Nr   r   r   r   r   r   r   r   ­   r   c                      s   dˆ ddƒ S r1   r   r   r   r   r   r   ®   r   c                      s   ˆ ddƒd S r0   r   r   r   r   r   r   ¯   r   c                      s   ˆ ddƒd S r0   r   r   r   r   r   r   °   r   )r
   r   r   r	   r   r   Ú	TypeErrorÚintÚfloatÚstrÚreprÚboolÚhashÚpickleÚloadsÚdumpsÚabsÚZeroDivisionError)ÚZr   r   r   )r   r   r   r   Útest_PythonMPQ   sÂ    
"
8$$$
$r?   )Ú__doc__Ú	fractionsr   Údecimalr   r9   Útypingr   r   r   r   Zsympy.testing.pytestr   Zsympy.external.pythonmpqr	   Ú__annotations__r3   r
   Zgmpy2r   r   ÚappendÚtypeÚImportErrorr?   r   r   r   r   Ú<module>   s   &