import xml.sax.saxutils
import urllib
+# json module is in the standard library as of python 2.6; fall back to
+# simplejson if present for older versions.
try:
import json
assert hasattr(json, "loads") and hasattr(json, "dumps")
_json_decode = lambda s: simplejson.loads(_unicode(s))
_json_encode = lambda v: simplejson.dumps(v)
except ImportError:
- raise Exception("A JSON parser is required, e.g., simplejson at "
- "http://pypi.python.org/pypi/simplejson/")
+ def _json_decode(s):
+ raise NotImplementedError(
+ "A JSON parser is required, e.g., simplejson at "
+ "http://pypi.python.org/pypi/simplejson/")
+ _json_encode = _json_decode
def xhtml_escape(value):
try:
event_pairs = self._impl.poll(poll_timeout)
except Exception, e:
- if hasattr(e, 'errno') and e.errno == errno.EINTR:
+ # Depending on python version and IOLoop implementation,
+ # different exception types may be thrown and there are
+ # two ways EINTR might be signaled:
+ # * e.errno == errno.EINTR
+ # * e.args is like (errno.EINTR, 'Interrupted system call')
+ if (getattr(e, 'errno') == errno.EINTR or
+ (isinstance(getattr(e, 'args'), tuple) and
+ len(e.args) == 2 and e.args[0] == errno.EINTR)):
logging.warning("Interrupted system call", exc_info=1)
continue
else: