From f394f56c2bda5a3055b1f08e17882dfa39bbdf34 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 5 Sep 1997 19:00:56 +0000 Subject: [PATCH] Made the 'info' argument to SyntaxError optional, so phase-2 syntax errors are handled (these gave ``TypeError: not enough arguments''). Also changed its __str__() to correct a typo (missing self.) and return str(self.msg) to ensure the result is always string. Also changed the default __str__ to simply return str(self.args). --- Lib/exceptions.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/Lib/exceptions.py b/Lib/exceptions.py index 4b039692a7c..37b9590467e 100644 --- a/Lib/exceptions.py +++ b/Lib/exceptions.py @@ -58,10 +58,8 @@ class StandardError: def __str__(self): if self.args == None: return '' - elif type(self.args) == type(''): - return self.args - else: - return `self.args` + else: + return str(self.args) def __getitem__(self, i): if type(self.args) == type(()): @@ -72,12 +70,17 @@ class StandardError: raise IndexError class SyntaxError(StandardError): - def __init__(self, msg, info): + filename = lineno = offset = text = None + def __init__(self, msg, info=None): self.msg = msg - self.filename, self.lineno, self.offset, self.text = info - + if info: + self.args = msg + else: + self.args = (msg, info) + if info: + self.filename, self.lineno, self.offset, self.text = info def __str__(self): - return msg + return str(self.msg) class IOError(StandardError):