[Tutor] Strange IndexError

Willi Richert w.richert at gmx.net
Thu Jun 2 11:39:36 CEST 2005


Hi,

my app is a Pyrobot (http://emergent.brynmawr.edu/~dblank/pyro/) 
simulation which connects to PlayerStage (playerstage.sf.net) 
to simulate three Pioneer robots. These are controlled using 
NeedBrain.py. In parallel to the three NeedBrains there is one 
MonitorBrain running for some management tasks, so I have
 four parallel running classes.

NeedBrain.py -> http://deadbeefbabe.org/paste/762
MonitorBrain.py -> http://deadbeefbabe.org/paste/763

I added assertion code, which shows that I am comparing
 real floats. Nevertheless, I get:

NeedBrNeedBrain.py:232: RuntimeWarning: tp_compare didn't return -1 or -2 for exception
  assert type(self._markerDist)==type(1.0), str(self._markerDist)+"is not float"
Traceback (most recent call last):
  File "NeedBrain.py", line 232, in update
    assert type(self._markerDist)==type(1.0), str(self._markerDist)+"is not float"
IndexError: tuple assignment index out of range

Locals by frame, innermost last

Frame __bootstrap in /usr/lib/python2.3/threading.py at line 436
	                self =  <NeedBrain(Thread-4, started)>

Frame run in /home/wr/forschung/software/ps/pyrobot/brain/__init__.py at line 148
	               count =  0
	                self =  <NeedBrain(Thread-4, started)>

Frame step in NeedBrain.py at line 465
	                self =  <NeedBrain(Thread-4, started)>

Frame step in /home/wr/forschung/software/ps/pyrobot/brain/behaviors/__init__.py at line 63
	                   s =  ApproachMarker20Action
	                self =  <NeedBrain(Thread-4, started)>

Frame run in /home/wr/forschung/software/ps/pyrobot/brain/behaviors/__init__.py at line 299
	                   r =  [1.0, 'rotate', -2.2425874250672049, 'Rule2', 'MoveToMarkerBehavior', 'ApproachMarker20Action']
	                   b =  <NeedBrain.AvoidObstacleBehavior instance at 0xb63f13cc>
	                bkey =  AvoidObstacleBehavior
	                self =  <NeedBrain.ApproachMarker20Action instance at 0xb63ececc>

Frame update in NeedBrain.py at line 237
	                self =  <NeedBrain.ApproachMarker20Action instance at 0xb63ececc>
	                   e =  tuple assignment index out of range


Any comment to the code is appreciated - especially those 
ones that  solve the IndexError ;-)

Regards,
wr

Am Mittwoch, 1. Juni 2005 19:09 schrieb Danny Yoo:
> On Wed, 1 Jun 2005, Willi Richert wrote:
> > in my code I get in rare occasions an IndexError which is
> > incomprehensible to me in that situation, where I do a simple
> > comparison:
> >
> > NeedBrain.py:233: RuntimeWarning: tp_compare didn't return -1 or -2 for
> > exception
> >   self._isNearMarker = self._markerDist < self.STAY_MIN_DIST
>
> Hi Willi,
>
> Hmmm!  This actually looks very unusual.  You should never see anything
> about 'tp_compare' unless you're dealing with a buggy C extension.
>
> > Traceback (most recent call last):
> >   File "NeedBrain.py", line 233, in update
> >     self._isNearMarker = self._markerDist < self.STAY_MIN_DIST
> > IndexError: tuple assignment index out of range
> >
> > I don't see, where tuples are involved. I only compare two floats. I've
> > Python 2.3.4.
>
> Have you edited the program since the program started?  It's very possible
> that the line numbers are wrong just because the program has changed in
> the meantime.
>
> But the warning before that talks about 'tp_compare' has me intrigued, as
> you should never see that error.  If you don't mind, can you post your
> code up somewhere?
>
>
> Best of wishes to you!
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor


More information about the Tutor mailing list