Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kliment/Printrun.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvolconst <20997907+volconst@users.noreply.github.com>2021-07-28 14:42:52 +0300
committervolconst <20997907+volconst@users.noreply.github.com>2021-07-28 14:42:52 +0300
commit1b1d1b531c74373d5b69bce73b204ebc8c5e2f93 (patch)
tree93bdd9ceca93dda63b68128c4f2a5e7628b2cd3d
parenta6e58b2dca5f0b3ef4c6fd8c5806f1541b48ec5d (diff)
Sync with python exception type changes
select.error is OSError since python 3.3. Rely on self.printer_tcp to differentiate between them. Related to #1204, but not sure if it fixes it, as I did not reproduce the problem.
-rw-r--r--printrun/printcore.py28
1 files changed, 16 insertions, 12 deletions
diff --git a/printrun/printcore.py b/printrun/printcore.py
index eaa774d..8e84923 100644
--- a/printrun/printcore.py
+++ b/printrun/printcore.py
@@ -350,24 +350,28 @@ class printcore():
self.logError(_("Got rubbish reply from %s at baudrate %s:") % (self.port, self.baud) +
"\n" + _("Maybe a bad baudrate?"))
return None
- except SelectError as e:
- if 'Bad file descriptor' in e.args[1]:
- self.logError(_("Can't read from printer (disconnected?) (SelectError {0}): {1}").format(e.errno, decode_utf8(e.strerror)))
- return None
- else:
- self.logError(_("SelectError ({0}): {1}").format(e.errno, decode_utf8(e.strerror)))
- raise
except SerialException as e:
self.logError(_("Can't read from printer (disconnected?) (SerialException): {0}").format(decode_utf8(str(e))))
return None
except socket.error as e:
self.logError(_("Can't read from printer (disconnected?) (Socket error {0}): {1}").format(e.errno, decode_utf8(e.strerror)))
return None
- except OSError as e:
- if e.errno == errno.EAGAIN: # Not a real error, no data was available
- return ""
- self.logError(_("Can't read from printer (disconnected?) (OS Error {0}): {1}").format(e.errno, e.strerror))
- return None
+ except (OSError, SelectError) as e:
+ # OSError and SelectError are the same thing since python 3.3
+ if self.printer_tcp:
+ # SelectError branch, assume select is used only for socket printers
+ if len(e.args) > 1 and 'Bad file descriptor' in e.args[1]:
+ self.logError(_("Can't read from printer (disconnected?) (SelectError {0}): {1}").format(e.errno, decode_utf8(e.strerror)))
+ return None
+ else:
+ self.logError(_("SelectError ({0}): {1}").format(e.errno, decode_utf8(e.strerror)))
+ raise
+ else:
+ # OSError branch, serial printers
+ if e.errno == errno.EAGAIN: # Not a real error, no data was available
+ return ""
+ self.logError(_("Can't read from printer (disconnected?) (OS Error {0}): {1}").format(e.errno, e.strerror))
+ return None
def _listen_can_continue(self):
if self.printer_tcp: