[PATCH 2 of 8] py3: proxy posixfile objects to re-add a useful 'name' attribute on Windows
Yuya Nishihara
yuya at tcha.org
Sun Sep 23 02:38:55 EDT 2018
On Sat, 22 Sep 2018 11:28:38 -0400, Matt Harbison wrote:
> # HG changeset patch
> # User Matt Harbison <matt_harbison at yahoo.com>
> # Date 1537574587 14400
> # Fri Sep 21 20:03:07 2018 -0400
> # Node ID 0d1b3d5a92e159506c823be481cf9f57e45ec03d
> # Parent 758cf8cdf994942174238c28c8f06ece63dae2b5
> py3: proxy posixfile objects to re-add a useful 'name' attribute on Windows
> diff --git a/mercurial/windows.py b/mercurial/windows.py
> --- a/mercurial/windows.py
> +++ b/mercurial/windows.py
> @@ -128,6 +128,28 @@ def posixfile(name, mode='r', buffering=
> try:
> fp = osutil.posixfile(name, mode, buffering) # may raise WindowsError
>
> + # PyFile_FromFd() ignores the name, and seems to report fp.name as the
> + # underlying file descriptor.
> + if pycompat.ispy3:
> + class fdproxy(object):
> + def __init__(self, name, fp):
> + self.name = name
> + self._fp = fp
> +
> + def __enter__(self):
> + return self._fp.__enter__()
> +
> + def __exit__(self, exc_type, exc_value, traceback):
> + self._fp.__exit__(exc_type, exc_value, traceback)
> +
> + def __iter__(self):
> + return iter(self._fp)
> +
> + def __getattr__(self, name):
> + return getattr(self._fp, name)
Can you move the class definition to module scope? It isn't nice to create
the proxy type per posixfile() call.
More information about the Mercurial-devel
mailing list