
    \h.                     t   S SK Jr  S SK JrJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  S S	KJr  / S
Qr " S S\5      r " S S\5      r " S S\	5      r " S S\5      rS rS rS rS rS rS r\R:                  R=                  S5      S    r\R:                  RA                  \5      \l        g)    )
Derivative)UndefinedFunctionAppliedUndef)Symbol)init_printing)LatexPrinter)PrettyPrinter)center_accent)
StrPrinter)
PRECEDENCE)vprint	vsstrreprvsprintvpprintvlatexinit_vprintingc                   $    \ rS rSrSrS rS rSrg)VectorStrPrinter   z'String Printer for vector expressions. c                   ^ SSK Jn  UR                  m[        [	        U4S jUR
                   5       5      5      [        [        UR                  S   5      [        5      -  (       aP  [        UR                  S   R                  5      n[        UR
                  5       H  u  pEX2R                  -  nM     U$ [        5       R                  U5      $ )Nr   dynamicsymbolsc              3   ,   >#    U  H	  oT:H  v   M     g 7fN .0its     U/var/www/auris/envauris/lib/python3.13/site-packages/sympy/physics/vector/printing.py	<genexpr>5VectorStrPrinter._print_Derivative.<locals>.<genexpr>   s     1[!V[s   )sympy.physics.vector.functionsr   _tboolsum	variables
isinstancetypeargsr   strfunc	enumerate_strr   doprint)selfer   olr   vr   s         @r    _print_Derivative"VectorStrPrinter._print_Derivative   s    A1Q[[1124q	?,=>?QVVAY^^$B!!++.))) /I<''**    c                 &   SSK Jn  UR                  n[        [	        U5      [
        5      (       a,  [        5       R                  U5      R                  SU-  S5      $ UR                  R                  SU R                  UR                  S5      -  -   $ )Nr   r   z(%s) z, )r#   r   r$   r(   r)   r   r   r/   replacer,   __name__	stringifyr*   )r0   r1   r   r   s       r    _print_Function VectorStrPrinter._print_Function   sm    Ad1g011<''*226A:rBBvv$..*F!FFFr6   r   N)r:   
__module____qualname____firstlineno____doc__r4   r<   __static_attributes__r   r6   r    r   r      s    1
+Gr6   r   c                       \ rS rSrSrS rSrg)VectorStrReprPrinter&   z+String repr printer for vector expressions.c                     [        U5      $ r   )repr)r0   ss     r    
_print_strVectorStrReprPrinter._print_str(   s    Awr6   r   N)r:   r>   r?   r@   rA   rI   rB   r   r6   r    rD   rD   &   s
    5r6   rD   c                   <   ^  \ rS rSrSrSU 4S jjrU 4S jrSrU =r$ )VectorLatexPrinter,   z&Latex Printer for vector expressions. c                    > SSK Jn  UR                  R                  nUR                  n[        U SU-   5      (       a3  [        [        U5      [        5      (       d  [        U SU-   5      " X5      $ [        [        U5      [        5      (       ab  UR                  U4:X  aQ  [        U5      nUb4  U R                  U[        S   5      nU R                  U5      nU< SU< S3$ [        TU ]A  U5      $ [        TU ]E  X5      $ )Nr   r   _print_Powz^{})r#   r   r,   r:   r$   hasattrr(   r)   r   getattrr*   r   parenthesizer   parenthesize_supersuper_printr<   )r0   exprexpr   r,   r   base	__class__s          r    r<   "VectorLatexPrinter._print_Function/   s    Ayy!!D)d*++tDz#4554T!124==T
$566DII!<M$<D ((z%/@A..t4%)3//w~d++7*455r6   c                   >^ SSK Jn  UR                  5       n[        U[        5      (       d  SU R                  U5      -  $ UR                  mUR                  nUR                  [        5      nUR                  n[        U4S jU 5       5      (       + n[        U4S jU 5       5      (       + nU(       d  U(       a  [        TU ]5  U5      $ [        U5      nU R                  U5      n	U	R!                  SS5      n
U
S   n	US:X  a  SU	-  n	O3US	:X  a  S
U	-  n	O'US:X  a  SU	-  n	OUS:X  a  SU	-  n	O[        TU ]5  U5      $ [        U
5      S:w  a  U	SU
S   -   -  n	U	$ )Nr   r   z\left(%s\right)c              3   L   >#    U  H  oR                   T1:X  d  M  S v   M     g7f)TN)free_symbolsr   s     r    r!   7VectorLatexPrinter._print_Derivative.<locals>.<genexpr>Q   s     Cc^^s-Bcs   $	$c              3   .   >#    U  H
  nTU:H  v   M     g 7fr   r   r   s     r    r!   r`   R   s     -1Qs   _   z\dot{%s}   z	\ddot{%s}   z
\dddot{%s}   z\ddddot{%s})r#   r   doitr(   r   r/   r$   rX   atomsr   r'   allrV   r4   lenr<   split)r0   der_exprr   rX   redsymstest1test2dotsrZ   
base_splitr   r[   s              @r    r4   $VectorLatexPrinter._print_DerivativeE   sH   A==?(J//%X(>>> }}jj&!!CcCCC----E7,X66 4y##D)ZZQ'
!}19%DQY$&DQY 4'DQY!D(D7,X66z?aC*Q-''Dr6   r   r   )	r:   r>   r?   r@   rA   r<   r4   rB   __classcell__r[   s   @r    rL   rL   ,   s    06," "r6   rL   c                   8   ^  \ rS rSrSrU 4S jrU 4S jrSrU =r$ )VectorPrettyPrinterj   z)Pretty Printer for vectorialexpressions. c                 4  > SSK Jn  UR                  nSn[        [	        UR
                  5      5      n[        U5      S:  a?  US   U:X  a  UR                  5         US-  nO[        TU ]%  U5      $ [        U5      S:  a  M?  [        [        UR                  5      [        5      (       a  UR                  R                  U4:X  d  [        TU ]%  U5      $ U R                  UR                  5      n[        UR                   5      S:  a  [        TU ]%  U5      $ US:  a  [        TU ]%  U5      $ SSSS	S
S.nUR"                  nU R$                  (       d/  Sn	['        SU5       H  n
U	S-  n	M
     US   S==   U	S-   -  ss'   U$ [)        US   S   Xt   5      /US'   U$ )Nr   r   rc      r8   u   ̇u   ̈u   ⃛u   ⃜)r   rc   rd   re   rf   'picturez(t))r#   r   r$   listreversedr'   rj   poprV   r4   r(   r)   rX   r   r*   r<   r}   __dict___use_unicoderanger
   )r0   derivr   r   dot_irn   pformrq   dapostrophesr   r[   s              r    r4   %VectorPrettyPrinter._print_Derivativem   s   AHU__-.$i!mBx1}

w077 $i!m 4

+->??QD(7,U33((4E u}}!7,U33 A:7,U33 ,,32	4 NN   K1e_s" %iLO{U22O  *!I,q/4;GHAiLr6   c                    > SSK Jn  UR                  nUR                  nUR                  nUR
                  nU R                  [        U5      5      n[        U[        5      (       a  XS4:X  d  [        TU ]-  U5      $ U$ )Nr   r   )r#   r   r$   r,   r*   r:   _print_Symbolr   r(   r   rV   r<   )	r0   r1   r   r   r,   r*   	func_namer   r[   s	           r    r<   #VectorPrettyPrinter._print_Function   sl    AvvvvMM	""6)#45 4!2337*1--r6   r   )	r:   r>   r?   r@   rA   r4   r<   rB   rt   ru   s   @r    rw   rw   j   s    3.` r6   rw   c                 T    [        U 40 UD6nSSKnUS:w  a  X#l        [        U5        gg)a  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   builtinsrb   print)rX   settingsoutstrr   s       r    r   r      s/    6 T&X&F&
f 	r6   c                 :    [        U5      nUR                  U 5      $ )zFunction 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().

)rD   r/   )rX   r   ps      r    r   r      s     	X&A99T?r6   c                 :    [        U5      nUR                  U 5      $ )aE  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/   )rX   r   string_printers      r    r   r      s    6 &h/N!!$''r6   c                     [        U5      nUR                  S   nSSKJn  U" U5      n UR	                  U 5      U" U5        $ ! U" U5        f = f)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)rw   	_settings&sympy.printing.pretty.pretty_symbologyr   r/   )rX   r   ppr   r   uflags         r    r   r      sN    & 
X	&B
 ,,}-KI{+E"zz$5!5!s   A 
Ac                 :    [        U5      nUR                  U 5      $ )aa  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}}'

)rL   r/   )rX   r   latex_printers      r    r   r   "  s     H 'x0M  &&r6   c                  P    [         U S'   [        U S'   [        U S'   [        S0 U D6  g)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r6   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   rD   rL   rw   r   r   r   r   r   r   rA   rk   paramsformatr   r6   r    <module>r      s    * ? $ 4 - 6 @ ) 0Gz G.+ ; ;|@- @F F"(>"D&'R$N 
			$	$%=	>q	A'//66v> r6   