o
    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   matcher r   `/var/www/vscode/kcb/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
   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       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   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   rA   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 r3   hasr$   )rD   r   r   r   r4   r       z(_perform_test_replacer.<locals>.<lambda>c                 S   rG   r3   rH   )rE   r   r   r   r4   s   rJ   c                 S   rG   r3   rH   )rF   r   r   r   r4   t   rJ   )common_constraintsr@   r?   r   r,   )conditions_nonfalser?   r0   r?      r2   c                    s    r| |fS | S r3   r   )r   infosrM   r   r   r4      r5   )r   r   OneZeror   r   CustomConstraintr   r   r   r$   r   r6   r%   )
r?   r@   rB   rC   rD   rE   rF   r<   discgr   rM   r   r>   h   s@   B*6(068Lr>   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   r\   ) rW   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=   rA   r>   r\   r   r   r   r   <module>   s"    (	*