aboutsummaryrefslogtreecommitdiffstats
path: root/test/helper_tools/typehints_for_options.py
blob: 8c7d006c0ea231cce280d95fe9ef6ca8624f715d (plain)
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
import typing
from unittest import mock

from mitmproxy import proxy, options
from mitmproxy.tools import dump, console, web


def print_typehints(opts):
    for name, option in sorted(opts.items()):
        print(
            # For Python 3.6, we can just use "{}: {}".
            "{} = None  # type: {}".format(
                name,
                {
                    int: "int",
                    str: "str",
                    bool: "bool",
                    typing.Optional[str]: "Optional[str]",
                    typing.Sequence[str]: "Sequence[str]"
                }[option.typespec]
            )
        )


if __name__ == "__main__":
    opts = options.Options()
    server = proxy.server.DummyServer(None)

    # initialize with all three tools here to capture tool-specific options defined in addons.
    dump.DumpMaster(opts, server)
    with mock.patch("sys.stdout.isatty", lambda: True):
        console.master.ConsoleMaster(opts, server)
    web.master.WebMaster(opts, server)
    print_typehints(opts)