
    Ed;                         d Z ddlmZ ddlmZ ddlmZ ddlmZ dZ	dZ
dZddZd Zd Zd Zdg d
d
fdZd Zdd	dddd
d
d
dddg fdZdS )z+Tools for setting up interactive sessions.     )GROUND_TYPES)version_tuple)init_printing)ARCHzfrom sympy import *
x, y, z, t = symbols('x y z t')
k, m, n = symbols('k m n', integer=True)
f, g, h = symbols('f g h', cls=Function)
init_printing()
zjThese commands were executed:
%(source)s
Documentation can be found at https://docs.sympy.org/%(version)s
zCould not locate IPython. Having IPython installed is greatly recommended.
See http://ipython.scipy.org for more details. If you use Debian/Ubuntu,
just install the 'ipython' package and start isympy again.
TFNc                 :   ddl m} ddl m} ddl}ddl}|rdS d|j        dd         z  }| rd}nd	}d
t          z  g}	|                    d          }
|
-|
                                dk    r|		                    d           |r|		                    d           |||t          d                    |	          f}d|z  }|t          }d}|                    d          dd         D ]}|s|dz  }
|d|z   dz   z  }|}d|v rd}nd|z  }|dt          ||dz  z   z  }|S )z,Create a banner for an interactive session. r   )__version__)SYMPY_DEBUGN z%d.%d.%d   IPythonPythonzground types: %sSYMPY_USE_CACHEnoz
cache: offzdebugging: onz, z,%s console for SymPy %s (Python %s-%s) (%s)

z>>> devz%s/)sourceversion)sympyr   r	   sysosversion_infor   getenvlowerappendr   joinpreexec_sourcesplitverbose_message)ipythonquietr   sympy_versionr	   r   r   python_version
shell_nameinfocacheargsmessage_sourcelinedoc_versions                   9lib/python3.11/site-packages/sympy/interactive/session.py_make_messager-      s   222222!!!!!!JJJIII r#"22A2"66N 


-.DII'((E "U[[]]d2 "L!!! %O$$$}ndDIIdOOKD=DG  GT""3B3' , , 	,tOGGv}t++GGK *k)to74?)A )A A A AG N    c                 &   ddl m}m}m}m}m} ddlm} d }g } | ||           j                  }	|	D ]R\  }
}}}}|
|k    r- ||          r"|	                    |df|df||f|dfg           ;|
                    |
|f           S ||          S )at  
    Wrap integer literals with Integer.

    This is based on the decistmt example from
    http://docs.python.org/library/tokenize.html.

    Only integer literals are converted.  Float literals are left alone.

    Examples
    ========

    >>> from sympy import Integer # noqa: F401
    >>> from sympy.interactive.session import int_to_Integer
    >>> s = '1.2 + 1/2 - 0x12 + a1'
    >>> int_to_Integer(s)
    '1.2 +Integer (1 )/Integer (2 )-Integer (0x12 )+a1 '
    >>> s = 'print (1/2)'
    >>> int_to_Integer(s)
    'print (Integer (1 )/Integer (2 ))'
    >>> exec(s)
    0.5
    >>> exec(int_to_Integer(s))
    1/2
    r   )generate_tokens
untokenizeNUMBERNAMEOP)StringIOc                 j    d| v s,d|                                  v sd|                                  v rdS dS )z]
        Returns true if string value num (with token NUMBER) represents an integer.
        .jeFT)r   )nums    r,   _is_intzint_to_Integer.<locals>._is_intq   sB    
 #: 			+ 	sciikk/A 	5tr.   Integer())tokenizer0   r1   r2   r3   r4   ior5   readlineextendr   )sr0   r1   r2   r3   r4   r5   r;   resultgtoknumtokval_s                r,   int_to_IntegerrI   U   s   2 GFFFFFFFFFFFFF   F,--A#$ 	, 	,1aV 	, 	,MMy!S	 S		     MM66*++++:fr.   c                 :    ddl | j        fd}|| _        dS )zM
    Allow IPython to automatically convert integer literals to Integer.
    r   Nc                     	                      |            t          |           } n# t          $ r Y nw xY w | g|R i | d S N)parserI   SyntaxError)cellr'   kwargsastold_run_cells      r,   my_run_cellz7enable_automatic_int_sympification.<locals>.my_run_cell   st    
	( IIdOOO "$''DD  	 	 	D	 	T+D+++F+++++s   ( 
55)rQ   run_cell)shellrS   rQ   rR   s     @@r,   "enable_automatic_int_sympificationrV      sA     JJJ>L, , , , , , !ENNNr.   c                 ~    ddl }|                    d          dfd	}|                     t          f|           dS )z?Allow IPython to automatically create symbols (``isympy -a``). r   Nz8name '(?P<symbol>[A-Za-z_][A-Za-z0-9_]*)' is not definedc                    |t           u r<|j        r4|j        j        s'                    t          |                    }||                     dd|                    d          iz  d           	 | j        d         d         }|                     |d           	 |                     d|                    d          z  d           dS # t          t          f$ r Y nw xY w	 |                     d|                    d          z  d           n2# |                     d|                    d          z  d           w xY w| j	        
                    ||||	          }|                     |||           dS )
