o
    *ήc                     @   s   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d Zdd Zdd Zdd Zdd ZdS )    N)EqNe)S)symbols)sqrt)cossin)import_module)skip)WildDotWildPlusWildStarReplacermatchpyzx y zc                 C   s6   ddl m}m} | }||| tt|| S )Nr   )ManyToOneMatcherPattern)r   r   r   addnextitermatch)exprpatternr   r   matcher r   S/tmp/pip-target-vg8gfxp4/lib/python/sympy/utilities/tests/test_matchpy_connector.py_get_first_match   s   r   c            
      C   s(  t d u rtd ddlm}  ddl m}m} td}td}td}t	t
 }t	| }t||\}}	|||ks9J |	|dt
iksCJ t	t
 t }t	| }t||\}}	|||ks\J |	|d| t
tgiksjJ t	t
 t }t	t
 t | }t||\}}	|||ksJ |	|d|  iksJ d S )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substr   r   r   test_matchpy_connector   s,   r)   c                  C   s  t d u rtd ddl m} m} ddl m}m} tddd}tddd}|t | }d	t }t||\}}	|| |ks=J |	|d	dd
ksHJ td }
t|
|\}}	|| |ks[J |	|ddd
ksfJ t}t||\}}	|| |kswJ |	|ddd
ksJ tt	 t
 }t||\}}	|| |ksJ |	|t	t
d
ksJ | }||| |dd  ||td	td ksJ ||
tdtd ksJ ||tdtd ksJ ||tt	tt
 ksJ d S )Nr   r   r   )ManyToOneReplacerReplacementRuler'      optionalq   r'   r/      c                 S   s   t | t| S N)r   r   r1   r   r   r   <lambda>X   s    z'test_matchpy_optional.<locals>.<lambda>)r   r
   r   r   r*   r+   r   r$   r   r%   r&   r   replacer   r   )r   r   r*   r+   r'   r/   r   expr1par(   expr2expr3expr4replacerr   r   r   test_matchpy_optional7   s:   "r<   c               	   C   sp  t d u rtd td} td}tdtjd}tdtjd}tdtjd}tt dd	 t d
d	 t dd	 gd}|jt	| |t	| | dt
|dt
| dt
| tt
|tgd |t	|t | dt	t| |  |d d| |  }|jt	|td  |t  | dt	t| t| d|  t	t| t| d|  B |dkgd |jt	|td  | dt	tt| | t	tt| |  B | | dkgd |t	dt tt	ttd ksJ |t	td d dt	td d dksJ |t	td dt	tdt	tdB ksJ |t	td dt t  dtd   dt	tdt ks6J d S )Nr   x1_x2_a_r-   b_c_c                 S      |  t S r3   hasr$   )r?   r   r   r   r4   k       ztest_replacer.<locals>.<lambda>c                 S   rB   r3   rC   )r@   r   r   r   r4   l   rE   c                 S   rB   r3   rC   )rA   r   r   r   r4   m   rE   )common_constraintsr   )conditions_nonfalser0      r2   r,   )r   r
   r   r   OneZeror   CustomConstraintr   r   r   r$   r   r5   r%   )r=   r>   r?   r@   rA   r;   discr   r   r   test_replacer_   s:   @&6(&..DrN   c                  C   s   t d u rd S td} tt| }| |ksJ tdtd} tt| }| |ks-J tdtd} tt| }| |ksBJ tdtd} tt| }| |ksWJ d S )Nar,   )r   r   pickleloadsdumpsr   r   r   )a1a2r   r   r   test_matchpy_object_pickle   s   rU   )rP   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)   r<   rN   rU   r   r   r   r   <module>   s     ((