§
    OŠtj.  ã                   ó�  — d dl mZ d dl mZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d d	lmZ g d
¢Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de	¦  «        Z G d„ de¦  «        Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej                             d¦  «        d          Zej                              e¦  «        e_        dS )é    )Ú
Derivative)ÚUndefinedFunctionÚAppliedUndef)ÚSymbol)Úinit_printing)ÚLatexPrinter)ÚPrettyPrinter)Úcenter_accent)Ú
StrPrinter)Ú
PRECEDENCE)ÚvprintÚ	vsstrreprÚvsprintÚvpprintÚvlatexÚinit_vprintingc                   ó   — e Zd ZdZd„ Zd„ ZdS )ÚVectorStrPrinterz'String Printer for vector expressions. c                 ó   ‡— ddl m} |j        Št          t	          ˆfd„|j        D ¦   «         ¦  «        ¦  «        t          t          |j        d         ¦  «        t          ¦  «        z  rEt          |j        d         j        ¦  «        }t          |j        ¦  «        D ]\  }}||j        z  }Œ|S t          ¦   «                              |¦  «        S )Nr   ©Údynamicsymbolsc              3   ó$   •K  — | ]
}|‰k    V — Œd S ©N© ©Ú.0ÚiÚts     €ú[/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/physics/vector/printing.pyú	<genexpr>z5VectorStrPrinter._print_Derivative.<locals>.<genexpr>   s'   øè è € Ð1Ð1 �Q˜!’VÐ1Ð1Ð1Ð1Ð1Ð1ó    )Úsympy.physics.vector.functionsr   Ú_tÚboolÚsumÚ	variablesÚ
isinstanceÚtypeÚargsr   ÚstrÚfuncÚ	enumerateÚ_strr   Údoprint)ÚselfÚer   Úolr   Úvr   s         @r   Ú_print_Derivativez"VectorStrPrinter._print_Derivative   sÉ   ø€ ØAÐAÐAÐAÐAÐAØÔˆÝ•Ð1Ð1Ð1Ð1 Q¤[Ð1Ñ1Ô1Ñ1Ô1Ñ2Ô2Ý�4 ¤ q¤	™?œ?Õ,=Ñ>Ô>ñ?ð 	+å�Q”V˜A”Y”^Ñ$Ô$ˆBÝ! !¤+Ñ.Ô.ð *ð *‘��1Ø�nÔ)Ñ)��ØˆIå‘<”<×'Ò'¨Ñ*Ô*Ð*r!   c                 ó&  — ddl m} |j        }t          t	          |¦  «        t
          ¦  «        r8t          ¦   «                              |¦  «                             d|z  d¦  «        S |j	        j
        d|                      |j        d¦  «        z  z   S )Nr   r   z(%s)Ú z, )r"   r   r#   r'   r(   r   r   r.   Úreplacer+   Ú__name__Ú	stringifyr)   )r/   r0   r   r   s       r   Ú_print_Functionz VectorStrPrinter._print_Function   s†   € ØAÐAÐAÐAÐAÐAØÔˆÝ•d˜1‘g”gÕ0Ñ1Ô1ð 	CÝ‘<”<×'Ò'¨Ñ*Ô*×2Ò2°6¸A±:¸rÑBÔBÐBØŒvŒ ¨$¯.ª.¸¼ÀÑ*FÔ*FÑ!FÑFÐFr!   N)r7   Ú
