From e593eb4522b28549b04d3d43bb4e9f642f73b48a Mon Sep 17 00:00:00 2001 From: Gabriel Filion Date: Tue, 20 Jul 2010 18:42:26 -0400 Subject: [PATCH] Update tornado to revision ad104ffb41 The file lib/tornado/escape.py was forcing users to install a json library even though "bup web" doesn't use any json functionality. An issue was opened upstream: http://github.com/facebook/tornado/issues/closed#issue/114 and the day after it was opened, a fix was committed for it. Update to the latest revision of tornado so that we can remove a dependency on json/simplejson. Signed-off-by: Gabriel Filion --- lib/tornado/escape.py | 9 +++++++-- lib/tornado/ioloop.py | 9 ++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/tornado/escape.py b/lib/tornado/escape.py index af99f52..8852ca2 100644 --- a/lib/tornado/escape.py +++ b/lib/tornado/escape.py @@ -21,6 +21,8 @@ import re 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") @@ -38,8 +40,11 @@ except: _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): diff --git a/lib/tornado/ioloop.py b/lib/tornado/ioloop.py index f9bb1a2..c1345cb 100644 --- a/lib/tornado/ioloop.py +++ b/lib/tornado/ioloop.py @@ -224,7 +224,14 @@ class IOLoop(object): 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: -- 2.39.2