o
    GZh                     @   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/auris/lib/python3.10/site-packages/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
   Z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   r/   r   r   r   <lambda>X       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&   Zexpr2Zexpr3Zexpr4replacerr   r   r   test_matchpy_optional7   s:   "r8   c                  C   s2   t d u 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sJ |tt
d d d|	tt
d d dg ksJ |tt
d d|	tt
dtt
dB ddgks)J |tt
d dt t
  dtd   d|	tt
dt dgksMJ d S )Nx1_x2_a_r+   b_c_c                 S      |  t S r1   hasr"   )r?   r   r   r   r2   r       z(_perform_test_replacer.<locals>.<lambda>c                 S   rB   r1   rC   )r@   r   r   r   r2   s   rE   c                 S   rB   r1   rC   )rA   r   r   r   r2   t   rE   )Zcommon_constraintsr;   r:   r   r*   )Zconditions_nonfalser:   r.   r:      r0   c                    s    r| |fS | S r1   r   )r   infosrF   r   r   r2      r3   )r   r   ZOneZZeror   r   ZCustomConstraintr   r   r   r"   r   r4   r#   )
r:   r;   r=   r>   r?   r@   rA   r7   Zdiscgr   rF   r   r9   h   s@   B*6(068Lr9   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   )Za1Za2r   r   r   test_matchpy_object_pickle   s   rO   ) rL   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   rO   r   r   r   r   <module>   s"    (	*