
    oVhl                     v    d dl mZmZ d dlmZmZmZmZmZm	Z	 d dl
mZ d Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zy)    )_GrowableGridArrowStringDescription)DiagramGridObjectNamedMorphismDiagramXypicDiagramDrawerxypic_draw_diagram)	FiniteSetc                     t        dd      } | j                  dk(  sJ | j                  dk(  sJ | d   J | d   J d| d<   d| d<   | d   dk(  sJ | d   dk(  sJ | j                          | j                  dk(  sJ | j                  dk(  sJ | d   dk(  sJ | d   dk(  sJ | d   J | j	                          | j                  dk(  sJ | j                  dk(  sJ | d   dk(  sJ | d   dk(  sJ | d   J | d   J | d	   J | d
   J t        dd      } d| d<   d| d<   | j                          | j                  dk(  sJ | j                  dk(  sJ | d   J | d   dk(  sJ | d   dk(  sJ | j                          | j                  dk(  sJ | j                  dk(  sJ | d   J | d   J | d   J | d   J | d	   dk(  sJ | d
   dk(  sJ y )N      r   r   r   r   two   r   r   r   r   r   r   r   r   )r   widthheight
append_rowappend_columnprepend_rowprepend_column)grids    S/home/dcms/DCMS/lib/python3.12/site-packages/sympy/categories/tests/test_drawing.pytest_GrowableGridr      s   AD ::??;;! :: DJDJ:??: 	OO::??;;!:??:: 	::??;;!:??:::::ADDJDJ 	::??;;!::??: 	::??;;!:::::??:    c                  &   t        d      } t        d      }t        d      }t        d      }t        d      }t        | |d      }t        ||d      }t        || d      }t        ||d	      }t        |g      }	t        |	      }
|
j                  d
k(  sJ |
j
                  dk(  sJ |
d   | k(  sJ |
d   |k(  sJ |
j                  |t               ik(  sJ t        ||g||z  di      }	t        |	      }
|
j                  d
k(  sJ |
j
                  d
k(  sJ |
d   | k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d   J |
j                  |t               |t               ||z  t        d      ik(  sJ t        | | d      }t        |||g      }	t        |	      }
|
j                  d
k(  sJ |
j
                  d
k(  sJ |
d   | k(  sJ |
d   |k(  sJ |
d   J |
d   |k(  sJ |
j                  |t               |t               |t               ik(  sJ t        ||||g      }	t        |	      }
|
j                  dk(  sJ |
j
                  d
k(  sJ |
d   | k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d   J |
d   |k(  sJ |
d   J |
j                  |t               |t               |t               |t               ik(  sJ t        |
      dk(  sJ t        | |d      }t        ||d      }t        ||d      }t        ||d	      }t        ||||g      }	t        |	      }
|
j                  dk(  sJ |
j
                  dk(  sJ |
d   | k(  sJ |
d   |k(  sJ |
d   J |
d   J |
d   |k(  sJ |
d   |k(  sJ |
d   J |
d   J |
d   |k(  sJ |
j                  |t               |t               |t               |t               ik(  sJ t        | |d      }t        ||d      }t        | |d      }t        ||d	      }t        ||||g      }	t        |	      }
|
j                  d
k(  sJ |
j
                  d
k(  sJ |
d   | k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
j                  |t               |t               |t               |t               ik(  sJ t        d      } t        d      }t        d      }t        d      }t        d      }t        d      }t        d      }t        d      }t        d      }t        d      }t        | |d      }t        ||d      }t        ||d      }t        ||d      }t        | |d      }t        ||d	      }t        ||d       }t        ||d!      }t        | |d"      }t        ||d#      }t        ||d$      }t        ||d%      }t        ||d&      }t        |||||||||||||g      }	t        |	      }
|
j                  dk(  sJ |
j
                  d'k(  sJ |
d   J |
d   | k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d(   J |
d)   |k(  sJ |
d*   |k(  sJ i }|||||||||||||fD ]  }t               ||<    |
j                  |k(  sJ t        d+      }t        d,      }t        d-      }t        d.      }t        d/      }t        d0      } t        d1      }!t        d2      }"t        ||d3      }#t        ||d4      }$t        ||d5      }%t        ||d5      }&t        || d6      }'t        ||!d7      }(t        | |"d8      })t        |!|"d9      }*t        ||d:      }+t        || d;      },t        ||!d<      }-t        ||"d<      }.t        |#|$|%|&|'|(|)|*|+|,|-|.g      }	t        |	      }
|
j                  d'k(  sJ |
j
                  dk(  sJ |
d   J |
d   |k(  sJ |
d   | k(  sJ |
d=   J |
d   J |
d   |k(  sJ |
d   |k(  sJ |
d>   J |
d   |!k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d?   |"k(  sJ i }|#|$|%|&|'|(|)|*|+|,|-|.fD ]  }t               ||<    |
j                  |k(  sJ t        d      } t        d      }t        d      }t        d      }t        d      }t        | |d      }t        ||d      }t        ||d      }t        ||d      }t        ||||g      }	t        |	d@A      }
|
j                  dBk(  sJ |
j
                  dk(  sJ |
d   | k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d=   |k(  sJ |
dC   |k(  sJ |
j                  |t               |t               |t               |t               ik(  sJ t        |	d@dDE      }
|
j                  dk(  sJ |
j
                  dBk(  sJ |
d   | k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d(   |k(  sJ |
dF   |k(  sJ |
j                  |t               |t               |t               |t               ik(  sJ t        | |dG      }/t        | |dH      }0t        ||dI      }1t        ||dJ      }2t        ||d3      }#t        ||d4      }$t        || d      }t        |/|0|1|2|#|$g|di      }	t        |	      }
|
j                  dk(  sJ |
j
                  d
k(  sJ |
d   | k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d   J |t        d      i}|/|0|1|2|#|$fD ]  }t               ||<    |
j                  |k(  sJ t        |	d@A      }
|
j                  dBk(  sJ |
j
                  dk(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d   | k(  sJ |
d=   |k(  sJ |
dC   |k(  sJ |
j                  |k(  sJ t        |	t        |t        | |||            K      }
|
j                  dk(  sJ |
j
                  d
k(  sJ |
d   |k(  sJ |
d   | k(  sJ |
d   |k(  sJ |
d   J |
d   |k(  sJ |
d   |k(  sJ |
j                  |k(  sJ t        d      } t        d      }t        d      }t        d      }t        d      }t        d      }t        d      }t        d      }t        d      }t        d      }t        | |d      }t        ||d      }t        ||d      }t        ||d      }t        ||d      }t        ||d	      }t        ||d       }t        ||d!      }t        | |d"      }t        ||d#      }t        ||d$      }t        ||d%      }t        ||d&      }t        |||||||||||||g      }	t        |	      }
|
j                  dBk(  sJ |
j
                  dk(  sJ |
d   J |
d   | k(  sJ |
d   |k(  sJ |
d=   J |
dC   J |
d   |k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d>   |k(  sJ |
dL   J |
d   |k(  sJ |
d   |k(  sJ |
d   J |
d?   |k(  sJ |
dM   |k(  sJ i }|||||||||||||fD ]  }t               ||<    |
j                  |k(  sJ t        |	t        t        | ||||      t        |||||                  }
|
j                  dNk(  sJ |
j
                  dk(  sJ |
d   | k(  sJ |
d   |k(  sJ |
d   J |
d=   |k(  sJ |
dC   |k(  sJ |
dO   J |
d   J |
d   |k(  sJ |
d   |k(  sJ |
d>   J |
dL   |k(  sJ |
dP   |k(  sJ |
d   J |
d   J |
d   |k(  sJ |
d?   J |
dM   J |
dQ   |k(  sJ |
j                  |k(  sJ t        |	| ||||f|||||hg      }
|
j                  dNk(  sJ |
j
                  dk(  sJ |
d   | k(  sJ |
d   |k(  sJ |
d   J |
d=   |k(  sJ |
dC   |k(  sJ |
dO   J |
d   J |
d   |k(  sJ |
d   |k(  sJ |
d>   J |
dL   |k(  sJ |
dP   |k(  sJ |
d   J |
d   J |
d   |k(  sJ |
d?   J |
dM   J |
dQ   |k(  sJ |
j                  |k(  sJ t        |	t        | ||||      d@dDdEt        |||||      d@dDdEidDR      }
|
j                  dBk(  sJ |
j
                  d
k(  sJ |
d   | k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d=   |k(  sJ |
dC   |k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d>   |k(  sJ |
dL   |k(  sJ |
j                  |k(  sJ t        | |d      }t        ||d      }t        ||d      }3t        ||d      }4t        |||3|4g||z  d|4|3z  di      }	t        |	      }
|
j                  d'k(  sJ |
j
                  d
k(  sJ |
d   | k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d=   |k(  sJ |
d   |k(  sJ |
d   J |
d   |k(  sJ |
d>   J |
j                  |t               |t               |3t               |4t               ||z  t        d      |4|3z  t        d      ik(  sJ t        | |d      }t        ||d      }t        ||g      }	t        |	      }
|
j                  d'k(  sJ |
j
                  dk(  sJ |
d   | k(  sJ |
d   |k(  sJ |
d   |k(  sJ |
d=   |k(  sJ |
j                  |t               |t               ik(  sJ t        | | d      }t        |g      }	t        |	      }
|
j                  dk(  sJ |
j
                  dk(  sJ |
d   | k(  sJ t        ||d      }t        ||g      }	t        |	      }
|
j                  d
k(  sJ |
j
                  dk(  sJ |
d   | k(  sJ |
d   |k(  sJ y )SNABCDEfghkr   r   r   r   uniquer   r   l_Ar   r   r   r   r   zD[[Object("A"), Object("B"), Object("D")], [None, Object("C"), None]]r   r   r   r   A'B'C'D'E'ijlmopqrs   )r   r   )r   r   )r   r   A1A2A3A4A5A6A7A8f1f2f3f5f6f7f8f9f10f11r   r   r   r   r   r   
sequentiallayout   r   r>   TrV   	transpose)r>   r   m1m2s1s2)groupsr   r>   r   r>      )r   rW   )r   rW   )r   rW   rZ   )	r   r   r   r   r   r   	morphismsr   str)5r"   r#   r$   r%   r&   r'   r(   r)   r*   dr   r,   A_B_C_D_E_r5   r6   r7   r8   r9   r:   r;   r<   r=   rd   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   f4rJ   rK   rL   rM   rN   rO   rP   f12r[   r\   r]   r^   f_g_s5                                                        r   test_DiagramGridrp   K   sp   sAsAsAsAsAaC AaC AaC AaC A 	Aq>D::??;;!:??:??>>a---- 	AQ)*Aq>D::??;;!:??:??:??:>>aa!eYx%8: : : : 1e
$CAsAq>D::??;;!:??:??::??>>aac9;OOOO 	Aq!Aq>D::??;;!:??:??:??::??:>>aaa. . . . t9 % % % % 	aC AaC AaC AaC AAq!Aq>D::??;;!:??:??:::??:??:::??>>aaa. . . . 	aC AaC AaC AaC AAq!Aq>D::??;;!:??:??:??:??>>aaa. . . . 	sAsAsAsAsA	B	B	B	B	BaC AaC AaC AaC A 	aC AaC AaC AaC AaS!AaS!AaS!AaS!AaS!AAq!Q1aAq!Q78Aq>D::??;;!::??::??:??:::??:::??:IAq!Q1aAq!4 # {	!#>>Y&&& 
B	B	B	B	B	B	B	B 
r2t	$B	r2t	$B	r2t	$B	r2t	$B 
r2t	$B	r2t	$B	r2t	$B	r2t	$B 
r2t	$B
B
&C
B
&C
B
&CRRRRS#sCDAq>D::??;;!::::::::::::I"b"b"b"b#sC@ # {	!#>>Y&&& 	sAsAsAsAsAaC AaC AaC AaC AAq!Aq.D::??;;!:??:??:??:??:??>>aaa. . . . q>D::??;;!:??:??:??:??:??>>aaa. . . . 
q!T	"B	q!T	"B	q!T	"B	q!T	"B	q!T	"B	q!T	"BaC ARRR(1h-8Aq>D::??;;!:??:??:??:??:??:Ih'(I"b"b"% # {	!#>>Y&&& q.D::??;;!:??:??:??:??:??>>Y&&& q1i1a.C!DED::??;;!:??:??:??::??:??>>Y&&& 	sAsAsAsAsA	B	B	B	B	BaC AaC AaC AaC Ab"c"Ab"c"Ab"c"Ab"c"AaS!AaS!AaS!AaS!AaS!AAq!Q1aAq!Q78Aq>D::??;;!::??::::??:??::::??:??:::IAq!Q1aAq!4 # {	!#>>Y&&& q)!Q1a )BBB"?A BD ::??;;!:??:??::::::??:??::::::??:::>>Y&&& qAq!Q?RRR,@ABD::??;;!:??:??::::::??:??::::::??:::>>Y&&& q!Q1a \04#6"b"b"%,59(;<
 D ::??;;!:??:??:??:??:??:::::>>Y&&& 	aC AaC A	r2s	#B	r2s	#BAr2Q"r'8 DEAq>D::??;;!:??:??:::??:::>>aab)+ )+q1ui6I 2gy':< < < <
 	aC AaC AAAq>D::??;;!:??:??:??:??>>aa==== 	aC AAq>D::??;;!:?? 	aC AAAq>D::??;;!:??:??r    c                     t        d      } t        d      }t        d      }t        d      }t        d      }t        d      }t        d      }t        d      }t        d	      }t        d
      }	t        d      }
t        | |d      }t        | |d      }t        | |d      }t        | |d      }t        | |d      }t        | |d      }t        | |d      }t        | |	d      }t        | |
d      }t        | |d      }t        ||||||||||g
      }t        |      }|j                  dk(  sJ |j
                  dk(  sJ |d   |k(  sJ |d   |k(  sJ |d   |k(  sJ |d   |
k(  sJ |d   |k(  sJ |d   |k(  sJ |d   | k(  sJ |d   |k(  sJ |d    J |d!   J |d"   |	k(  sJ |d#   |k(  sJ |d$   |k(  sJ |d%   J |d&   J i }||||||||||f
D ]  }t               ||<    |j                  |k(  sJ y )'Nr"   r#   r$   r%   r&   Fr0   r1   r2   r3   r4   rG   rH   rI   rl   rJ   rK   rL   rM   rN   rO   rW   r   r   r   r-   rQ   rX   r   r   r.   rR   r`   r   r   r/   rS   ra   )r   r   r   r   r   r   r   rd   )r"   r#   r$   r%   r&   rr   rg   rh   ri   rj   rk   rG   rH   rI   rl   rJ   rK   rL   rM   rN   rO   rf   r   rd   r'   s                            r   test_DiagramGrid_pseudopodrs   /  s}    	sAsAsAsAsAsA	B	B	B	B	B	q!T	"B	q!T	"B	q!T	"B	q!T	"B	q"d	#B	q"d	#B	q"d	#B	q"d	#B	q"d	#B
1e
$CRRRRS9:Aq>D::??;;!:??:??:::??:??:??:::::??:::I"b"b"b"b#6 # {	!#>>Y&&&r    c                  P   t        ddd dddddd	      } t        |       dk(  sJ t        ddddddddd	      } t        |       dk(  sJ t        dd	ddddddd	      } t        |       d
k(  sJ t        ddddddddd	      } t        |       dk(  sJ t        ddddddddd	      } t        |       dk(  sJ t        ddddddddd	      } t        |       dk(  sJ t        ddddddddd	      } d| _        t        |       dk(  sJ t        ddddddddd	      } d| _        t        |       dk(  sJ y )Ncm rf   r<   _r'   z\ar[dr]_{f}   ^z\ar@/^12cm/[dr]_{f}uz\ar@(r,u)[dr]_{f}{-->}z\ar@(r,u)@{-->}[dr]_{f}z\ar@/_12cm/@{-->}[dr]_{f})r   re   arrow_styleastrs    r   test_ArrowStringDescriptionr   c  sw   !$D"b#sCMDt9&&&!$BBS#sKDt9&&&!$RRc3LDt9....!$BRc3LDt9&&&!$BS#sCMDt9,,,,!$BS#sCMDt9,,,,!$BS#sCMDDt92222!$RRc3LDDt94444r    c                     t        d      } t        d      }t        d      }t        d      }t        d      }t        | |d      }t        ||d      }t        ||d      }t        ||d	      }t        ||||g      }	t        |	d
      }
t	               }|j                  |	|
      dk(  sJ t        |	d
d      }
t	               }|j                  |	|
      dk(  sJ y )Nr"   r#   r$   r%   r&   r'   r(   r)   r5   rT   rU   zL\xymatrix{
A \ar[r]^{f} & B \ar[r]^{g} & C \ar[r]^{h} & D \ar[r]^{i} & E 
}
TrY   zP\xymatrix{
A \ar[d]^{f} \\
B \ar[d]^{g} \\
C \ar[d]^{h} \\
D \ar[d]^{i} \\
E 
}
r   r   r   r   r	   drawr"   r#   r$   r%   r&   r'   r(   r)   r5   rf   r   drawers               r   test_XypicDiagramDrawer_liner     s    sAsAsAsAsAaC AaC AaC AaC AAq!Aq.D!F;;q$ $   
 q>D!F;;q$ $   r    c                  D   t        d      } t        d      }t        d      }t        | |d      }t        ||d      }t        ||g||z  di      }t        |      }t	               }|j                  ||      dk(  sJ t        |d	      }t	               }|j                  ||      d
k(  sJ |j                  |||g      dk(  sJ d }||j                  d<   |j                  ||      dk(  sJ d }	|	|_        |j                  ||      dk(  sJ t        || d      }
t        | |d      }t        ||d      }t        ||d      }t        ||
||||g|
|z  d||z  di      }t        |d	      }t	               }|j                  |||
|z  |z  |z  ||z  |
z  |z  g      dk(  sJ y )Nr"   r#   r$   r'   r(   r+   zD\xymatrix{
A \ar[d]_{g\circ f} \ar[r]^{f} & B \ar[ld]^{g} \\
C & 
}
Trc   zD\xymatrix{
A \ar[r]^{g\circ f} \ar[d]_{f} & C \\
B \ar[ru]_{g} & 
}
)maskedz8\xymatrix{
A \ar[r]^{g\circ f} \ar[d]_{f} & C \\
B & 
}
c                 :    d| j                   z   | _         d| _        y )Nz	\exists !r{   )labelr|   r}   s    r   	formatterz3test_XypicDiagramDrawer_triangle.<locals>.formatter  s    !DJJ.
"r    zS\xymatrix{
A \ar@{-->}[r]^{\exists !g\circ f} \ar[d]_{f} & C \\
B \ar[ru]_{g} & 
}
c                     d| _         y )Nz(0.45))label_displacementr}   s    r   default_formatterz;test_XypicDiagramDrawer_triangle.<locals>.default_formatter  s
    "*r    ze\xymatrix{
A \ar@{-->}[r]^(0.45){\exists !g\circ f} \ar[d]_(0.45){f} & C \\
B \ar[ru]_(0.45){g} & 
}
rG   rH   g1g2z\xymatrix{
A \ar[r]^{g_{2}\circ f_{2}} \ar[d]_{f} \ar@/^3mm/[d]^{f_{2}} & C \ar@/^3mm/[l]^{f_{1}\circ g_{1}} \ar@/^3mm/[ld]^{g_{1}} \\
B \ar@/^3mm/[u]^{f_{1}} \ar[ru]_{g} \ar@/^3mm/[ru]^{g_{2}} & 
}
)r   r   r   r   r	   r   arrow_formattersdefault_arrow_formatter)r"   r#   r$   r'   r(   rf   r   r   r   r   rG   rH   r   r   s                 r    test_XypicDiagramDrawer_triangler     s   sAsAsAaC AaC AAQ)*Aq>D!F;;q$ $    qD)D!F;;q$ $    ;;q$s;+ 0   # )2FH%;;q$ $   + &7F";;q$ $    
q!T	"B	q!T	"B	q!T	"B	q!T	"BBAr2&b(BGX(NOAqD)D!F;;q$2bRU2Xb['A;B	  r    c                     t        d      } t        d      }t        d      }t        d      }t        d      }t        d      }t        d      }t        d      }t        | |d	      }t        | |d
      }	t        ||d      }
