gh-140774: Fix pathlib.Path.chmod handling of Windows Archive bit #142018
+49
−2
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #140774.
On Windows,
Path.chmod(mode, follow_symlinks=True)fails silently (does not change permissions) if the target file has its Archive bit cleared. This issue arises because passing aPathobject directly toos.chmodtriggers a behavior difference in the Windows implementation compared to passing a raw string.The Fix:
Updated
Lib/pathlib/__init__.pyto explicitly cast the path to a string (str(self)) before passing it toos.chmod.Verification:
Added a regression test
test_chmod_archive_bit_behaviortoWindowsPathTestinLib/test/test_pathlib/test_pathlib.py. The test:attribcommand.chmodsuccessfully removes the Read-Only attribute.