o
    GZŽhèP  ã                   @   s†  d dl mZ d dlZd dlmZ d dlmZ d dlmZm	Z	 ddl
mZ d Z ZZzedd	d
gidjZedd	dgidjZW n	 eyI   Y nw eddd	dgidZer_G dd„ dejƒZdEdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ ZdFd!d"„Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Z d5d6„ Z!d7d8„ Z"d9d:„ Z#d;d<„ Z$d=d>„ Z%d?d@„ Z&dAdB„ Z'dCdD„ Z(dS )Gé    )ÚversionN)Úimport_module)Ú
StrPrinter)ÚBraÚKeté   )ÚLaTeXParsingErrorz&sympy.parsing.latex._antlr.latexparserÚfromlistÚLaTeXParser)Úimport_kwargsz%sympy.parsing.latex._antlr.latexlexerÚ
LaTeXLexerzantlr4.error.ErrorListenerTÚErrorListener)Zwarn_not_installedr   c                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )ÚMathErrorListenerc                    s   t tj| ƒ ¡  || _d S ©N)Úsuperr   Ú__init__Úsrc)Úselfr   ©Ú	__class__© úU/var/www/auris/lib/python3.10/site-packages/sympy/parsing/latex/_parse_latex_antlr.pyr       s   
zMathErrorListener.__init__c                    sÜ   d}d| d }|  d¡r||| j|f }	t|	ƒ‚|  d¡r*|d| j|f }	t|	ƒ‚|  d¡rbtj‰ ‡ fdd	„| ¡ D ƒ}
t|
ƒd
k rVd |
¡}
|d|
 | j|f }	t|	ƒ‚|d| j|f }	t|	ƒ‚|d| j|f }	t|	ƒ‚)Nz%s
%s
%sú~ú^Úmissingz	no viablezI expected something else hereZ
mismatchedc                    s    g | ]}|t ˆ ƒk rˆ | ‘qS r   )Úlen)Ú.0Úi©Únamesr   r   Ú
<listcomp>.   s    z1MathErrorListener.syntaxError.<locals>.<listcomp>é
   ú zI expected one of these: zI don't understand this)Ú
startswithr   r
   ZliteralNamesZgetExpectedTokensr   Újoinr   )r   ZrecogÚsymbolÚlineÚcolÚmsgÚeÚfmtÚmarkerÚerrÚexpectedr   r   r   ÚsyntaxError$   s2   

ð
ò
ÿ
ÿüÿÿzMathErrorListener.syntaxError)Ú__name__Ú
__module__Ú__qualname__r   r.   Ú__classcell__r   r   r   r   r      s    r   Fc           
      C   sÆ   t dƒ}d |tfv stdƒ d¡stdƒ‚|  ¡ } t| ƒ}| | ¡}t|ƒ}| ¡  | 	|¡ | 
|¡}t|ƒ}| ¡  | 	|¡ | ¡  ¡ }|r]|jjdksY|jjt| ƒd kr]tdƒ‚t|ƒ}	|	S )NÚantlr4zantlr4-python3-runtimez4.11zˆLaTeX parsing requires the antlr4 Python package, provided by pip (antlr4-python3-runtime) or conda (antlr-python-runtime), version 4.11r   r   zInvalid LaTeX)r   r   r   r#   ÚImportErrorÚstripZInputStreamr   ZremoveErrorListenersZaddErrorListenerZCommonTokenStreamr
   ÚmathÚrelationÚstartÚstopr   r   Úconvert_relation)
