xref: /dpdk/dts/framework/remote_session/python_shell.py (revision 6ef07151aac4b4d9601d547f94a996d1c71b3871)
1840b1e01SJuraj Linkeš# SPDX-License-Identifier: BSD-3-Clause
2840b1e01SJuraj Linkeš# Copyright(c) 2023 PANTHEON.tech s.r.o.
3840b1e01SJuraj Linkeš
4*6ef07151SJuraj Linkeš"""Python interactive shell.
5*6ef07151SJuraj Linkeš
6*6ef07151SJuraj LinkešTypical usage example in a TestSuite::
7*6ef07151SJuraj Linkeš
8*6ef07151SJuraj Linkeš    from framework.remote_session import PythonShell
9*6ef07151SJuraj Linkeš    python_shell = self.tg_node.create_interactive_shell(
10*6ef07151SJuraj Linkeš        PythonShell, timeout=5, privileged=True
11*6ef07151SJuraj Linkeš    )
12*6ef07151SJuraj Linkeš    python_shell.send_command("print('Hello World')")
13*6ef07151SJuraj Linkeš    python_shell.close()
14*6ef07151SJuraj Linkeš"""
15*6ef07151SJuraj Linkeš
16840b1e01SJuraj Linkešfrom pathlib import PurePath
17*6ef07151SJuraj Linkešfrom typing import ClassVar
18840b1e01SJuraj Linkeš
19840b1e01SJuraj Linkešfrom .interactive_shell import InteractiveShell
20840b1e01SJuraj Linkeš
21840b1e01SJuraj Linkeš
22840b1e01SJuraj Linkešclass PythonShell(InteractiveShell):
23*6ef07151SJuraj Linkeš    """Python interactive shell."""
24*6ef07151SJuraj Linkeš
25*6ef07151SJuraj Linkeš    #: Python's prompt.
26*6ef07151SJuraj Linkeš    _default_prompt: ClassVar[str] = ">>>"
27*6ef07151SJuraj Linkeš
28*6ef07151SJuraj Linkeš    #: This forces the prompt to appear after sending a command.
29*6ef07151SJuraj Linkeš    _command_extra_chars: ClassVar[str] = "\n"
30*6ef07151SJuraj Linkeš
31*6ef07151SJuraj Linkeš    #: The Python executable.
32*6ef07151SJuraj Linkeš    path: ClassVar[PurePath] = PurePath("python3")
33