mirror of
https://github.com/facebook/sapling.git
synced 2025-01-07 22:21:40 +03:00
encoding: add converter between native str and byte string
This kind of encoding conversion is unavoidable on Python 3.
This commit is contained in:
parent
dcade16cf7
commit
af7f25fdb3
@ -204,6 +204,16 @@ def unifromlocal(s):
|
||||
"""Convert a byte string of local encoding to a unicode string"""
|
||||
return fromlocal(s).decode('utf-8')
|
||||
|
||||
# converter functions between native str and byte string. use these if the
|
||||
# character encoding is not aware (e.g. exception message) or is known to
|
||||
# be locale dependent (e.g. date formatting.)
|
||||
if pycompat.ispy3:
|
||||
strtolocal = unitolocal
|
||||
strfromlocal = unifromlocal
|
||||
else:
|
||||
strtolocal = str
|
||||
strfromlocal = str
|
||||
|
||||
if not _nativeenviron:
|
||||
# now encoding and helper functions are available, recreate the environ
|
||||
# dict to be exported to other modules
|
||||
|
@ -108,9 +108,7 @@ def _importext(name, path=None, reportfunc=None):
|
||||
def _forbytes(inst):
|
||||
"""Portably format an import error into a form suitable for
|
||||
%-formatting into bytestrings."""
|
||||
if pycompat.ispy3:
|
||||
return encoding.unitolocal(str(inst))
|
||||
return inst
|
||||
return encoding.strtolocal(str(inst))
|
||||
|
||||
def _reportimporterror(ui, err, failed, next):
|
||||
# note: this ui.debug happens before --debug is processed,
|
||||
|
@ -2653,9 +2653,7 @@ class url(object):
|
||||
>>> print url(r'file:///D:\data\hg')
|
||||
file:///D:\data\hg
|
||||
"""
|
||||
if pycompat.ispy3:
|
||||
return encoding.unifromlocal(self.__bytes__())
|
||||
return self.__bytes__()
|
||||
return encoding.strfromlocal(self.__bytes__())
|
||||
|
||||
def __bytes__(self):
|
||||
if self._localpath:
|
||||
|
@ -22,7 +22,7 @@ New errors are not allowed. Warnings are strongly discouraged.
|
||||
mercurial/encoding.py:61:
|
||||
> for k, v in os.environ.items())
|
||||
use encoding.environ instead (py3)
|
||||
mercurial/encoding.py:211:
|
||||
mercurial/encoding.py:221:
|
||||
> for k, v in os.environ.items())
|
||||
use encoding.environ instead (py3)
|
||||
Skipping mercurial/httpclient/__init__.py it has no-che?k-code (glob)
|
||||
|
Loading…
Reference in New Issue
Block a user