ÚsympyÚstrictr3   Z	matherrorÚstreamÚlexÚtokensÚparserr7   Úexprr   r   r   Úparse_latex=   s(   ÿ



$rB   c                 C   s¬   |   ¡ r
t|   ¡ ƒS t|  d¡ƒ}t|  d¡ƒ}|  ¡ r"t ||¡S |  ¡ r,t ||¡S |  	¡ r6t 
||¡S |  ¡ r@t ||¡S |  ¡ rJt ||¡S |  ¡ rTt ||¡S d S ©Nr   r   )rA   Úconvert_exprr:   r7   ÚLTr;   ZStrictLessThanZLTEZLessThanÚGTZStrictGreaterThanZGTEZGreaterThanÚEQUALÚEqZNEQZNe)ÚrelÚlhÚrhr   r   r   r:   ]   s"   ÿr:   c                 C   s   t |  ¡ ƒS r   )Úconvert_addÚadditive)rA   r   r   r   rD   q   s   rD   c                 C   s¤   |   ¡ rt|  d¡ƒ}t|  d¡ƒ}tj||ddS |  ¡ rLt|  d¡ƒ}t|  d¡ƒ}t|dƒr>|jr>tj|d| ddS tj|tjd|ddddS t	|  
¡ ƒS )Nr   r   F©ÚevaluateÚis_Atoméÿÿÿÿ)ÚADDrL   rM   r;   ÚAddÚSUBÚhasattrrP   ÚMulÚ
convert_mpÚmp)ÚaddrJ   rK   r   r   r   rL   u   s   rL   c                 C   sÒ   t | dƒr|  d¡}|  d¡}n
|  d¡}|  d¡}|  ¡ s&|  ¡ s&|  ¡ r6t|ƒ}t|ƒ}tj||ddS |  	¡ sB|  
¡ sB|  ¡ rXt|ƒ}t|ƒ}tj|tj|dddddS t | dƒrct|  ¡ ƒS t|  ¡ ƒS )NrX   r   r   FrN   rQ   Úunary)rU   rX   Ú	mp_nofuncZMULZ	CMD_TIMESZCMD_CDOTrW   r;   rV   ZDIVZCMD_DIVÚCOLONÚPowÚconvert_unaryrZ   Úunary_nofunc)rX   Zmp_leftZmp_rightrJ   rK   r   r   r   rW   „   s    




