Package: urlscan
Version: 1.0.3-1
Severity: grave
Tags: patch
Justification: renders package unusable

Hi!

python3-urwid 3.0.4-1 was uploaded to unstable and urlscan now fails with:

Traceback (most recent call last):
  File "/usr/bin/urlscan", line 5, in <module>
    from urlscan.__main__ import main
  File "/usr/lib/python3/dist-packages/urlscan/__main__.py", line 30, in 
<module>
    from urlscan import urlchoose, urlscan
  File "/usr/lib/python3/dist-packages/urlscan/urlchoose.py", line 34, in 
<module>
    import urwid.curses_display
ModuleNotFoundError: No module named 'urwid.curses_display'

>From a quick look it seems enough to replace urwid.curses_display with 
urwid.displays.curses and urwid.raw_display with urwid.displays.raw. (patch 
attached)

Have a nice day,

-- System Information:
Debian Release: forky/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (500, 'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 6.18.3+deb14-amd64 (SMP w/16 CPU threads; PREEMPT)
Locale: LANG=fr_BE.UTF-8, LC_CTYPE=fr_BE.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages urlscan depends on:
ii  python3        3.13.9-3
ii  python3-urwid  3.0.4-1

urlscan recommends no packages.

Versions of packages urlscan suggests:
ii  chromium [www-browser]          144.0.7559.59-1
ii  epiphany-browser [www-browser]  49.2-3
ii  firefox [www-browser]           147.0-1
ii  lynx [www-browser]              2.9.2-2
ii  mutt                            2.2.13-1+b1

-- no debconf information
--- /tmp/urlchoose.py   2026-01-15 16:31:52.377963833 +0100
+++ /tmp/urlchoose.py.new       2026-01-15 16:32:39.442166044 +0100
@@ -31,8 +31,8 @@
 import webbrowser
 
 import urwid
-import urwid.curses_display
-import urwid.raw_display
+import urwid.display.curses
+import urwid.display.raw
 
 
 if platform == 'darwin':
@@ -209,7 +209,7 @@
         self.search_string = ""
         self.no_matches = False
         self.enter = False
-        self.term_width, _ = urwid.raw_display.Screen().get_cols_rows()
+        self.term_width, _ = urwid.display.raw.Screen().get_cols_rows()
         self.width = min(self.term_width, width or self.term_width)
         self.whitespaceoff = whitespaceoff
         self.activate_keys = [i for i, j in 
urwid.Button._command_map._command.items()
@@ -253,7 +253,7 @@
                 (2 if self.compact is False else 0)
         if reverse is True:
             self._reverse()
-        self.tui = urwid.curses_display.Screen()
+        self.tui = urwid.display.curses.Screen()
         self.palette_names = list(self.palettes.keys())
         self.palette_idx = 0
         self.number = ""

Reply via email to