Source code for telnetlib3._session_context

"""Base session context for telnet client connections."""

from __future__ import annotations

# std imports
from typing import IO, Any, Callable, Optional, Awaitable

__all__ = ("TelnetSessionContext",)


[docs] class TelnetSessionContext: r""" Base session context for telnet client connections. Holds per-connection state that the shell layer needs. Subclass this to add application-specific attributes (e.g. MUD client state, macros, room graphs). A default instance is created for every :class:`~telnetlib3.stream_writer.TelnetWriter`; applications may replace it with a subclass via ``writer.ctx = MyCtx()``. :param raw_mode: Terminal raw mode override. ``None`` = auto-detect from server negotiation, ``True`` = force raw, ``False`` = force line mode. :param ascii_eol: When ``True``, translate ATASCII CR/LF glyphs to ASCII ``\r`` / ``\n``. :param input_filter: Optional :class:`~telnetlib3.client_shell.InputFilter` for translating raw keyboard bytes (e.g. arrow keys for ATASCII/PETSCII). :param autoreply_engine: Optional autoreply engine (e.g. a MUD macro engine) that receives server output via ``engine.feed(text)`` and can send replies. :param autoreply_wait_fn: Async callable installed by the shell to gate autoreply sends on GA/EOR prompt signals; set automatically during shell startup. :param typescript_file: When set, all server output is appended to this file (like the POSIX ``typescript`` command). :param gmcp_data: Initial GMCP module data mapping; defaults to an empty dict. """ def __init__( self, raw_mode: Optional[bool] = None, ascii_eol: bool = False, input_filter: Optional[Any] = None, autoreply_engine: Optional[Any] = None, autoreply_wait_fn: Optional[Callable[..., Awaitable[None]]] = None, typescript_file: Optional[IO[str]] = None, gmcp_data: Optional[dict[str, Any]] = None, ) -> None: """Initialize session context with default attribute values.""" self.raw_mode = raw_mode self.ascii_eol = ascii_eol self.input_filter = input_filter self.autoreply_engine = autoreply_engine self.autoreply_wait_fn = autoreply_wait_fn self.typescript_file = typescript_file self.gmcp_data: dict[str, Any] = gmcp_data if gmcp_data is not None else {}