U
    Š±Ë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k
r”   Y nX 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__© úJ/tmp/pip-unpacked-wheel-6t8vlncq/sympy/parsing/latex/_parse_latex_antlr.pyr       s    zMathErrorListener.__init__c                    sÈ   d}d| d }|  d¡r,||| j|f }	n|  d¡rH|d| j|f }	nt|  d¡r¬tj‰ ‡ fdd	„| ¡ D ƒ}
t|
ƒd
k ršd |
¡}
|d|
 | j|f }	q¼|d| j|f }	n|d| j|f }	t|	ƒ‚d S )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$   s*    



ÿ
ÿÿzMathErrorListener.syntaxError)Ú__name__Ú
__module__Ú__qualname__r   r.   Ú__classcell__r   r   r   r   r      s   r   Fc           
      C   sÆ   t dƒ}d |tfks"tdƒ d¡s*tdƒ‚|  ¡ } t| ƒ}| | ¡}t|ƒ}| ¡  | 	|¡ | 
|¡}t|ƒ}| ¡  | 	|¡ | ¡  ¡ }|rº|jjdks²|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¡ƒ}|  ¡ rDt ||¡S |  ¡ rXt ||¡S |  	¡ rlt 
||¡S |  ¡ r€t ||¡S |  ¡ r”t ||¡S |  ¡ r¨t ||¡S d S ©Nr   r   )rA   Úconvert_exprr:   r7   ÚLTr;   ZStrictLessThanZLTEZLessThanÚGTZStrictGreaterThanZGTEZGreaterThanÚEQUALZ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¨   |   ¡ r4t|  d¡ƒ}t|  d¡ƒ}tj||ddS |  ¡ r˜t|  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 d S )Nr   r   F©ÚevaluateÚis_Atoméÿÿÿÿ)ÚADDrK   rL   r;   ÚAddÚSUBÚhasattrrO   ÚMulÚ
convert_mpÚmp)ÚaddrI   rJ   r   r   r   rK   u   s    rK   c                 C   sÖ   t | dƒr |  d¡}|  d¡}n|  d¡}|  d¡}|  ¡ sL|  ¡ sL|  ¡ rlt|ƒ}t|ƒ}tj||ddS |  	¡ s„|  
¡ s„|  ¡ r°t|ƒ}t|ƒ}tj|tj|dddddS t | dƒrÆt|  ¡ ƒS t|  ¡ ƒS d S )NrW   r   r   FrM   rP   Úunary)rT   rW   Ú	mp_nofuncZMULZ	CMD_TIMESZCMD_CDOTrV   r;   rU   ZDIVZCMD_DIVÚCOLONÚPowÚconvert_unaryrY   Úunary_nofunc)rW   Zmp_leftZmp_rightrI   rJ   r   r   r   rV   „   s     




rV   c                 C   s€   t | dƒr|  ¡ }n|  ¡ }t | dƒrB|  ¡ }|  ¡ }|g| }n|  ¡ }|  ¡ rZt|ƒS |  ¡ rpt|ƒ}| S |r|t|ƒS d S )NrY   Úpostfix_nofunc)	rT   rY   r^   Úpostfixr_   rQ   r]   rS   Úconvert_postfix_list)rY   Znested_unaryÚfirstÚtailr`   Znumabsr   r   r   r]   ›   s    


r]   c           	      C   s0  |t | ƒkrtdƒ‚t| | ƒ}t|tjƒrî|t | ƒd kr@|S |dkrÒt| |d  ƒ}t| |d  ƒ}t|tjƒrÒt|tjƒrÒt| |d  ƒ tj¡}t| |d  ƒ tj¡}|sÒ|sÒt|ƒdkrÒt	| |d ƒS tj
|t	| |d ƒddS n>|d }|t | ƒd krtdƒ‚nt	| |d ƒ}t ||¡S d S )NzIndex out of boundsr   r   ÚxFrM   z"Expected expression for derivative)r   r   Úconvert_postfixÚ
isinstancer;   ZExprÚatomsÚSymbolÚstrra   rU   Ú
Derivative)	Zarrr   ÚresÚleftÚrightZ	left_symsZ
right_symsÚwrtrA   r   r   r   ra   ±   s:     ÿÿ  ÿ
ra   c                 C   s’   |  ¡ rVt|  ¡ ƒ}| tj¡}t|ƒdkr0| S t|ƒdkrŽtt|ƒƒ}|  ||¡S n8| 	¡ rŽt| 	¡   d¡ƒ}t| 	¡   d¡ƒ}|  ||¡S d S rC   )
rA   rD   rg   r;   rh   r   ÚnextÚiterÚsubsÚequality)rA   ÚatZat_exprZsymsÚsymrI   rJ   r   r   r   Údo_subsÒ   s    ru   c                 C   sä   t | dƒr|  ¡ }n|  ¡ }t|ƒ}|  ¡ D ]²}| ¡ rZt|tƒrJtdƒ‚t	j
|dd}q,| ¡ r,| ¡ }d }d }| ¡ rˆt|| ¡ ƒ}| ¡ ržt|| ¡ ƒ}|d k	rÄ|d k	rÄt	j|d| dd}q,|d k	rÒ|}q,|d k	r,|}q,|S )NÚexpz"Cannot apply postfix to derivativeFrM   rP   )rT   rv   Ú
exp_nofuncÚconvert_expZ
postfix_opZBANGrf   Úlistr   r;   Ú	factorialZeval_atZeval_at_supru   Zeval_at_subrR   )r`   Ú
exp_nestedrv   ÚopZevZat_bZat_ar   r   r   re   á   s0    


