K iddlmZddlZddlZddlmZddlmZmZddlZddlm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;mZ>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNddlOmPZPmQZQddlRmSZSddlTmUZUdd lVmWZWdd ZXd ZYd ZZd Z[e[GddZ\y)) annotationsN)product)AnyCallable)FMulAddPowRationallogexpsqrtcossintanasinacosacotasecacscsinhcoshtanhasinhacoshatanhacothasechacschexpandimflattenpolylogcancel expand_trigsignsimplifyUnevaluatedExprSatanatan2ModMaxMinrfEiSiCiairyai airyaiprimeairybiprimepiprimeisprimecotseccsccschsechcothFunctionIpiTuple GreaterThanStrictGreaterThanStrictLessThanLessThanEqualityOrAndLambdaIntegerDummysymbols)sympify_sympify) airybiprime)li)sympy_deprecation_warningchtdddt|}t|j|S)NzThe ``mathematica`` function for the Mathematica parser is now deprecated. Use ``parse_mathematica`` instead. The parameter ``additional_translation`` can be replaced by SymPy's .replace( ) or .subs( ) methods on the output expression instead.z1.11zmathematica-parser-new)deprecated_since_versionactive_deprecations_target)rQMathematicaParserrM _parse_old)sadditional_translationsparsers _/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/parsing/mathematica.py mathematicar[s; E"(#; 6 7F 6$$Q' ((c8t}|j|S)a Translate a string containing a Wolfram Mathematica expression to a SymPy expression. If the translator is unable to find a suitable SymPy expression, the ``FullForm`` of the Mathematica expression will be output, using SymPy ``Function`` objects as nodes of the syntax tree. Examples ======== >>> from sympy.parsing.mathematica import parse_mathematica >>> parse_mathematica("Sin[x]^2 Tan[y]") sin(x)**2*tan(y) >>> e = parse_mathematica("F[7,5,3]") >>> e F(7, 5, 3) >>> from sympy import Function, Max, Min >>> e.replace(Function("F"), lambda *x: Max(*x)*Min(*x)) 21 Both standard input form and Mathematica full form are supported: >>> parse_mathematica("x*(a + b)") x*(a + b) >>> parse_mathematica("Times[x, Plus[a, b]]") x*(a + b) To get a matrix from Wolfram's code: >>> m = parse_mathematica("{{a, b}, {c, d}}") >>> m ((a, b), (c, d)) >>> from sympy import Matrix >>> Matrix(m) Matrix([ [a, b], [c, d]]) If the translation into equivalent SymPy expressions fails, an SymPy expression equivalent to Wolfram Mathematica's "FullForm" will be created: >>> parse_mathematica("x_.") Optional(Pattern(x, Blank())) >>> parse_mathematica("Plus @@ {x, y, z}") Apply(Plus, (x, y, z)) >>> parse_mathematica("f[x_, 3] := x^3 /; x > 0") SetDelayed(f(Pattern(x, Blank()), 3), Condition(x**3, x > 0)) )rUparse)rWrYs rZparse_mathematicar_ sd F <<?r\c t|dk(r|d}td}|j|}|Dcgc]}|jd}}t |}t |t rUtd|t}t||jt|D cic]\}} ||dz| c} }Std|St|dk(r|d}|d} t|| Stdcc}wcc} }w) NrSlotzdummy0:clsz&Function node expects 1 or 2 arguments) lenr>atomsargsmax isinstancerJrLrKrIxreplace enumerate SyntaxError) riargrbslotsanumbersnumber_of_arguments variablesivbodys rZ_parse_FunctionrxVs 4yA~1g $&+,166!9,,!'l )7 3'*=)> ?UKI)S\\IV_L`2aDAq4!9a<2a%bc cb# TaG Awi&&BCC-3bs C7C<c&|j|SN)_initialize_classrcs rZ_decor|is Jr\c!eZdZUdZidddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*Zed+d,d-D]V\ZZZeezezd.zZ erd/ejzezd0zZ nejezd0zZ eje e iXd1d2d3d4d5Z ejd6ej d7fejd8ej d7fejd9ej d:fejd;ej dej Zejd?ej Zd@ZiZdAedB<iZdAedC<iZdAedD<edEZddGZedHZdIZdJZedKZedLZ edMZ!edNZ"dOZ#dPZ$dQZ%dRZ&dSZ'dTZ(dUZ)dVZ*e'dFdWdXife%e(dWdYife%e)dZd[d\d]d^d_d`fe%e*dadbife'dFdcddife%e*dedfife%e)dgdhdife%e*djdkife%e(dldmife'dFdndodpfe%e(dqdrife%e(dsdtife&dFdudvife%e(dwdxdyfe%e(dzd{d|d}d~ddfe%dFddife%e(dddfe%e(dddfe%e(ddife&dFdddfe%e)ddife%e)dddddfe'dFdddddfe%dFdddfe&dFdddfe%dFddife'dFdddddfe%dFddife&dFdddfgZ+ded<dddZ,dZ-dZ.gdZ/gdZ0edZ1edZ2dFZ3dZ4ddZ5ddZ6ddZ7ddZ8ddZ9ddZ:ddZ;dddZ<d dZ=d dZ>d dZ?ide@deAdeBdeCdd„ddĄddƄdeDdeEdeFdeGdeHdeIdeJdeKdeLdeMidd҄deNdeOdePdeQdeRdeSdeTdeUdeVdeWdeXdeYdeZde[de\de]ide^de_jde`deadebdecdeddeedefdegdddehdeidejdekdeldemidendeodepdeqderdesdetdeudevdewdexd~eyd}ezd|e{dze|dre}dte~ddeiZeedZdZdZyF( rUap An instance of this class converts a string of a Wolfram Mathematica expression to a SymPy expression. The main parser acts internally in three stages: 1. tokenizer: tokenizes the Mathematica expression and adds the missing * operators. Handled by ``_from_mathematica_to_tokens(...)`` 2. full form list: sort the list of strings output by the tokenizer into a syntax tree of nested lists and strings, equivalent to Mathematica's ``FullForm`` expression output. This is handled by the function ``_from_tokens_to_fullformlist(...)``. 3. SymPy expression: the syntax tree expressed as full form list is visited and the nodes with equivalent classes in SymPy are replaced. Unknown syntax tree nodes are cast to SymPy ``Function`` objects. This is handled by ``_from_fullformlist_to_sympy(...)``. zSqrt[x]zsqrt(x)z Rational[x,y]z Rational(x,y)zExp[x]zexp(x)zLog[x]zlog(x)zLog[x,y]zlog(y,x)zLog2[x]zlog(x,2)zLog10[x]z log(x,10)zMod[x,y]zMod(x,y)zMax[*x]zMax(*x)zMin[*x]zMin(*x)zPochhammer[x,y]zrf(x,y)z ArcTan[x,y]z atan2(y,x)zExpIntegralEi[x]zEi(x)zSinIntegral[x]zSi(x)zCosIntegral[x]zCi(x)z AiryAi[x]z airyai(x)zAiryAiPrime[x]zairyaiprime(x)z airybi(x)zairybiprime(x)z li(x)z primepi(x)zprime(x)z isprime(x))z AiryBi[x]zAiryBiPrime[x]zLogIntegral[x]z PrimePi[x]zPrime[x]z PrimeQ[x])Arc)SinCosTanCotSecCsc)r~hz[x]rqz(x)r~z**[]) ^{}z (?:(?<=[a-zA-Z\d])|(?<=\d\.)) # a letter or a number \s+ # any number of whitespaces (?:(?=[a-zA-Z\d])|(?=\.\d)) # a letter or a number *z (?:(?<=[])\d])|(?<=\d\.)) # ], ) or a number # '' (?=[(a-zA-Z]) # ( or a single letter z (?<=[a-zA-Z]) # a letter \( # ( as a character (?=.) # any characters z*(z (?: \A|(?<=[^a-zA-Z]) ) Pi # 'Pi' is 3.14159... in Mathematica (?=[^a-zA-Z]) r@) whitespaceadd*_1add*_2Piz (?: \A|(?<=[^a-zA-Z]) # at the top or a non-letter ) [A-Z][a-zA-Z\d]* # Function (?=\[) # [ as a character z( \{.*\} z (?: \A|(?<=[^a-zA-Z]) ) {arguments} # model argument like x, y,... (?=[^a-zA-Z]) z%dict[tuple[str, int], dict[str, Any]] TRANSLATIONScache_originalcache_compiledcp|j|j}|jj|yrz)_compile_dictionaryCORRESPONDENCESrupdate)rdds rZr{z#MathematicaParser._initialize_classs.  # #C$7$7 8 "r\Nci|_|jj|j|i}|jj|k7rNt |t s td|j|}||j_||j_ |jj|jjy)NzThe argument must be dict type) translationsrr __class__rrkdict ValueErrorrr)selfrXrs rZ__init__zMathematicaParser.__init__s   !2!23 " *&( # >> ( (,C C5t< !ABB(()@AA-DDNN ),-DNN )   !>!>?r\ci}|jD]\}}|j||j||j|d}|j|d}|j|d}|j|d}|jj |}|dj |}t||j}|j|\}} |jdk7s| t|k7rdj |}t||dddk(rd} n t|} || f} |D cgc]} | ddk7r| nd| z} } d d j| zd z}|jj | }tj|tj }i|| <||| d <||| d<||| d<|Scc} w)Nrr'{f}' function form is invalid.frr\z(?:(|z))) argumentsfsripat)items _check_input _apply_rules_replace FM_PATTERNsearchformatrgroup _get_argsstartrgjoinARGS_PATTERN_TEMPLATErecompileVERBOSE)rddicrfmrmerrfm_nameriendkey_argkeyxre_argsxyzpatStrrs rZrz%MathematicaParser._compile_dictionarys iik7 FB   R   R !!"l3B!!"l3Bb#&Bb#&B%%b)Ay7>>>D o%ggiG a(ID#wwyA~B7>>>D o%Bx{c!d)G$C@DD!AaDCKqTAX5DGD388G,,t3C..555DF**VRZZ0CAcFAcF4L!AcF6NAcF5Mo7 r!EsGc |j}d}d} |j|}|||z } |S|j}|j|\}}|j } |j |||| |}| }||d|z }||d}t)z'Parse Mathematica function to SymPy oner~rN)rrrrr_convert_one_function) rrWrscannedcurrrrirbgns rZ_convert_functionz#MathematicaParser._convert_functionUsoo 1 Ay1 .)Bq)ID#'')C**1b$SAAC q#w G#$A7r\c|t|f|jvr5|t|f}|j|d}tt||}n|df|jvrU|df}|j|d}i}t |D].\} } | ddk(rdj || d|| <n(|| || <0ndj |} t| |j|d} |j|d} d }d} | j| }||| z }nD|j} |j}|| d||| zz }|j}| |d} ]|d||z||dz}|S) Nrirr,z'{f}' is out of the whitelist.rrrr~) rgrrziprmrrrrrrr)rrWrrirrrx_argsrrurrtemplaterrrrxbgns rZrz'MathematicaParser._convert_one_function|s D ?d// /s4y/C&&s+F3FS&'A#Y$++ +s)C&&s+F3FA!&) 1Q43;88DH-AaDAw!  399B9?CS/ !$$S)$/$U+ 8$Ay8# A779D x1- -G%%'C ~H). dsGg #$ 'r\c|j}|jdz}gg}}g}|}t||d|D]\}} | dk(r|s|s|j||||dz}| dk(r|j| n| dk(r|j | dk(r|j| k| dk(sq|r|j |j|||ndz} || fS)z'Get arguments of a Mathematica functionraNrrrrr)stringrrmappendpop) rdrrWancsquarecurlyrirrucfunc_ends rZrzMathematicaParser._get_argss HHeegkBags+ DAqCx% Ac!H%!eCx Qc Cx a cJJLKK#a)) .q5X~r\cH|j|}|j||}|Srz) REPLACEMENTSreplace)rdrWbefafts rZrzMathematicaParser._replaces's# IIc3 r\cJ|j|\}}|j||Srz)RULESsub)rdrWrrrs rZrzMathematicaParser._apply_ruless#99S>SwwsAr\cdD]H}|j|d|j|dk7s-dj|}t|d|vr d}t|y)N))rr)rr)()rrarrrz Currently list is not supported.)countrr)rdrWbracketrs rZrzMathematicaParser._check_inputsm; &Gwwwqz"agggaj&997>>>C o% & !84CS/ ! r\c"|j||j|d}|j|d}|j|d}|j|d}|j|}|j|d}|j|d}|S)Nrrrrrr)rrrr)rrWs rZrVzMathematicaParser._parse_olds !   a . MM!S !   a *   a *  " "1 % MM!S !   a & r\cl|j|}|j|}|j|}|Srz)_from_mathematica_to_tokens_from_tokens_to_fullformlist_from_fullformlist_to_sympy)rrWs2s3s4s rZr^zMathematicaParser.parses7  - -a 0  . .r 2  - -b 1 r\InfixPrefixPostfixFlatRightLeft;cLt|tr|r|ddk(r|dgzSd|dgS)NrCompoundExpressionNull)rklistrs rZzMathematicaParser.%sE 1d8KPQVWXYVZ^rVrVH zNPQSYyZr\rSet SetDelayedAddTo SubtractFromTimesByDivideBy)=z:=z+=z-=z*=z/=z//c ||gSrzrerys rZrzMathematicaParser.(s 1a&r\&r>z/. ReplaceAllRule RuleDelayed)z->z:>z/; Conditionr AlternativesRepeated RepeatedNull)z..z...z||rGz&&rH!NotSameQUnsameQ)z===z=!=EqualUnequal LessEqualLess GreaterEqualGreater)z==z!=z<==>z;;SpanPlus+-Times)r/.Dotc,tj|Srz)rU_get_negrs rZrzMathematicaParser.8s'8'A'A!'Dr\c|Srzrers rZrzMathematicaParser.9sqr\)rrrPowerApplyMapMapAllcd||ddggS)Nr(List1rers rZrzMathematicaParser.;sZacdfgjpruivYwr\)z@@z/@z//@z@@@ Derivative Factorial Factorial2 Decrement)'rz!!z--c |g|Srzrers rZrzMathematicaParser.=s !ar\cd|g|S)NPartrers rZrzMathematicaParser.=sfa_RS_r\)r[[c dg|S)Nr,rers rZrzMathematicaParser.>s ||r\c |dS)Nrrers rZrzMathematicaParser.>s AaDr\)rr? PatternTestcd|dggSNPatternBlankrers rZrzMathematicaParser.AsIq7)4r\cdd|dgggS)NOptionalr=r>rers rZrzMathematicaParser.BsZ)Q )BCr\cd|dggS)Nr= BlankSequencerers rZrzMathematicaParser.CsYO+<=r\cd|dggS)Nr=BlankNullSequencerers rZrzMathematicaParser.Dsi-@,ABr\)_z_._____rEcd|d|ggSr<rers rZrzMathematicaParser.Fs)Q! )Er\rb SlotSequence)#z##z7list[tuple[str, str | None, dict[str, str | Callable]]]_mathematica_op_precedencec ddgS)Nrbr-rerer\rZrzMathematicaParser.Ks fc]r\c ddgS)NrIr-rerer\rZrzMathematicaParser.Ls ~s+r\z[A-Za-z][A-Za-z0-9]*z (?:[0-9]+(?:\.[0-9]*)?|\.[0-9]+))rrr6r)rr]]rc~t|tr)tjtj |rd|Sdd|gS)Nrr -1)rkstrrmatchrU_numberrdrs rZr%zMathematicaParser._get_negUs;$Q,:K:S:SUV1W1#wo^egkmn]oor\c d|dgS)Nr'rPrerTs rZ_get_invzMathematicaParser._get_invYsD!!r\c0|j |jS|j|jg}|jdd|jddz}|j D]\}}}|D]}|j | |jd|jttj||j d|j dtjddj|zdz}||_|jS)Nct| Srz)rgrs rZrz2MathematicaParser._get_tokenizer..hs #a&r\)rr rrr)_regex_tokenizer_literalrS_enclosure_open_enclosure_closerKrsortextendmaprescaperr)rtokens tokens_escapetypstratsymdictk tokenizers rZ_get_tokenizerz MathematicaParser._get_tokenizer_s  ,(( (--.,,Q/$2G2G2JJ #'#B#B ( C ($$Q' ( ( 01 c"))]34 c dJJsSXXf%55;< )$$$r\c|j}g} |jd}|dk(r t|dkDr|j|nt j d||dzd}| t d||jzdz}|dkDr|j|d||jd||dz|jddg||dzd}t|D]h\}}t|tr |jd } | dk(rn5|jd } | dk(s| | kr t d |d| || d zdz}L|||<j|Dcgc]6}t|tr!|jr|j|n|g8} }| D cgc] }|D]} |  } }} | r$| dd k(r| jd| r | dd k(r| r$| dd k(r| jd| r | dd k(r| Scc}wcc} }w)N"rrz(?O,O%&GHH'(:):;jYZIZI[>\\ (KN (epp_`z!S/Aaiiky((+XYWZZp p(4!4Q!4!44d* JJqMd*t+ JJrNt+ q4s ;G1G6ct|trytj|j|rytjd|j z|ryy)NFz-?T)rkrrrRr[rSrtokens rZ_is_opzMathematicaParser._is_opsA eT " 88DMM5 ) 88D4<<' /r\c0|dvry|j| S)N)rrTr}r{s rZ_is_valid_star1z!MathematicaParser._is_valid_star1 J ;;u%%%r\c0|dvry|j| S)N)rrTrr{s rZ_is_valid_star2z!MathematicaParser._is_valid_star2rr\cngg}g}d}|t|krs||}||jvr8|dj||j||jgn|dk(rZt|ddk(r|dd|dk(rtd|dz|j |d|d<|jgn||j vr|j j |}|j||dk7rtd}|dk(rm|ddk(re|ddk(r|j|d zd nI|dd k(rA||d zd k(r d||d z<n-||d zdk(rd||d z<|j|d zd n||t|ddk(r|ddd k(r td|j |dd}||d<g} |dd|dk7r.| j|j|dd|dk7r.| j|dd k(r%t| d k7rtdt| z|dj| |jdn|dj||d z }|t|krst|d k7r td|j |dS)Nrrrz %s cannot be followed by comma ,zunmatched enclosurerNrrarr6rfrz( ) not valid syntaxTz1( must be followed by one expression, %i detectedz"Stack should have only one element) rgr\rrn_parse_after_bracesr]indexinsertrreverse RuntimeError) rrbstackopen_seqpointerr|indunmatched_enclosure last_stacknew_stack_elements rZrz.MathematicaParser._from_tokens_to_fullformlistsDF #7OE,,,b   '& R #uRy>Q&59R=HRL+H%&H8TV<&WXX 44U2Y?b  R $///++11%8'', <*56K*L'}")<#B<3. #MM'!)S9%b\T1%gai0C748wqy 1!' !2d!:48wqy 1 & gai =&9 911uRy>Q&59R=C+?%&<==!55eBiF &b $&!Bimx|3%,,UYY[9Bimx|3!))+B<3&3/@+AQ+F%&Y\_`q\r&rssb   !23 R b   ' qLG]F #^ u:?CD D''a11r\cd}t|}||kr||}|dk(r|r|j||dz}(|dk(r|jd|dz}D|dkDr |j|d||}n|d}t|dkDr|ddk(r|j |ddn|j |t |D]}|jd||z}d}|dz }||kryy#t$r|j||dz}YwxYw)NrrYrar)rgrrrnr_rrange) rlinesrbinside_enclosurersizer| prev_exprrus rZ_util_remove_newlinesz'MathematicaParser._util_remove_newliness16{n7OE}#JJw'AIDa<JJqMAIDQ;!$($<$A%)A,:N*NLL12/LL+w"AJJqM" qLG=n'! 7+  !sC%%DDct|}d}||krw|dkDrf|j||dz rO|j||r;||dk(rd||<||dzd||dz<n|j|d|dz }|dz }|dz }||krvyy)Nrrarr)rgrrr)rrbrrs rZ_util_add_missing_asterisksz-MathematicaParser._util_add_missing_asterisks sKn! ((! )<=((9 '?c)&)F7O*01*=a*@F7Q;'MM'3/qLGAID qLG!nr\c8 d}g}|j|||t|jD]\}}}d|vr|j|t |}d} | |ks0|| } t | t r| |vr|| } t | t r| g} d} ng} d} | dvr1||jk(r"| dkDr|j|| dz s| dz } u||jk(rA| dk(s6| |dz k(s.|j|| dz s|j|| dzr| dz } d}| || <||jk(r~|j| dz }|j| }| dk(r|j|}n| dk(r|j|}| dz} |d z}| j|| }||jk(r| d z|kr|j|| dz| r|j||j| dz}|j| dz}|dk(r|j|}n|dk(r|j|}|d z}| d z|kr|j|| dz| r|j|n:||j k(r| d z|krd|| dz| k(rY|j| |g|d }|j| dz|j| dz}|d z}| d z|kr || dz| k(rY|j|n||j"k(r| dz|krw|| dz| k(rlt | t r | || |g|| <n| || ||| <|j| dz|j| dz}|d z}| dz|kr || dz| k(rl|j|n | j|n||jk(rm| t%d | |dz k(s|j|| dzr|j&| || <n| j|j| dz|dz}n}||j(k(rn| t%d | dk(s|j|| dz r|j&| || <n-| j|j| dz | dz} |dz}t | t*rVt-j.t*| }|| }| j1t |t2r| j5|n||| <| dz } | |krt |dkDst |dk(r-t |dk(r|r|j7||St9d t |dkDr!|dr|ddd k(r|ddd}d g||}|S|dS)NFrrrarTr!rrfrz1'Prefix' op_type should not have a grouping stratz0unable to create a single AST for the expressionr)rreversedrKrrgrkrQPREFIXr}INFIXrrVr%rFLAT_check_op_compatibleRIGHTLEFT TypeError_missing_arguments_defaultPOSTFIXrtypingcastclearrr_rrn)rrbrchangedrop_typegrouping_stratop_dictrrr|op_namenode first_indexarg1arg2node_pother_opop_callnew_nodecompound_expressions rZrz%MathematicaParser._parse_after_braces!s ""5&2BC089X9X0Y_  ,G^Wg~008F DGD.weS)ew.>.5enG"'3/ 'y&' !&'  *w$++/E'TU+^b^i^ijpqx{|q|j}^~ 1  $**,"a<7dQh+>$++fU\_`U`NaBbfjfqfqrxzADEzEsFgG#qLG$"G&*F7O$**,%zz'!)4%zz'2 C<#'==#6D"c\#'==#6D1   D)!%)TYY6")A+"49R9RSYZabcZcSdfk9l & d 3+1::gai+@'-zz'!)'<#+s?+/==+>D%-_+/==+>D $ #*A+"49R9RSYZabcZcSdfk9l#MM$/+tzz9")A+"4 9Je9S & wo >)/ & 719 5'-zz'!)'< $  #*A+"4 9Je9S #MM$/+tyy8")A+"4 9Je9S#-gs#;;BF;DWY]:^F;$7:A&BUW[:\F;$7 & 719 5'-zz'!)'< $ #*A+"4 9Je9S#MM$/ KK- DKK/)5"+,_"``"dQh.$++fWq[>Q2R.Td.M.Me.T.VF7O KK 719(=> AID DLL0)5"+,_"``"a<4;;vgk7J+K.Td.M.Me.T.VF7O KK 719(=>#qLG AID!'84,2KK',J#*D> %h5 KK1.6F7O1 uD. _ @ v;?s5zQ3v;!3C//8HIIPQ Q u:>ayVAYq\-AA12#7"I%"I&"I & &ayr\cD||k(ryddh}ddh}||vr||vry||vr||vryy)NTrr!rrFre)rop1op2muldivaddsubs rZrz&MathematicaParser._check_op_compatiblesA #:ss &=SF] &=SF]r\cg}|g}tjd|}d}|D]}||dS|j}|||jddjddjddj }|j dk(r|dk7r|dj |n||j dk(r*|dk7r|dj ||jn?|j dk(r,|dj |g|j |dd|j}|dS)zH Parses FullForm[Downvalues[]] generated by Mathematica z[\[\],]rrr~rrr) rfinditerrrstriprrrr) rwmexproutr generatorlast_posrRposition last_exprs rZ_from_fullform_to_fullformlistz0MathematicaParser._from_fullform_to_fullformlists6KK F3  #E}1v {{}Hx199#rBJJ3PRS[[\_acdjjlI{{}#?"I$$Y/#%?"I$$Y/ #%b   )- U2Yr]+yy{H! #"1v r\c6ddlmmfd|S)Nr)r>Symbolct|trAt|dkDr(|d}|ddDcgc] }| }}||Stdt|tr|St |Scc}w)NrrazEmpty list of expressions)rkrrgrrQrN)exprheadrorir>r converters rZrzHMathematicaParser._from_fullformlist_to_fullformsympy..converters$%t9q=7D6:12h?sIcN?D?)8D>400$%@AAD#&d|#~%@sA6)sympyr>r)rpylistr>rrs @@@rZ#_from_fullformlist_to_fullformsympyz5MathematicaParser._from_fullformlist_to_fullformsympys* &  r\r Logc$tt|Srz)r rrqs rZrzMathematicaParser.s#x{+r\Log2ct|dSNrfr rs rZrzMathematicaParser.s #a)r\Log10ct|dS)N rrs rZrzMathematicaParser.s 3q":r\ExpSqrtrrrrrrArcSinArcCosArcTancPt|dk(rtt|St|Sr)rgr*rr)rs rZrzMathematicaParser.s!CFaKUHQK0T1Xr\ArcCotArcSecArcCscSinhCoshTanhCothSechCschArcSinhArcCoshArcTanhArcCothArcSechArcCschExpandImReFlattenPolylogCancel TrigExpandSignSimplifyDeferIdentityrc"tjSrz)r(Zerors rZrzMathematicaParser.s 166r\r+r,r- Pochhammer ExpIntegralEi SinIntegral CosIntegralAiryAi AiryAiPrimeAiryBi AiryBiPrime LogIntegralPrimePiPrimePrimeQr,)r?rc"fd|S)NcDt|trft|dtr |d}n+jj|dt |d}||ddDcgc] }| c}Sj j|t |Scc}w)Nrra)rkr_node_conversionsgetr>_atom_conversionsrM)rrrorecursers rZr z>MathematicaParser._from_fullformlist_to_sympy..recurse,s$%d1gt,"47+D1155d1gxQ?PQDd12h?sgcl?@@--11$ FF@s%Bre)rfull_form_listr s` @rZrz-MathematicaParser._from_fullformlist_to_sympy*s G~&&r\c|}|jjD] \}}|jt||}"|Srz)r rrr>)rmformrmma_form sympy_nodes rZ_from_fullformsympy_to_sympyz.MathematicaParser._from_fullformsympy_to_sympy8sF$($:$:$@$@$B @ Hj<< 2J?D @ r\rz)rprQ)r|z str | listreturnbool)rbr)rrrbrrr)F)rbrrr)rrQrrQ)rrQ)rr)__name__ __module__ __qualname____doc__rrarctrirrlowerrrrrrrrrARG_MTRX_PATTERNrr__annotations__rr classmethodr{rrrrrrrrrVr^rrrrrrrKrr[rSr\r]r%rVrZrirr}rrrrrrrrrrrr r r r rrrr8r9r:rrrrrrrrr=r<r;rrrrrrrr rr!r"r#r$r%r&r'r(r+r,r-r.r/r0r1r2r3r4rOrPr5r6r7rArCrBrDrErFrGrHrxr r?r@r rrrer\rZrUrUns (9 ( (  J  :  K J 9 9 ) l G ' ' [!" *#$!*!"!/O6{-67@B) S! 3Y]U " syy{"Q&.Bq5(BBx()    L BJJZZ  !   BJJZZ  !   BJJZZ  !   BJJ ZZ  ! ;& ER ZZ !J"rzz#ZZ! ;=L7<=?N9>=?N9>## @0==~%N@D##J "": E FG D E D $Z[ \ s012 U,g^clt~ A t012 $j)* t\*+ fM:; t[)* sN+, $z.AB tTl# tUm$ U|$ gi89 WI[v]kr{|} tVn% F01 G'23 sEl# D(* + W~& gU8Lwxy $lLXcde 08TUV 3.IJ sM*+ $4C=B   sEFG V>:;G$[ W$N#+" 'H1G+O,pp""%"-^& & 52n!F*wr 6!$QQQ Q H Q + Q # Q %Q sQ Q sQ sQ sQ sQ sQ s!Q$ $%Q& $'Q( M)Q* $+Q, $-Q. $/Q2 3Q4 5Q6 7Q8 9Q: ;Q< =Q@ 5AQB 5CQD 5EQF 5GQH 5IQJ 5KQN &OQP bQQR ehhSQT 7UQV 7WQX &YQ\ k]Q^ _Q` HaQb cQd AeQl !mQn soQp sqQr ssQt buQv wQx ryQz r{Q| &}Q~ {Q@ &AQB {CQD rEQF 7GQH IQJ 'KQN OQP $QQR  SQT UQV XWQX YQZ b[Q\ s]Q` OaQh 'r\rUrz)] __future__rrr itertoolsrrrrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFrGrHrIrJrKrLsympy.core.sympifyrMrNsympy.functions.special.besselrO'sympy.functions.special.error_functionsrPsympy.utilities.exceptionsrQr[r_rxr|rUrer\rZr%s"  AAAAAAAAAAAAAAAAAA 166@ )3lD& NNNr\