o
    GZŽh  ã                   @   sR   d dl Zd dlZddlmZ ddlmZ dZG dd„ deeƒZdd	„ Z	d
d„ Z
dS )é    Né   )ÚReprPrinter)Ú
StrPrinter)ÚAddÚInfinityÚIntegerZMulÚNegativeInfinityÚPowc                       s:   e Zd ZdZd‡ fdd„	Zdd„ Zdd„ Zd	d
„ Z‡  ZS )ÚPythonPrinterzFA printer which converts an expression into its Python interpretation.Nc                    sD   t ƒ  |¡ g | _g | _tD ]}d| }tt|ƒ}tt||ƒ qd S )Nz	_print_%s)	ÚsuperÚ__init__ÚsymbolsÚ	functionsÚSTRPRINTÚgetattrr   Úsetattrr
   )ÚselfÚsettingsÚnameÚf_nameÚf©Ú	__class__© úD/var/www/auris/lib/python3.10/site-packages/sympy/printing/python.pyr      s   
ýzPythonPrinter.__init__c                 C   s4   |j j}tt|ƒs|| jvr| j |¡ t | |¡S ©N)ÚfuncÚ__name__ÚhasattrÚsympyr   Úappendr   Ú_print_Function)r   Úexprr   r   r   r   r!      s   zPythonPrinter._print_Functionc                 C   s,   |   |¡}|| jvr| j |¡ t | |¡S r   )Ú_strr   r    r   Ú_print_Symbol)r   r"   Úsymbolr   r   r   r$       s   

zPythonPrinter._print_Symbolc                 C   s   t dƒ‚)Nz*Modules in the expression are unacceptable)Ú
ValueError)r   r"   r   r   r   Ú_print_module&   s   zPythonPrinter._print_moduler   )	r   Ú
__module__Ú__qualname__Ú__doc__r   r!   r$   r'   Ú__classcell__r   r   r   r   r
   
   s    r
   c           
      K   s2  t |ƒ}| | ¡}d}i }|jD ]D}d|v r(| dd¡ dd¡}||t |¡< n|}t |¡rJ	 |d7 }||jvrI||jvrIt |¡|t |¡< nq0||d | d 7 }q|jD ].}|}	t |	¡r|	 |	d7 }	|	|jvr{|	|jvr{t 	|	¡|t 	|¡< nqb||	d | d 7 }qX|rŽ|  
|¡}|d	| |¡ 7 }|S )
zvReturn Python interpretation of passed expression
    (can be passed to the exec() function without any modifications)Ú Ú{Ú}TÚ_z = Symbol('z')
z = Function('ze = )r
   Zdoprintr   Úreplacer   ÚSymbolÚkwÚ	iskeywordr   ÚFunctionÚsubsr#   )
r"   r   ÚprinterZexprpÚresultZ	renamingsZ
symbolnameZnewsymbolnameZfunctionnameZnewfunctionnamer   r   r   Úpython*   sN   




ÿÿú



ÿÿú
r8   c                 K   s   t t| fi |¤Žƒ dS )z!Print output of python() functionN)Úprintr8   )r"   r   r   r   r   Úprint_pythonZ   s   r:   )Úkeywordr2   r   Úreprr   Ústrr   r   r
   r8   r:   r   r   r   r   Ú<module>   s     0