diff --git a/kallithea/lib/utils2.py b/kallithea/lib/utils2.py --- a/kallithea/lib/utils2.py +++ b/kallithea/lib/utils2.py @@ -43,7 +43,7 @@ from tg.i18n import ungettext from webhelpers2.text import collapse, remove_formatting, strip_tags from kallithea.lib.compat import json -from kallithea.lib.vcs.utils import safe_str, safe_unicode # re-export +from kallithea.lib.vcs.utils import safe_bytes, safe_str, safe_unicode # re-export from kallithea.lib.vcs.utils.lazy import LazyProperty diff --git a/kallithea/lib/vcs/utils/__init__.py b/kallithea/lib/vcs/utils/__init__.py --- a/kallithea/lib/vcs/utils/__init__.py +++ b/kallithea/lib/vcs/utils/__init__.py @@ -76,7 +76,7 @@ def safe_unicode(s): if isinstance(s, unicode): return s - if not isinstance(s, str): # use __str__ / __unicode__ and don't expect UnicodeDecodeError + if not isinstance(s, bytes): # use __str__ / __unicode__ and don't expect UnicodeDecodeError return unicode(s) from kallithea.lib.vcs.conf import settings @@ -97,16 +97,16 @@ def safe_unicode(s): return unicode(s, settings.DEFAULT_ENCODINGS[0], 'replace') -def safe_str(s): +def safe_bytes(s): """ - Safe str function. Use a few tricks to turn s into bytes string: + Safe bytes function. Use a few tricks to turn s into bytes string: In case of UnicodeEncodeError with configured default encodings, fall back to first configured encoding with errors replaced. """ - if isinstance(s, str): + if isinstance(s, bytes): return s - assert isinstance(s, unicode), s # don't use safe_str to coerce non-strings + assert isinstance(s, unicode), repr(s) # bytes cannot coerse with __str__ or handle None or int from kallithea.lib.vcs.conf import settings for enc in settings.DEFAULT_ENCODINGS: @@ -118,6 +118,9 @@ def safe_str(s): return s.encode(settings.DEFAULT_ENCODINGS[0], 'replace') +safe_str = safe_bytes # safe_str is deprecated - it will be redefined when changing to py3 + + # Regex taken from http://www.regular-expressions.info/email.html email_re = re.compile( r"""[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@"""