
    Qid                         d dl Z d dlZd dlmZ d dlmZ  ed          Zerd dlmZmZm	Z	 n' G d d          Z G d d	          Z G d
 d          Z	 G d de          Z
dS )    N)import_module)LaTeXParsingErrorlark)TransformerTokenTreec                       e Zd Zd ZdS )r   c                     d S N )selfargss     |/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/sympy/parsing/latex/lark/transformer.py	transformzTransformer.transform   s    D    N)__name__
__module____qualname__r   r   r   r   r   r      s#        	 	 	 	 	r   r   c                       e Zd ZdS )r   Nr   r   r   r   r   r   r   r              r   r   c                       e Zd ZdS )r   Nr   r   r   r   r   r      r   r   r   c                   L   e Zd ZdZej        Zej        j        j	        Z
d Zd Zd Zd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d  Z)d! Z*d" Z+d# Z,d$ Z-d% Z.d& Z/d' Z0d( Z1d) Z2d* Z3d+ Z4d, Z5d- Z6d. Z7d/ Z8d0 Z9d1 Z:d2 Z;d3 Z<d4 Z=d5 Z>d6 Z?d7 Z@d8 ZAd9 ZBd: ZCd; ZDd< ZEd= ZFd> ZGd? ZHd@ ZIdA ZJdB ZKdC ZLdD ZMdE ZNdF ZOdG ZPdH ZQdI ZRdJ ZSdK ZTdL ZUdM ZVdN ZWdO ZXdP ZYdQeZfdRZ[dS Z\dT Z]dU Z^dV Z_dW Z`dX ZadYS )ZTransformToSymPyExpra   Returns a SymPy expression that is generated by traversing the ``lark.Tree``
    passed to the ``.transform()`` function.

    Notes
    =====

    **This class is never supposed to be used directly.**

    In order to tweak the behavior of this class, it has to be subclassed and then after
    the required modifications are made, the name of the new class should be passed to
    the :py:class:`LarkLaTeXParser` class by using the ``transformer`` argument in the
    constructor.

    Parameters
    ==========

    visit_tokens : bool, optional
        For information about what this option does, see `here
        <https://lark-parser.readthedocs.io/en/latest/visitors.html#lark.visitors.Transformer>`_.

        Note that the option must be set to ``True`` for the default parser to work.
    c                     t           j        S r   )sympyoor   tokenss     r   	CMD_INFTYzTransformToSymPyExpr.CMD_INFTY5   s	    xr   c                 f    t          j        dd|dd                    }t          j        |          S )Nvar    )resubr   Symbol)r   r   variable_names      r   GREEK_SYMBOL_WITH_PRIMESz-TransformToSymPyExpr.GREEK_SYMBOL_WITH_PRIMES8   s/     ub&*55|M***r   c                     |j                             d          \  }}|                    d          r"t          j        |d|dd         d          S t          j        |d|d          S )N_{_{r$   })valuesplit
