On 15Sep2021 07:50, Chris Angelico <ros...@gmail.com> wrote:
>On Wed, Sep 15, 2021 at 7:43 AM Cameron Simpson <c...@cskk.id.au> wrote:
>> I know I'm atypical, but I have quite a lot of multithreaded stuff,
>> including command line code. So while it'd be ok to avoid this context
>> manager for my own code, I fear library modules, either stdlib or pypi,
>> quietly using this in their code, making them unuseable in the general
>> case. Unrepairably unuseable, for the user.
>
>Library code shouldn't be changing the working directory, context
>manager or not. That belongs to the application.

Entirely agree.

I'm concerned that convenient stackable chdir is a bug magnet, and would 
creep into library code. Maybe not in the stdlib, but there's no point 
writing such a context manager if it isn't goingg to be used, and 
therefore it could get used in library code. Imagine when a popular pypi 
module starts using it internally and breaks a multithreaded app 
previously relying on it?

>> I think what would be more useful is a context manager which worked on a
>> threading.local which pushed/popped a reference directory path, and had
>> an open() method which used that (and friends for other pathname based
>> functions).
>
>Hmm. If it's going to push/pop directories, it should probably work
>with file descriptors rather than path names, and effectively turn all
>open calls into openat calls.

Yah. I even thought about that during my sketch. But (a) I've possibly 
never used openat() so I'm unfamiliar with it (other than its existence) 
and (b) I don't think that many other OS calls accept a file descriptor.  
Which still leaves one with the os.path.join() approach, and a mix might 
be inconsistent.

Cheers,
Cameron Simpson <c...@cskk.id.au>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/VX4O43SOLPSKDP4OVOYZYOTBH7BUPXWZ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to