zJHandle :exc:`NameError` exception and allow injection of missing symbols. Nz!%(symbol)s = Symbol('%(symbol)s')symbolF)store_historyInr   zdel %s)	tb_offset)	NameErrortb_nextmatchstrrT   groupuser_nsKeyError
IndexErrorInteractiveTBstructured_traceback_showtraceback)	selfetypevaluetbr\   r_   codestbre_nameerrors	           r,   _handlerz*enable_automatic_symbols.<locals>._handler   s   I 	7"* 	7RZ5G 	7 &&s5zz22E 7A'X)>)>?@OT  V V V	7<-b1D MM$eM<<<MM(U[[-B-B"B05 " 7 7 7 7 7 !*-   D
 MM(U[[-B-B"B05 " 7 7 7 7DMM(U[[-B-B"B05 " 7 7 7 7  555"	 6 3 3E5#.....s*   6C 	D C$!D #C$$D /ErL   )recompileset_custom_excr]   )rU   rp   ro   rn   s      @r,   enable_automatic_symbolsrs      se    N III::BD DL/ / / / / /2 
)x00000r.   c                    ddl }t          |j                  t          d          k    r| sit          |j                  t          d          k    rddlm} nddlm} |                                }d|_        |                    |           |j	        } |rt          |            |rt          |            | S ddlm}  ||          S )zConstruct new IPython session. r   N0.11z1.0)ipappF)make_IPython)r   r   r   IPython.terminalrv   IPython.frontend.terminalTerminalIPythonAppdisplay_banner
initializerU   rs   rV   IPython.Shellrw   )rU   argvauto_symbolsauto_int_to_Integerr   rv   apprw   s           r,   init_ipython_sessionr      s   NNNW())]6-B-BB " 	
 W011]55I5II <2222222;;;;;;**,,C "'CNN4   IE 	,$U+++ 	6.u555......|D!!!r.   c                  D    ddl m  G fdd          }  |             S )zConstruct new Python session. r   InteractiveConsolec                       e Zd ZdZ fdZdS ))init_python_session.<locals>.SymPyConsolez.An interactive console with readline support. c                    i }                     | |           	 dd l}dd l}dd l}dd l}|                    |                    |          j                   |                    d           t          |d          r^|j
                            d          }	 |                    |           n# t          $ r Y nw xY w|                    |j        |           d S d S # t           $ r Y d S w xY w)N)localsr   ztab: completeread_history_filez~/.sympy-history)__init__rlcompleterrA   r   atexitset_completer	Completercompleteparse_and_bindhasattrpath
