On Feb 11, 2010, at 07:38 AM, Robert Collins wrote:

>On Wed, 2010-02-10 at 14:42 -0500, Barry Warsaw wrote:
>> 
>>     with cwd('/path/to/stuff'):
>>         # ...
>> 
>> is pretty obvious.
>
>And extremely dangerous, as well as trivially broken. Not safe to use
>from any server code.

Any more so than its try/finally cousin?

Case in point: DSCFile.unpackAndCheckSource() which chdirs to a temp
directory.  The try/finally is actually worse here than an equivalent
with-statement because there's a window of opportunity for the two lines
between the chdir() and the try to fail, leaving you in the tempdir because
the finally never gets called.

Do a grep over our code for os.chdir() for some enfrightenment. :)  A lot of
uses are in tests, and at the very least promoting a common pattern through a
convenient context manager can bring some consistency to our code.

-Barry

Attachment: signature.asc
Description: PGP signature

_______________________________________________
Mailing list: https://launchpad.net/~launchpad-dev
Post to     : launchpad-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~launchpad-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to