startswithr   r'   )r   r   baser&   s       r   !LATIN_SYMBOL_WITH_LATIN_SUBSCRIPTz6TransformToSymPyExpr.LATIN_SYMBOL_WITH_LATIN_SUBSCRIPT?   sq    L&&s++	c>># 	9<TTT3qt999 =>>><TTT333 7888r   c                    |j                             d          \  }}t          j        dd|dd                    }|                    d          r"t          j        |d|dd         d          S t          j        |d|d          S )	Nr+   r"   r#   r$   r,   r-   r.   r/   r0   r1   r%   r&   r2   r   r'   r   r   r3   r&   greek_letters        r   !GREEK_SYMBOL_WITH_LATIN_SUBSCRIPTz6TransformToSymPyExpr.GREEK_SYMBOL_WITH_LATIN_SUBSCRIPTF   s    L&&s++	cveRabb22>># 	A<\\\3qt999 EFFF<\\\333 ?@@@r   c                     |j                             d          \  }}|                    d          r|dd         }n
|dd          }t          j        dd|          }t          j        |d|d	          S )
Nr+   r,      r.   r$   r"   r#   r-   r/   )r0   r1   r2   r%   r&   r   r'   r7   s        r   !LATIN_SYMBOL_WITH_GREEK_SUBSCRIPTz6TransformToSymPyExpr.LATIN_SYMBOL_WITH_GREEK_SUBSCRIPTO   s{    L&&s++	c>># 	#qt9LLqrr7LveR66||||<===r   c                 ,   |j                             d          \  }}t          j        dd|dd                    }|                    d          r|dd         }n
|dd          }t          j        dd|          }t          j        |d|d	          S )
Nr+   r"   r#   r$   r,   r;   r.   r-   r/   r6   )r   r   r3   r&   
greek_base	greek_subs         r   !GREEK_SYMBOL_WITH_GREEK_SUBSCRIPTz6TransformToSymPyExpr.GREEK_SYMBOL_WITH_GREEK_SUBSCRIPTZ   s    L&&s++	cVE2tABBx00
>># 	 AbD	IIABBIF5"i00	|YYY?@@@r   c                     t          |          dk    rt          j        |d                   S t          |          dk    r#t          j        |d         |d         z             S d S )N   r;      )lenr   r'   r   s     r   multi_letter_symbolz(TransformToSymPyExpr.multi_letter_symbolf   s]    v;;!<q	***v;;!<q	F1I 5666 r   c                     |d         j         dk    rt          j        S d|d         v r*t          j        j                            |d                   S t          j        j                            |d                   S )Nr   CMD_IMAGINARY_UNIT.)typer   IcorenumbersFloatIntegerr   s     r   numberzTransformToSymPyExpr.numberl   sd    !9>1117N&):%++F1I666:%--fQi888r   c                     |d         S Nr   r   r   s     r   latex_stringz!TransformToSymPyExpr.latex_stringu       ayr   c                     |d         S Nr$   r   r   s     r   group_round_parenthesesz,TransformToSymPyExpr.group_round_parenthesesx   rS   r   c                     |d         S rU   r   r   s     r   group_square_bracketsz*TransformToSymPyExpr.group_square_brackets{   rS   r   c                     |d         S rU   r   r   s     r   group_curly_parenthesesz,TransformToSymPyExpr.group_curly_parentheses~   rS   r   c                 D    t          j        |d         |d                   S Nr   r;   )r   Eqr   s     r   eqzTransformToSymPyExpr.eq       xq	6!9---r   c                 D    t          j        |d         |d                   S r\   )r   Ner   s     r   nezTransformToSymPyExpr.ne   r_   r   c                 D    t          j        |d         |d                   S r\   )r   Ltr   s     r   ltzTransformToSymPyExpr.lt   r_   r   c                 D    t          j        |d         |d                   S r\   )r   Ler   s     r   ltezTransformToSymPyExpr.lte   r_   r   c                 D    t          j        |d         |d                   S r\   )r   Gtr   s     r   gtzTransformToSymPyExpr.gt   r_   r   c                 D    t          j        |d         |d                   S r\   )r   Ger   s     r   gtezTransformToSymPyExpr.gte   r_   r   c                 *   t          |          dk    r|d         S t          |          dk    rd|d         }|d         }|                     |          s|                     |          rt          j        ||          S t          j        ||          S d S )Nr;   r$      r   )rD   _obj_is_sympy_Matrixr   MatAddAddr   r   lhrhs       r   addzTransformToSymPyExpr.add   s    v;;!!9v;;!BB((,, ,0I0I"0M0M ,|B+++9R$$$ r   c                    t          |          dk    r5|d         }|                     |          rt          j        d|          S | S t          |          dk    rx|d         }|d         }|                     |          s|                     |          r(t          j        |t          j        d|                    S t          j        ||           S d S )Nr;   r$   r.   rp   r   )rD   rq   r   MatMulrr   rs   )r   r   xru   rv   s        r   r&   zTransformToSymPyExpr.sub   s    v;;!q	A((++ +|B***2Iv;;!BB((,, >0I0I"0M0M >|BR(<(<===9R"%%% r   c                     |d         }|d         }|                      |          s|                      |          rt          j        ||          S t          j        ||          S r\   )rq   r   ry   Mulrt   s       r   mulzTransformToSymPyExpr.mul   sc    AYAY$$R(( 	(D,E,Eb,I,I 	(<B'''yR   r   c                 F    |                      |d         |d                   S r\   )_handle_divisionr   s     r   divzTransformToSymPyExpr.div   s     $$VAYq	:::r   c                    ddl m}m} t          |d         |          r4t          |d         |          rddl m}  ||d         |d                   S |d         t          j        d          k    r|d         |d         fS t          |d         t                    r't          j        |d         |d         d                   S t          j	        |d         |d                   S )Nr   )BraKetr$   )OuterProductd)
sympy.physics.quantumr   r   
isinstancer   r   r'   tuple
Derivativer|   )r   r   r   r   r   s        r   adjacent_expressionsz)TransformToSymPyExpr.adjacent_expressions   s     	32222222fQi%% 
	3*VAY*D*D 
	3::::::<q	6!9555AY%,s++++!9fQi''q	5)) 	3#F1Ivay|<<<9VAYq	222r   c                    d }d }d }d }|d         }t          |          dk    r|d         }t          |          dk    r|d         }|                     |          r|t          j        d	          k    rt          j        |          S |t          j        d
          k    rt          j        |          S  ||          r3|j        }t          |          dz  dk    r|S t          j        |          S  ||          rC|j        }t          |          t          d          z  dz  dk    r|S t          j        |          S  ||          rE|j        }t          |          dz  dk    r|                                S t          j        |          S  ||          rU|j        }t          |          t          d          z  dz  dk    r|                                S t          j        |          S  ||          s! ||          s ||          s ||          rt          | d| d          t          j	        ||          S )Nc                 B    t          | t                    o
| j        dk    S )NPRIMESr   r   rI   rz   s    r   isprimez1TransformToSymPyExpr.superscript.<locals>.isprime   s    a''>AFh,>>r   c                 X    t          | t                    o| j        dk    p
| j        dk    S )NPRIMES_VIA_CMD	CMD_PRIMEr   r   s    r   
iscmdprimez4TransformToSymPyExpr.superscript.<locals>.iscmdprime   s5    a'' GQV7G-G .F01+0EGr   c                 B    t          | t                    o
| j        dk    S )NSTARSr   r   s    r   isstarz0TransformToSymPyExpr.superscript.<locals>.isstar   s    a''=AFg,==r   c                 X    t          | t                    o| j        dk    p
| j        dk    S )NSTARS_VIA_CMDCMD_ASTERISKr   r   s    r   	iscmdstarz3TransformToSymPyExpr.superscript.<locals>.iscmdstar   s4    a'' JQV-F .I01.0HJr   r   rp   r;   rC   THz\primez\astz with superscript  is not understood.)
rD   rq   r   r'   	Transposeadjointr0   doitr   Pow)r   r   r   r   r   r   r3   sups           r   superscriptz TransformToSymPyExpr.superscript   s   	? 	? 	?	G 	G 	G	> 	> 	>	J 	J 	J ayv;;!)Cv;;!
 )C$$T** 	+el3''''t,,,el3''''}T***ws|| -is88a<1$$Kt,,,z# -iHHS^^+q0A55Kt,,,vc{{ +i s88a<1$$99;;&}T***y~~ +iHHS\\)Q.!3399;;&}T***73<< 	Y::c?? 	YffSkk 	YYYs^^ 	Y#t$W$Ws$W$W$WXXXys###r   c                     |d         }|d         j         }|                     |          st          d| d| d          t          |          dz  dk    r|S t	          j        |          S )Nr   r$   ()r   r;   )r0   rq   r   rD   r   r   r   r   r3   primess       r   matrix_primez!TransformToSymPyExpr.matrix_prime  sy    ay((.. 	L#$J$J$Jv$J$J$JKKKv;;?aKt$$$r   c                 f    |d         }|d         j         }t          j        |j         |           S )Nr   r$   )r0   r   r'   namer   s       r   symbol_primez!TransformToSymPyExpr.symbol_prime  s3    ay|ty2&22333r   c                     |d         }t          |d         t                    r|d         \  }}d|fS |d         }|                     ||          S )Nr$   r;   
