
An attempt to use sockets for the first time yesterday left a friend of mine bewildered: >>> import socket >>> s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) >>> s.connect('localhost:234') Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: 2-sequence, 13-sequence >>> "What the heck does '2-sequence, 13-sequence' mean?" he rightfully asked. I see in getargs.c (line 275) that this type of message is documented: /* Convert a tuple argument. [...] If the argument is invalid: [...] *msgbuf contains an error message, whose format is: "<typename1>, <typename2>", where: <typename1> is the name of the expected type, and <typename2> is the name of the actual type, (so you can surround it by "expected ... found"), and msgbuf is returned. */ It's clear that the socketmodule is not prepending "expected" and appending "found", as the author of converttuple intended. But when i grepped through the source code, i couldn't find anyone applying this "expected %s found" % msgbuf convention outside of getargs.c. Is it really in use? Could we just change getargs.c so that converttuple() returns a message like "expected ..., got ..." instead of seterror()? Additionally it would be nice to say '13-character string' instead of '13-sequence'... -- ?!ng "All models are wrong; some models are useful." -- George Box
participants (1)
-
Ka-Ping Yee