Strange behavior in Python 2.5a0 (trunk) --- possible error in AST?
I'm seeing strange behavior in the Python 2.5a0 trunk that is causing the tests for numpy to fail. Apparently obj[...] = 1 is not calling PyObject_SetItem Here is a minimal example to show the error. Does anyone else see this? class temp(object): def __setitem__(self, obj, v): print obj, v mine = temp() mine[...] = 1 mine[0] = 1 Output from Python 2.4.2: Ellipsis 1 0 1 Output from Python 2.5a0: 0 1 In other words, the first line does nothing in Python 2.5a0. Does anybody else see this? Thanks, -Travis
"Travis E. Oliphant"
I'm seeing strange behavior in the Python 2.5a0 trunk that is causing the tests for numpy to fail. Apparently obj[...] = 1 is not calling PyObject_SetItem
Here is a minimal example to show the error. Does anyone else see this?
class temp(object): def __setitem__(self, obj, v): print obj, v
mine = temp() mine[...] = 1
It's a compiler problem:
dis.dis(compile("mine[...] = 1", '', 'single')) 1 0 LOAD_CONST 0 (1) 3 LOAD_NAME 0 (mine) 6 LOAD_CONST 1 (Ellipsis) 9 LOAD_CONST 2 (None) 12 RETURN_VALUE
Cheers, mwh -- 6. The code definitely is not portable - it will produce incorrect results if run from the surface of Mars. -- James Bonfield, http://www.ioccc.org/2000/rince.hint
Michael Hudson wrote:
"Travis E. Oliphant"
writes: I'm seeing strange behavior in the Python 2.5a0 trunk that is causing the tests for numpy to fail. Apparently obj[...] = 1 is not calling PyObject_SetItem
Here is a minimal example to show the error. Does anyone else see this?
class temp(object): def __setitem__(self, obj, v): print obj, v
mine = temp() mine[...] = 1
It's a compiler problem:
dis.dis(compile("mine[...] = 1", '', 'single')) 1 0 LOAD_CONST 0 (1) 3 LOAD_NAME 0 (mine) 6 LOAD_CONST 1 (Ellipsis) 9 LOAD_CONST 2 (None) 12 RETURN_VALUE
And how... case Ellipsis_kind: ADDOP_O(c, LOAD_CONST, Py_Ellipsis, consts) break; Just a couple of minor details missing, like, oh, compiling the actual subscript operation :) Bug here: http://www.python.org/sf/1448804 (assigned to myself, since I already wrote a test for it and worked out where to fix it) Cheers, Nick. -- Nick Coghlan | ncoghlan@gmail.com | Brisbane, Australia --------------------------------------------------------------- http://www.boredomandlaziness.org
Nick Coghlan wrote:
And how...
case Ellipsis_kind: ADDOP_O(c, LOAD_CONST, Py_Ellipsis, consts) break;
Just a couple of minor details missing, like, oh, compiling the actual subscript operation :)
Bug here: http://www.python.org/sf/1448804
(assigned to myself, since I already wrote a test for it and worked out where to fix it)
Fabulous! The fix committed to SVN seems to work. Now, all of numpy's unit tests are passing with Python 2.5a0. Great work, thank you. -Travis
Travis E. Oliphant wrote:
Nick Coghlan wrote:
And how...
case Ellipsis_kind: ADDOP_O(c, LOAD_CONST, Py_Ellipsis, consts) break;
Just a couple of minor details missing, like, oh, compiling the actual subscript operation :)
Bug here: http://www.python.org/sf/1448804
(assigned to myself, since I already wrote a test for it and worked out where to fix it)
Fabulous! The fix committed to SVN seems to work.
Now, all of numpy's unit tests are passing with Python 2.5a0.
Great work, thank you.
Unfortunately my new test case breaks test_compiler. I didn't notice because I didn't use -uall before checking it in :( If no-one else gets to it, I'll try to sort it out tonight. Cheers, Nick. -- Nick Coghlan | ncoghlan@gmail.com | Brisbane, Australia --------------------------------------------------------------- http://www.boredomandlaziness.org
Nick Coghlan wrote:
Unfortunately my new test case breaks test_compiler. I didn't notice because I didn't use -uall before checking it in :(
If no-one else gets to it, I'll try to sort it out tonight.
OK, as of rev 43025 the compiler module also understands augmented assignment to tuple subscripts, so test_compiler can cope with the new test case. Cheers, Nick. -- Nick Coghlan | ncoghlan@gmail.com | Brisbane, Australia --------------------------------------------------------------- http://www.boredomandlaziness.org
participants (3)
-
Michael Hudson
-
Nick Coghlan
-
Travis E. Oliphant