expanduserr   OSErrorregisterwrite_history_fileImportError)rh   	ns_localsr   rA   r   r   historyr   s          r,   r   z2init_python_session.<locals>.SymPyConsole.__init__  s>   I''Y'???J"""" 			&&{'<'<Y'G'G'PQQQ''8888%899 J g001CDDG 227;;;;"    OOH$?IIIIIJ J    s#   C B/ /
B<;B<
C,+C,N)__name__
__module____qualname____doc__r   r   s   r,   SymPyConsoler     s;        <<	J 	J 	J 	J 	J 	J 	Jr.   r   )rl   r   )r   r   s    @r,   init_python_sessionr   	  sb    ''''''J J J J J J J) J J J8 <>>r.   c           
         ddl }d}| dura	 ddl}	 ddlm}  |            n7# t          $ r dY n)w xY w# t          $ r | du rt	          d          dY nw xY wt                    }| |} | du rt                      j        }ntt          |||          t          |j
                  t          d          k    r3dfd
	_        	                     d           n# t          $ r Y nw xY w|sj        }|r6| r%t          |j
                  t          d          k     rt	          d          |r6| r%t          |j
                  t          d          k     rt	          d          t          }                    |d	           t!          ||||||	|
           t#          | ||          }|s0t%          |            |             |                    d           dS t%          |           ddl}|                    d            dS )u  
    Initialize an embedded IPython or Python session. The IPython session is
    initiated with the --pylab option, without the numpy imports, so that
    matplotlib plotting can be interactive.

    Parameters
    ==========

    pretty_print: boolean
        If True, use pretty_print to stringify;
        if False, use sstrrepr to stringify.
    order: string or None
        There are a few different settings for this parameter:
        lex (default), which is lexographic order;
        grlex, which is graded lexographic order;
        grevlex, which is reversed graded lexographic order;
        old, which is used for compatibility reasons and for long expressions;
        None, which sets it to lex.
    use_unicode: boolean or None
        If True, use unicode characters;
        if False, do not use unicode characters.
    use_latex: boolean or None
        If True, use latex rendering if IPython GUI's;
        if False, do not use latex rendering.
    quiet: boolean
        If True, init_session will not print messages regarding its status;
        if False, init_session will print messages regarding its status.
    auto_symbols: boolean
        If True, IPython will automatically create symbols for you.
        If False, it will not.
        The default is False.
    auto_int_to_Integer: boolean
        If True, IPython will automatically wrap int literals with Integer, so
        that things like 1/2 give Rational(1, 2).
        If False, it will not.
        The default is False.
    ipython: boolean or None
        If True, printing will initialize for an IPython console;
        if False, printing will initialize for a normal console;
        The default is None, which automatically determines whether we are in
        an ipython instance or not.
    str_printer: function, optional, default=None
        A custom string printer function. This should mimic
        sympy.printing.sstrrepr().
    pretty_printer: function, optional, default=None
        A custom pretty printer. This should mimic sympy.printing.pretty().
    latex_printer: function, optional, default=None
        A custom LaTeX printer. This should mimic sympy.printing.latex()
        This should mimic sympy.printing.latex().
    argv: list of arguments for IPython
        See sympy.bin.isympy for options that can be used to initialize IPython.

    See Also
    ========

    sympy.interactive.printing.init_printing: for examples and the rest of the parameters.


    Examples
    ========

    >>> from sympy import init_session, Symbol, sin, sqrt
    >>> sin(x) #doctest: +SKIP
    NameError: name 'x' is not defined
    >>> init_session() #doctest: +SKIP
    >>> sin(x) #doctest: +SKIP
    sin(x)
    >>> sqrt(5) #doctest: +SKIP
      ___
    \/ 5
    >>> init_session(pretty_print=False) #doctest: +SKIP
    >>> sqrt(5) #doctest: +SKIP
    sqrt(5)
    >>> y + x + y**2 + x**2 #doctest: +SKIP
    x**2 + x + y**2 + y
    >>> init_session(order='grlex') #doctest: +SKIP
    >>> y + x + y**2 + x**2 #doctest: +SKIP
    x**2 + y**2 + x + y
    >>> init_session(order='grevlex') #doctest: +SKIP
    >>> y * x**2 + x * y**2 #doctest: +SKIP
    x**2*y + x*y**2
    >>> init_session(order='old') #doctest: +SKIP
    >>> x**2 + y**2 + x + y #doctest: +SKIP
    x + y + x**2 + y**2
    >>> theta = Symbol('theta') #doctest: +SKIP
    >>> theta #doctest: +SKIP
    theta
    >>> init_session(use_unicode=True) #doctest: +SKIP
    >>> theta # doctest: +SKIP
    θ
    r   NF)get_ipythonTz'IPython is not available on this system)r~   r   r   ru   execc                 0                         | d          S )NF)rT   )srcrY   ips     r,   <lambda>zinit_session.<locals>.<lambda>  s    bkk#u6M6M r.   )
import_allzKautomatic construction of symbols is possible only in IPython 0.11 or abovezQautomatic int to Integer transformation is possible only in IPython 0.11 or above)rY   )pretty_printorderuse_unicode	use_latexr   str_printerpretty_printerlatex_printerzExiting ...c                       t          d          S )NzExiting ...
)print r.   r,   r   zinit_session.<locals>.<lambda>  s    o 6 6 r.   )r   )r   r   r   r   RuntimeErrorboolr   interactr   r   r   	runsourceenable_pylab	Exceptionmainloopr   r   r-   r   exitr   r   )r    r   r   r   r   r!   r   r   r   r   r   r~   r   
in_ipythonr   r   r   _preexec_sourcer(   r   r   s                       @r,   init_sessionr   ,  s   ~ JJJJe !	NNN////// []]     	 	 	$ N"#LMMMBBB	 "XX
 	! G% # "";!"4l6IK K K ,--v1F1FF 	 NMMMMBL51111   
   	#{H jW jg6I(J(J][aMbMb(b jhiii pG p}W=P/Q/QTabhTiTi/i pnooo$OLLL000|5)Y2). -/ / / /
 GUO<<G 8g


g6677777s-   5 # 22AAC" "
C/.C/)TFN)r   sympy.external.gmpyr   sympy.external.importtoolsr   sympy.interactive.printingr   sympy.utilities.miscr   r   r   
no_ipythonr-   rI   rV   rs   r   r   r   r   r.   r,   <module>r      s"   1 1 , , , , , , 4 4 4 4 4 4 4 4 4 4 4 4 % % % % % %
3 3 3 3l1 1 1h! ! !0D1 D1 D1N  $"5V[ " " " "B     F D!TU%*T#"c8 c8 c8 c8 c8 c8r.   