"bad argument type for built-in operation"
Gilles Arnaud
gilles.arnaud at cea.fr
Mon Jan 24 10:00:16 EST 2005
Hello,
I've got a nasty bug and no idea to deal with :
here is the method :
<method>
def denormer(self, var) :
" denorme un vecteur d'entree "
try:
#a = map(self.decerner, self.param, var)
#a = [self.decerner(x, y) for x, y in map(None,
self.param, var)]
a = []
print 'in', None, self.param, var, len(self.param),
len(var), str(self.decerner)
#return map(undoc, self.param, var)
print map(None, var)
print map(None, self.param)
#print zip(var, var)
#print zip(self.param, self.param)
#print map(lambda x, y: (x,y), self.param, var)
#print zip(self.param, var)
b = []
print '$',
ii = range(len(var))
print ii, '$',
for i in ii :
print '%',
b.append((self.param[i], var[i]))
print b, '/',
print '$',
print b
for x,y in b :
print x, y
z = undoc(x, y)
print z
a.append(z)
except TypeError, c :
print 'E', str(self.decerner), self.param, var
print 'E2', str(c)
raise
return a
</method>
in fact the method was initially reduce to
<method>
return map(self.decerner, self.param, var)
</method>
all the commented line produced the same exception raised
this method unnormalize an input vector (var)
and the trace
<trace>
in None [(-2.0, 2.0), (-2.0, 2.0)] [0.1385039192456847,
0.87787941093093491] 2 2 <function undo at 0x81ff94c>
[0.1385039192456847, 0.87787941093093491]
[(-2.0, 2.0), (-2.0, 2.0)]
$ [0, 1] $ % [((-2.0, 2.0), 0.1385039192456847)] / % [((-2.0,
2.0), 0.1385039192456847), ((-2.0, 2.0), 0.87787941093093491)] / $
[((-2.0, 2.0), 0.1385039192456847), ((-2.0, 2.0),
0.87787941093093491)]
(-2.0, 2.0) 0.138503919246
% 0.277007838491
(-2.0, 2.0) 0.877879410931
% 1.75575882186
in None [(-2.0, 2.0), (-2.0, 2.0)] [0.38111874838950943,
0.74880175070169164] 2
2 <function undo at 0x81ff94c>
[0.38111874838950943, 0.74880175070169164]
[(-2.0, 2.0), (-2.0, 2.0)]
$ [0, 1] $ % [((-2.0, 2.0), 0.38111874838950943)] / % [((-2.0,
2.0), 0.38111874838950943), ((-2.0, 2.0), 0.74880175070169164)] /
E <function undo at 0x81ff94c>
[(-2.0, 2.0), (-2.0, 2.0)] [0.38111874838950943, 0.74880175070169164]
E2 bad argument type for built-in operation
[...]
</trace>
the first call of the methode succeed
all following call failed.
I've got different scenario which call this low level methode,
many succeed, some failed this way.
what's happened ?
If someone got an idea ?
what can raise this exception ?
My program is written partially in python and partially in C.
the top level is in python which call a C optimisation routine
which use a callback (PyObject_CallMethod) to evaluate the cost in
python again.
More information about the Python-list
mailing list