Mercurial > public > mercurial-scm > hg-stable
diff mercurial/windows.py @ 52665:24ee91ba9aa8
pyupgrade: drop usage of py3 aliases for `OSError`
These were different classes in py2, but now a handful of error classes are just
an alias of `OSError`, like `IOError`, `EnvironmentError`, `WindowsError`, etc.
This is the result of running a hacked version of `pyupgrade` 3.19.1[1]
$ hg files -0 'relglob:**.py' | xargs -0 \
pyupgrade --py38-plus --keep-percent-format --keep-mock --keep-runtime-typing
The hack is because it doesn't have command line switches to disable most
changes, so it makes tons of unrelated changes all at once. The hack is to
1) patch `pyupgrade._main._fix_tokens()` to immediately return its content arg
2) change `pyupgrade._data.register_decorator()` to only register the function
if it's from the fixer we're interested in:
if func.__module__ in (
"pyupgrade._plugins.exceptions",
):
FUNCS[tp].append(func)
return func
[1] https://github.com/asottile/pyupgrade
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sun, 05 Jan 2025 21:03:17 -0500 |
parents | 9db77d46de79 |
children |
line wrap: on
line diff
--- a/mercurial/windows.py Mon Jan 06 14:15:40 2025 -0500 +++ b/mercurial/windows.py Sun Jan 05 21:03:17 2025 -0500 @@ -191,9 +191,9 @@ return mixedfilemodewrapper(fp) return fp - except WindowsError as err: # pytype: disable=name-error + except OSError as err: # convert to a friendlier exception - raise IOError( + raise OSError( err.errno, '%s: %s' % (encoding.strfromlocal(name), err.strerror) ) @@ -242,25 +242,25 @@ def close(self): try: self.fp.close() - except IOError: + except OSError: pass def write(self, s): try: return self.fp.write(s) - except IOError as inst: + except OSError as inst: if inst.errno != 0 and not win32.lasterrorwaspipeerror(inst): raise self.close() - raise IOError(errno.EPIPE, 'Broken pipe') + raise OSError(errno.EPIPE, 'Broken pipe') def flush(self): try: return self.fp.flush() - except IOError as inst: + except OSError as inst: if not win32.lasterrorwaspipeerror(inst): raise - raise IOError(errno.EPIPE, 'Broken pipe') + raise OSError(errno.EPIPE, 'Broken pipe') def openhardlinks() -> bool: @@ -744,7 +744,7 @@ # never let a Unicode string escape into the wild return encoding.unitolocal(val) - except EnvironmentError: + except OSError: pass