
    sg              
          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	 dd	lmZmZ ej+                  e e ed
            e e ed
            f       d Zy# e$ r Y d Zyw xY w)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            	         t         D ][  \  } fd} | d            dk(  sJ  | dd            dk(  sJ  |  dd                  dk(  sJ  | d            dk(  sJ  | d            dk(  sJ  | t        dd                  dk(  sJ t        u r | t        d	                  dk(  sJ t	        t
        fd
       t	        t
        fd        | dd            dk(  sJ  | dd            dk(  sJ  | dd            dk(  sJ  | dd            dk(  sJ  | dd            dk(  sJ t         dd            dk(  sJ t         dd            dk(  sJ t         dd            dk(  sJ t         dd            dk(  sJ t         dd            dk(  sJ t         dd            dk(  sJ t        u r.t         dd            dk(  sJ t         dd            dk(  s0J t         dd            dk(  sJ t         dd            dk(  sJ t         dd            du sJ t         d             d!u sJ  dd       dd      k(  du sJ  dd       dd      k(  d!u sJ  dd       dd      k7  d!u sJ  dd       dd      k7  du sJ t         dd            t        t        dd            k(  sJ  dd      }t        j                  t        j                  |            |k(  sJ  dd       dd      k  du sJ  dd       dd      k  d!u sJ  dd       dd      k  d!u sJ  dd       dd      k  du sJ  dd       dd      k  d!u sJ  dd       dd      k  du sJ  dd       dd      k  du sJ  dd       dd      k  d!u sJ  dd       dd      k  du sJ  dd       dd      k  d!u sJ  dd       dd      kD  d!u sJ  dd       dd      kD  d!u sJ  dd       dd      kD  du sJ  dd       dd      kD  d!u sJ  dd       dd      kD  du sJ  dd       dd      k\  d!u sJ  dd       dd      k\  du sJ  dd       dd      k\  du sJ  dd       dd      k\  d!u sJ  dd       dd      k\  du sJ t         dd            t         dd            cxk(  r dd      k(  sJ  J  dd       dd      k(  sJ  dd        dd      k(  sJ  dd       dd"      z    d#d$      k(  sJ  dd      dz    dd      k(  sJ d dd      z    dd      k(  sJ t	        t
        fd%       t	        t
        fd&        dd       dd"      z
   dd$      k(  sJ  dd      dz
   dd      k(  sJ d dd      z
   dd      k(  sJ t	        t
        fd'       t	        t
        fd(        dd       dd"      z   d)d$      k(  sJ  dd      dz   dd      k(  sJ d dd      z   dd      k(  sJ t	        t
        fd*       t	        t
        fd+        dd      dz   d,d-      k(  sJ  dd      dz   dd      k(  sJ  dd      dz   d,d-      k(  sJ  dd      dz   dd      k(  sJ t        u r&t	        t
        fd.       t	        t
        fd/       t	        t
        fd0       t	        t
        fd1        dd       dd"      z   d2d3      k(  sJ  dd      dz   dd      k(  sJ d dd      z   dd      k(  sJ t	        t
        fd4       t	        t
        fd5       t	        t         fd6       t        u st	        t
        fd7       t	        t
        fd8       t	        t
        fd9       t	        t
        fd:       t	        t
        fd;       t	        t
        fd<       ^ y )=Nc                     t        |       sJ t        | j                        sJ t        | j                        sJ | j                  | j                  fS N)
isinstance	numeratordenominator)qTQTZs    V/var/www/html/venv/lib/python3.12/site-packages/sympy/external/tests/test_pythonmpq.pycheck_Qztest_PythonMPQ.<locals>.check_Q#   sN    a$$$akk2...ammR000;;--       )r   r      )r   r   g      ?)r      z0.5z0.6c                        g       S r    Qs   r   <lambda>z test_PythonMPQ.<locals>.<lambda>6   s    !B% r   c                        g g       S r   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>7   s    !B) 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                      g   d      z   S Nr   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>       "qt) r   c                        d      g z   S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>       !A$) r   c                      g   d      z
  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r0   r   c                        d      g z
  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r2   r   
   c                      g   d      z  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r0   r   c                        d      g z  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r2   r      	   c                      d  dd      z  S )Nr   r   r   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>       a1Q7l r   c                  *      dd        dd      z  S )Nr   r8   r   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>       a1g1a&8 r   c                      g   d      z  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   s    "!* r   c                        d      g z  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   s    !A$"* r         c                      g   d      z  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r0   r   c                        d      g z  S r/   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r2   r   c                  (      dd        d      z  S )Nr   r   r   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   s    !Aq'AaD. r   c                  *      dd        dd      z  S Nr   r   r   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r=   r   c                  *      dd        dd      z  S rF   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   s    a1g!Q&7 r   c                      d  dd      z  S Nr   r   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   r;   r   c                      d  dd      z  S rI   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   s    a!Aq'k r   c                        dd      dz  S rF   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   s    a1gl r   c                        dd      dz  S rF   r   r    s   r   r"   z test_PythonMPQ.<locals>.<lambda>   s    a1gk r   )r   r   r
   r   r	   	TypeErrorintfloatstrreprboolhashpickleloadsdumpsabsZeroDivisionError)Zr   r   r!   r   r   s      @@@r   test_PythonMPQrZ      s7	    ' O32q"	. qt}&&&qAw6)))q1az"f,,,qv&(((qx F***q!Q()V333 	>1WU^,-777 	y-(y+, qAw6)))qQx G+++qBx G+++qRy!V+++ qQx F*** 1Q7|q   1R8}"""Qq!W~$$$Qr1X$&&& 1Q7|s"""1Q7|u$$$	>!Q=J...!Q=J...!Q=J...!Q=J... AaG}$$$AaDzU""" !Q1Q7"t+++!Q1Q7"u,,,!Q1Q7"u,,,!Q1Q7"t+++ AaG}Xa^ 4444 aG||FLLO,111 !Q!Aq'!d***!Q!Aq'!e+++!Q!Aq'!e+++"a1Q7"t+++!Q!B("u,,,!Q1Q7"t+++!Q1Q7"t+++!Q1Q7"u,,,"aAaG#,,,!Q1R8#---!Q!Aq'!e+++!Q!Aq'!e+++!Q!Aq'!d***"a1Q7"u,,,!Q!B("t+++!Q1Q7"u,,,!Q1Q7"t+++!Q1Q7"t+++"aAaG#---!Q1R8#,,, 1Q7|s1R8}7!Q77777!Qx1Q7"""!Qx1R8### Aw1a Ab"I---Aw{a1g%%%1Q7{a1g%%%y+,y+, Aw1a Ab"I---Aw{aAh&&&1Q7{a1g%%%y+,y+, Aw1a Ab"I---Aw{a1g%%%1Q7{a1g%%%y+,y+, Aw!|qAw&&&Aw!|qAw&&&Qx1}!Q'''Qx2~2q)))	>923989y,-y,- Aw1a Ab"I---Aw{a1g%%%1Q7{a1g%%%y+,y+, "89 	>989978923912923912_O3r   )__doc__	fractionsr   decimalr   rT   typingr   r   r   r   sympy.testing.pytestr	   sympy.external.pythonmpqr
   __annotations__rN   r   gmpy2r   r   appendtypeImportErrorrZ   r   r   r   <module>rf      s       . . ' . U8T8T9:; ;ic23	3SVc4A<@A
S3	  	S3		s   5A< <BB