
    sg                     T    d dl Zd dlZddlmZ ddlmZ dZ G d dee      Zd Z	d	 Z
y)
    N   )ReprPrinter)
StrPrinter)AddInfinityIntegerMulNegativeInfinityPowc                   6     e Zd ZdZd fd	Zd Zd Zd Z xZS )PythonPrinterzFA printer which converts an expression into its Python interpretation.c                     t         |   |       g | _        g | _        t        D ](  }d|z  }t        t        |      }t        t        ||       * y )Nz	_print_%s)	super__init__symbols	functionsSTRPRINTgetattrr   setattrr   )selfsettingsnamef_namef	__class__s        H/var/www/html/venv/lib/python3.12/site-packages/sympy/printing/python.pyr   zPythonPrinter.__init__   sQ    "  	.D 4'F
F+AM61-	.    c                     |j                   j                  }t        t        |      s)|| j                  vr| j                  j                  |       t        j                  | |      S N)func__name__hasattrsympyr   appendr   _print_Function)r   exprr    s      r   r%   zPythonPrinter._print_Function   sK    yy!!ud#DNN(BNN!!$'))$55r   c                     | j                  |      }|| j                  vr| j                  j                  |       t        j                  | |      S r   )_strr   r$   r   _print_Symbol)r   r&   symbols      r   r)   zPythonPrinter._print_Symbol    s@    4%LL'''d33r   c                     t        d      )Nz*Modules in the expression are unacceptable)
ValueError)r   r&   s     r   _print_modulezPythonPrinter._print_module&   s    EFFr   r   )	r!   
__module____qualname____doc__r   r%   r)   r-   __classcell__)r   s   @r   r   r   
   s    P
.64Gr   r   c                 ,   t        |      }|j                  |       }d}i }|j                  D ]  }d|v r;|j                  dd      j                  dd      }||t	        j
                  |      <   n|}t        j                  |      rO	 |dz  }||j                  vr:||j                  vr,t	        j
                  |      |t	        j
                  |      <   nN||dz   |z   dz   z  } |j                  D ]v  }|}	t        j                  |	      rO	 |	dz  }	|	|j                  vr:|	|j                  vr,t	        j                  |	      |t	        j                  |      <   nN||	dz   |z   dz   z  }x |r| j                  |      }|d|j                  |      z   z  }|S )	zvReturn Python interpretation of passed expression
    (can be passed to the exec() function without any modifications) {}_z = Symbol('z')
z = Function('ze = )r   doprintr   replacer#   Symbolkw	iskeywordr   Functionsubsr(   )
r&   r   printerexprpresult	renamings
symbolnamenewsymbolnamefunctionnamenewfunctionnames
             r   pythonrF   *   s    H%GOOD!EFIoo H
*&..sB7??RHM2?Iell:./&M <<&$!8%W->->>',||M'B ell"$ %  	-.0:=GG#H&  )) N&<<(3&#7??:'w/@/@@).)H enn$& '  	/$44|CgMMN 		)$
fw||E***FMr   c                 .    t        t        | fi |       y)z!Print output of python() functionN)printrF   )r&   r   s     r   print_pythonrI   Z   s    	&
"
"#r   )keywordr:   r#   reprr   strr   r   r   rF   rI    r   r   <module>rN      s5        LGK G@-`$r   