Mercurial > python-hglib
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. |