Ë
    7^(h¬.  ã                   óº
  — d Z ddlZddlmZmZmZmZmZ ddlm	Z	 ddl
mZ ddlmZmZmZmZmZmZmZmZmZmZ ddlmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z# ddl$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* dd	l+m,Z,m-Z-m.Z.m/Z/m0Z0 dd
l1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8 ddl9m:Z: ddl;m<Z<m=Z= ddl>m?Z? ddl@mAZA ddlBmCZC ddlDmEZE ddlFmGZG  ed«      ZHddgiZIeH�rddlHmJZJmKZKmLZLmMZM ddlNmOZOmPZPmQZQ  eJj¤                  eC«        eJj¤                  e:«        eMj¤                  e:«        eJj¤                  e2«        eMj¤                  e2«        eKj¤                  e2«        eLj¤                  e2«        eJj¤                  e8«        eMj¤                  e8«        eKj¤                  e8«        eLj¤                  e8«        eJj¤                  e<«        eKj¤                  e<«        eJj¤                  e=«        eKj¤                  e=«        eJj¤                  eA«        eJj¤                  e«        eJj¤                  e«        eJj¤                  e«        eJj¤                  e-«        eJj¤                  e,«        eJj¤                  e«        eJj¤                  e0«        eJj¤                  e.«        eJj¤                  e/«        eJj¤                  e«        eJj¤                  e«        eJj¤                  e«        eJj¤                  e«        eJj¤                  e«        eJj¤                  e«        eJj¤                  e«        eJj¤                  e«        eJj¤                  e «        eJj¤                  e!«        eJj¤                  e#«        eJj¤                  e"«        eJj¤                  e'«        eJj¤                  e)«        eJj¤                  e%«        eJj¤                  e(«        eJj¤                  e&«        eJj¤                  e*«        eJj¤                  e«        eJj¤                  e«        eJj¤                  e«        eJj¤                  e«        eJj¤                  e«        eJj¤                  e«        eOj¤                  eC«      d„ «       ZS eOj¤                  e4«      d„ «       ZS eQj¤                  eC«      d„ «       ZS eQj¤                  e4«      d„ «       ZS ePj¤                  e4«      d0d„«       ZTeHrddlHmUZU n
 G d„ d «      ZU eGd!¬"«       G d#„ d$eUe?«      «       ZV eGd!¬"«       G d%„ d&eV«      «       ZW eGd!¬"«       G d'„ d(eV«      «       ZX eGd!¬"«       G d)„ d*eV«      «       ZYd+„ ZZ G d,„ d-e«      Z[ eGd!¬"«       G d.„ d/«      «       Z\y)1zj
The objects in this module allow the usage of the MatchPy pattern matching
library on SymPy expressions.
é    N)ÚListÚCallableÚ
NamedTupleÚAnyÚDict)Ú_sympify)Úimport_module)
ÚlogÚsinÚcosÚtanÚcotÚcscÚsecÚerfÚgammaÚ
uppergamma)ÚacoshÚasinhÚatanhÚacothÚacschÚasechÚcoshÚsinhÚtanhÚcothÚsechÚcsch)ÚatanÚacscÚasinÚacotÚacosÚasec)ÚfresnelcÚfresnelsÚerfcÚerfiÚEi)ÚAdd)ÚBasic)ÚExpr)ÚMul)ÚPow)ÚEqualityÚ
Unequality)ÚSymbol)Úexp)ÚIntegral)Úsrepr)Údoctest_depends_onÚmatchpy)Ú*)Ú	OperationÚCommutativeOperationÚAssociativeOperationÚOneIdentityOperation)Úop_iterÚcreate_operation_expressionÚop_lenc                 óT   — t        | j                  d   f| j                  d   z   «      S )Nr   é   ©ÚiterÚ_args©Ú	operations    ú_/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/utilities/matchpy_connector.pyÚ_rH   [   s'   € ä�Y—_‘_ QÑ'Ð)¨I¯O©O¸AÑ,>Ñ>Ó?Ð?ó    c                 ó,   — t        | j                  «      S ©NrB   rE   s    rG   rH   rH   _   s   € ä�I—O‘OÓ$Ð$rI   c                 ó8   — dt        | j                  d   «      z   S )NrA   ©ÚlenrD   rE   s    rG   rH   rH   c   s   € à”3�y—‘ qÑ)Ó*Ñ*Ð*rI   c                 ó,   — t        | j                  «      S rK   rM   rE   s    rG   rH   rH   g   s   € ä�9—?‘?Ó#Ð#rI   c                 ó   —  t        | «      |Ž S rK   )Útype)Úold_operationÚnew_operandsÚvariable_names      rG   Úsympy_op_factoryrU   k   s   € à"Œt�MÓ" LÐ1Ð1rI   )ÚWildcardc                   ó   — e Zd Zd„ Zy)rV   c                 ó<   — || _         || _        || _        || _        y rK   )Ú	min_countÚ
fixed_sizerT   Úoptional)ÚselfÚ
min_lengthrZ   rT   r[   s        rG   Ú__init__zWildcard.__init__t   s   € Ø'ˆDŒNØ(ˆDŒOØ!.ˆDÔØ$ˆD�MrI   N)Ú__name__Ú
__module__Ú__qualname__r^   © rI   rG   rV   rV   s   s   „ ó	%rI   rV   )r7   )Úmodulesc                   óv   ‡ — e Zd ZU eed<   eed<   dd„Zd„ Zdd„Zd„ Z	e
dd„«       Zˆ fd„Zdd	„Zd
„ Zd„ Zˆ xZS )Ú_WildAbstractr]   rZ   c                 ó’   — | j                   }| j                  }|�t        |«      }t        j                  | ||t        |«      |«       y rK   )r]   rZ   r   rV   r^   Ústr)r\   rT   r[   Úassumptionsr]   rZ   s         rG   r^   z_WildAbstract.__init__€   s?   € Ø—_‘_ˆ
Ø—_‘_ˆ
ØÐÜ Ó)ˆHÜ×Ñ˜$ 
¨J¼¸MÓ8JÈHÕUrI   c                 óv   — | j                   | j                  | j                  | j                  | j                  dœS )N©r]   rZ   rY   rT   r[   rj   ©r\   s    rG   Ú__getstate__z_WildAbstract.__getstate__‡   s1   € àŸ/™/ØŸ/™/ØŸ™Ø!×/Ñ/ØŸ™ñ
ð 	
rI   c                 óV   — | j                  || «       t        j                  | ||fi |¤ŽS rK   )Ú	_sanitizere   Ú__xnew__)ÚclsrT   r[   rh   s       rG   Ú__new__z_WildAbstract.__new__�   s*   € Ø�‰�k 3Ô'Ü×%Ñ% c¨=¸(ÑRÀkÑRÐRrI   c                 ó2   — | j                   | j                  fS rK   ©rT   r[   rk   s    rG   Ú__getnewargs__z_WildAbstract.__getnewargs__”   s   € Ø×!Ñ! 4§=¡=Ð0Ð0rI   c                 ó4   — t        j                  | |fi |¤Ž}|S rK   )r2   ro   )rp   rT   r[   rh   Úobjs        rG   ro   z_WildAbstract.__xnew__—   s   € ä�o‰o˜c =Ñ@°KÑ@ˆØˆ
rI   c                 óú   •— | j                   r=t        ‰| �	  «       | j                  | j                  | j
                  | j                   fz   S t        ‰| �	  «       | j                  | j                  | j
                  fz   S rK   )r[   ÚsuperÚ_hashable_contentrY   rZ   rT   )r\   Ú	__class__s    €rG   ry   z_WildAbstract._hashable_contentœ   se   ø€ Ø�=Š=Ü‘7Ñ,Ó.°$·.±.À$Ç/Á/ÐSW×SeÑSeÐgk×gtÑgtÐ1uÑuÐuä‘7Ñ,Ó.°$·.±.À$Ç/Á/ÐSW×SeÑSeÐ1fÑfÐfrI   c                 óP   —  t        | «      | j                  | j                  ¬«      S )Nrs   )rQ   rT   r[   rk   s    rG   Ú__copy__z_WildAbstract.__copy__¢   s   € ØŒt�D‹z¨×(:Ñ(:ÀTÇ]Á]ÔSÐSrI   c                 ó   — t        | «      S rK   )rg   rk   s    rG   Ú__repr__z_WildAbstract.__repr__¥   s   € Ü�4‹yÐrI   c                 ó   — | j                   S rK   ©Únamerk   s    rG   Ú__str__z_WildAbstract.__str__¨   s   € Ø�y‰yÐrI   )NN)Úreturnre   )r_   r`   ra   ÚintÚ__annotations__Úboolr^   rl   rq   rt   Ústaticmethodro   ry   r|   r~   r‚   Ú__classcell__)rz   s   @rG   re   re   {   sN   ø… àƒOØÓóVò
óSò1ð òó ðôgóTòörI   re   c                   ó   — e Zd ZdZdZy)ÚWildDotrA   TN©r_   r`   ra   r]   rZ   rb   rI   rG   rŠ   rŠ   ¬   s   „ à€JØ�JrI   rŠ   c                   ó   — e Zd ZdZdZy)ÚWildPlusrA   FNr‹   rb   rI   rG   r�   r�   ²   ó   „ à€JØ�JrI   r�   c                   ó   — e Zd ZdZdZy)ÚWildStarr   FNr‹   rb   rI   rG   r�   r�   ¸   rŽ   rI   r�   c                 ó¦   — t        | «      }t        j                  dd|«      }t        j                  dd|«      }t        j                  dd|«      }|S )NzWildDot\('(\w+)'\)z\1zWildPlus\('(\w+)'\)z*\1zWildStar\('(\w+)'\))r5   ÚreÚsub)ÚexprÚss     rG   Ú
_get_sreprr–   ¾   sI   € Üˆd‹€AÜ
�‰Ð$ e¨QÓ/€AÜ
�‰Ð% v¨qÓ1€AÜ
�‰Ð% v¨qÓ1€AØ€HrI   c                   ó"   — e Zd ZU eed<   eed<   y)ÚReplacementInfoÚreplacementÚinfoN)r_   r`   ra   r   r…   rb   rI   rG   r˜   r˜   Æ   s   … ØÓØ
„IrI   r˜   c                   óÖ   — e Zd ZdZg ddfdededefd„Zdeded	e	f   fd
„Z
de	deded	e	f   fd„Zde	ded	e	f   fd„Zde	ded	e	f   fd„Zg g dfde	dee	   dee	   deddf
d„Zddefd„Zy)ÚReplacera  
    Replacer object to perform multiple pattern matching and subexpression
    replacements in SymPy expressions.

    Examples
    ========

    Example to construct a simple first degree equation solver:

    >>> from sympy.utilities.matchpy_connector import WildDot, Replacer
    >>> from sympy import Equality, Symbol
    >>> x = Symbol("x")
    >>> a_ = WildDot("a_", optional=1)
    >>> b_ = WildDot("b_", optional=0)

    The lines above have defined two wildcards, ``a_`` and ``b_``, the
    coefficients of the equation `a x + b = 0`. The optional values specified
    indicate which expression to return in case no match is found, they are
    necessary in equations like `a x = 0` and `x + b = 0`.

    Create two constraints to make sure that ``a_`` and ``b_`` will not match
    any expression containing ``x``:

    >>> from matchpy import CustomConstraint
    >>> free_x_a = CustomConstraint(lambda a_: not a_.has(x))
    >>> free_x_b = CustomConstraint(lambda b_: not b_.has(x))

    Now create the rule replacer with the constraints:

    >>> replacer = Replacer(common_constraints=[free_x_a, free_x_b])

    Add the matching rule:

    >>> replacer.add(Equality(a_*x + b_, 0), -b_/a_)

    Let's try it:

    >>> replacer.replace(Equality(3*x + 4, 0))
    -4/3

    Notice that it will not match equations expressed with other patterns:

    >>> eq = Equality(3*x, 4)
    >>> replacer.replace(eq)
    Eq(3*x, 4)

    In order to extend the matching patterns, define another one (we also need
    to clear the cache, because the previous result has already been memorized
    and the pattern matcher will not iterate again if given the same expression)

    >>> replacer.add(Equality(a_*x, b_), b_/a_)
    >>> replacer._matcher.clear()
    >>> replacer.replace(eq)
    4/3
    FÚcommon_constraintsÚlambdifyrš   c                 ón   — t         j                  «       | _        || _        || _        || _        i | _        y rK   )r7   ÚManyToOneMatcherÚ_matcherÚ_common_constraintÚ	_lambdifyÚ_infoÚ
