bugfix: use OS default permissions for mkdirp when mode is not provided (#9604)

- #8773 made the default mode 0o777, which is what's documented but
   mkdirp actually takes the OS default or umask by default

- revert to the Python default by default, and only set the mode when
  asked explicitly.
This commit is contained in:
Todd Gamblin 2018-10-24 11:36:41 -07:00 committed by GitHub
parent a0fb2838ea
commit a1f90d5b8c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -414,13 +414,22 @@ def get_filetype(path_name):
def mkdirp(*paths, **kwargs):
"""Creates a directory, as well as parent directories if needed."""
mode = kwargs.get('mode', stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)
"""Creates a directory, as well as parent directories if needed.
Arguments:
paths (str): paths to create with mkdirp
Keyword Aguments:
mode (permission bits or None, optional): optional permissions to
set on the created directory -- use OS default if not provided
"""
mode = kwargs.get('mode', None)
for path in paths:
if not os.path.exists(path):
try:
os.makedirs(path, mode)
os.chmod(path, mode) # For systems that ignore makedirs mode
os.makedirs(path)
if mode is not None:
os.chmod(path, mode)
except OSError as e:
if e.errno != errno.EEXIST or not os.path.isdir(path):
raise e