Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]> wrote: > In <[EMAIL PROTECTED]>, James T. Dennis wrote:
>> Tonight I discovered something odd in the __doc__ for tempfile >> as shipped with Python 2.4.4 and 2.5: it says: >> >> This module also provides some data items to the user: >> >> TMP_MAX - maximum number of names that will be tried before >> giving up. >> template - the default prefix for all temporary names. >> You may change this to control the default prefix. >> >> ... which would lead one to think that the following code would work: >> >> >>> import tempfile >> >>> tempfile.template = 'mytest' >> >>> tf = tempfile.NamedTemporaryFile() >> >>> tf.name >> '/tmp/mytest-XXXXXX' >> >> It doesn't. > The source says: > __all__ = [ > "NamedTemporaryFile", "TemporaryFile", # high level safe interfaces > "mkstemp", "mkdtemp", # low level safe interfaces > "mktemp", # deprecated unsafe interface > "TMP_MAX", "gettempprefix", # constants > "tempdir", "gettempdir" > ] > Maybe the doc should be clearer in saying "constants" too. >> Secondly, the author(s) of the tempfile module apparently didn't >> understand this either. And no one else even noticed that the __doc__ >> is wrong (or at least misleading -- since the only way I can see to >> change tempfile.template is to edit the .py file! > You can change it by simply assigning to the name: > In [15]: tempfile.template = 'spam' > In [16]: tempfile.template > Out[16]: 'spam' I know you can change it. But changing it in your namespace doesn't change the results returned by the functions called from the module. > If you want to change the outcome of the functions and objects then simply > give the prefix as argument. I know how to provide the prefix arguments and that was never the issue. The issue was twofold: The docs are wrong (or at least confusing/misleading) I don't quite understand how this name/variable in my namespace (__main__) is able to change the value while the functions in the module still hold the old value. -- Jim Dennis, Starshine: Signed, Sealed, Delivered -- http://mail.python.org/mailman/listinfo/python-list