o
    *ήcO                     @   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dd Zdd Zdd Zdd Zdd Zdd ZdDd d!Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Z d4d5 Z!d6d7 Z"d8d9 Z#d:d; Z$d<d= Z%d>d? Z&d@dA Z'dBdC Z(dS )E    )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)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__ M/tmp/pip-target-vg8gfxp4/lib/python/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 here
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
   literalNamesgetExpectedTokensr   joinr   )r   recogsymbollinecolmsgefmtmarkererrexpectedr   r    r   syntaxError$   s2   




zMathErrorListener.syntaxError)__name__
__module____qualname__r   r3   __classcell__r   r   r   r   r      s    r   c           	      C   s   t d}d |tfv stddkrtdt| }|| }t|}|  || ||}t	|}|  || |
  }t|}|S )Nantlr4zantlr4-python3-runtimez4.10zLaTeX parsing requires the antlr4 Python package, provided by pip (antlr4-python3-runtime) or conda (antlr-python-runtime), version 4.10)r   r   r   ImportErrorInputStreamr   removeErrorListenersaddErrorListenerCommonTokenStreamr
   mathrelationconvert_relation)	sympyr8   	matherrorstreamlextokensparserr?   exprr   r   r   parse_latex=   s"   




rH   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   )rG   convert_exprr@   r?   LTrA   StrictLessThanLTELessThanGTStrictGreaterThanGTEGreaterThanEQUALEqNEQNe)rellhrhr   r   r   r@   Z   s"   r@   c                 C   s   t |  S r   )convert_addadditive)rG   r   r   r   rJ   n   s   rJ   c                 C   s   |   rt| d}t| d}tj||ddS |  r:t| d}t| d}tj|tjd|ddddS t|  S )Nr   r   Fevaluate)	ADDrZ   r[   rA   AddSUBMul
convert_mpmp)addrX   rY   r   r   r   rZ   r   s   rZ   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 )Nrd   r   r   Fr\   r^   unary)hasattrrd   	mp_nofuncMUL	CMD_TIMESCMD_CDOTrc   rA   rb   DIVCMD_DIVCOLONPowconvert_unaryrf   unary_nofunc)rd   mp_leftmp_rightrX   rY   r   r   r   rc      s    




rc   c                 C   s   t | dr
|  }n|  }t | dr!|  }|  }|g| }n|  }|  r-t|S |  r8t|}| S |r>t|S d S )Nrf   postfix_nofunc)	rg   rf   rq   postfixrt   r_   rp   ra   convert_postfix_list)rf   nested_unaryfirsttailru   numabsr   r   r   rp      s    