derivative)r   r   r   )r   r   	numeratorr+   variabledenominators         r   fractionzTransformToSymPyExpr.fraction  s[    1I	fQi'' 	A )KAx  )) )K((K@@@r   c                 D    t          j        |d         |d                   S )Nr$   r;   )r   binomialr   s     r   r   zTransformToSymPyExpr.binomial&  s    ~fQi333r   c                 @   d }d }d|v r|                     d          }d|v r|                     d          }|r||dz            nd }|r||dz            nd }|                     |          }|t          d          |                     |          dz   }||         }||t          d          ||t          d          |||dz
  k    rd}	n"|||dz
  k    rd}	n|dk    rd}	n||dz
           }	|t          j        |	|||f          S t          j        |	|          S )	Nr+   ^r$   ztDifferential symbol was not found in the expression.Valid differential symbols are "d", "\text{d}, and "\mathrm{d}".FLower bound for the integral was found, but upper bound was not found.FUpper bound for the integral was found, but lower bound was not found.rp   r;   )index_extract_differential_symbolr   r   Integral)
r   r   underscore_indexcaret_indexlower_boundupper_bounddifferential_symboldifferential_variable_indexdifferential_variable	integrands
             r   normal_integralz$TransformToSymPyExpr.normal_integral)  s   &==  &||C00&== !,,s++K6FPf-122D1<Ff[1_--$"??GG&# %n o o o '-ll3F&G&G!&K# &'B C "{':#$lmmm"{':#$lmmm ',<@[^_@_,_,_ II$8SVW8W)W)W II(A-- II :Q>?I"
 >).C[R]-^___ >)-BCCCr   c                     t          |          dk    r
d|d         fS t          |          dk    r|d         |d         fS d S )Nrp   r$   rB   r;   )rD   r   s     r   group_curly_parentheses_intz0TransformToSymPyExpr.group_curly_parentheses_intl  sO     v;;!fQi<[[A!9fQi'' r   c                 |    |d         \  }}|d         }t          j        |t          j        |d                    |fS )Nr$   r;   r.   )r   r|   r   )r   r   r   r   r   s        r   special_fractionz%TransformToSymPyExpr.special_fractionu  s>    $Qi	8Qi yEIk2$>$>??IIr   c                 j   d }d }d|v r|                     d          }d|v r|                     d          }|r||dz            nd }|r||dz            nd }||t          d          ||t          d          |d         \  }}|t          j        ||||f          S t          j        ||          S )Nr+   r   r$   r   r   r.   )r   r   r   r   )r   r   r   r   r   r   r   r   s           r   integral_with_special_fractionz3TransformToSymPyExpr.integral_with_special_fraction|  s    &==  &||C00&== !,,s++K6FPf-122D1<Ff[1_--$ "{':#$lmmm"{':#$lmmm+1":(	("
 >).C[R]-^___ >)-BCCCr   c                    |                     d          }|                     d          }|                     d|          }|                     d|          }||dz   |         }||dz   d          }|d         }|d         }	|d         }
