view hglib/error.py @ 176:3f854e3bcdd1 2.2

client: raise KeyError from __getitem__ (BC) object.__getitem__ is supposed to raise either IndexError or KeyError (depending on whether the thing is a sequence or a mapping). Before, we would raise ValueError because that's what the context constructor raises. I choose to raise KeyError because IndexError felt a bit too limiting. This does sacrifice some magic with for loops handling IndexError. However, iteration of this object should be handled by a custom __iter__, so I don't think this is a problem.
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 06 Jul 2016 14:14:22 -0700
parents 59cb26bf866e
children
line wrap: on
line source

class CommandError(Exception):
    def __init__(self, args, ret, out, err):
        self.args = args
        self.ret = ret
        self.out = out
        self.err = err

    def __str__(self):
        return str((self.ret, self.out.rstrip(), self.err.rstrip()))

class ServerError(Exception):
    pass

class ResponseError(ServerError, ValueError):
    pass

class CapabilityError(ServerError):
    pass