|
|
|
@ -124,10 +124,19 @@ def set_chown(path: str, user: T.Optional[str] = None, group: T.Optional[str] = |
|
|
|
|
# Not nice, but better than actually rewriting shutil.chown until |
|
|
|
|
# this python bug is fixed: https://bugs.python.org/issue18108 |
|
|
|
|
real_os_chown = os.chown |
|
|
|
|
|
|
|
|
|
def chown(path: T.Union[int, str, 'os.PathLike[str]', bytes, 'os.PathLike[bytes]'], |
|
|
|
|
uid: int, gid: int, *, dir_fd: T.Optional[int] = dir_fd, |
|
|
|
|
follow_symlinks: bool = follow_symlinks) -> None: |
|
|
|
|
"""Override the default behavior of os.chown |
|
|
|
|
|
|
|
|
|
Use a real function rather than a lambda to help mypy out. Also real |
|
|
|
|
functions are faster. |
|
|
|
|
""" |
|
|
|
|
real_os_chown(path, gid, uid, dir_fd=dir_fd, follow_symlinks=follow_symlinks) |
|
|
|
|
|
|
|
|
|
try: |
|
|
|
|
os.chown = lambda p, u, g: real_os_chown(p, u, g, |
|
|
|
|
dir_fd=dir_fd, |
|
|
|
|
follow_symlinks=follow_symlinks) |
|
|
|
|
os.chown = chown |
|
|
|
|
shutil.chown(path, user, group) |
|
|
|
|
finally: |
|
|
|
|
os.chown = real_os_chown |
|
|
|
|