t        ||d      }t        ||d      }t        ||d      }t        ||d      }t        ||d      }t        | |d      }t        ||d      }t        ||d      }t        ||d      }t        ||	|
|||||||||g      }t        |      }t	               }|j                  ||      dk(  sJ t        |d      }t	               }|j                  ||      dk(  sJ y )Nr?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   a  \xymatrix{
& A_{5} \ar[r]^{f_{5}} \ar[ldd]_{f_{6}} & A_{6} \ar[rdd]^{f_{7}} & \\
& A_{1} \ar[r]^{f_{1}} \ar[d]^{f_{2}} \ar[u]^{f_{9}} & A_{2} \ar[d]^{f_{3}} \ar[u]_{f_{10}} & \\
A_{7} \ar@/_3mm/[rrr]_{f_{8}} & A_{3} \ar[r]^{f_{3}} \ar[l]_{f_{11}} & A_{4} \ar[r]^{f_{11}} & A_{8} 
}
Trc   a  \xymatrix{
& & A_{7} \ar@/^3mm/[ddd]^{f_{8}} \\
A_{5} \ar[d]_{f_{5}} \ar[rru]^{f_{6}} & A_{1} \ar[d]^{f_{1}} \ar[r]^{f_{2}} \ar[l]^{f_{9}} & A_{3} \ar[d]_{f_{3}} \ar[u]^{f_{11}} \\
A_{6} \ar[rrd]_{f_{7}} & A_{2} \ar[r]^{f_{3}} \ar[l]^{f_{10}} & A_{4} \ar[d]_{f_{11}} \\
& & A_{8} 
}
r   )r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rl   rJ   rK   rL   rM   rN   rO   rP   rm   rf   r   r   s                          r   test_XypicDiagramDrawer_cuber     s   	B	B	B	B	B	B	B	B 
r2t	$B	r2t	$B	r2t	$B	r2t	$B 
r2t	$B	r2t	$B	r2t	$B	r2t	$B 
r2t	$B
B
&C
B
&C
B
&CRRRRS#sCDAq>D!F;;q$ $    qD)D!F;;q$ $   r    c                  F   t        d      } t        d      }t        d      }t        d      }t        | |d      }t        ||d      }t        || d      }t        ||d      }t        ||||g      }t        |      }	t	               }
|
j                  ||	      d	k(  sJ t        |d
      }	t	               }
