error.py
85 lines
| 2.3 KiB
| text/x-python
|
PythonLexer
/ mercurial / error.py
Martin Geisler
|
r8226 | # error.py - Mercurial exceptions | ||
# | ||||
# Copyright 2005-2008 Matt Mackall <mpm@selenic.com> | ||||
# | ||||
# This software may be used and distributed according to the terms of the | ||||
Matt Mackall
|
r10263 | # GNU General Public License version 2 or any later version. | ||
Matt Mackall
|
r7633 | |||
Martin Geisler
|
r8227 | """Mercurial exceptions. | ||
This allows us to catch exceptions at higher levels without forcing | ||||
imports. | ||||
""" | ||||
Matt Mackall
|
r7633 | # Do not import anything here, please | ||
class RevlogError(Exception): | ||||
pass | ||||
class LookupError(RevlogError, KeyError): | ||||
def __init__(self, name, index, message): | ||||
self.name = name | ||||
if isinstance(name, str) and len(name) == 20: | ||||
from node import short | ||||
name = short(name) | ||||
RevlogError.__init__(self, '%s@%s: %s' % (index, name, message)) | ||||
def __str__(self): | ||||
return RevlogError.__str__(self) | ||||
Matt Mackall
|
r7636 | |||
Matt Mackall
|
r11287 | class CommandError(Exception): | ||
Matt Mackall
|
r7636 | """Exception raised on errors in parsing the command line.""" | ||
Matt Mackall
|
r7637 | |||
Matt Mackall
|
r11288 | class Abort(Exception): | ||
"""Raised if a command needs to print an error and exit.""" | ||||
Benoit Boissinot
|
r11574 | def __init__(self, *args, **kw): | ||
Exception.__init__(self, *args) | ||||
self.hint = kw.get('hint') | ||||
Matt Mackall
|
r11288 | |||
class ConfigError(Abort): | ||||
Matt Mackall
|
r8144 | 'Exception raised when parsing config files' | ||
Matt Mackall
|
r11292 | class ParseError(Exception): | ||
Matt Mackall
|
r11288 | 'Exception raised when parsing config files (msg[, pos])' | ||
Matt Mackall
|
r7637 | class RepoError(Exception): | ||
pass | ||||
Matt Mackall
|
r9423 | class RepoLookupError(RepoError): | ||
pass | ||||
Matt Mackall
|
r7637 | class CapabilityError(RepoError): | ||
pass | ||||
Matt Mackall
|
r7640 | |||
Adrian Buehlmann
|
r13447 | class RequirementError(RepoError): | ||
"""Exception raised if .hg/requires has an unknown entry.""" | ||||
pass | ||||
Matt Mackall
|
r7640 | class LockError(IOError): | ||
def __init__(self, errno, strerror, filename, desc): | ||||
IOError.__init__(self, errno, strerror, filename) | ||||
self.desc = desc | ||||
class LockHeld(LockError): | ||||
def __init__(self, errno, filename, desc, locker): | ||||
LockError.__init__(self, errno, 'Lock held', filename, desc) | ||||
self.locker = locker | ||||
class LockUnavailable(LockError): | ||||
pass | ||||
Matt Mackall
|
r7641 | |||
class ResponseError(Exception): | ||||
"""Raised to print an error with part of output and exit.""" | ||||
Matt Mackall
|
r7643 | class UnknownCommand(Exception): | ||
"""Exception raised if command is not in the command table.""" | ||||
class AmbiguousCommand(Exception): | ||||
"""Exception raised if command shortcut matches more than one command.""" | ||||
Matt Mackall
|
r7644 | # derived from KeyboardInterrupt to simplify some breakout code | ||
class SignalInterrupt(KeyboardInterrupt): | ||||
"""Exception raised on SIGTERM and SIGHUP.""" | ||||
Matt Mackall
|
r7646 | |||
class SignatureError(Exception): | ||||
pass | ||||