a
    kº”h’  ã                   @   s&  d Z ddddddddd	d
dddddœZed ed ed ed ed ed ed ed ed ed ed ed ed ed ed ed ed ed ed ed ed ed ed dœZdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Z	eeeeeee	d(œZ
d)d*„ Ze ¡ Zed ed+< ed ed,< ed ed-< ed ed.< ed ed/< ed ed0< ed ed1< ed ed2< ed d ed3< ed d ed4< ed d ed5< ed d ed6< ed d ed7< ed d ed8< ed ed9< ed ed:< ed ed;< ed ed<< ed ed=< ed3 ed>< d?d@„ ZdAS )Bz>A module providing information about the necessity of bracketsé   é
   é   é   é#   é(   é2   é<   éF   éd   iè  é$   é%   é&   )ÚLambdaÚXorÚOrÚAndÚ
RelationalÚAddÚMulÚPowÚFuncÚNotÚAtomZ	BitwiseOrZ
BitwiseXorZ
BitwiseAndr   r   r   r   r   r   r   r   r   )Z
Equivalentr   ZImpliesr   r   r   r   r   ÚSubr   ÚFunctionÚNegativeInfinityZMatAddZMatPowZMatrixSolveÚModZTensAddZTensMulZHadamardProductZHadamardPowerZKroneckerProductZEqualityZ
Unequalityc                    sD   ddl m‰  t‡ fdd„| jD ƒƒr,td S |  ¡ r<td S td S )Né    ©r   c                 3   s0   | ](}t |d ƒo&t|ˆ ƒo&|jtd k V  qdS )Ú
precedencer   N)ÚhasattrÚ
isinstancer   Ú
PRECEDENCE)Ú.0Úargr   © úG/var/www/auris/lib/python3.9/site-packages/sympy/printing/precedence.pyÚ	<genexpr>?   s   ÿz!precedence_Mul.<locals>.<genexpr>r   r   )Zsympy.core.functionr   ÚanyÚargsr"   Zcould_extract_minus_sign©Úitemr%   r   r&   Úprecedence_Mul=   s    ÿr,   c                 C   s   | j dk rtd S td S )Nr   r   r   ©Úpr"   r*   r%   r%   r&   Úprecedence_RationalH   s    
r/   c                 C   s   | j dk rtd S td S ©Nr   r   r   r-   r*   r%   r%   r&   Úprecedence_IntegerN   s    
r1   c                 C   s   | dk rt d S t d S r0   )r"   r*   r%   r%   r&   Úprecedence_FloatT   s    r2   c                 C   s<   | j rtd S | jr"t|  d¡ƒS | jr0td S td S d S )Nr   r   r   r   )Zis_generatorr"   Z	is_groundr   ZcoeffZis_termr*   r%   r%   r&   Úprecedence_PolyElementZ   s    r3   c                 C   s    | j dkrt| jƒS td S d S )Nr   r   )Zdenomr3   Znumerr"   r*   r%   r%   r&   Úprecedence_FracElemente   s    

r4   c                 C   s   t | jd ƒd S )Nr   g      à?)r   r)   r*   r%   r%   r&   Úprecedence_UnevaluatedExprl   s    r5   )ZIntegerr   ÚRationalZFloatZPolyElementZFracElementÚUnevaluatedExprc                 C   sf   t | dƒr| jS t| tƒs^t| ƒ ¡ D ]6}|j}|tv rHt| | ƒ  S |tv r&t|   S q&td S )zZReturns the precedence of a given object.

    This is the precedence for StrPrinter.
    r   r   )	r    r   r!   ÚtypeÚmroÚ__name__ÚPRECEDENCE_FUNCTIONSÚPRECEDENCE_VALUESr"   )r+   ÚiÚnr%   r%   r&   r   {   s    

r   ÚIntegralZSumZProductZLimitZ
DerivativeZTensorProductZ	TransposeZAdjointZDotZCrossZGradientZ
DivergenceZCurlZ	LaplacianÚUnionZIntersectionZ
ComplementZSymmetricDifferenceZ
ProductSetZ
DotProductc                 C   sD   ddl m} t| |ƒr$t| jd ƒS | jj}|tv r<t| S t| ƒS )z¢Returns the precedence of a given object according to the
    traditional rules of mathematics.

    This is the precedence for the LaTeX and pretty printer.
    r   )r7   )	Zsympy.core.exprr7   r!   Úprecedence_traditionalr)   Ú	__class__r:   ÚPRECEDENCE_TRADITIONALr   )r+   r7   r>   r%   r%   r&   rA   £   s    
rA   N)Ú__doc__r"   r<   r,   r/   r1   r2   r3   r4   r5   r;   r   ÚcopyrC   rA   r%   r%   r%   r&   Ú<module>   sš   òè#ù