rW   c                 C   s€   t | dƒr
|  ¡ }n|  ¡ }t | dƒr!|  ¡ }|  ¡ }|g| }n|  ¡ }|  ¡ r-t|ƒS |  ¡ r8t|ƒ}| S |r>t|ƒS d S )NrZ   Úpostfix_nofunc)	rU   rZ   r_   Úpostfixr`   rR   r^   rT   Úconvert_postfix_list)rZ   Znested_unaryÚfirstÚtailra   Znumabsr   r   r   r^   ›   s    


ÿr^   c           	      C   s&  |t | ƒkr
tdƒ‚t| | ƒ}t|tjƒrv|t | ƒd kr |S |dkrit| |d  ƒ}t| |d  ƒ}t|tjƒrit|tjƒrit| |d  ƒ tj¡}t| |d  ƒ tj¡}|si|sit|ƒdkrit	| |d ƒS tj
|t	| |d ƒddS |d }|t | ƒd kr†tdƒ‚t	| |d ƒ}t ||¡S )NzIndex out of boundsr   r   ÚxFrN   z"Expected expression for derivative)r   r   Úconvert_postfixÚ
isinstancer;   ÚExprÚatomsÚSymbolÚstrrb   rV   Ú
Derivative)	Zarrr   ÚresÚleftÚrightZ	left_symsZ
right_symsÚwrtrA   r   r   r   rb   ±   s4   ÿÿÿrb   c                 C   s”   |  ¡ r,t|  ¡ ƒ}| tj¡}t|ƒdkr| S t|ƒdkr*tt|ƒƒ}|  ||¡S d S | 	¡ rHt| 	¡   d¡ƒ}t| 	¡   d¡ƒ}|  ||¡S d S rC   )
rA   rD   ri   r;   rj   r   ÚnextÚiterÚsubsÚequality)rA   ÚatZat_exprZsymsÚsymrJ   rK   r   r   r   Údo_subsÒ   s   þýrw   c                 C   sä   t | dƒr
|  ¡ }n|  ¡ }t|ƒ}|  ¡ D ]Y}| ¡ r-t|tƒr%tdƒ‚t	j
|dd}q| ¡ ro| ¡ }d }d }| ¡ rDt|| ¡ ƒ}| ¡ rOt|| ¡ ƒ}|d urb|d urbt	j|d| dd}q|d uri|}q|d uro|}q|S )NÚexpz"Cannot apply postfix to derivativeFrN   rQ   )rU   rx   Ú
exp_nofuncÚconvert_expZ
postfix_opZBANGrg   Úlistr   r;   Ú	factorialZeval_atZeval_at_suprw   Zeval_at_subrS   )ra   Ú
exp_nestedrx   ÚopZevZat_bZat_ar   r   r   rf   á   s2   


€rf   c                 C   s–   t | dƒr
|  ¡ }n|  ¡ }|r:t|ƒ}t|tƒrtdƒ‚|  ¡ r(t|  ¡ ƒ}n
|  	¡ r2t
|  	¡ ƒ}tj||ddS t | dƒrEt|  ¡ ƒS t|  ¡ ƒS )Nrx   z Cannot raise derivative to powerFrN   Úcomp)rU   rx   ry   rz   rg   r{   r   ÚatomÚconvert_atomrA   rD   r;   r]   Úconvert_compr   Zcomp_nofunc)rx   r}   ÚbaseÚexponentr   r   r   rz   ÿ   s   



rz   c                 C   sŽ   |   ¡ rt|   ¡  ¡ ƒS |  ¡ rtjt|  ¡  ¡ ƒddS |  ¡ r't|  ¡ ƒS |  ¡ r1t	|  ¡ ƒS |  
¡ r;t|  
¡ ƒS |  ¡ rEt|  ¡ ƒS d S ©NFrN   )ÚgrouprD   rA   Z	abs_groupr;   ZAbsr€   r   ÚfloorÚconvert_floorÚceilÚconvert_ceilÚfuncÚconvert_func)r   r   r   r   r‚     s   ÿr‚   c                 C   sæ  |   ¡ rB|   ¡  ¡ }|  ¡ r1|  ¡  ¡ rt|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}|dtƒ  |¡ d 7 }|  	¡ r=||  	¡  ¡ 7 }t
 |¡S |  ¡ r‡|  ¡  ¡ dd … }|dkrWt
jS |  ¡ r‚d }|  ¡  ¡ rlt|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}tƒ  |¡}|d| d 7 }t
 |¡S |  ¡ rš|  ¡  ¡  dd¡}t
 |¡S |  ¡ r¬t|  ¡ ƒ}t
 d|j ¡S |  ¡ r½t|  ¡  ¡ ƒ}t
 |¡S |  ¡ rÇt|  ¡ ƒS |  ¡ rÑt|  ¡ ƒS |  ¡ rát|  ¡  ¡ ƒ}t|ƒS |  ¡ rñt|  ¡  ¡ ƒ}t|ƒS d S )Nú_{Ú}r   Zinftyú,Ú Úd)ÚLETTERÚgetTextÚsubexprrA   rD   r   r€   r   ÚdoprintÚSINGLE_QUOTESr;   rj   ÚSYMBOLZooÚnumberÚreplaceÚNumberÚDIFFERENTIALÚget_differential_varÚnameZmathitÚ	rule2textZmathit_textÚfracÚconvert_fracÚbinomÚconvert_binomZbrar   Zketr   )r€   ZsnameÚ	subscriptÚsÚsubscriptNameÚvarÚtextÚvalr   r   r   r   $  sT   



þr   c                 C   s&   | j  ¡ }| j j }| jj}| ||¡S r   )r8   ZgetInputStreamr9   r“   )Úctxr=   ZstartIdxZstopIdxr   r   r   rž   S  s   
rž   c           
      C   s*  d}d}| j rÞ| jrÞ| j  ¡ }|d |d  d }| j j| j jkr3| j jjtjkr3t| j jj	ƒ}d}n8|dkrk| j jjtj
krk| j jj	dkrk| j jjtjksV| j jjtj
krkd}| j jj	}| j jjtj
krk|dd … }|so|rÞt |¡}|r| jj| jjkr| jjjtjkr| jjj	dkr|gS |r¬| jj| jjkr¬| jjjtj
kr¬| jjj	dkr¬|gS t| jƒ}d }|rÃ| d¡rÃt|dd … ƒ}n|rÖ| jjj	dkrÖt|tdƒd … ƒ}|rÞt ||¡S | jrçt| jƒ}nt | jj	¡}| j r÷t| j ƒ}nt | jj	¡}tj|ddd	}	|dkr|	S tj||	dd	S )
NFr   r   Té   z\partialr‘   rQ   rN   )ÚlowerÚupperZgetSourceIntervalr8   r9   Útyper   r›   Úget_differential_var_strr§   r—   r’   r;   rj   rž   r#   rB   r   rl   rD   rš   ZupperdZlowerdr]   rV   )
rŸ   Zdiff_opZ
partial_opZ	lower_itvZlower_itv_lenrp   Z
upper_textZexpr_topZexpr_botZinverse_denomr   r   r   r    ]  sZ   




r    c                 C   s$   t | jƒ}t | jƒ}tj||ddS r…   )rD   ÚnÚkr;   Zbinomial)r¡   Zexpr_nZexpr_kr   r   r   r¢   ‘  s   

r¢   c                 C   ó   t | jƒ}tj|ddS r…   )rD   r¨   r;   r‡   )r‡   r¨   r   r   r   rˆ   –  ó   
rˆ   c                 C   r±   r…   )rD   r¨   r;   Zceiling)r‰   r¨   r   r   r   rŠ   š  r²   rŠ   c                 C   sn  |   ¡ rÑ|  ¡ rt|  ¡ ƒ}nt|  ¡ ƒ}|   ¡ jjdd … }|dv r5d|dd …  }ttj	|ƒ|dd}|dv rKd|dd …  }ttj	|ƒ|dd}|d	krVtj
|dd}|d
v rŒ|  ¡ rv|  ¡  ¡ rmt|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}n|dkr}d}n|dv r„tj}tj||dd}d }d}|  ¡ r«|  ¡  ¡ r£t|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}|dv rÃ|dkr¹d| }d}ttj	|ƒ|dd}|rÏ|rÏtj||dd}|S |  ¡ sÚ|  ¡ r\|  ¡ rå|  ¡  ¡ }n|  ¡ ró|  ¡  ¡ dd … }t|ƒ}|  ¡ r"|  ¡  ¡ rt|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}tƒ  |¡}	|d|	 d 7 }|  ¡ r/||  ¡  ¡ 7 }|  ¡ }
g }|
 ¡ rL| t|
 ¡ ƒ¡ |
 ¡ }
|
 ¡ s:| t|
 ¡ ƒ¡ t |¡|Ž S |  ¡ ret| ƒS |   ¡ r‡t| j!ƒ}| j"r€t| j"ƒ}tj"||ddS tj#|ddS |  $¡ r˜t| j!ƒ}tj%|ddS |  &¡ r¢t'| dƒS |  (¡ r¬t'| dƒS |  )¡ rµt*| ƒS d S )Nr   )ZarcsinZarccosZarctanZarccscZarcsecZarccotÚaé   FrN   )ZarsinhZarcoshZartanhrª   rx   )ÚlogÚlgÚlnr¶   r!   )r·   rµ   T)	ÚsinÚcosÚtanZcscÚsecZcotÚsinhÚcoshÚtanhrQ   r   rŽ   Ú	summationÚproduct)+Zfunc_normalZL_PARENÚconvert_func_argZfunc_argZfunc_arg_noparensr8   r§   Úgetattrr;   Z	functionsrx   r”   rA   rD   r   r€   ÚErµ   Úsupexprr]   r’   r—   r“   rk   r   r•   r–   ÚargsÚappendÚFunctionZFUNC_INTÚhandle_integralZ	FUNC_SQRTrƒ   ÚrootÚsqrtZFUNC_OVERLINEÚ	conjugateZFUNC_SUMÚhandle_sum_or_prodZ	FUNC_PRODZFUNC_LIMÚhandle_limit)r‹   Úargr   rA   rƒ   Zfunc_powZ
should_powÚfnamer£   r¥   Z
input_argsZoutput_argsÚrr   r   r   rŒ   ž  sš   



þ










ÿrŒ   c                 C   s"   t | dƒrt|  ¡ ƒS t|  ¡ ƒS )NrA   )rU   rD   rA   rW   r[   )rÎ   r   r   r   rÁ   ÿ  s   
rÁ   c                 C   sP  |   ¡ rt|   ¡ ƒ}n|  ¡ rt|  ¡ ƒ}nd}d }|  ¡ r%t|  ¡ ƒ}nB| tj¡D ]-}t	|ƒ}t
|ƒdkrX|d dkrX|d dkrMt |dd … ¡}n	t |dd … ¡}|}q+|rb| |d¡}nt d¡}|  ¡ r¢|  ¡  ¡ rzt|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}|  ¡  ¡ r‘t|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}t ||||f¡S t ||¡S )Nr   r   r‘   ú\rª   re   )rM   rL   rŸ   r    r›   rœ   ri   r;   rj   rk   r   rs   r”   r€   r   rD   rA   rÄ   ÚIntegral)r‹   Z	integrandZint_varrv   r¤   Zint_symr«   r¬   r   r   r   rÈ     s8   €
rÈ   c                 C   sž   t |  ¡ ƒ}t|  ¡  ¡  d¡ƒ}t|  ¡  ¡  d¡ƒ}|  ¡  ¡ r+t|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}|dkr@t	 
||||f¡S |dkrMt	 ||||f¡S d S )Nr   r   r¿   rÀ   )rW   rX   rD   Zsubeqrt   rA   rÄ   r   r€   r;   ZSumZProduct)r‹   r   r¨   Ziter_varr8   Úendr   r   r   rÌ   .  s   ÿrÌ   c                 C   sš   |   ¡ }| ¡ rt | ¡  ¡ ¡}n| ¡ r$t | ¡  ¡ dd … ¡}nt d¡}| ¡ r0d}n	| ¡ r7d}nd}t| 	¡ ƒ}t
|  ¡ ƒ}t ||||¡S )Nr   re   ú-ú+z+-)Z	limit_subr’   r;   rj   r“   r—   rT   rR   rD   rA   rW   rX   ZLimit)r‹   Úsubr¦   Ú	directionZapproachingÚcontentr   r   r   rÍ   =  s   
rÍ   c                 C   s   t |  ¡ ƒ}t |¡S r   )r®   r“   r;   rj   )r‘   r§   r   r   r   rœ   Q  s   
rœ   c                 C   sl   t dt| ƒƒD ]}| | }|dks!|dks!|dks!|dks!|} nq| |d … } | d dkr4| dd … } | S )Nr   r"   úÚ
ú	r   rÑ   )Úranger   )r§   r   ÚcÚidxr   r   r   r®   V  s    €r®   )F)r   ))Úimportlib.metadatar   r;   Zsympy.externalr   Zsympy.printing.strr   Zsympy.physics.quantum.stater   r   Úerrorsr   r
   r   r   Ú	Exceptionr   rB   r:   rD   rL   rW   r^   rb   rw   rf   rz   r‚   r   rž   r    r¢   rˆ   rŠ   rŒ   rÁ   rÈ   rÌ   rÍ   rœ   r®   r   r   r   r   Ú<module>   sf   ÿÿÿÿÿþ
 
!/
4a(