gh-86533: Restore os.makedirs() ability to apply *mode* recursively#23901
Open
ZackerySpytz wants to merge 12 commits intopython:mainfrom
Open
gh-86533: Restore os.makedirs() ability to apply *mode* recursively#23901ZackerySpytz wants to merge 12 commits intopython:mainfrom
ZackerySpytz wants to merge 12 commits intopython:mainfrom
Conversation
Allow os.makedirs() to apply the *mode* argument to any intermediate directories that are created.
|
This PR is stale because it has been open for 30 days with no activity. |
Contributor
Author
|
It is not stale. |
|
This PR is stale because it has been open for 30 days with no activity. |
|
@ZackerySpytz is there any workaround for this at the moment as you stated in #42367 that umask can't be used to control the intermediate directory creation permissions. |
vanschelven
added a commit
to bugsink/bugsink
that referenced
this pull request
Aug 29, 2025
Defends against certain forms of local privilege escalation, i.e. understood to be defense in depth rather than a security issue given the recommended ways of deploying (docker container or in a single-use single-server) Fix #174 See python/cpython#23901
- Replace recursive_mode with more intuitive parent_mode parameter - parent_mode=None (default): intermediate dirs use default permissions - parent_mode=<mode>: intermediate dirs use specified permissions - parent_mode=mode: matches Python 3.6 behavior - Update documentation with version markers and usage examples - Add comprehensive test coverage with separate focused test functions - Fix test permissions to avoid cleanup issues (0o555 → 0o705) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
- Add parent_mode parameter to Path.mkdir() for specifying intermediate directory permissions when parents=True - Maintain pathlib's independence by using recursive implementation rather than delegating to os.makedirs - Add comprehensive tests including umask behavior verification - Update documentation and whatsnew entries - Provides consistency with os.makedirs parent_mode parameter 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
3cc6495 to
67ae3af
Compare
Use st_mode & 0o777 masking instead of stat.S_IMODE() to ignore filesystem-specific bits like setgid, matching the approach used in os.makedirs tests. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
vanschelven
added a commit
to bugsink/bugsink
that referenced
this pull request
Aug 30, 2025
Defends against certain forms of local privilege escalation, i.e. understood to be defense in depth rather than a security issue given the recommended ways of deploying (docker container or in a single-use single-server) Fix #174 See python/cpython#23901
ZackerySpytz
commented
Aug 30, 2025
Contributor
Author
ZackerySpytz
left a comment
There was a problem hiding this comment.
Hello, @gpshead. I see that you have made some changes to this PR. I have pointed out some lines in the changes you have made that we should modify.
We should also make sure that the lines in the new pathlib code are limited to a maximum of 79 characters (for PEP 8 compliance).
Co-authored-by: Zackery Spytz <zspytz@gmail.com>
Co-authored-by: Zackery Spytz <zspytz@gmail.com>
|
This PR is stale because it has been open for 30 days with no activity. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Allow os.makedirs() to set the mode of intermediate directories that are created. This adds a parent_mode argument to allow explicitly setting those modes instead of inheriting from the
umask.
Also adds the equivalent feature to
pathlib.Path.mkdirfor consistency as noted in the issue.https://bugs.python.org/issue42367