# Copyright (c) 2024-2025 Arista Networks, Inc. # Use of this source code is governed by the Apache License 2.0 # that can be found in the LICENSE file. """Type definitions used for the asynceapi package.""" from __future__ import annotations import sys from typing import TYPE_CHECKING, Any, Literal if TYPE_CHECKING: from ._constants import EapiCommandFormat if sys.version_info >= (3, 11): from typing import NotRequired, TypedDict else: from typing_extensions import NotRequired, TypedDict EapiJsonOutput = dict[str, Any] """Type definition of an eAPI JSON output response.""" EapiTextOutput = str """Type definition of an eAPI text output response.""" EapiSimpleCommand = str """Type definition of an eAPI simple command. A simple command is the CLI command to run as a string.""" class EapiComplexCommand(TypedDict): """Type definition of an eAPI complex command. A complex command is a dictionary with the CLI command to run with additional parameters.""" cmd: str input: NotRequired[str] revision: NotRequired[int] class JsonRpc(TypedDict): """Type definition of a JSON-RPC payload.""" jsonrpc: Literal["2.0"] method: Literal["runCmds"] params: JsonRpcParams id: NotRequired[int | str] class JsonRpcParams(TypedDict): """Type definition of JSON-RPC parameters.""" version: NotRequired[int | Literal["latest"]] cmds: list[EapiSimpleCommand | EapiComplexCommand] format: NotRequired[EapiCommandFormat] autoComplete: NotRequired[bool] expandAliases: NotRequired[bool] timestamps: NotRequired[bool] stopOnError: NotRequired[bool]