Source code for pyface.i_python_shell

# (C) Copyright 2005-2023 Enthought, Inc., Austin, TX
# All rights reserved.
#
# This software is provided without warranty under the terms of the BSD
# license included in LICENSE.txt and may be redistributed only under
# the conditions described in the aforementioned license. The license
# is also available online at http://www.enthought.com/licenses/BSD.txt
#
# Thanks for using Enthought open source!

""" The interface for an interactive Python shell. """


from traits.api import Event, HasTraits


from pyface.key_pressed_event import KeyPressedEvent
from pyface.i_layout_widget import ILayoutWidget


[docs]class IPythonShell(ILayoutWidget): """ The interface for an interactive Python shell. """ # 'IPythonShell' interface --------------------------------------------- #: A command has been executed. command_executed = Event() #: A key has been pressed. key_pressed = Event(KeyPressedEvent) # ------------------------------------------------------------------------ # 'IPythonShell' interface. # ------------------------------------------------------------------------
[docs] def interpreter(self): """ Get the shell's interpreter Returns ------- interpreter : InteractiveInterpreter Returns the InteractiveInterpreter instance. """
[docs] def bind(self, name, value): """ Binds a name to a value in the interpreter's namespace. Parameters ---------- name : str The python idetifier to bind the value to. value : Any The python object to be bound into the interpreter's namespace. """
[docs] def execute_command(self, command, hidden=True): """ Execute a command in the interpreter. Parameters ---------- command : str A Python command to execute. hidden : bool If 'hidden' is True then nothing is shown in the shell - not even a blank line. """
[docs] def execute_file(self, path, hidden=True): """ Execute a file in the interpeter. Parameters ---------- path : str The path to the Python file to execute. hidden : bool If 'hidden' is True then nothing is shown in the shell - not even a blank line. """
[docs] def get_history(self): """ Return the current command history and index. Returns ------- history : list of str The list of commands in the new history. history_index : int from 0 to len(history) The current item in the command history navigation. """
[docs] def set_history(self, history, history_index): """ Replace the current command history and index with new ones. Parameters ---------- history : list of str The list of commands in the new history. history_index : int The current item in the command history navigation. """
[docs]class MPythonShell(HasTraits): """ The mixin class that contains common code for toolkit specific implementations of the IPythonShell interface. Implements: bind(), _on_command_executed() """ # ------------------------------------------------------------------------ # 'IPythonShell' interface. # ------------------------------------------------------------------------
[docs] def bind(self, name, value): """ Binds a name to a value in the interpreter's namespace. Parameters ---------- name : str The python idetifier to bind the value to. value : Any The python object to be bound into the interpreter's namespace. """ self.interpreter().locals[name] = value
# ------------------------------------------------------------------------ # Private interface. # ------------------------------------------------------------------------ def _on_command_executed(self): """ Called when a command has been executed in the shell. """ self.command_executed = self