re   c                 C   sš   t | dƒr|  ¡ }n|  ¡ }|rtt|ƒ}t|tƒr:tdƒ‚|  ¡ rPt|  ¡ ƒ}n|  	¡ rdt
|  	¡ ƒ}tj||ddS t | dƒrŠt|  ¡ ƒS t|  ¡ ƒS d S )Nrv   z Cannot raise derivative to powerFrM   Úcomp)rT   rv   rw   rx   rf   ry   r   ÚatomÚconvert_atomrA   rD   r;   r\   Úconvert_compr}   Zcomp_nofunc)rv   r{   ÚbaseÚexponentr   r   r   rx   ÿ   s    



rx   c                 C   sŽ   |   ¡ rt|   ¡  ¡ ƒS |  ¡ r:tjt|  ¡  ¡ ƒddS |  ¡ rNt|  ¡ ƒS |  ¡ rbt	|  ¡ ƒS |  
¡ rvt|  
¡ ƒS |  ¡ rŠt|  ¡ ƒS d S ©NFrM   )Ú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ú  |   ¡ r„|   ¡  ¡ }|  ¡ rb|  ¡  ¡ r:t|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}|dtƒ  |¡ d 7 }|  	¡ rz||  	¡  ¡ 7 }t
 |¡S |  ¡ r|  ¡  ¡ dd … }|dkr°t
jS |  ¡ rd }|  ¡  ¡ rÜt|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}tƒ  |¡}|d| d 7 }t
 |¡S nâ|  ¡ r<|  ¡  ¡  dd¡}t
 |¡S |  ¡ rbt|  ¡ ƒ}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;   rh   Ú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   $  sR    











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   sR  d}d}| j rÜ| jrÜ| j  ¡ }|d |d  d }| j j| j jkrj| j jjtjkrjt| j jj	ƒ}d}np|dkrÚ| j jjtj
krÚ| j jj	dkrÚ| j jjtjks°| j jjtj
krÚd}| j jj	}| j jjtj
krÚ|dd … }|sä|rÜt |¡}|r.| jj| jjkr.| jjjtjkr.| jjj	dkr.|gS |rn| jj| jjkrn| jjjtj
krn| jjj	dkrn|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 d S )
NFr   r   Té   z\partialr   rP   rM   )ÚlowerÚupperZgetSourceIntervalr8   r9   Útyper   r™   Úget_differential_var_strr¥   r•   r   r;   rh   rœ   r#   rB   r   rj   rD   r˜   ZupperdZlowerdr\   rU   )
r   Zdiff_opZ
partial_opZ	lower_itvZlower_itv_lenrn   Z
upper_textZexpr_topZexpr_botZinverse_denomr   r   r   rž   ]  sj    
ÿÿþý


