Issue 1560032: confusing error msg from random.randint (original) (raw)

Created on 2006-09-17 06:22 by phr, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
pseudo-fix-1560032.patch petraszd,2010-07-24 10:51 Patch that hides _inst calls inside proxy methods. review
Messages (10)
msg29852 - (view) Author: paul rubin (phr) Date: 2006-09-17 06:22
See the following output. The reason for the confusing message is that random.randint is actually a bound method to a Random instance inside the module, i.e. someone got a little bit too clever. It should be an ordinary function that calls that instance method instead. >>> import random >>> random.randint(10000) Traceback (most recent call last): File "", line 1, in ? TypeError: randint() takes exactly 3 arguments (2 given)
msg29853 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2006-10-12 10:51
Logged In: YES user_id=849994 Note that it is documented that the random functions are actually bound methods.
msg84474 - (view) Author: Daniel Diniz (ajaksu2) * (Python triager) Date: 2009-03-30 03:08
I'll close this as won't fix unless someone wants to fix this.
msg84513 - (view) Author: paul rubin (phr) Date: 2009-03-30 05:54
ajaksu2, I don't understand why you want to close this bug if it isn't fixed. I can accept that it's not the highest priority issue in the world, but it's something that trips up users from time to time, and it ix obviously fixable. Closing bugs like this is demoralizing to those of us who take the trouble to submit them in the hope of helping improve Python. I've noticed that any number of times over the years, and recently saw a post about Ubuntu bug triage that expressed the sentiment better than I could: http://www.chiark.greenend.org.uk/ucgi/~cjwatson/blosxom/2009/03/02 (And while trying to locate that several week old post through web searches, I came across several more like it...). Anyway, the best thing to do with bugs like this is fix them. If there is other work with higher priority, the obvious thing is to just leave the bug open so someone gets around to it sooner or later. Closing the bug without a fix comes across as destructive.
msg84517 - (view) Author: Daniel Diniz (ajaksu2) * (Python triager) Date: 2009-03-30 06:20
Paul, I meant no disrespect, but it seemed to me not even you wanted it fixed (as you never replied to Georg's comment). I stated I'd close this issue unless someone wanted it fixed. I'm reopening it, as you do want it fixed :) FWIW and IMHO, I don't see much improvement from a message saying "randint() takes exactly 2 arguments (1 given)". So I think it's possible it can be considered invalid, even after all this time. Anyway, if you can provide a patch (or even a specification) that makes the message clear without introducing too much code complication, I'm sure getting this fixed this will be much more likely. (nice link BTW, I read it back then and I think I'm following his advice where needed)
msg84701 - (view) Author: paul rubin (phr) Date: 2009-03-30 22:57
Daniel, thanks--I didn't mean to jump on you, so I'm sorry if it came across that way. Maybe I'm a little oversensitized to this issue due to some unrelated incidents with other programs. I'll try to write a more detailed reply and maybe include a patch later (I can't do it right now). Regards Paul
msg86271 - (view) Author: Daniel Diniz (ajaksu2) * (Python triager) Date: 2009-04-22 05:08
Don't worry :) Tagging as a Bug Day candidate.
msg111451 - (view) Author: Petras Zdanavičius (petraszd) * Date: 2010-07-24 10:51
I have written a patch thats makes these strange error messages go away. What actually I have done was something like this: >>> randint = _inst.randint Was replaced with: >>> def randint(a, b): return _inst.randint(a, b) But I do not think it is worth to add additional stack frame just for error messages be a little more better.
msg122003 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2010-11-21 22:20
This is related to the more general issue of how to report a wrong number of arguments in a method call; I don’t remember if it was a python-dev discussion, a python-ideas one or a bug report. random is not the only module where instance methods are used as module functions; I don’t know what is more important between slightly better error messages and performance.
msg122006 - (view) Author: Raymond Hettinger (rhettinger) * (Python committer) Date: 2010-11-21 22:33
Sorry, it's time to close this one. The code is not buggy, it is documented as being a bound method and that is a perfectly acceptable python coding style to use bound methods as callables. It's also been around for a *very* long without causing issues beyond Python's usual irritation with the number of arguments messages (that happened when Python became object oriented and that artifact still survives). When it comes to the random module, people are performance sensitive and it would be a total waste to wrap these bound methods in another layer just to get different error message reporting. Anyone whose Monte Carlo simulation run time doubles because of this would be rightfully irritated.
History
Date User Action Args
2022-04-11 14:56:20 admin set github: 43984
2010-11-21 22:33:03 rhettinger set status: open -> closednosy: + rhettingermessages: + assignee: rhettingerresolution: not a bug
2010-11-21 22:20:20 eric.araujo set nosy: + eric.araujomessages: +
2010-08-24 20:36:13 BreamoreBoy set stage: test needed -> patch reviewversions: + Python 3.2, - Python 3.1, Python 2.7
2010-07-24 10:51:16 petraszd set files: + pseudo-fix-1560032.patchnosy: + petraszdmessages: + keywords: + patch
2009-04-22 05:08:32 ajaksu2 set keywords: + easymessages: +
2009-03-30 22:57:04 phr set messages: +
2009-03-30 06:21:00 ajaksu2 set status: pending -> openmessages: + stage: test needed
2009-03-30 05:54:30 phr set messages: +
2009-03-30 03:08:56 ajaksu2 set status: open -> pendingversions: + Python 3.1, Python 2.7, - Python 2.4nosy: + ajaksu2messages: + type: enhancement
2006-09-17 06:22:07 phr create