From: Karl Hasselström Date: Sun, 7 Oct 2007 13:07:11 +0000 (+0200) Subject: Make a common superclass for all StGit exceptions X-Git-Tag: v0.14~56 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/stgit/commitdiff_plain/87c93eab2ff972a33bacecc9175e4a960c1408ec Make a common superclass for all StGit exceptions This makes it easier to catch them all. (Indeed, the very long list of exceptions to catch in main.py was missing some of the exceptions.) Signed-off-by: Karl Hasselström --- diff --git a/stgit/commands/common.py b/stgit/commands/common.py index 0fc157a..27a616f 100644 --- a/stgit/commands/common.py +++ b/stgit/commands/common.py @@ -21,6 +21,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import sys, os, os.path, re from optparse import OptionParser, make_option +from stgit.exception import * from stgit.utils import * from stgit.out import * from stgit import stack, git, basedir @@ -30,11 +31,11 @@ crt_series = None # Command exception class -class CmdException(Exception): +class CmdException(StgException): pass # Utility functions -class RevParseException(Exception): +class RevParseException(StgException): """Revision spec parse error.""" pass diff --git a/stgit/config.py b/stgit/config.py index 51818bd..3eabc8c 100644 --- a/stgit/config.py +++ b/stgit/config.py @@ -20,9 +20,10 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import os, re from stgit import basedir +from stgit.exception import * from stgit.run import * -class GitConfigException(Exception): +class GitConfigException(StgException): pass class GitConfig: diff --git a/stgit/exception.py b/stgit/exception.py new file mode 100644 index 0000000..9933e64 --- /dev/null +++ b/stgit/exception.py @@ -0,0 +1,3 @@ +class StgException(Exception): + """Base class for all StGit exceptions.""" + pass diff --git a/stgit/git.py b/stgit/git.py index a0493bc..0026fd8 100644 --- a/stgit/git.py +++ b/stgit/git.py @@ -21,6 +21,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import sys, os, re, gitmergeonefile from shutil import copyfile +from stgit.exception import * from stgit import basedir from stgit.utils import * from stgit.out import * @@ -28,7 +29,7 @@ from stgit.run import * from stgit.config import config # git exception class -class GitException(Exception): +class GitException(StgException): pass # When a subprocess has a problem, we want the exception to be a diff --git a/stgit/gitmergeonefile.py b/stgit/gitmergeonefile.py index 2aa5ef8..058b6ac 100644 --- a/stgit/gitmergeonefile.py +++ b/stgit/gitmergeonefile.py @@ -19,13 +19,14 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA """ import sys, os +from stgit.exception import * from stgit import basedir from stgit.config import config, file_extensions, ConfigOption from stgit.utils import append_string from stgit.out import * from stgit.run import * -class GitMergeException(Exception): +class GitMergeException(StgException): pass diff --git a/stgit/main.py b/stgit/main.py index 2c8716b..f54330d 100644 --- a/stgit/main.py +++ b/stgit/main.py @@ -255,13 +255,10 @@ def main(): # These modules are only used from this point onwards and do not # need to be imported earlier + from stgit.exception import StgException from stgit.config import config_setup from ConfigParser import ParsingError, NoSectionError - from stgit.stack import Series, StackException - from stgit.git import GitException - from stgit.commands.common import CmdException - from stgit.gitmergeonefile import GitMergeException - from stgit.utils import EditorException + from stgit.stack import Series try: debug_level = int(os.environ['STGIT_DEBUG_LEVEL']) @@ -284,9 +281,7 @@ def main(): stgit.commands.common.crt_series = command.crt_series command.func(parser, options, args) - except (IOError, ParsingError, NoSectionError, CmdException, - StackException, GitException, GitMergeException, - EditorException), err: + except (StgException, IOError, ParsingError, NoSectionError), err: print >> sys.stderr, '%s %s: %s' % (prog, cmd, err) if debug_level > 0: raise diff --git a/stgit/run.py b/stgit/run.py index 7986f3b..989bb27 100644 --- a/stgit/run.py +++ b/stgit/run.py @@ -19,9 +19,10 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import datetime, os, subprocess -from stgit.out import * +from stgit.exception import * +from stgit.out import * -class RunException(Exception): +class RunException(StgException): """Thrown when something bad happened when we tried to run the subprocess.""" pass diff --git a/stgit/stack.py b/stgit/stack.py index 4d1a066..bdb4e38 100644 --- a/stgit/stack.py +++ b/stgit/stack.py @@ -21,6 +21,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import sys, os, re from email.Utils import formatdate +from stgit.exception import * from stgit.utils import * from stgit.out import * from stgit.run import * @@ -30,7 +31,7 @@ from shutil import copyfile # stack exception class -class StackException(Exception): +class StackException(StgException): pass class FilterUntil: diff --git a/stgit/utils.py b/stgit/utils.py index 857c0f0..3a480c0 100644 --- a/stgit/utils.py +++ b/stgit/utils.py @@ -2,6 +2,7 @@ """ import errno, optparse, os, os.path, re, sys +from stgit.exception import * from stgit.config import config from stgit.out import * @@ -166,7 +167,7 @@ def rename(basedir, file1, file2): # file1's parent dir may not be empty after move pass -class EditorException(Exception): +class EditorException(StgException): pass def call_editor(filename):