From b86c129a8233f5be906ac72dde4360bcea89c899 Mon Sep 17 00:00:00 2001 From: Ask Solem Date: Mon, 15 Aug 2011 12:41:14 +0100 Subject: [PATCH] Adds kombu.utils.encoding --- kombu/utils/encoding.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 kombu/utils/encoding.py diff --git a/kombu/utils/encoding.py b/kombu/utils/encoding.py new file mode 100644 index 00000000..c9e091ac --- /dev/null +++ b/kombu/utils/encoding.py @@ -0,0 +1,32 @@ +import sys +import traceback + + +def default_encoding(): + if sys.platform.startswith("java"): + return "utf-8" + return sys.getfilesystemencoding() + + +def safe_str(s, errors="replace"): + if not isinstance(s, basestring): + return safe_repr(s, errors) + return _safe_str(s, errors) + + +def _safe_str(s, errors="replace"): + encoding = default_encoding() + try: + if isinstance(s, unicode): + return s.encode(encoding, errors) + return unicode(s, encoding, errors) + except Exception, exc: + return "" % ( + type(s), exc, "\n".join(traceback.format_stack())) + + +def safe_repr(o, errors="replace"): + try: + return repr(o) + except Exception: + return _safe_str(o, errors)