||	|
fS )Nr+   r   r,   r/   r$   r   r.   r   )r   r   r   r   left_brace_indexright_brace_indexbottom_limit	top_limitindex_variablelower_limitupper_limits              r   group_curly_parentheses_specialz4TransformToSymPyExpr.group_curly_parentheses_special  s    !<<,,ll3'' "<<-=>>"LL.>??.24EEF ;?++,	 &a"2&l {K77r   c                 D    t          j        |d         |d                   S Nr;   r$   )r   Sumr   s     r   	summationzTransformToSymPyExpr.summation  s    yF1I...r   c                 D    t          j        |d         |d                   S r   )r   Productr   s     r   productzTransformToSymPyExpr.product  s    }VAYq	222r   c                     |                     d          }d|v r"|                     d|          }||dz            }n||dz            }|dk    r
|d         dfS |dk    r
|d         dfS |d         dfS )Nr   r,   r$   +r   -+-r   )r   r   r   left_curly_brace_index	directions        r   limit_dir_exprz#TransformToSymPyExpr.limit_dir_expr  s    ll3''&==%+\\#{%C%C"59:II{Q/I!9c>!#!9c>!!9d?"r   c                 ~    |d         }t          |d         t                    r|d         \  }}n
|d         }d}|||fS )Nr$   rp   r   )r   r   r   r   limit_variabledestinationr   s        r   group_curly_parentheses_limz0TransformToSymPyExpr.group_curly_parentheses_lim  sL    fQi'' 	%+AY"K )KI{I55r   c                 T    |d         \  }}}t          j        |d         |||          S Nr;   r.   )r   Limitr   s        r   limitzTransformToSymPyExpr.limit  s,    17.Y{6":~{INNNr   c                     |d         S rU   r   r   s     r   differentialz!TransformToSymPyExpr.differential  rS   r   c                 D    t          j        |d         |d                   S )Nr.   rC   )r   r   r   s     r   r   zTransformToSymPyExpr.derivative  s    r
F1I666r   c                 R    t          |          dk    r|S d }t          ||          S )Nr$   c                 h    t          | t                    r| j        dk    rt          d          dS dS )NCOMMAzAA comma token was expected, but some other token was encountered.FT)r   r   rI   r   )r   s    r   remove_tokensz?TransformToSymPyExpr.list_of_expressions.<locals>.remove_tokens  s:    dE** !yG++/0sttt 5tr   )rD   filter)r   r   r   s      r   list_of_expressionsz(TransformToSymPyExpr.list_of_expressions  s;    v;;! M   -000r   c                 H     t          j        |d                   |d          S r\   )r   Functionr   s     r   function_appliedz%TransformToSymPyExpr.function_applied  s!    (u~fQi((&)44r   c                 *    t          j        |d          S Nr;   )r   Minr   s     r   minzTransformToSymPyExpr.min      y&)$$r   c                 *    t          j        |d          S r   )r   Maxr   s     r   maxzTransformToSymPyExpr.max  r   r   c                 0    ddl m}  ||d                   S )Nr   )r   r$   )r   r   )r   r   r   s      r   brazTransformToSymPyExpr.bra
  &    ------s6!9~~r   c                 0    ddl m}  ||d                   S )Nr   )r   r$   )r   r   )r   r   r   s      r   ketzTransformToSymPyExpr.ket  r  r   c                 j    ddl m}m}m}  | ||d                    ||d                             S )Nr   )r   r   InnerProductr$   rp   )r   r   r   r  )r   r   r   r   r  s        r   inner_productz"TransformToSymPyExpr.inner_product  sJ    @@@@@@@@@@|CCq	NNCCq	NN;;;r   c                 6    t          j        |d                   S rU   )r   sinr   s     r   r
  zTransformToSymPyExpr.sin      y###r   c                 6    t          j        |d                   S rU   )r   cosr   s     r   r  zTransformToSymPyExpr.cos  r  r   c                 6    t          j        |d                   S rU   )r   tanr   s     r   r  zTransformToSymPyExpr.tan  r  r   c                 6    t          j        |d                   S rU   )r   cscr   s     r   r  zTransformToSymPyExpr.csc  r  r   c                 6    t          j        |d                   S rU   )r   secr   s     r   r  zTransformToSymPyExpr.sec"  r  r   c                 6    t          j        |d                   S rU   )r   cotr   s     r   r  zTransformToSymPyExpr.cot%  r  r   c                     |d         }|dk    rt          j        |d                   S t          j        t          j        |d                   |          S r   )r   asinr   r
  r   r   exponents      r   	sin_powerzTransformToSymPyExpr.sin_power(  H    !9r>>:fRj)))9UYvbz22H===r   c                     |d         }|dk    rt          j        |d                   S t          j        t          j        |d                   |          S r   )r   acosr   r  r  s      r   	cos_powerzTransformToSymPyExpr.cos_power/  r  r   c                     |d         }|dk    rt          j        |d                   S t          j        t          j        |d                   |          S r   )r   atanr   r  r  s      r   	tan_powerzTransformToSymPyExpr.tan_power6  r  r   c                     |d         }|dk    rt          j        |d                   S t          j        t          j        |d                   |          S r   )r   acscr   r  r  s      r   	csc_powerzTransformToSymPyExpr.csc_power=  r  r   c                     |d         }|dk    rt          j        |d                   S t          j        t          j        |d                   |          S r   )r   asecr   r  r  s      r   	sec_powerzTransformToSymPyExpr.sec_powerD  r  r   c                     |d         }|dk    rt          j        |d                   S t          j        t          j        |d                   |          S r   )r   acotr   r  r  s      r   	cot_powerzTransformToSymPyExpr.cot_powerK  r  r   c                 6    t          j        |d                   S rU   )r   r  r   s     r   arcsinzTransformToSymPyExpr.arcsinR      z&)$$$r   c                 6    t          j        |d                   S rU   )r   r  r   s     r   arccoszTransformToSymPyExpr.arccosU  r-  r   c                 6    t          j        |d                   S rU   )r   r   r   s     r   arctanzTransformToSymPyExpr.arctanX  r-  r   c                 6    t          j        |d                   S rU   )r   r#  r   s     r   arccsczTransformToSymPyExpr.arccsc[  r-  r   c                 6    t          j        |d                   S rU   )r   r&  r   s     r   arcseczTransformToSymPyExpr.arcsec^  r-  r   c                 6    t          j        |d                   S rU   )r   r)  r   s     r   arccotzTransformToSymPyExpr.arccota  r-  r   c                 6    t          j        |d                   S rU   )r   sinhr   s     r   r9  zTransformToSymPyExpr.sinhd  r-  r   c                 6    t          j        |d                   S rU   )r   coshr   s     r   r;  zTransformToSymPyExpr.coshg  r-  r   c                 6    t          j        |d                   S rU   )r   tanhr   s     r   r=  zTransformToSymPyExpr.tanhj  r-  r   c                 6    t          j        |d                   S rU   )r   asinhr   s     r   r?  zTransformToSymPyExpr.asinhm      {6!9%%%r   c                 6    t          j        |d                   S rU   )r   acoshr   s     r   rB  zTransformToSymPyExpr.acoshp  r@  r   c                 6    t          j        |d                   S rU   )r   atanhr   s     r   rD  zTransformToSymPyExpr.atanhs  r@  r   c                 6    t          j        |d                   S rU   )r   Absr   s     r   abszTransformToSymPyExpr.absv  r  r   c                 6    t          j        |d                   S rU   )r   floorr   s     r   rI  zTransformToSymPyExpr.floory  r@  r   c                 6    t          j        |d                   S rU   )r   ceilingr   s     r   ceilzTransformToSymPyExpr.ceil|  s    }VAY'''r   c                 6    t          j        |d                   S rQ   )r   	factorialr   s     r   rN  zTransformToSymPyExpr.factorial      vay)))r   c                 6    t          j        |d                   S rU   )r   	conjugater   s     r   rQ  zTransformToSymPyExpr.conjugate  rO  r   c                     t          |          dk    rt          j        |d                   S t          |          dk    r!t          j        |d         |d                   S d S )Nr;   r$   rp   )rD   r   sqrtrootr   s     r   square_rootz TransformToSymPyExpr.square_root  sZ    v;;!:fQi((([[A:fQi333 r   c                 6    t          j        |d                   S rU   )r   expr   s     r   exponentialz TransformToSymPyExpr.exponential  r  r   c                 T   |d         j         dk    rt          j        |d         d          S |d         j         dk    rt          j        |d                   S |d         j         dk    r?d|v r!t          j        |d         |d	                   S t          j        |d                   S d S )