|
j                  ||	      dk(  sJ |
j                  ||	d      dk(  sJ t        || d      }t        | |d      }t        ||d      }t        ||||||g      }t        |      }	t	               }
|
j                  ||	      dk(  sJ t        |d
      }	t	               }
|
j                  ||	      dk(  sJ t        | | d      }t        ||d      }t        ||d      }t        |||||||||g	      }t        |      }	t	               }
|
j                  ||	      dk(  sJ t        |d
      }	t	               }
|
j                  ||	      dk(  sJ t        | | d      }t        ||d      }t        ||d      }t        ||||||||||||g      }t        |      }	t	               }
|
j                  ||	      dk(  sJ t        |d
      }	t	               }
|
j                  ||	      dk(  sJ y )Nr"   r#   r$   r%   r'   r(   r)   r*   zU\xymatrix{
A \ar[r]_{f} & B \ar[d]^{g} & D \ar[l]^{k} \ar@/_3mm/[ll]_{h} \\
& C & 
}
Trc   zV\xymatrix{
A \ar[d]^{f} & \\
B \ar[r]^{g} & C \\
D \ar[u]_{k} \ar@/^3mm/[uu]^{h} & 
}
z@+1cm@dr)diagram_formatz^\xymatrix@+1cm@dr{
A \ar[d]^{f} & \\
B \ar[r]^{g} & C \\
D \ar[u]_{k} \ar@/^3mm/[uu]^{h} & 
}
h1h2z\xymatrix{
A \ar[r]_{f} \ar@/^3mm/[rr]^{h_{2}} & B \ar[d]^{g} & D \ar[l]^{k} \ar@/_7mm/[ll]_{h} \ar@/_11mm/[ll]_{h_{1}} \\
& C & 
}
z\xymatrix{
A \ar[d]^{f} \ar@/_3mm/[dd]_{h_{2}} & \\
B \ar[r]^{g} & C \\
D \ar[u]_{k} \ar@/^7mm/[uu]^{h} \ar@/^11mm/[uu]^{h_{1}} & 
}
r,   l_Dl_Cz\xymatrix{
A \ar[r]_{f} \ar@/^3mm/[rr]^{h_{2}} \ar@(u,l)[]^{l_{A}} & B \ar[d]^{g} & D \ar[l]^{k} \ar@/_7mm/[ll]_{h} \ar@/_11mm/[ll]_{h_{1}} \ar@(r,u)[]^{l_{D}} \\
& C \ar@(l,d)[]^{l_{C}} & 
}
z\xymatrix{
A \ar[d]^{f} \ar@/_3mm/[dd]_{h_{2}} \ar@(r,u)[]^{l_{A}} & \\
B \ar[r]^{g} & C \ar@(r,u)[]^{l_{C}} \\
D \ar[u]_{k} \ar@/^7mm/[uu]^{h} \ar@/^11mm/[uu]^{h_{1}} \ar@(l,d)[]^{l_{D}} & 
}
n_An_Dn_Ca  \xymatrix{
A \ar[r]_{f} \ar@/^3mm/[rr]^{h_{2}} \ar@(u,l)[]^{l_{A}} \ar@/^3mm/@(l,d)[]^{n_{A}} & B \ar[d]^{g} & D \ar[l]^{k} \ar@/_7mm/[ll]_{h} \ar@/_11mm/[ll]_{h_{1}} \ar@(r,u)[]^{l_{D}} \ar@/^3mm/@(d,r)[]^{n_{D}} \\
& C \ar@(l,d)[]^{l_{C}} \ar@/^3mm/@(d,r)[]^{n_{C}} & 
}
a  \xymatrix{
A \ar[d]^{f} \ar@/_3mm/[dd]_{h_{2}} \ar@(r,u)[]^{l_{A}} \ar@/^3mm/@(u,l)[]^{n_{A}} & \\
B \ar[r]^{g} & C \ar@(r,u)[]^{l_{C}} \ar@/^3mm/@(d,r)[]^{n_{C}} \\
D \ar[u]_{k} \ar@/^7mm/[uu]^{h} \ar@/^11mm/[uu]^{h_{1}} \ar@(l,d)[]^{l_{D}} \ar@/^3mm/@(d,r)[]^{n_{D}} & 
}
r   )r"   r#   r$   r%   r'   r(   r)   r*   rf   r   r   r   r   r,   r   r   l_A_l_D_l_C_s                      r   (test_XypicDiagramDrawer_curved_and_loopsr     s   sAsAsAsAaC AaC AaC AaC AAq!Aq>D!F;;q$ $    qD)D!F;;q$ $    ;;q$z;:	   
q!T	"B	q!T	"BaC AAq!R$%Aq>D!F;;q$ $    qD)D!F;;q$ $    1e
$C
1e
$C
1e
$CAq!RS#s34Aq>D!F;;q$ $    qD)D!F;;q$ $    Au%DAu%DAu%DAq!RS#sD$EFAq>D!F;;q$ $    qD)D!F;;q$ $   r    c                  j   t        d      } t        d      }t        d      }t        d      }t        d      }t        | |d      }t        ||d      }t        ||d      }t        ||d	      }t        ||||g      }	t        |	d
      }
t	               }|j                  |	|
      t        |	d
      k(  sJ y )Nr"   r#   r$   r%   r&   r'   r(   r)   r5   rT   rU   )r   r   r   r   r	   r   r
   r   s               r   test_xypic_draw_diagramr     s    sAsAsAsAsAaC AaC AaC AaC AAq!Aq.D!F;;q$#5a#MMMMr    N) sympy.categories.diagram_drawingr   r   sympy.categoriesr   r   r   r   r	   r
   sympy.sets.setsr   r   rp   rs   r   r   r   r   r   r    r    r   <module>r      sO    RO O %AHaH1'h58>BJ4njZNr    