Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[0.930 backport] update curses stubs, cherry pick fix #11785

Merged
merged 2 commits into from Dec 20, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
35 changes: 23 additions & 12 deletions mypy/typeshed/stdlib/_curses.pyi
@@ -1,5 +1,6 @@
import sys
from typing import IO, Any, BinaryIO, NamedTuple, Union, overload
from _typeshed import SupportsRead
from typing import IO, Any, NamedTuple, Union, overload

_chtype = Union[str, bytes, int]

Expand Down Expand Up @@ -293,9 +294,14 @@ def erasechar() -> bytes: ...
def filter() -> None: ...
def flash() -> None: ...
def flushinp() -> None: ...

if sys.version_info >= (3, 9):
def get_escdelay() -> int: ...
def get_tabsize() -> int: ...

def getmouse() -> tuple[int, int, int, int, int]: ...
def getsyx() -> tuple[int, int]: ...
def getwin(__file: BinaryIO) -> _CursesWindow: ...
def getwin(__file: SupportsRead[bytes]) -> _CursesWindow: ...
def halfdelay(__tenths: int) -> None: ...
def has_colors() -> bool: ...

Expand Down Expand Up @@ -337,14 +343,19 @@ def resetty() -> None: ...
def resize_term(__nlines: int, __ncols: int) -> None: ...
def resizeterm(__nlines: int, __ncols: int) -> None: ...
def savetty() -> None: ...

if sys.version_info >= (3, 9):
def set_escdelay(__ms: int) -> None: ...
def set_tabsize(__size: int) -> None: ...

def setsyx(__y: int, __x: int) -> None: ...
def setupterm(term: str | None = ..., fd: int = ...) -> None: ...
def start_color() -> None: ...
def termattrs() -> int: ...
def termname() -> bytes: ...
def tigetflag(__capname: str) -> int: ...
def tigetnum(__capname: str) -> int: ...
def tigetstr(__capname: str) -> bytes: ...
def tigetstr(__capname: str) -> bytes | None: ...
def tparm(
__str: bytes,
__i1: int = ...,
Expand All @@ -362,7 +373,7 @@ def unctrl(__ch: _chtype) -> bytes: ...
def unget_wch(__ch: int | str) -> None: ...
def ungetch(__ch: _chtype) -> None: ...
def ungetmouse(__id: int, __x: int, __y: int, __z: int, __bstate: int) -> None: ...
def update_lines_cols() -> int: ...
def update_lines_cols() -> None: ...
def use_default_colors() -> None: ...
def use_env(__flag: bool) -> None: ...

Expand Down Expand Up @@ -444,13 +455,13 @@ class _CursesWindow:
def getmaxyx(self) -> tuple[int, int]: ...
def getparyx(self) -> tuple[int, int]: ...
@overload
def getstr(self) -> _chtype: ...
def getstr(self) -> bytes: ...
@overload
def getstr(self, n: int) -> _chtype: ...
def getstr(self, n: int) -> bytes: ...
@overload
def getstr(self, y: int, x: int) -> _chtype: ...
def getstr(self, y: int, x: int) -> bytes: ...
@overload
def getstr(self, y: int, x: int, n: int) -> _chtype: ...
def getstr(self, y: int, x: int, n: int) -> bytes: ...
def getyx(self) -> tuple[int, int]: ...
@overload
def hline(self, ch: _chtype, n: int) -> None: ...
Expand All @@ -460,9 +471,9 @@ class _CursesWindow:
def idlok(self, yes: bool) -> None: ...
def immedok(self, flag: bool) -> None: ...
@overload
def inch(self) -> _chtype: ...
def inch(self) -> int: ...
@overload
def inch(self, y: int, x: int) -> _chtype: ...
def inch(self, y: int, x: int) -> int: ...
@overload
def insch(self, ch: _chtype, attr: int = ...) -> None: ...
@overload
Expand All @@ -478,9 +489,9 @@ class _CursesWindow:
@overload
def insstr(self, y: int, x: int, str: str, attr: int = ...) -> None: ...
@overload
def instr(self, n: int = ...) -> _chtype: ...
def instr(self, n: int = ...) -> bytes: ...
@overload
def instr(self, y: int, x: int, n: int = ...) -> _chtype: ...
def instr(self, y: int, x: int, n: int = ...) -> bytes: ...
def is_linetouched(self, __line: int) -> bool: ...
def is_wintouched(self) -> bool: ...
def keypad(self, yes: bool) -> None: ...
Expand Down
5 changes: 3 additions & 2 deletions mypy/util.py
Expand Up @@ -566,11 +566,12 @@ def initialize_unix_colors(self) -> bool:
under = curses.tigetstr('smul')
set_color = curses.tigetstr('setaf')
set_eseq = curses.tigetstr('cup')
normal = curses.tigetstr('sgr0')

if not (bold and under and set_color and set_eseq):
if not (bold and under and set_color and set_eseq and normal):
return False

self.NORMAL = curses.tigetstr('sgr0').decode()
self.NORMAL = normal.decode()
self.BOLD = bold.decode()
self.UNDER = under.decode()
self.DIM = parse_gray_color(set_eseq)
Expand Down