
    MZd                         d dl Z d dlmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZ d d	lmZmZmZmZ  ed
      Z ed      \  ZZZd Zd Zd Zd Zd Zy)    N)EqNe)S)symbols)sqrt)cossin)import_module)skip)WildDotWildPlusWildStarReplacermatchpyzx y zc                     ddl m}m}  |       }|j                   ||             t	        t        |j                  |                   S )Nr   )ManyToOneMatcherPattern)r   r   r   addnextitermatch)exprpatternr   r   matchers        N/usr/lib/python3/dist-packages/sympy/utilities/tests/test_matchpy_connector.py_get_first_matchr      s7    1 GKK !W]]4()**    c                  t   t         t        d       ddlm}  ddl m}m} t        d      }t        d      }t        d      }t        t        z   }t        |z   }t        ||      \  }}	| ||      k(  sJ |	 |dt        i      k(  sJ t        t        z   t        z   }t        |z   }t        ||      \  }}	| ||      k(  sJ |	 |d | t        t        g      i      k(  sJ t        t        z   t        z   }t        t        z   t        z   |z   }t        ||      \  }}	| ||      k(  sJ |	 |d |        i      k(  sJ y )Nmatchpy not installedr   )Multisetr   Substitutionw_w__w___)r   r   multisetr    r   r"   r   r   r   xyr   z)
r    r   r"   r#   r$   r%   r   r   psubsts
             r   test_matchpy_connectorr,      s4   $%!-	B
5/CFDq5D"fGg.HAu    L$++++q519D#gGg.HAu    L%1a&)9!:;;;;q519D!eai$Gg.HAu    L&(*!56666r   c                     t         t        d       ddl m} m} ddl m}m} t        dd      }t        dd      }|t        z  |z   }d	t        z  }t        ||      \  }}	| | |      k(  sJ |	 |d	dd
      k(  sJ t        dz   }
t        |
|      \  }}	| | |      k(  sJ |	 |ddd
      k(  sJ t        }t        ||      \  }}	| | |      k(  sJ |	 |ddd
      k(  sJ t        t        z  t        z   }t        ||      \  }}	| | |      k(  sJ |	 |t        t        d
      k(  sJ  |       }|j                   | | |      d              |j                  |      t        d	      t        d      z  k(  sJ |j                  |
      t        d      t        d      z  k(  sJ |j                  |      t        d      t        d      z  k(  sJ |j                  |      t        t              t        t              z  k(  sJ y )Nr   r   r!   )ManyToOneReplacerReplacementRuler*      optionalq   r*   r3      c                 0    t        |       t        |      z  S N)r	   r   r5   s     r   <lambda>z'test_matchpy_optional.<locals>.<lambda>X   s    As1v r   )r   r   r   r"   r.   r/   r   r'   r   r(   r)   r   replacer	   r   )r   r"   r.   r/   r*   r3   r   expr1par+   expr2expr3expr4replacers                 r   test_matchpy_optionalrA   7   s    $%-:a Aa AcAgGaCE 0IB!!!!Lqq!12222EE 0IB!!!!Lqq!12222E 0IB!!!!Lqq!12222aC!GE 0IB!!!!Lqq!12222 "HLL!13MNOE"c!fSVm333E"c!fSVm333E"c!fSVm333E"c!fSVm333r   c                     t         t        d       t        d      } t        d      }t        dt        j                        }t        dt        j                        }t        dt        j
                        }t        t         j                  d       t         j                  d	       t         j                  d
       g      }|j                  t        | |      t        | |z
  d      t        |d      t        | d      t        | t              t        |t              g       |j                  t        |t        z  |z   d      t        t        | |z               |dz  d|z  |z  z
  }|j                  t        |t        dz  z  |t        z  z   |z   d      t        t        | t        |      z
  d|z  z        t        t        | t        |      z   d|z  z        z  |dk\  g       |j                  t        |t        dz  z  |z   d      t        t        t        | |z              t        t        t        | |z               z  | |z  dkD  g       |j                  t        dt        z  t                    t        t        t        dz        k(  sJ |j                  t        t        dz  dz   d            t        t        dz  dz   d      k(  sJ |j                  t        t        dz  d            t        t        d      t        t        d      z  k(  sJ |j                  t        t        dz  dt        z  t        z  z   dt        dz  z  z   d            t        t        dt        z        k(  sJ y )Nr   x1_x2_a_r1   b_c_c                 .    | j                  t               S r8   hasr'   )rE   s    r   r9   ztest_replacer.<locals>.<lambda>k       q	M r   c                 .    | j                  t               S r8   rI   )rF   s    r   r9   ztest_replacer.<locals>.<lambda>l   rK   r   c                 .    | j                  t               S r8   rI   )rG   s    r   r9   ztest_replacer.<locals>.<lambda>m   rK   r   )common_constraintsr   )conditions_nonfalser4      r6   r0   )r   r   r   r   OneZeror   CustomConstraintr   r   r   r'   r   r:   r(   )rC   rD   rE   rF   rG   r@   discs          r   test_replacerrV   _   s   $%
%.C
%.C		&B		&B		'B  !9:  !9:  !9:, H LLCr#)Q/bajRTUXZ[R\^`adfg^hjlmprsjtEuLv LLBqD2Iq!2a"R=1q51R47?DLL
2ad7RT>B"
1sT$Z!B$'(2a2#T
2BQrT1J+KK!QYK  
 LL
2ad7R<
1dB3r6lbT2#b&\M22 SVaZL   BqsAJ'2a1:555Bq!taxO,1a4!8Q???Bq!tQK(R1X1b	-ABBBBq!tac!e|a1f4a89R2a4[HHHr   c                     t         y t        d      } t        j                  t        j                  |             }| |k(  sJ t        dt        d            } t        j                  t        j                  |             }| |k(  sJ t        dt        d            } t        j                  t        j                  |             }| |k(  sJ t        dt        d            } t        j                  t        j                  |             }| |k(  sJ y )Nar0   )r   r   pickleloadsdumpsr   r   r   )a1a2s     r   test_matchpy_object_pickler^      s    	B	fll2&	'B8O8	ad	B	fll2&	'B8O8	#qt	B	fll2&	'B8O8	#qt	B	fll2&	'B8O8r   )rY   sympy.core.relationalr   r   sympy.core.singletonr   sympy.core.symbolr   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r	   sympy.externalr
   sympy.testing.pytestr   !sympy.utilities.matchpy_connectorr   r   r   r   r   r'   r(   r)   r   r,   rA   rV   r^    r   r   <module>rh      sY     * " % 9 ? ( % S S
	
"
'
1a+7<%4P%IPr   