1840b1e01SJuraj Linkeš# SPDX-License-Identifier: BSD-3-Clause 2840b1e01SJuraj Linkeš# Copyright(c) 2023 PANTHEON.tech s.r.o. 3840b1e01SJuraj Linkeš 46ef07151SJuraj Linkeš"""Python interactive shell. 56ef07151SJuraj Linkeš 66ef07151SJuraj LinkešTypical usage example in a TestSuite:: 76ef07151SJuraj Linkeš 86ef07151SJuraj Linkeš from framework.remote_session import PythonShell 9*bfad0948SLuca Vizzarro python_shell = PythonShell(self.tg_node, timeout=5, privileged=True) 106ef07151SJuraj Linkeš python_shell.send_command("print('Hello World')") 116ef07151SJuraj Linkeš python_shell.close() 126ef07151SJuraj Linkeš""" 136ef07151SJuraj Linkeš 14840b1e01SJuraj Linkešfrom pathlib import PurePath 156ef07151SJuraj Linkešfrom typing import ClassVar 16840b1e01SJuraj Linkeš 17840b1e01SJuraj Linkešfrom .interactive_shell import InteractiveShell 18840b1e01SJuraj Linkeš 19840b1e01SJuraj Linkeš 20840b1e01SJuraj Linkešclass PythonShell(InteractiveShell): 216ef07151SJuraj Linkeš """Python interactive shell.""" 226ef07151SJuraj Linkeš 236ef07151SJuraj Linkeš #: Python's prompt. 246ef07151SJuraj Linkeš _default_prompt: ClassVar[str] = ">>>" 256ef07151SJuraj Linkeš 266ef07151SJuraj Linkeš #: This forces the prompt to appear after sending a command. 276ef07151SJuraj Linkeš _command_extra_chars: ClassVar[str] = "\n" 286ef07151SJuraj Linkeš 296ef07151SJuraj Linkeš #: The Python executable. 306ef07151SJuraj Linkeš path: ClassVar[PurePath] = PurePath("python3") 31