__module__Ú__qualname__Ú__doc__r3   r9   r   r!   r   r   r      s=   € € € € € Ø1Ð1ð
+ð 
+ð 
+ðGð Gð Gð Gð Gr!   r   c                   ó   — e Zd ZdZd„ ZdS )ÚVectorStrReprPrinterz+String repr printer for vector expressions.c                 ó    — t          |¦  «        S r   )Úrepr)r/   Úss     r   Ú
_print_strzVectorStrReprPrinter._print_str(   s   € Ý�A‰wŒwˆr!   N)r7   r:   r;   r<   rB   r   r!   r   r>   r>   &   s)   € € € € € Ø5Ð5ðð ð ð ð r!   r>   c                   ó.   ‡ — e Zd ZdZdˆ fd„	Zˆ fd„Zˆ xZS )ÚVectorLatexPrinterz&Latex Printer for vector expressions. Nc                 óZ  •— ddl m} |j        j        }|j        }t          | d|z   ¦  «        r?t          t          |¦  «        t          ¦  «        s t          | d|z   ¦  «        ||¦  «        S t          t          |¦  «        t          ¦  «        r||j
        |fk    rpt          |¦  «        }|�>|                      |t          d         ¦  «        }|                      |¦  «        }|›d|›d�S t          ¦   «                              |¦  «        S t          ¦   «                              ||¦  «        S )Nr   r   Ú_print_ÚPowz^{Ú})r"   r   r+   r7   r#   Úhasattrr'   r(   r   Úgetattrr)   r   Úparenthesizer   Úparenthesize_superÚsuperÚ_printr9   )r/   ÚexprÚexpr   r+   r   ÚbaseÚ	__class__s          €r   r9   z"VectorLatexPrinter._print_Function/   s!  ø€ ØAÐAÐAÐAÐAÐAØŒyÔ!ˆØÔˆå�D˜) dÑ*Ñ+Ô+ð 	6Ý•t˜D‘z”zÕ#4Ñ5Ô5ð	6à2•7˜4 ¨TÑ!1Ñ2Ô2°4¸Ñ=Ô=Ð=Ý�˜T™
œ
Õ$5Ñ6Ô6ð 	6¸D¼IÈ!ÈÒ<MÐ<Må˜$‘<”<ˆDØˆð ×(Ò(¨­z¸%Ô/@ÑAÔA�Ø×.Ò.¨tÑ4Ô4�Ø%) T T¨3¨3¨3Ð/Ð/å‘w”w—~’~ dÑ+Ô+Ð+å‘7”7×*Ò*¨4°Ñ5Ô5Ð5r!   c                 ó  •‡— ddl m} |                     ¦   «         }t          |t          ¦  «        sd|                      |¦  «        z  S |j        Š|j        }|                     t          ¦  «        }|j
        }t          ˆfd„|D ¦   «         ¦  «         }t          ˆfd„|D ¦   «         ¦  «         }|s|r!t          ¦   «                              |¦  «        S t          |¦  «        }|                      |¦  «        }	|	                     dd¦  «        }
