comparison hglib/client.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 c16e2087660f
children 77a5fded9f45
comparison
equal deleted inserted replaced
175:c16e2087660f 176:3f854e3bcdd1
1629 self._version = tuple(v) 1629 self._version = tuple(v)
1630 1630
1631 return self._version 1631 return self._version
1632 1632
1633 def __getitem__(self, changeid): 1633 def __getitem__(self, changeid):
1634 return context.changectx(self, changeid) 1634 try:
1635 return context.changectx(self, changeid)
1636 except ValueError as e:
1637 raise KeyError(*e.args)
1635 1638
1636 def __contains__(self, changeid): 1639 def __contains__(self, changeid):
1637 """ 1640 """
1638 check if changeid, which can be either a local revision number or a 1641 check if changeid, which can be either a local revision number or a
1639 changeset id, matches a changeset in the client. 1642 changeset id, matches a changeset in the client.