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

Reply via email to