1from types import CodeType, FrameType, TracebackType
2from typing import IO, Any, Callable, Dict, Iterable, List, Mapping, Optional, Set, SupportsInt, Tuple, Type, TypeVar, Union
3
4_T = TypeVar("_T")
5_TraceDispatch = Callable[[FrameType, str, Any], Any]  # TODO: Recursive type
6_ExcInfo = Tuple[Type[BaseException], BaseException, FrameType]
7
8GENERATOR_AND_COROUTINE_FLAGS: int = ...
9
10class BdbQuit(Exception): ...
11
12class Bdb:
13
14    skip: Optional[Set[str]]
15    breaks: Dict[str, List[int]]
16    fncache: Dict[str, str]
17    frame_returning: Optional[FrameType]
18    botframe: Optional[FrameType]
19    quitting: bool
20    stopframe: Optional[FrameType]
21    returnframe: Optional[FrameType]
22    stoplineno: int
23    def __init__(self, skip: Optional[Iterable[str]] = ...) -> None: ...
24    def canonic(self, filename: str) -> str: ...
25    def reset(self) -> None: ...
26    def trace_dispatch(self, frame: FrameType, event: str, arg: Any) -> _TraceDispatch: ...
27    def dispatch_line(self, frame: FrameType) -> _TraceDispatch: ...
28    def dispatch_call(self, frame: FrameType, arg: None) -> _TraceDispatch: ...
29    def dispatch_return(self, frame: FrameType, arg: Any) -> _TraceDispatch: ...
30    def dispatch_exception(self, frame: FrameType, arg: _ExcInfo) -> _TraceDispatch: ...
31    def is_skipped_module(self, module_name: str) -> bool: ...
32    def stop_here(self, frame: FrameType) -> bool: ...
33    def break_here(self, frame: FrameType) -> bool: ...
34    def do_clear(self, arg: Any) -> Optional[bool]: ...
35    def break_anywhere(self, frame: FrameType) -> bool: ...
36    def user_call(self, frame: FrameType, argument_list: None) -> None: ...
37    def user_line(self, frame: FrameType) -> None: ...
38    def user_return(self, frame: FrameType, return_value: Any) -> None: ...
39    def user_exception(self, frame: FrameType, exc_info: _ExcInfo) -> None: ...
40    def set_until(self, frame: FrameType, lineno: Optional[int] = ...) -> None: ...
41    def set_step(self) -> None: ...
42    def set_next(self, frame: FrameType) -> None: ...
43    def set_return(self, frame: FrameType) -> None: ...
44    def set_trace(self, frame: Optional[FrameType] = ...) -> None: ...
45    def set_continue(self) -> None: ...
46    def set_quit(self) -> None: ...
47    def set_break(
48        self, filename: str, lineno: int, temporary: bool = ..., cond: Optional[str] = ..., funcname: Optional[str] = ...
49    ) -> None: ...
50    def clear_break(self, filename: str, lineno: int) -> None: ...
51    def clear_bpbynumber(self, arg: SupportsInt) -> None: ...
52    def clear_all_file_breaks(self, filename: str) -> None: ...
53    def clear_all_breaks(self) -> None: ...
54    def get_bpbynumber(self, arg: SupportsInt) -> Breakpoint: ...
55    def get_break(self, filename: str, lineno: int) -> bool: ...
56    def get_breaks(self, filename: str, lineno: int) -> List[Breakpoint]: ...
57    def get_file_breaks(self, filename: str) -> List[Breakpoint]: ...
58    def get_all_breaks(self) -> List[Breakpoint]: ...
59    def get_stack(self, f: Optional[FrameType], t: Optional[TracebackType]) -> Tuple[List[Tuple[FrameType, int]], int]: ...
60    def format_stack_entry(self, frame_lineno: int, lprefix: str = ...) -> str: ...
61    def run(
62        self, cmd: Union[str, CodeType], globals: Optional[Dict[str, Any]] = ..., locals: Optional[Mapping[str, Any]] = ...
63    ) -> None: ...
64    def runeval(self, expr: str, globals: Optional[Dict[str, Any]] = ..., locals: Optional[Mapping[str, Any]] = ...) -> None: ...
65    def runctx(
66        self, cmd: Union[str, CodeType], globals: Optional[Dict[str, Any]], locals: Optional[Mapping[str, Any]]
67    ) -> None: ...
68    def runcall(self, __func: Callable[..., _T], *args: Any, **kwds: Any) -> Optional[_T]: ...
69
70class Breakpoint:
71
72    next: int = ...
73    bplist: Dict[Tuple[str, int], List[Breakpoint]] = ...
74    bpbynumber: List[Optional[Breakpoint]] = ...
75
76    funcname: Optional[str]
77    func_first_executable_line: Optional[int]
78    file: str
79    line: int
80    temporary: bool
81    cond: Optional[str]
82    enabled: bool
83    ignore: int
84    hits: int
85    number: int
86    def __init__(
87        self, file: str, line: int, temporary: bool = ..., cond: Optional[str] = ..., funcname: Optional[str] = ...
88    ) -> None: ...
89    def deleteMe(self) -> None: ...
90    def enable(self) -> None: ...
91    def disable(self) -> None: ...
92    def bpprint(self, out: Optional[IO[str]] = ...) -> None: ...
93    def bpformat(self) -> str: ...
94    def __str__(self) -> str: ...
95
96def checkfuncname(b: Breakpoint, frame: FrameType) -> bool: ...
97def effective(file: str, line: int, frame: FrameType) -> Union[Tuple[Breakpoint, bool], Tuple[None, None]]: ...
98def set_trace() -> None: ...
99