[Bug 1021783] Re: invalid behavior of curses.newpad().refresh()

Jason Conti 1021783 at bugs.launchpad.net
Fri Jul 6 20:20:38 UTC 2012


Affects the package in quantal as well. Part of the patch to enable
linking to libncursesw5 seems to have been dropped between python2.7 and
python3.2, so looking at the build log we see:

checking ncurses.h usability... no
checking ncurses.h presence... no
checking for ncurses.h... no

But in the python2.7 build log, those are all yes. If HAVE_NCURSES_H is
not set, we do not get WINDOW_HAS_FLAGS, which is checked to determine
if pad.refresh() has arguments or not. (In
Modules/_cursesmodule.c:PyCursesWindow_Refresh)

Attaching a debdiff which adds back the part of debian/patches/ncursesw-
include.diff against configure.in to add /usr/include/ncursesw/ to
CPPFLAGS when looking for the headers/checking features. Rebuilding with
the patch and your test case succeeds.

** Patch added: "python3.2-fix-curses.debdiff"
   https://bugs.launchpad.net/ubuntu/+source/python3.2/+bug/1021783/+attachment/3215446/+files/python3.2-fix-curses.debdiff

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to python3.2 in Ubuntu.
https://bugs.launchpad.net/bugs/1021783

Title:
  invalid behavior of curses.newpad().refresh()

Status in “python3.2” package in Ubuntu:
  Confirmed

Bug description:
  There is invalid behavior of builtin curses module in amd64 version
  python3.2.

  From API spec, `refresh()` method of a window object returned by
  `curses.newpad(h,w)` should accept 6 arguments; `pad.refresh(pt, pl,
  st, sl, sb, sr)`.

  - http://docs.python.org/py3k/library/curses.html#curses.newpad

  But python3.2 package in amd64 ubuntu precise does not accept
  arguments.

  [bug occured snippet: newpad-refresh.py]
  ##########################################
  import curses

  try:
      screen = curses.initscr()
      curses.cbreak()

      pad = curses.newpad(10, 10)
      pad.addstr(0, 0, "press q")
      size = screen.getmaxyx()
      pad.refresh(0, 0, 0, 0, size[0] - 1, size[1] - 1)
      while True:
          ch = pad.getch()
          if ch == ord("q"):
              break
          pass
      pass
  finally:
      curses.nocbreak()
      curses.endwin()
      pass
  ###########################################

  [execution result]
  ###########################################
  $ python3 newpad-refresh.py 
  Traceback (most recent call last):
    File "newpad-refresh.py", line 10, in <module>
      pad.refresh(0, 0, 0, 0, size[0] - 1, size[1] - 1)
  TypeError: refresh() takes exactly 0 arguments (6 given)
  ###########################################

  The code is worked well on python2.7 pakcage and self compiled python3.2.3.
  There may be a package build problem at python3.2 or ncurses.

  ProblemType: Bug
  DistroRelease: Ubuntu 12.04
  Package: python3.2 3.2.3-0ubuntu3
  ProcVersionSignature: Ubuntu 3.2.0-26.41-generic 3.2.19
  Uname: Linux 3.2.0-26-generic x86_64
  ApportVersion: 2.0.1-0ubuntu8
  Architecture: amd64
  Date: Sat Jul  7 00:09:05 2012
  ProcEnviron:
   TERM=xterm
   PATH=(custom, user)
   LANG=ja_JP.UTF-8
   SHELL=/bin/bash
  SourcePackage: python3.2
  UpgradeStatus: Upgraded to precise on 2012-03-21 (106 days ago)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/python3.2/+bug/1021783/+subscriptions




More information about the foundations-bugs mailing list