|
d         }	|dk    rd|	z  }	nE|d	k    rd
|	z  }	n9|dk    rd|	z  }	n-|dk    rd|	z  }	n!t          ¦   «                              |¦  «        S t          |
¦  «        dk    r|	d|
d         z   z  }	|	S )Nr   r   z\left(%s\right)c              3   ó4   •K  — | ]}|j         ‰hk    ¯d V — ŒdS )TN)Úfree_symbolsr   s     €r   r    z7VectorLatexPrinter._print_Derivative.<locals>.<genexpr>Q   s1   øè è € ÐCÐC ¨Q¬^À¸sÒ-BÐ-B˜Ð-BÐ-BÐ-BÐ-BÐCÐCr!   c              3   ó$   •K  — | ]
}‰|k    V — Œd S r   r   r   s     €r   r    z7VectorLatexPrinter._print_Derivative.<locals>.<genexpr>R   s'   øè è € Ð-Ð- 1˜˜QšÐ-Ð-Ð-Ð-Ð-Ð-r!   Ú_é   z\dot{%s}é   z	\ddot{%s}é   z
\dddot{%s}é   z\ddddot{%s})r"   r   Údoitr'   r   r.   r#   rO   Úatomsr   r&   ÚallrM   r3   Úlenr9   Úsplit)r/   Úder_exprr   rO   ÚredÚsymsÚtest1Útest2ÚdotsrQ   Ú
base_splitr   rR   s              @€r   r3   z$VectorLatexPrinter._print_DerivativeE   s¸  øø€ ØAÐAÐAÐAÐAÐAà—=’=‘?”?ˆÝ˜(¥JÑ/Ô/ð 	?Ø%¨¯ª°XÑ(>Ô(>Ñ>Ð>ð ÔˆØŒ}ˆØ�jŠj�Ñ&Ô&ˆØÔ!ˆÝÐCÐCÐCÐC cÐCÑCÔCÑCÔCÐCˆÝÐ-Ð-Ð-Ð-¨Ð-Ñ-Ô-Ñ-Ô-Ð-ˆØð 	7�Eð 	7Ý‘7”7×,Ò,¨XÑ6Ô6Ð6õ �4‰yŒyˆØ×#Ò# DÑ)Ô)ˆØ—Z’Z  QÑ'Ô'ˆ
Ø˜!Œ}ˆØ�1Š9ˆ9Ø Ñ%ˆDˆDØ�QŠYˆYØ $Ñ&ˆDˆDØ�QŠYˆYØ  4Ñ'ˆDˆDØ�QŠYˆYØ! DÑ(ˆDˆDå‘7”7×,Ò,¨XÑ6Ô6Ð6Ýˆz‰?Œ?˜aÒÐØ�C˜* Qœ-Ñ'Ñ'ˆDØˆr!   r   )r7   r:   r;   r<   r9   r3   Ú__classcell__©rR   s   @r   rD   rD   ,   s\   ø€ € € € € Ø0Ð0ð6ð 6ð 6ð 6ð 6ð 6ð,"ð "ð "ð "ð "ð "ð "ð "ð "r!   rD   c                   ó,   ‡ — e Zd ZdZˆ fd„Zˆ fd„Zˆ xZS )ÚVectorPrettyPrinterz)Pretty Printer for vectorialexpressions. c                 óÈ  •— ddl m} |j        }d}t          t	          |j        ¦  «        ¦  «        }t          |¦  «        dk    rZ|d         |k    r|                     ¦   «          |dz  }n!t          ¦   «          	                    |¦  «        S t          |¦  «        dk    °Zt          t          |j        ¦  «        t          ¦  «        r|j        j        |fk    s!t          ¦   «          	                    |¦  «        S |                      |j        ¦  «        }t          |j        ¦  «        dk    r!t          ¦   «          	                    |¦  «        S |dk    r!t          ¦   «          	                    |¦  «        S dddd	d
dœ}|j        }| j        s4d}	t'          d|¦  «        D ]}
|	dz  }	Œ|d         dxx         |	dz   z  cc<   n&t)          |d         d         ||         ¦  «        g|d<   |S )Nr   r   éÿÿÿÿrX   é   r5   u   Ì‡u   Ìˆu   âƒ›u   âƒœ)r   rX   rY   rZ   r[   ú'Úpicturez(t))r"   r   r#   ÚlistÚreversedr&   r_   ÚpoprM   r3   r'   r(   rO   r   r)   r9   rp   Ú__dict__Ú_use_unicodeÚranger
   )r/   Úderivr   r   Údot_irc   Úpformrf   ÚdÚapostrophesr   rR   s              €r   r3   z%VectorPrettyPrinter._print_Derivativem   sé  ø€ ØAÐAÐAÐAÐAÐAàÔˆØˆÝ•H˜Uœ_Ñ-Ô-Ñ.Ô.ˆå�$‰iŒi˜!ŠmˆmØ�BŒx˜1Š}ˆ}Ø—’‘
”
�
Ø˜‘
��å‘w”w×0Ò0°Ñ7Ô7Ð7õ �$‰iŒi˜!Šmˆmõ �4 ¤
Ñ+Ô+Õ->Ñ?Ô?ð 	5Ø”” Q DÒ(Ð(Ý‘7”7×,Ò,¨UÑ3Ô3Ð3à×(Ò(¨¬Ñ4Ô4ˆEõ ˆuŒ}ÑÔ Ò!Ð!Ý‘7”7×,Ò,¨UÑ3Ô3Ð3ð �AŠ:ˆ:Ý‘7”7×,Ò,¨UÑ3Ô3Ð3ð Ø,Ø,Ø3Ø2ð	4ð 4ˆð ŒNˆð Ô ð 	IØˆKÝ˜1˜e‘_”_ð #ð #�Ø˜sÑ"��ØˆiŒL˜ˆOˆOŒO˜{¨UÑ2Ñ2ˆOˆO‰OˆOå)¨!¨I¬,°q¬/¸4À¼;ÑGÔGÐHˆAˆi‰LØˆr!   c                 ó
  •— ddl m} |j        }|j        }|j        }|j        }|                      t          |¦  «        ¦  «        }t          |t          ¦  «        r||fk    s!t          ¦   «                              |¦  «        S |S )Nr   r   )r"   r   r#   r+   r)   r7   Ú_print_Symbolr   r'   r   rM   r9   )	r/   r0   r   r   r+   r)   Ú	func_namery   rR   s	           €r   r9   z#VectorPrettyPrinter._print_Function�   s‰   ø€ ØAÐAÐAÐAÐAÐAØÔˆàŒvˆØŒvˆØ”Mˆ	Ø×"Ò"¥6¨)Ñ#4Ô#4Ñ5Ô5ˆõ ˜4Õ!2Ñ3Ô3ð 	.¸À!Àº¸Ý‘7”7×*Ò*¨1Ñ-Ô-Ð-Øˆr!   )r7   r:   r;   r<   r3   r9   rh   ri   s   @r   rk   rk   j   sX   ø€ € € € € Ø3Ð3ð.ð .ð .ð .ð .ð`ð ð ð ð ð ð ð ð r!   rk   c                 ód   — t          | fi |¤Ž}ddl}|dk    r||_        t          |¦  «         dS dS )aJ  Function for printing of expressions generated in the
    sympy.physics vector package.

    Extends SymPy's StrPrinter, takes the same setting accepted by SymPy's
    :func:`~.sstr`, and is equivalent to ``print(sstr(foo))``.

    Parameters
    ==========

    expr : valid SymPy object
        SymPy expression to print.
    settings : args
        Same as the settings accepted by SymPy's sstr().

    Examples
    ========

    >>> from sympy.physics.vector import vprint, dynamicsymbols
    >>> u1 = dynamicsymbols('u1')
    >>> print(u1)
    u1(t)
    >>> vprint(u1)
    u1

    r   NÚNone)r   ÚbuiltinsrW   Úprint)rO   ÚsettingsÚoutstrr�   s       r   r   r   ­   sK   € õ6 �TÐ&Ð&˜XÐ&Ð&€Fà€O€O€OØ�&ÒÐØˆŒ
