Turns out select has its own select.error which does *not* subclass
EnvironmentError (or OSError or IOError) and does *not* have a .errno
attribute. So use the correct exception, might just work better than using
a completely different one with no relation.
bzr revid: xmo@openerp.com-
20140219155303-sgz7m3gnzr2bmani
# read a byte
try:
ready, _, _ = select.select([phantom.stdout], [], [], 0.5)
- except EnvironmentError, e:
- if e.errno == errno.EINTR: continue
+ except select.error, e:
+ # In Python 2, select.error has no relation to IOError or
+ # OSError, and no errno/strerror/filename, only a pair of
+ # unnamed arguments (matching errno and strerror)
+ err, _ = e.args
+ if err == errno.EINTR: continue
raise
if ready: