U
    L?h                     @   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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   Zmatcher r   ^/var/www/html/venv/lib/python3.8/site-packages/sympy/utilities/tests/test_matchpy_connector.py_get_first_match   s    r   c            
      C   s,  t d krtd ddlm}  ddl m}m} td}td}td}t	t
 }t	| }t||\}}	|||ksrt|	|dt
ikstt	t
 t }t	| }t||\}}	|||kst|	|d| t
tgikstt	t
 t }t	t
 t | }t||\}}	|||kst|	|d|  iks(td S )Nmatchpy not installedr   )Multisetr   Substitutionw_w__w___)r   r
   Zmultisetr   r   r   r   r   r   xyr   AssertionErrorz)
r   r   r   r   r    r!   r   r   psubstr   r   r   test_matchpy_connector   s,    r(   c                  C   s  t d k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szt	|	|d	dd
kst	td }
t|
|\}}	|| |kst	|	|ddd
kst	t}t||\}}	|| |kst	|	|ddd
kst	tt
 t }t||\}}	|| |ks2t	|	|t
td
ksJt	| }||| |dd  ||td	td kst	||
tdtd kst	||tdtd kst	||tt
tt kst	d S )Nr   r   r   )ManyToOneReplacerReplacementRuler&      optionalq   r&   r.      c                 S   s   t | t| S N)r   r   r0   r   r   r   <lambda>X       z'test_matchpy_optional.<locals>.<lambda>)r   r
   r   r   r)   r*   r   r"   r   r$   r#   r%   r   replacer   r   )r   r   r)   r*   r&   r.   r   Zexpr1par'   Zexpr2Zexpr3Zexpr4replacerr   r   r   test_matchpy_optional7   s:       r8   c                  C   s2   t d krtd dD ]} dD ]}t| | qqd S )Nr   )TF)r   r
   _perform_test_replacer)infolambdifyr   r   r   test_replacer_   s
    r<   c           
   	      s  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d |jt|t
 | dtt
| | dd |d d| |  }|jt|t
d  |t
  | dtt
| t| d|  tt
| t| d|  B |dkgdd |jt|t
d  | dtt
t| | tt
t| |  B | | dkgdd  fdd}	|tdt
 t|	tt
td ddgkst|tt
d d d|	tt
d d dg kst|tt
d d|	tt
dtt
dB ddgksTt|tt
d dt t
  dtd   d|	tt
dt dgkstd S )Nx1_x2_a_r,   b_c_c                 S   s   |  t S r2   hasr"   )r?   r   r   r   r3   r   r4   z(_perform_test_replacer.<locals>.<lambda>c                 S   s   |  t S r2   rB   )r@   r   r   r   r3   s   r4   c                 S   s   |  t S r2   rB   )rA   r   r   r   r3   t   r4   )Zcommon_constraintsr;   r:   r   r+   )Zconditions_nonfalser:   r/   r:      r1   c                    s    r| |fS | S r2   r   )r   infosrD   r   r   r3      r4   )r   r   ZOneZZeror   r   ZCustomConstraintr   r   r   r"   r   r5   r#   r$   )
r:   r;   r=   r>   r?   r@   rA   r7   Zdiscgr   rD   r   r9   h   sB     B*6(268r9   c                  C   s   t d krd S td} tt| }| |ks0ttdtd} tt| }| |ksZttdtd} tt| }| |ksttdtd} tt| }| |kstd S )Nar+   )	r   r   pickleloadsdumpsr$   r   r   r   )Za1Za2r   r   r   test_matchpy_object_pickle   s    rM   ) rJ   Zsympy.core.relationalr   r   Zsympy.core.singletonr   Zsympy.core.symbolr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.externalr	   Zsympy.testing.pytestr
   Z!sympy.utilities.matchpy_connectorr   r   r   r   r   r"   r#   r%   r   r(   r8   r<   r9   rM   r   r   r   r   <module>   s    (	*