U
    ZÊ¹j(  ã                   @   sÐ   d dl mZmZmZmZmZ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mZ d dlmZ d dlmZ d	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Z dS )é    )ÚpurestrÚstyleofÚ	attrprintÚdotnodeÚdotedgesÚdotprint)ÚBasic)ÚExpr)ÚFloatÚInteger)ÚS)ÚSymbolÚsymbols)Úsrepr)Úxc                   C   sœ   t tdƒƒdkst‚t ttdƒtdƒƒƒdks2t‚t tdƒƒdksFt‚t tdƒdd�d	ks^t‚t ttdƒtdƒƒdd�d
ks€t‚t tdƒdd�dks˜t‚d S )Nr   úSymbol('x')é   é   úBasic(Integer(1), Integer(2))úFloat('2.0', precision=53)T)Z	with_args)r   © )r   )z
Integer(1)ú
Integer(2))r   r   )r   r   ÚAssertionErrorr   r   r
   r   r   r   ú\/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/printing/tests/test_dot.pyÚtest_purestr   s    ÿÿr   c                  C   sZ   t dddœftddifg} tt tdƒƒ| ƒdddœks:t‚ttd | ƒdddœksVt‚d S )NÚblueÚellipse©ÚcolorÚshaper   Úblackr   )r   r	   r   r   r   r   )Ústylesr   r   r   Útest_styleof   s
    
