Package: python-apt Version: 0.7.10.1 Severity: critical Hello,
I'm setting the severity to 'critical' because it causes several other packages to break, including goplay, ept-cache and basically anything that uses or recommends apt-xapian-index (see #521346, #523737 and #523747). I'm attaching a short test case. When run on a system which contains a package in status 'config-files' and with no information in the apt database, package.candidate gives a version object that throws on every single method. I assume that this is a bug: in a normal API, I would expect to get None when asking for a candidate version: in fact, there is None. # dpkg -s bist Package: bist Status: deinstall ok config-files Priority: optional Section: science Installed-Size: 2664 Maintainer: David Paleino <d.pale...@gmail.com> [...] $ ./testcase.py Looking for the situation that annoys Enrico... Enrico is annoyed by the behaviour of python-apt on bist Traceback (most recent call last): File "./testcase2.py", line 16, in <module> dummy = ver.raw_description File "/usr/lib/python2.5/site-packages/apt/package.py", line 257, in raw_description return self._records.LongDesc File "/usr/lib/python2.5/site-packages/apt/package.py", line 214, in _records if self.package._pcache._records.Lookup(self._cand.FileList[0]): AttributeError: 'NoneType' object has no attribute 'FileList' I would rather not have to work around this by wrapping every read of a property of Version in try/except, and I wish you can fix this soon, because I'm getting several nasty bug reports. If you cannot/won't fix it soon, at least let me know. Please don't leave me hanging with a nonfunctional package and no answer for a month like you did with #513315. Best of all, Enrico -- System Information: Debian Release: squeeze/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: amd64 (x86_64) Kernel: Linux 2.6.26-1-amd64 (SMP w/2 CPU cores) Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968) Shell: /bin/sh linked to /bin/bash Versions of packages python-apt depends on: ii apt [libapt-pkg-libc6.7-6-4.6 0.7.20.2 Advanced front-end for dpkg ii apt-utils [libapt-inst-libc6. 0.7.20.2 APT utility programs ii libc6 2.9-7 GNU C Library: Shared libraries ii libgcc1 1:4.3.3-5 GCC support library ii libjs-jquery 1.3.2-2 JavaScript library for dynamic web ii libstdc++6 4.3.3-5 The GNU Standard C++ Library v3 ii lsb-release 3.2-22 Linux Standard Base version report ii python 2.5.4-2 An interactive high-level object-o ii python-central 0.6.11 register and build utility for Pyt Versions of packages python-apt recommends: pn iso-codes <none> (no description available) Versions of packages python-apt suggests: pn python-apt-dbg <none> (no description available) pn python-gtk2 <none> (no description available) pn python-vte <none> (no description available) -- no debconf information
#!/usr/bin/python # Try to reproduce the python-apt problem behind #523737, #523747 and #521346 import apt, sys print "Looking for the situation that annoys Enrico..." cache = apt.Cache(memonly=True) for pkg in cache: ver = pkg.candidate if ver is None: print >>sys.stderr, name, "has no candidate version" sys.exit(0) # python-apt should not raise an exception at this point try: dummy = ver.raw_description except: print "Enrico is annoyed by the behaviour of python-apt on", pkg.name raise print "You don't have any packages that cause python-apt to annoy Enrico"