Issue 9589: test_heapq: AttributeError: 'int' object has no attribute 'pop' (original) (raw)
Created on 2010-08-13 17:31 by flox, last changed 2022-04-11 14:57 by admin. This issue is now closed.
Messages (7)
Author: Florent Xicluna (flox) *
Date: 2010-08-13 17:31
Various buildbots show a failure on test_heapq.
"x86 FreeBSD 3.x" failed on revision r83882 (r83869 was OK) http://www.python.org/dev/buildbot/all/builders/x86%20FreeBSD%203.x/builds/492 and next runs were OK, too
"PPC (Leopard|Tiger) 3.x" and "x86 Tiger 3.x" fail consistently from r83889 onwards.
all "gentoo 3.x" and "Ubuntu 3.x" fail on r83981 http://www.python.org/dev/buildbot/all/builders/x86%20gentoo%203.x/builds/2816 http://www.python.org/dev/buildbot/all/builders/x86%20Ubuntu%203.x/builds/1707
Author: Antoine Pitrou (pitrou) *
Date: 2010-08-13 17:45
This is a variant of the kind of annoyance pointed out in #9548. Here, it seems addbuilddir() in Lib/site.py shouldn't import sysconfig, because it imports the re module.
Author: Florent Xicluna (flox) *
Date: 2010-08-13 17:49
For some reason, sys.modules['heapq'] contains the Python implementation instead of the C implementation.
Tested with r83981 on python 3:
Python 3.2a1+ (py3k:83981M, Aug 13 2010, 19:02:31) [GCC 4.3.4] on linux2 Type "help", "copyright", "credits" or "license" for more information.
import heapq heapq.heappop(10) Traceback (most recent call last): File "", line 1, in File "/home/florent/dev/python/py3trunk/Lib/heapq.py", line 140, in heappop lastelt = heap.pop() # raises appropriate IndexError if heap is empty AttributeError: 'int' object has no attribute 'pop'
import _heapq _heapq.heappop(10) Traceback (most recent call last): File "", line 1, in TypeError: heap argument must be a list
These tests (TestErrorHandling) are supposed to run with the C module only.
Author: Antoine Pitrou (pitrou) *
Date: 2010-08-13 18:34
Here is a patch which works if the patch in #9548 is also applied. It won't work alone because opening a file in text mode currently imports locale which imports re, etc. ... all before adding the build dir to sys.path.
Of course, since the logic in addbuilddir() is now much simpler, it could also be rewritten in C somewhere (where?), and the launched much earlier during the startup phase.
Author: Antoine Pitrou (pitrou) *
Date: 2010-08-13 19:29
Here is a C version of addbuilddir. It solves the present issue.
Author: Antoine Pitrou (pitrou) *
Date: 2010-08-13 22:26
I've committed an updated version of the C patch in r83988, after Victor's comments on IRC.
Author: STINNER Victor (vstinner) *
Date: 2010-08-14 09:47
r83988 is also the correct fix for #586680: I updated this issue.
History
Date
User
Action
Args
2022-04-11 14:57:05
admin
set
github: 53798
2010-08-14 09:47:21
vstinner
set
messages: +
2010-08-13 22:40:21
pitrou
set
status: open -> closed
2010-08-13 22:34:33
pitrou
set
status: pending -> open
assignee: pitrou
2010-08-13 22:26:04
pitrou
set
status: open -> pending
resolution: fixed
messages: +
stage: needs patch -> resolved
2010-08-13 22:20:54
pitrou
link
2010-08-13 19:29:26
pitrou
set
files: + c-addbuildir.patch
messages: +
2010-08-13 18:34:05
pitrou
set
files: + addbuilddir.patch
keywords: + patch
messages: +
2010-08-13 17:49:10
flox
set
messages: +
2010-08-13 17:45:06
pitrou
set
nosy: + pitrou
messages: +
2010-08-13 17:31:13
flox
create