ÿ r"   c                   C   s   t dddœƒdkst‚d S )Nr   r   r   z!"color"="blue", "shape"="ellipse")r   r   r   r   r   r   Útest_attrprint    s    ÿr#   c                   C   sx   t tdd�dkst‚t td dd�dks<tt td dd�ƒ‚t ttd  dd�dksXt‚t ttd  dd�d	kstt‚d S )
NF©Úrepeatz@"Symbol('x')" ["color"="black", "label"="x", "shape"="ellipse"];r   zS"Add(Integer(2), Symbol('x'))" ["color"="black", "label"="Add", "shape"="ellipse"];r   ze"Add(Symbol('x'), Pow(Symbol('x'), Integer(2)))" ["color"="black", "label"="Add", "shape"="ellipse"];Tzh"Add(Symbol('x'), Pow(Symbol('x'), Integer(2)))_()" ["color"="black", "label"="Add", "shape"="ellipse"];)r   r   r   r   r   r   r   Útest_dotnode$   s    
ÿÿýÿÿr&   c                   C   sD   t ttd dd�ƒddgks t‚t ttd dd�ƒddgks@t‚d S )	Nr   Fr$   z/"Add(Integer(2), Symbol('x'))" -> "Integer(2)";z0"Add(Integer(2), Symbol('x'))" -> "Symbol('x')";Tz7"Add(Integer(2), Symbol('x'))_()" -> "Integer(2)_(0,)";z8"Add(Integer(2), Symbol('x'))_()" -> "Symbol('x')_(1,)";)Úsortedr   r   r   r   r   r   r   Útest_dotedges4   s    þ
þr(   c                      sÚ  t td dd�‰ t‡ fdd„ttd dd�D ƒƒs6t‚t‡ fdd„dd„ ttdƒtd fD ƒD ƒƒsht‚d	ˆ kstt‚t ttd  dd�‰ t‡ fd
d„tttd  dd�D ƒƒs²t‚t‡ fdd„dd„ ttdƒtd fD ƒD ƒƒsät‚d	ˆ ksðt‚t ttd  dd�‰ t‡ fdd„tttd  dd�D ƒƒ�s0t‚t‡ fdd„dd„ ttd  fD ƒD ƒƒ�s`t‚t tt dd�‰ t‡ fdd„ttt dd�D ƒƒ�s˜t‚t‡ fdd„ttdd�ttdd�fD ƒƒ�sÈt‚d	ˆ k�sÖt‚d S )Nr   Fr$   c                 3   s   | ]}|ˆ kV  qd S ©Nr   ©Ú.0Úe©Útextr   r   Ú	<genexpr>@   s     z test_dotprint.<locals>.<genexpr>c                 3   s   | ]}|ˆ kV  qd S r)   r   ©r+   Únr-   r   r   r/   A   s    c                 S   s   g | ]}t |d d�‘qS ©Fr$   ©r   ©r+   Úexprr   r   r   Ú
<listcomp>B   s   ÿz!test_dotprint.<locals>.<listcomp>Zdigraphc                 3   s   | ]}|ˆ kV  qd S r)   r   r*   r-   r   r   r/   G   s     c                 3   s   | ]}|ˆ kV  qd S r)   r   r0   r-   r   r   r/   H   s    c                 S   s   g | ]}t |d d�‘qS r2   r3   r4   r   r   r   r6   I   s   ÿTc                 3   s   | ]}|ˆ kV  qd S r)   r   r*   r-   r   r   r/   N   s     c                 3   s   | ]}|ˆ kV  qd S r)   r   r0   r-   r   r   r/   O   s    c                 S   s   g | ]}t |d d�‘qS )r   ©Úposr3   r4   r   r   r   r6   P   s   ÿc                 3   s   | ]}|ˆ kV  qd S r)   r   r*   r-   r   r   r/   T   s     c                 3   s   | ]}|ˆ kV  qd S r)   r   r0   r-   r   r   r/   U   s    )r   r7   )r   )r   r   Úallr   r   r   r   r   r   r-   r   Útest_dotprint>   s:    &ÿÿ*ÿÿ,ÿÿ(ÿr:   c                  C   s\   t dt d dd�} tdt d ƒ| ks,t‚ttƒ| ks<t‚t dt d ƒ} d| ksXt‚d S )Né   r   r   )Údepthr<   )r   r   r   r   r-   r   r   r   Útest_dotprint_depthY   s
    r=   c                  C   s0   ddl m}  tdƒ}t| d||ƒƒdks,t‚d S )Nr   )ÚMatrixSymbolr1   ÚXaŸ  digraph{

# Graph style
"ordering"="out"
"rankdir"="TD"

#########
# Nodes #
#########

"MatrixSymbol(Str('X'), Symbol('n'), Symbol('n'))_()" ["color"="black", "label"="MatrixSymbol", "shape"="ellipse"];
"Str('X')_(0,)" ["color"="blue", "label"="X", "shape"="ellipse"];
"Symbol('n')_(1,)" ["color"="black", "label"="n", "shape"="ellipse"];
"Symbol('n')_(2,)" ["color"="black", "label"="n", "shape"="ellipse"];

#########
# Edges #
#########

"MatrixSymbol(Str('X'), Symbol('n'), Symbol('n'))_()" -> "Str('X')_(0,)";
"MatrixSymbol(Str('X'), Symbol('n'), Symbol('n'))_()" -> "Symbol('n')_(1,)";
"MatrixSymbol(Str('X'), Symbol('n'), Symbol('n'))_()" -> "Symbol('n')_(2,)";
})Z"sympy.matrices.expressions.matexprr>   r   r   r   )r>   r1   r   r   r   Útest_Matrix_and_non_basics`   s
    ÿr@   c                  C   s,   t td td�} d| kst‚d| ks(t‚d S )Nr   )Z	labelfuncr   r   )r   r   r   r   r-   r   r   r   Útest_labelfunc}   s    rA   c                  C   sL   t ddd�\} }t| | ƒt||  ƒks,t‚t| | ƒt||  ƒksHt‚d S )Nzx yF)Zcommutative)r   r   r   )r   Úyr   r   r   Útest_commutativeƒ   s    rC   N)!Zsympy.printing.dotr   r   r   r   r   r   Zsympy.core.basicr   Zsympy.core.exprr	   Zsympy.core.numbersr
   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Zsympy.printing.reprr   Z	sympy.abcr   r   r"   r#   r&   r(   r:   r=   r@   rA   rC   r   r   r   r   Ú<module>   s"    