_wildcards)r\   r�   rž   rš   s       rG   r^   zReplacer.__init__  s/   € Ü×0Ñ0Ó2ˆŒØ"4ˆÔØ!ˆŒØˆŒ
Ø/1ˆ�rI   Ú
lambda_strrƒ   .c                 ó@   — t        d«       t        |t        «       «      S )Nzfrom sympy import *)ÚexecÚevalÚlocals)r\   r¦   s     rG   Ú_get_lambdazReplacer._get_lambda  s   € ÜÐ"Ô#Ü�J¤£Ó)Ð)rI   Úconstraint_exprÚcondition_templatec           	      ó  — |j                  t        «      D �cg c]  }|j                  ‘Œ }}dj                  |«      }t	        |«      }|j                  |«      }t        j                  | j                  d|› d|› d�«      «      S c c}w )Nú, úlambda z: (ú))	Úatomsre   r�   Újoinr–   Úformatr7   ÚCustomConstraintr«   )r\   r¬   r­   ÚxÚwildsÚ
lambdaargsÚfullexprÚ	conditions           rG   Ú_get_custom_constraintzReplacer._get_custom_constraint  s„   € Ø!0×!6Ñ!6´}Ó!EÖF˜A�—“ÐFˆÐFØ—Y‘Y˜uÓ%ˆ
Ü˜oÓ.ˆØ&×-Ñ-¨hÓ7ˆ	Ü×'Ñ'Ø×Ñ˜w z l°#°i°[ÀÐBÓCóEð 	Eùò	 Gs   ˜Bc                 ó&   — | j                  |d«      S )Nz({}) != False©r»   ©r\   r¬   s     rG   Ú_get_custom_constraint_nonfalsez(Replacer._get_custom_constraint_nonfalse  s   € Ø×*Ñ*¨?¸OÓLÐLrI   c                 ó&   — | j                  |d«      S )Nz({}) == Truer½   r¾   s     rG   Ú_get_custom_constraint_truez$Replacer._get_custom_constraint_true  s   € Ø×*Ñ*¨?¸NÓKÐKrI   Nr”   Úconditions_trueÚconditions_nonfalsec                 óü  — t        |«      }t        |«      }| j                  d d  }|D �cg c]  }| j                  |«      ‘Œ }}|D �cg c]  }| j                  |«      ‘Œ }	}|j	                  |«       |j	                  |	«       t        j                  |g|¢­Ž }
| j                  rNddj                  d„ |j                  t        «      D «       «      › dt        |«      › �}| j                  |«      }|}nF| j                  j                  |j                  t        «      D �ci c]  }t!        |«      |“Œ c}«       | j"                  rt%        ||«      }| j&                  j)                  |
|«       y c c}w c c}w c c}w )Nr°   r¯   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wrK   r€   )Ú.0r¶   s     rG   ú	<genexpr>zReplacer.add.<locals>.<genexpr>+  s   è ø€ Ò-X¸¨a¯f­fÑ-Xùs   ‚z: )r   r¢   rÁ   r¿   Úextendr7   ÚPatternr£   r³   r²   re   r–   r«   r¥   ÚupdaterV   rg   r¤   r˜   r¡   Úadd)r\   r”   r™   rÂ   rÃ   rš   ÚconstraintsÚcondÚconstraint_conditions_trueÚconstraint_conditions_nonfalseÚpatternr¦   Úlambda_exprÚis                 rG   rË   zReplacer.add  sc  € ä˜‹~ˆÜ˜{Ó+ˆØ×-Ñ-©aÐ0ˆà?Nö&PØ7;ˆD×,Ñ,¨TÕ2ð&PÐ"ð &Pð DWö*XØ;?ˆD×0Ñ0°Õ6ð*XÐ&ð *Xà×ÑÐ5Ô6Ø×ÑÐ9Ô:Ü—/‘/ $Ð5¨Ò5ˆØ�>Š>Ø" 4§9¡9Ñ-X¸d¿j¹jÌÓ>WÔ-XÓ#YÐ"ZÐZ\Ô]gÐhsÓ]tÐ\uÐvˆJØ×*Ñ*¨:Ó6ˆKØ%‰Kà�O‰O×"Ñ"°t·z±zÄ(Ó7KÖ#L°!¤C¨£F¨A¡IÒ#LÔMØ�:Š:Ü)¨+°tÓ<ˆKØ�‰×Ñ˜' ;Õ/ùò&Pùò*Xùò $Ms   ªE/ÁE4Ä E9Ú	max_countc           	      ó¢  — g }d}d}|�r|dk  s||k  �rd}t         j                  |«      D ]å  \  }}	 t        t        | j                  j                  |«      «      «      \  }}	| j                  r(|j                  }
|j                  |j                  «       n|}
| j                  r	 |
di |	¤Ž}n@|
j                  |	j                  «       D ��ci c]  \  }}| j                  |   |“Œ c}}«      }t         j                  j                  |||«      }d} n |dz  }|r|dk  r�Œ||k  r�Œ| j                  r||fS |S c c}}w # t         $ r Y �Œ!w xY w)NTr   FrA   rb   )r7   Úpreorder_iter_with_positionÚnextrC   r¡   Úmatchr¤   r™   Úappendrš   r£   ÚxreplaceÚitemsr¥   Ú	functionsÚreplaceÚStopIteration)r\   Ú
expressionrÓ   ÚinfosÚreplacedÚreplace_countÚsubexprÚposÚreplacement_dataÚsubstr™   ÚresultÚkÚvs                 rG   rÜ   zReplacer.replace4  s[  € ð ˆØˆØˆÚ˜I¨šM¨]¸YÓ-FØˆHÜ '× CÑ CÀJÓ Oò ‘�˜ðÜ.2´4¸¿¹×8KÑ8KÈGÓ8TÓ3UÓ.VÑ+Ð$ eØ—z’zØ&6×&BÑ&B˜ØŸ™Ð%5×%:Ñ%:Õ;à&6˜à—~’~Ù!,Ñ!5¨uÑ!5™à!,×!5Ñ!5ÐY^×YdÑYdÓYf×6gÑQUÐQRÐTU°t·±ÀqÑ7IÈ1Ñ7LÓ6gÓ!h˜ä!(×!2Ñ!2×!:Ñ!:¸:ÀsÈFÓ!S�JØ#�HÙð!ð& ˜QÑˆMñ+ ˜I¨œM¨]¸YÔ-Fð, �:Š:Ø˜uÐ$Ð$àÐùó 7høô
 %ò Úðús$   ³BEÃD;Ã&+EÄ;EÅ	EÅE)éÿÿÿÿ)r_   r`   ra   Ú__doc__Úlistr†   r^   rg   r   r-   r«   r»   r¿   rÁ   r   r   rË   r„   rÜ   rb   rI   rG   rœ   rœ   Ë   s  „ ñ6ðp 35ÀuÐ[`ñ 2¨4ð 2Àð 2ÐTXó 2ð* cð *¨h°s¸D°yÑ.Aó *ðE°dð EÐPSð EÐX`ÐadÐfjÐajÑXkó EðM¸tð MÈÐQTÐVZÐQZÑH[ó MðL¸4ð LÀHÈSÐRVÈYÑDWó Lð JLØ.0¸dñ0˜ð 0¸DÀ¹Jð 0Ø!% d¡ð0Ø8;ð0ØGKó0ñ, ¨Sô  rI   rœ   )T)]rê   r’   Útypingr   r   r   r   r   Úsympy.core.sympifyr   Úsympy.externalr	   Úsympy.functionsr
   r   r   r   r   r   r   r   r   r   Ú%sympy.functions.elementary.hyperbolicr   r   r   r   r   r   r   r   r   r   r   r   Ú(sympy.functions.elementary.trigonometricr    r!   r"   r#   r$   r%   Ú'sympy.functions.special.error_functionsr&   r'   r(   r)   r*   Úsympy.core.addr+   Úsympy.core.basicr,   Úsympy.core.exprr-   Úsympy.core.mulr.   Úsympy.core.powerr/   Úsympy.core.relationalr0   r1   Úsympy.core.symbolr2   Ú&sympy.functions.elementary.exponentialr3   Úsympy.integrals.integralsr4   Úsympy.printing.reprr5   Úsympy.utilities.decoratorr6   r7   Ú__doctest_requires__r9   r:   r;   r<   Úmatchpy.expressions.functionsr=   r>   r?   ÚregisterrH   rU   rV   re   rŠ   r�   r�   r–   r˜   rœ   rb   rI   rG   ú<module>r     s  ðñó 
ß 8Õ 8å 'Ý (ß W× W× Wß ~× ~× ~Ó ~ß W× Wß VÕ VÝ Ý "Ý  Ý Ý  ß 8Ý $Ý 6Ý .Ý %Ý 8ñ ˜	Ó
"€ð   Ð,Ð ò ßcÓcßZÑZà€I×Ñ�xÔ Ø€I×Ñ�sÔØ!Ð×!Ñ! #Ô&à€I×Ñ�sÔØ!Ð×!Ñ! #Ô&Ø!Ð×!Ñ! #Ô&Ø!Ð×!Ñ! #Ô&à€I×Ñ�sÔØ!Ð×!Ñ! #Ô&Ø!Ð×!Ñ! #Ô&Ø!Ð×!Ñ! #Ô&à€I×Ñ�xÔ Ø!Ð×!Ñ! (Ô+Ø€I×Ñ�zÔ"Ø!Ð×!Ñ! *Ô-à€I×Ñ�sÔØ€I×Ñ�sÔØ€I×Ñ�uÔØ€I×Ñ�zÔ"Ø€I×Ñ�xÔ Ø€I×Ñ�xÔ Ø€I×Ñ�sÔØ€I×Ñ�rÔØ€I×Ñ�tÔØ€I×Ñ�tÔØ€I×Ñ�sÔØ€I×Ñ�sÔØ€I×Ñ�sÔØ€I×Ñ�sÔØ€I×Ñ�sÔØ€I×Ñ�sÔØ€I×Ñ�tÔØ€I×Ñ�tÔØ€I×Ñ�tÔØ€I×Ñ�tÔØ€I×Ñ�tÔØ€I×Ñ�tÔØ€I×Ñ�tÔØ€I×Ñ�tÔØ€I×Ñ�tÔØ€I×Ñ�tÔØ€I×Ñ�tÔØ€I×Ñ�tÔØ€I×Ñ�uÔØ€I×Ñ�uÔØ€I×Ñ�uÔØ€I×Ñ�uÔØ€I×Ñ�uÔØ€I×Ñ�uÔà€W×Ñ�hÓñ@ó  ð@ð €W×Ñ�eÓñ%ó ð%ð €V‡_�_�XÓñ+ó ð+ð €V‡_�_�UÓñ$ó ð$ð *Ð ×)Ñ)¨%Ó0ò2ó 1ð2ñ Þ ÷%ñ %ñ ˜LÔ)ô-�H˜fó -ó *ð-ñ` ˜LÔ)ôˆmó ó *ðñ
 ˜LÔ)ôˆ}ó ó *ðñ
 ˜LÔ)ôˆ}ó ó *ðò
ô�jô ñ
 ˜LÔ)÷Hð Hó *ñHrI   