"bad argument type for built-in operation"
Hello, I've got a nasty bug and no idea to deal with : here is the 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 in fact the method was initially reduce to return map(self.decerner, self.param, var) all the commented line produced the same exception raised this method unnormalize an input vector (var) and the trace in None [(-2.0, 2.0), (-2.0, 2.0)] [0.1385039192456847, 0.87787941093093491] 2 2 [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 [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 [(-2.0, 2.0), (-2.0, 2.0)] [0.38111874838950943, 0.74880175070169164] E2 bad argument type for built-in operation [...] 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. -- http://mail.python.org/mailman/listinfo/python-list
bad argument type for built-in operation
Hello, I've the traceback: Traceback (most recent call last): File "visualizer.py", line 8, in ? main() File "visualizer.py", line 5, in main g = GraphCreator(f) File "/home/florian/visualizer/GraphCreator.py", line 13, in __init__ self.conf = ConfigReader(config) File "/home/florian/visualizer/ConfigReader.py", line 53, in __init__ graph.sourceReader = CSVReader(filename, firstline, delimiter) File "/home/florian/visualizer/ConfigReader.py", line 13, in __init__ self.reader = csv.reader(f, delimiter=Adelimiter) TypeError: bad argument type for built-in operation f ist file object, Adelimiter is ",". What is wrong there? Thanks, Florian -- http://mail.python.org/mailman/listinfo/python-list
Re: "bad argument type for built-in operation"
Gilles Arnaud wrote: > Hello, > > I've got a nasty bug and no idea to deal with : > > here is the method : Big snip. The Python code is unlikely to be your problem. > and the trace > > in None [(-2.0, 2.0), (-2.0, 2.0)] [0.1385039192456847, > 0.87787941093093491] 2 2 > [0.1385039192456847, 0.87787941093093491] That's a very mangled trace! > the first call of the methode succeed > all following call failed. So the first call is leaving a bomb behind. > > 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 ? At this stage, without the benefit of look-ahead, one could only blame gamma rays or pointy-eared aliens :-) > > 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. Aha! *Now* you tell us. *You* have "denormalised" the stack. Read your C code carefully. Use a debugger, or put some "printf()" in it. With PyObject_CallMethod, do the format descriptors and the arguments match? Are you testing the returned value for NULL and acting accordingly? Is the called-from-C Python method ever executed? Try putting a print statement (that shows the args) at the top. More generally, are you testing the returned value from each and every C API call? Are you testing for the correct error value (some return NULL, some -1, ...)? Are you doing the right thing on error? A catalogue of the different ways of messing things up using C would take forever to write. If you can't find your problem, post the code, either on the newsgroup or as a web page. Hope this helps, John -- http://mail.python.org/mailman/listinfo/python-list
RE: bad argument type for built-in operation
Florian Lindner wrote: > Traceback (most recent call last): > File "visualizer.py", line 8, in ? > main() > File "visualizer.py", line 5, in main > g = GraphCreator(f) > File "/home/florian/visualizer/GraphCreator.py", line 13, in > __init__ self.conf = ConfigReader(config) > File "/home/florian/visualizer/ConfigReader.py", line 53, in > __init__ graph.sourceReader = CSVReader(filename, firstline, > delimiter) File "/home/florian/visualizer/ConfigReader.py", line > 13, in __init__ self.reader = csv.reader(f, delimiter=Adelimiter) > TypeError: bad argument type for built-in operation > > f ist file object, Adelimiter is ",". > > What is wrong there? Lack of code. I'd start looking very carefully as to whether `f` really is a file object. Tim Delaney -- http://mail.python.org/mailman/listinfo/python-list