ÿþÿþ

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   s   t | jƒ}tj|ddS rƒ   )rD   r¦   r;   r…   )r…   r¦   r   r   r   r†   –  s    
r†   c                 C   s   t | jƒ}tj|ddS rƒ   )rD   r¦   r;   Zceiling)r‡   r¦   r   r   r   rˆ   š  s    
rˆ   c                 C   s‚  |   ¡ r´|  ¡ r t|  ¡ ƒ}nt|  ¡ ƒ}|   ¡ jjdd … }|dkrld|dd …  }ttj	|ƒ|dd}|dkr˜d|dd …  }ttj	|ƒ|dd}|d	kr®tj
|dd}|d
kr|  ¡ rð|  ¡  ¡ rÞt|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}n|dkrþd}n|dkrtj}tj||dd}d }d}|  ¡ r`|  ¡  ¡ rPt|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}|dk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\|  ¡  ¡ r0t|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}tƒ  |¡}	|d|	 d 7 }|  ¡ rv||  ¡  ¡ 7 }|  ¡ }
g }|
 ¡ rª| t|
 ¡ ƒ¡ |
 ¡ }
q‚| t|
 ¡ ƒ¡ t |¡|Ž S |  ¡ rÜt| ƒS |   ¡ r"t| j!ƒ}| j"rt| j"ƒ}tj"||ddS tj#|ddS n\|  $¡ rDt| j!ƒ}tj%|ddS |  &¡ rXt'| dƒS |  (¡ rlt'| dƒS |  )¡ r~t*| ƒS d S )Nr   )ZarcsinZarccosZarctanZarccscZarcsecZarccotÚaé   FrM   )ZarsinhZarcoshZartanhr¨   rv   )ÚlogÚlgÚlnr²   r!   )r³   r±   T)	ÚsinÚcosÚtanZcscÚsecZcotÚsinhÚcoshÚtanhrP   r‹   rŒ   Ú	summationÚproduct)+Zfunc_normalZL_PARENÚconvert_func_argZfunc_argZfunc_arg_noparensr8   r¥   Úgetattrr;   Z	functionsrv   r’   rA   rD   r   r~   ÚEr±   Úsupexprr\   r   r•   r‘   ri   r   r“   r”   ÚargsÚappendZ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 d S )NrA   )rT   rD   rA   rV   rZ   )rÉ   r   r   r   r½   ÿ  s    
r½   c                 C   sX  |   ¡ rt|   ¡ ƒ}n|  ¡ r,t|  ¡ ƒ}nd}d }|  ¡ rJt|  ¡ ƒ}n„| tj¡D ]Z}t	|ƒ}t
|ƒdkrV|d dkrV|d dkršt |dd … ¡}nt |dd … ¡}|}qV|rÄ| |d¡}n
t d¡}|  ¡ rH|  ¡  ¡ röt|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}|  ¡  ¡ r&t|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}t ||||f¡S t ||¡S d S )Nr   r   r   ú\r¨   rd   )rL   rK   r   rž   r™   rš   rg   r;   rh   ri   r   rq   r’   r~   r   rD   rA   rÀ   ÚIntegral)r‰   Z	integrandZint_varrt   r¢   Zint_symr©   rª   r   r   r   rÃ     s6    

rÃ   c                 C   sž   t |  ¡ ƒ}t|  ¡  ¡  d¡ƒ}t|  ¡  ¡  d¡ƒ}|  ¡  ¡ rVt|  ¡  ¡ ƒ}nt|  ¡  ¡ ƒ}|dkr€t	 
||||f¡S |dkršt	 ||||f¡S d S )Nr   r   r»   r¼   )rV   rW   rD   Zsubeqrr   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.| ¡ rHt | ¡  ¡ dd … ¡}n
t d¡}| ¡ r`d}n| ¡ rnd}nd}t| 	¡ ƒ}t
|  ¡ ƒ}t ||||¡S )Nr   rd   ú-ú+z+-)Z	limit_subr   r;   rh   r‘   r•   rS   rQ   rD   rA   rV   rW   ZLimit)r‰   Úsubr¤   Ú	directionZapproachingÚcontentr   r   r   rÈ   =  s    
rÈ   c                 C   s   t |  ¡ ƒ}t |¡S r   )r¬   r‘   r;   rh   )r   r¥   r   r   r   rš   Q  s    rš   c                 C   sl   t dt| ƒƒD ]4}| | }|dks|dks|dks|dks|} qDq| |d … } | d dkrh| 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   rK   rV   r]   ra   ru   re   rx   r€   r   rœ   rž   r    r†   rˆ   rŠ   r½   rÃ   rÇ   rÈ   rš   r¬   r   r   r   r   Ú<module>   sZ   ÿÿþ
 
!/
4a(