rp   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rtdt	| |d }t||S )NzIndex out of boundsr   r   xFr\   z"Expected expression for derivative)r   r   convert_postfix
isinstancerA   ExpratomsSymbolstrrv   rb   
Derivative)	arrr   resleftright	left_syms
right_symswrtrG   r   r   r   rv      s4   rv   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 rI   )
rG   rJ   r   rA   r   r   nextitersubsequality)rG   atat_exprsymssymrX   rY   r   r   r   do_subs   s   r   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 derivativeFr\   r^   )rg   r   
exp_nofuncconvert_exp
postfix_opBANGr}   listr   rA   	factorialeval_ateval_at_supr   eval_at_subr`   )ru   
exp_nestedr   opevat_bat_ar   r   r   r|      s2   


r|   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 )Nr   z Cannot raise derivative to powerFr\   comp)rg   r   r   r   r}   r   r   atomconvert_atomrG   rJ   rA   ro   convert_compr   comp_nofunc)r   r   baseexponentr   r   r   r      s   



r   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 NFr\   )grouprJ   rG   	abs_grouprA   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 |  rd }|   rlt|   }nt|   }t |}|d| d 7 }t
|S |  r|   dd}t
|S |  rt|  }t
d|j S |  rt|   }t
|S |  rt|  S |  rt|  S |  rt|   }t|S |  rt|   }t|S d S )N_{}r   infty, d)LETTERgetTextsubexprrG   rJ   r   r   r   doprintSINGLE_QUOTESrA   r   SYMBOLoonumberreplaceNumberDIFFERENTIALget_differential_varnamemathit	rule2textmathit_textfracconvert_fracbinomconvert_binombrar   ketr   )r   sname	subscriptssubscriptNamevartextvalr   r   r   r      sT   



r   c                 C   s&   | j  }| j j }| jj}|||S r   )startgetInputStreamstopr   )ctxrC   startIdxstopIdxr   r   r   r   O  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|rt|}|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rt|dd  }n|r| jjj	dkrt|tdd  }|rt||S | jrt| j}nt| jj	}| j rt| j }nt| jj	}tj|ddd	}	|dkr|	S tj||	dd	S )
NFr   r   T   z\partialr   r^   r\   )loweruppergetSourceIntervalr   r   typer   r   get_differential_var_strr   r   r   rA   r   r   r%   rH   r   r   rJ   r   upperdlowerdro   rb   )
r   diff_op
partial_op	lower_itvlower_itv_lenr   
upper_textexpr_topexpr_botinverse_denomr   r   r   r   Y  sj   




r   c                 C   s$   t | j}t | j}tj||ddS r   )rJ   nkrA   binomial)r   expr_nexpr_kr   r   r   r     s   

r   c                 C      t | j}tj|ddS r   )rJ   r   rA   r   )r   r   r   r   r   r        
r   c                 C   r   r   )rJ   r   rA   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 rtj}tj||dd}d }d}|  r|   rt|   }nt|   }|dv r|dkrd| }d}ttj	||dd}|r|rt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 |   rt| j!}| j"rt| j"}tj"||ddS tj#|ddS | $ rt| j!}tj%|ddS | & rt'| dS | ( rt'| dS | ) rt*| S d S )Nr   )arcsinarccosarctanarccscarcsecarccota   Fr\   )arsinharcoshartanhr   r   )loglglnr   r#   )r  r   T)	sincostancscseccotsinhcoshtanhr^   r   r   	summationproduct)+func_normalL_PARENconvert_func_argfunc_argfunc_arg_noparensr   r   getattrrA   	functionsr   r   rG   rJ   r   r   Er   supexprro   r   r   r   r   r   r   r   argsappendFunctionFUNC_INThandle_integral	FUNC_SQRTr   rootsqrtFUNC_OVERLINE	conjugateFUNC_SUMhandle_sum_or_prod	FUNC_PRODFUNC_LIMhandle_limit)r   argr   rG   r   func_pow
should_powfnamer   r   
input_argsoutput_argsrr   r   r   r     s   














r   c                 C   s"   t | drt|  S t|  S )NrG   )rg   rJ   rG   rc   rh   )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|   }|   rt|   }nt|   }t||||fS t||S )Nr   r   r   \r   r{   )r[   rZ   r   r   r   r   r   rA   r   r   r   r   r   r   r   rJ   rG   r  Integral)r   	integrandint_varr   r   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  )rc   rd   rJ   subeqr   rG   r  r   r   rA   SumProduct)r   r   r   iter_varr   endr   r   r   r!  *  s   r!  c                 C   s   |   }| rt|  }n| r$t|  dd  }ntd}| r0d}nd}t| }t	| 
 }t||||S )Nr   r{   -+)	limit_subr   rA   r   r   r   ra   rJ   rG   rc   rd   Limit)r   subr   	directionapproachingcontentr   r   r   r$  9  s   
r$  c                 C   s   t |  }t|S r   )r   r   rA   r   )r   r   r   r   r   r   K  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   P  s    r   )r   ))importlib.metadatar   rA   sympy.externalr   sympy.printing.strr   sympy.physics.quantum.stater   r   errorsr   r
   r   r   	Exceptionr   rH   r@   rJ   rZ   rc   rp   rv   r   r|   r   r   r   r   r   r   r   r   r   r  r  r!  r$  r   r   r   r   r   r   <module>   sf   
!/
4a(