mercurial/encoding.py
changeset 33022 ce96efec8112
parent 32537 044f3d7eb9ae
child 33761 f5fc54e7e467
equal deleted inserted replaced
33021:24c0a9a7fa86 33022:ce96efec8112
   175 
   175 
   176 def unifromlocal(s):
   176 def unifromlocal(s):
   177     """Convert a byte string of local encoding to a unicode string"""
   177     """Convert a byte string of local encoding to a unicode string"""
   178     return fromlocal(s).decode('utf-8')
   178     return fromlocal(s).decode('utf-8')
   179 
   179 
       
   180 def unimethod(bytesfunc):
       
   181     """Create a proxy method that forwards __unicode__() and __str__() of
       
   182     Python 3 to __bytes__()"""
       
   183     def unifunc(obj):
       
   184         return unifromlocal(bytesfunc(obj))
       
   185     return unifunc
       
   186 
   180 # converter functions between native str and byte string. use these if the
   187 # converter functions between native str and byte string. use these if the
   181 # character encoding is not aware (e.g. exception message) or is known to
   188 # character encoding is not aware (e.g. exception message) or is known to
   182 # be locale dependent (e.g. date formatting.)
   189 # be locale dependent (e.g. date formatting.)
   183 if pycompat.ispy3:
   190 if pycompat.ispy3:
   184     strtolocal = unitolocal
   191     strtolocal = unitolocal
   185     strfromlocal = unifromlocal
   192     strfromlocal = unifromlocal
       
   193     strmethod = unimethod
   186 else:
   194 else:
   187     strtolocal = pycompat.identity
   195     strtolocal = pycompat.identity
   188     strfromlocal = pycompat.identity
   196     strfromlocal = pycompat.identity
       
   197     strmethod = pycompat.identity
   189 
   198 
   190 if not _nativeenviron:
   199 if not _nativeenviron:
   191     # now encoding and helper functions are available, recreate the environ
   200     # now encoding and helper functions are available, recreate the environ
   192     # dict to be exported to other modules
   201     # dict to be exported to other modules
   193     environ = dict((tolocal(k.encode(u'utf-8')), tolocal(v.encode(u'utf-8')))
   202     environ = dict((tolocal(k.encode(u'utf-8')), tolocal(v.encode(u'utf-8')))