Amaury Forgeot d'Arc <[EMAIL PROTECTED]> added the comment: The explanation is actually simple, do not blame bsddb :-)
random.random is a built-in method, so its __module__ attribute is not set. To find it, pickle.whichmodule loops through all sys.modules, and pick the first one that contains the function. I reproduced the problem with a simple file: # someModule.py from random import random then, start python and: >>> import someModule, random, pickle >>> pickle.dumps(random.random, 0) 'csomeModule\nrandom\np0\n.' You may have to change the name of "someModule", to be sure that it appears before "random" in sys.modules. Tested on Windows and x86_64 Linux. To correct this, one direction would be to search only built-in or extension modules; for bound methods (random.random.__self__ is not None), try to dump separately the instance and the method name (but getattr(random._inst, 'random') is not random.random). Or simply change the test... ---------- nosy: +amaury.forgeotdarc _______________________________________ Python tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue3657> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com