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)

msg113798 - (view)

Author: Florent Xicluna (flox) * (Python committer)

Date: 2010-08-13 17:31

Various buildbots show a failure on test_heapq.

msg113800 - (view)

Author: Antoine Pitrou (pitrou) * (Python committer)

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.

msg113801 - (view)

Author: Florent Xicluna (flox) * (Python committer)

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.

msg113806 - (view)

Author: Antoine Pitrou (pitrou) * (Python committer)

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.

msg113819 - (view)

Author: Antoine Pitrou (pitrou) * (Python committer)

Date: 2010-08-13 19:29

Here is a C version of addbuilddir. It solves the present issue.

msg113844 - (view)

Author: Antoine Pitrou (pitrou) * (Python committer)

Date: 2010-08-13 22:26

I've committed an updated version of the C patch in r83988, after Victor's comments on IRC.

msg113882 - (view)

Author: STINNER Victor (vstinner) * (Python committer)

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

issue586680 superseder

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