You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This changes the mkstemp call TemporaryFileSwap uses to atomically
create (and thus reserve) the temporary file, so that it passes
only a filename (i.e., basename) prefix as `prefix`, and passes all
other path components (i.e., the directory) as `dir`. (If the
original path has no directory, then `dir` is "" as before.)
This makes the mkstemp call *slightly* more idiomatic. This also
makes it clearer, as it is no longer using `prefix` for something
that feels like it should be possible to pass as a Path object.
Although mkstemp does not accept a Path as `prefix`, it does (as
expected) accept one as `dir`. However, to keep the code simple,
I'm passing str for both. The os.path.split function accepts both
str and Path (since Python 3.6), and returns str objects, which are
now used for the `dir` and `prefix` arguments to mkstemp.
For unusual cases, this may technically not be a refactoring. For
example, a file_path of "a/b//c" will be split into "a/b" and "c".
If the automatically generated temporary file suffix is "xyz", then
that results in a tmp_file_path of "a/b/cxyz" where "a/b//cxyz"
would have been used before. The tmp_file_path attribute of a
TemporaryFileSwap object is public (and used in filesystem calls).
However, no guarantee has ever been given that the temporary file
path have the original path as an exact string prefix. I believe
the slightly weaker relationship I expressed in the recently
introduced test_temporary_file_swap -- another file in the same
directory, named with the original filename with more characters,
consisting of equivalent path components in the same order -- has
always been the intended one.
Note that this slight possible variation does not apply to the
file_path attribute. That attribute is always kept exactly as it
was, both in its type and its value, and it always used unmodified
in calls that access the filesystem.
0 commit comments