Mercurial > hg
changeset 51885:adbb183c2f27
vfs: simplify the `abstractvfs.rename()` implementation
PyCharm was yapping about `util.rename()` not returning anything, because it is
typed to return `None`, but the value was captured and returned after calling
`_avoidambig()`. Instead, drop all of that, unconditionally rename, and then
call `_avoidambig()` if appropriate.
While we're here, convert the ersatz ternary operator into a modern one to help
pytype. When a variable is initialized the old way, pytype tends to assign the
type of the LHS of the `and`. In this case, that's a bool, and it will get
confused that bool doesn't have a `stat` attribute once this method gets more
type annotations. (Currently it thinks the `checkambig` arg is `Any`, so it
doesn't care.)
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Fri, 20 Sep 2024 01:16:16 -0400 |
parents | f79f98733a5b |
children | e59e1d8d29d2 |
files | mercurial/vfs.py |
diffstat | 1 files changed, 4 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/vfs.py Fri Sep 20 00:07:39 2024 -0400 +++ b/mercurial/vfs.py Fri Sep 20 01:16:16 2024 -0400 @@ -273,12 +273,12 @@ self._auditpath(dst, b'w') srcpath = self.join(src) dstpath = self.join(dst) - oldstat = checkambig and util.filestat.frompath(dstpath) + oldstat = util.filestat.frompath(dstpath) if checkambig else None + + util.rename(srcpath, dstpath) + if oldstat and oldstat.stat: - ret = util.rename(srcpath, dstpath) _avoidambig(dstpath, oldstat) - return ret - return util.rename(srcpath, dstpath) def readlink(self, path: bytes) -> bytes: return util.readlink(self.join(path))