Five curses documentation statements contradict the implementation
Open
Nobody has claimed this yet.
docs
topic-curses
- Dominant language
- Python
- Stars
- 77.2k
- Forks
- 35.9k
- PR merge metrics
- PR metrics pending
Description
Documentation
Five statements in Doc/library/curses.rst describe behaviour the module does not have.
| documented | says | actually |
|---|---|---|
halfdelay() |
"raise an exception if nothing has been typed" | getch() returns -1 |
termname() |
"truncated to 14 characters" | returns the full name |
window.scroll() |
"no effect unless it has been enabled ... with scrollok" |
raises curses.error |
window.insnstr() |
"If n is zero or negative, the entire string is inserted" | zero inserts nothing |
window.insch() |
"The cursor position does not change" | the (y, x) form moves it |
$ TERM=screen.xterm-256color ./python repro.py; cat out.txt
halfdelay(2); getch() -> -1
termname() -> b'screen.xterm-256color'
scroll() no scrollok -> curses.error: wscrl() (called by scroll()) returned ERR
insnstr('ABC', 0) -> '....'
insch(3, 5, ch); getyx -> (3, 5)
repro.py
import curses
out = []
stdscr = curses.initscr()
try:
curses.cbreak()
curses.halfdelay(2)
out.append(f"halfdelay(2); getch() -> {stdscr.getch()!r}")
curses.cbreak()
out.append(f"termname() -> {curses.termname()!r}")
w = curses.newwin(5, 20, 0, 0)
w.scrollok(False)
try:
w.scroll(1)
out.append("scroll() no scrollok -> returned None")
except curses.error as e:
out.append(f"scroll() no scrollok -> curses.error: {e}")
w.addstr(2, 0, "....")
w.move(2, 0)
w.insnstr("ABC", 0)
out.append(f"insnstr('ABC', 0) -> {w.instr(2, 0, 4).decode()!r}")
w.insch(3, 5, ord('x'))
out.append(f"insch(3, 5, ch); getyx -> {w.getyx()}")
finally:
curses.endwin()
open("out.txt", "w").write("\n".join(out) + "\n")
Linked PRs
- gh-157141
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Open Doc/library/curses.rst and compare the five listed statements with the outputs from repro.py. Check linked PR gh-157141 before starting; done means all five documented behaviors match the demonstrated implementation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- documentation
- Issue type
- Documentation
- Difficulty
- 1/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 25/100