Mercurial > public > mercurial-scm > hg
comparison mercurial/pycompat.py @ 43085:eef9a2d67051
py3: manually import pycompat.open into files that need it
We want to eliminate the source transformer. Currently it inserts
a `from mercurial.pycompat import ...` at the top of files to alias
some builtins.
This commit replaces the implicit import of `open` with an explicit
import on files that need it and changes the source transformer to
no longer import `open`.
As part of this, we needed to store an explicit local for `open` in
the Python 2 code path in `pycompat` so the import works. (Builtins
that are automatically in scope cannot be imported.)
Differential Revision: https://phab.mercurial-scm.org/D7005
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sun, 06 Oct 2019 13:28:56 -0400 |
parents | 687b865b95ad |
children | 66f2cc210a29 |
comparison
equal
deleted
inserted
replaced
43084:c2e284cee333 | 43085:eef9a2d67051 |
---|---|
352 maybebytestr = identity | 352 maybebytestr = identity |
353 sysbytes = identity | 353 sysbytes = identity |
354 sysstr = identity | 354 sysstr = identity |
355 strurl = identity | 355 strurl = identity |
356 bytesurl = identity | 356 bytesurl = identity |
357 open = open | |
357 | 358 |
358 # this can't be parsed on Python 3 | 359 # this can't be parsed on Python 3 |
359 exec(b'def raisewithtb(exc, tb):\n' b' raise exc, None, tb\n') | 360 exec(b'def raisewithtb(exc, tb):\n' b' raise exc, None, tb\n') |
360 | 361 |
361 def fsencode(filename): | 362 def fsencode(filename): |