xref: /dpdk/dts/framework/remote_session/python_shell.py (revision bfad0948df75e95e04cba1804a2749cfc91c56fb)
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