Ýˆf‰Œˆˆˆð 	Ðr!   c                 óJ   — t          |¦  «        }|                     | ¦  «        S )a  Function for displaying expression representation's with vector
    printing enabled.

    Parameters
    ==========

    expr : valid SymPy object
        SymPy expression to print.
    settings : args
        Same as the settings accepted by SymPy's sstrrepr().

    )r>   r.   )rO   rƒ   Úps      r   r   r   Ð   s!   € õ 	˜XÑ&Ô&€AØ�9Š9�T‰?Œ?Ðr!   c                 óJ   — t          |¦  «        }|                     | ¦  «        S )a�  Function for displaying expressions generated in the
    sympy.physics vector package.

    Returns the output of vprint() as a string.

    Parameters
    ==========

    expr : valid SymPy object
        SymPy expression to print
    settings : args
        Same as the settings accepted by SymPy's sstr().

    Examples
    ========

    >>> from sympy.physics.vector import vsprint, dynamicsymbols
    >>> u1, u2 = dynamicsymbols('u1 u2')
    >>> u2d = dynamicsymbols('u2', level=1)
    >>> print("%s = %s" % (u1, u2 + u2d))
    u1(t) = u2(t) + Derivative(u2(t), t)
    >>> print("%s = %s" % (vsprint(u1), vsprint(u2 + u2d)))
    u1 = u2 + u2'

    )r   r.   )rO   rƒ   Ústring_printers      r   r   r   á   s%   € õ6 & hÑ/Ô/€NØ×!Ò! $Ñ'Ô'Ð'r!   c                 ó¾   — t          |¦  «        }|j        d         }ddlm}  ||¦  «        }	 |                     | ¦  «         ||¦  «         S #  ||¦  «         w xY w)aú  Function for pretty printing of expressions generated in the
    sympy.physics vector package.

    Mainly used for expressions not inside a vector; the output of running
    scripts and generating equations of motion. Takes the same options as
    SymPy's :func:`~.pretty_print`; see that function for more information.

    Parameters
    ==========

    expr : valid SymPy object
        SymPy expression to pretty print
    settings : args
        Same as those accepted by SymPy's pretty_print.


    Úuse_unicoder   )Úpretty_use_unicode)rk   Ú	_settingsÚ&sympy.printing.pretty.pretty_symbologyr‹   r.   )rO   rƒ   ÚpprŠ   r‹   Úuflags         r   r   r      s�   € õ& 