Nr   FUNC_LGr$   
   FUNC_LNFUNC_LOGr+   rp   r;   )rI   r   logr   s     r   r^  zTransformToSymPyExpr.log  s    !9>Y&& 9VAY+++AY^y((9VAY'''AY^z))f}}yF1I666 y+++ *)r   sc                 H    h d}t          fd|D             d           }|S )N>   \text{d}
\mathrm{d}r   c              3   $   K   | ]
}|v |V  d S r   r   ).0symbolr_  s     r   	<genexpr>zDTransformToSymPyExpr._extract_differential_symbol.<locals>.<genexpr>  s/      #]#]vQW[\Q\Q\FQ\Q\Q\Q\#]#]r   )next)r   r_  differential_symbolsr   s    `  r   r   z1TransformToSymPyExpr._extract_differential_symbol  s<    @@@"#]#]#]#]9M#]#]#]_cdd""r   c                 n    d d |d         j         }t          j        fd|D                       S )Nc                 B    t          | t                    o
| j        dk    S )N
matrix_row)r   r   datar   s    r   is_matrix_rowz2TransformToSymPyExpr.matrix.<locals>.is_matrix_row  s    q$''BAFl,BCr   c                 D    t          | t                     p
| j        dk    S )NMATRIX_COL_DELIMr   )ys    r   is_not_col_delimz5TransformToSymPyExpr.matrix.<locals>.is_not_col_delim  s"    "1e,,,L:L0LMr   r$   c                 L    g | ] } |          fd |j         D             !S )c                 *    g | ]} |          |S r   r   )rd  rp  rq  s     r   
<listcomp>z:TransformToSymPyExpr.matrix.<locals>.<listcomp>.<listcomp>  s*    KKKA7G7G7J7JKaKKKr   )children)rd  rz   rm  rq  s     r   rt  z/TransformToSymPyExpr.matrix.<locals>.<listcomp>  sU     G G G!"]]15E5EGKKKKKKK G G Gr   )ru  r   Matrix)r   r   matrix_bodyrm  rq  s      @@r   matrixzTransformToSymPyExpr.matrix  s    	D 	D 	D	N 	N 	N Qi(| G G G G G&1G G G H H 	Hr   c                 (   t          |          dk    rD|                     |d                   st          d          |d                                         S t          |          dk    r'|                     |                                          S d S )Nr;   r$   z&Cannot take determinant of non-matrix.rp   )rD   rq   r   detrx  r   s     r   determinantz TransformToSymPyExpr.determinant  s    v;;!,,VAY77 R'(PQQQ!9==??"v;;!;;v&&**,,, r   c                     |                      |d                   st          d          t          j        |d                   S )Nr$   z Cannot take trace of non-matrix.)rq   r   r   Tracer   s     r   tracezTransformToSymPyExpr.trace  s@    ((33 	H#$FGGG{6!9%%%r   c                     |                      |d                   st          d          |d                                                                         S )Nr$   z#Cannot take adjugate of non-matrix.)rq   r   r   adjugater   s     r   r  zTransformToSymPyExpr.adjugate  sN    ((33 	K#$IJJJ ay~~((***r   c                 d    t          |d          r|j        S t          |t          j                  S )N	is_Matrix)hasattrr  r   r   rv  )r   objs     r   rq   z)TransformToSymPyExpr._obj_is_sympy_Matrix  s.    3$$ 	!= #u|,,,r   c                    |                      |          rt          d          |                      |          r(t          j        |t          j        |d                    S t          j        |t          j        |d                    S )NzCannot divide by matrices like this since it is not clear if left or right multiplication by the inverse is intended. Try explicitly multiplying by the inverse instead.r.   )rq   r   r   ry   r   r|   )r   r   r   s      r   r   z%TransformToSymPyExpr._handle_division  s    $$[11 	K# %J K K K
 $$Y// 	G<	59["+E+EFFFyEIk2$>$>???r   N)br   r   r   __doc__r   r'   SYMBOLrK   rL   rN   DIGITr    r)   r4   r9   r<   r@   rE   rO   rR   rV   rX   rZ   r^   rb   re   rh   rk   rn   rw   r&   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r  r  r  r  r  r  r  r!  r$  r'  r*  r,  r/  r1  r3  r5  r7  r9  r;  r=  r?  rB  rD  rG  rI  rL  rN  rQ  rU  rX  r^  strr   rx  r{  r~  r  rq   r   r   r   r   r   r      sn        . \FJ&E  + + +9 9 9A A A> > >
A 
A 
A7 7 79 9 9        . . .. . .. . .. . .. . .. . .
% 
% 
%& & &"! ! !; ; ;3 3 3 :$ :$ :$x
% 
% 
%4 4 4
A 
A 
A4 4 4AD AD ADF( ( (J J J%D %D %DN!8 !8 !8F/ / /3 3 3# # # 6 6 6O O O
  7 7 71 1 1 5 5 5% % %% % %    < < <$ $ $$ $ $$ $ $$ $ $$ $ $$ $ $> > >> > >> > >> > >> > >> > >% % %% % %% % %% % %% % %% % %% % %% % %% % %& & && & && & &$ $ $& & &( ( (* * ** * *4 4 4$ $ $, , ,"#c # # # #	H 	H 	H- - -& & &+ + +- - -
@ 
@ 
@ 
@ 
@r   r   )r%   r   sympy.externalr   sympy.parsing.latex.errorsr   r   r   r   r   r   r   r   r   <module>r     s3   				  ( ( ( ( ( ( 8 8 8 8 8 8}V -----------       
              
@@ @@ @@ @@ @@; @@ @@ @@ @@ @@r   