File: _types.py

package info (click to toggle)
anta 1.7.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 8,048 kB
  • sloc: python: 48,164; sh: 28; javascript: 9; makefile: 4
file content (53 lines) | stat: -rw-r--r-- 1,628 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 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]