˜XÑ	&Ô	&€Bð
 ”,˜}Ô-€KØIÐIÐIÐIÐIÐIØÐ˜{Ñ+Ô+€Eð"Ø�zŠz˜$ÑÔàÐ˜5Ñ!Ô!Ð!Ð!øÐÐ˜5Ñ!Ô!Ð!Ð!øøøs   ¯A ÁAc                 óJ   — t          |¦  «        }|                     | ¦  «        S )aÑ  Function for printing latex representation of sympy.physics.vector
    objects.

    For latex representation of Vectors, Dyadics, and dynamicsymbols. Takes the
    same options as SymPy's :func:`~.latex`; see that function for more
    information;

    Parameters
    ==========

    expr : valid SymPy object
        SymPy expression to represent in LaTeX form
    settings : args
        Same as latex()

    Examples
    ========

    >>> from sympy.physics.vector import vlatex, ReferenceFrame, dynamicsymbols
    >>> N = ReferenceFrame('N')
    >>> q1, q2 = dynamicsymbols('q1 q2')
    >>> q1d, q2d = dynamicsymbols('q1 q2', 1)
    >>> q1dd, q2dd = dynamicsymbols('q1 q2', 2)
    >>> vlatex(N.x + N.y)
    '\\mathbf{\\hat{n}_x} + \\mathbf{\\hat{n}_y}'
    >>> vlatex(q1 + q2)
    'q_{1} + q_{2}'
    >>> vlatex(q1d)
    '\\dot{q}_{1}'
    >>> vlatex(q1 * q2d)
    'q_{1} \\dot{q}_{2}'
    >>> vlatex(q1dd * q1 / q1d)
    '\\frac{q_{1} \\ddot{q}_{1}}{\\dot{q}_{1}}'

    )rD   r.   )rO   rƒ   Úlatex_printers      r   r   r   "  s&   € õH ' xÑ0Ô0€Mà× Ò  Ñ&Ô&Ð&r!   c                  óZ   — t           | d<   t          | d<   t          | d<   t          di | ¤Ž dS )aó  Initializes time derivative printing for all SymPy objects, i.e. any
    functions of time will be displayed in a more compact notation. The main
    benefit of this is for printing of time derivatives; instead of
    displaying as ``Derivative(f(t),t)``, it will display ``f'``. This is
    only actually needed for when derivatives are present and are not in a
    physics.vector.Vector or physics.vector.Dyadic object. This function is a
    light wrapper to :func:`~.init_printing`. Any keyword
    arguments for it are valid here.

    {0}

    Examples
    ========

    >>> from sympy import Function, symbols
    >>> t, x = symbols('t, x')
    >>> omega = Function('omega')
    >>> omega(x).diff()
    Derivative(omega(x), x)
    >>> omega(t).diff()
    Derivative(omega(t), t)

    Now use the string printer:

    >>> from sympy.physics.vector import init_vprinting
    >>> init_vprinting(pretty_print=False)
    >>> omega(x).diff()
    Derivative(omega(x), x)
    >>> omega(t).diff()
    omega'

    Ústr_printerÚpretty_printerr‘   Nr   )r   r   r   r   )Úkwargss    r   r   r   K  s>   € õB &€Fˆ=ÑÝ&€FÐÑÝ$€Fˆ?ÑÝÐÐ�FÐÐÐÐÐr!   zExamples
    ========N)!Úsympy.core.functionr   r   r   Úsympy.core.symbolr   Úsympy.interactive.printingr   Úsympy.printing.latexr   Úsympy.printing.pretty.prettyr	   r�   r
   Úsympy.printing.strr   Úsympy.printing.precedencer   Ú__all__r   r>   rD   rk   r   r   r   r   r   r   r<   r`   ÚparamsÚformatr   r!   r   ú<module>r       s  ðØ *Ð *Ð *Ð *Ð *Ð *Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø $Ð $Ð $Ð $Ð $Ð $Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø -Ð -Ð -Ð -Ð -Ð -Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø @Ð @Ð @Ð @Ð @Ð @Ø )Ð )Ð )Ð )Ð )Ð )Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ðð ð €ðGð Gð Gð Gð G�zñ Gô Gð Gð.ð ð ð ð Ð+ñ ô ð ð;ð ;ð ;ð ;ð ;˜ñ ;ô ;ð ;ð|@ð @ð @ð @ð @˜-ñ @ô @ð @ðF ð  ð  ðFð ð ð"(ð (ð (ð>"ð "ð "ðD&'ð &'ð &'ðR$ð $ð $ðN 
Ô	×	$Ò	$Ð%=Ñ	>Ô	>¸qÔ	A€Ø'Ô/×6Ò6°vÑ>Ô>€Ô Ð Ð r!   