Mercurial > python-hglib
view examples/stats.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 | 031cbb8d4f65 |
children |
line wrap: on
line source
# stats - get stats on the given repo import sys import hglib # figure out what repo path to use repo = '.' if len(sys.argv) > 1: repo = sys.argv[1] # connect to hg client = hglib.open(repo) # gather some stats revs = int(client.tip().rev) files = len(list(client.manifest())) heads = len(client.heads()) branches = len(client.branches()) tags = len(client.tags()) - 1 # don't count tip authors = {} for e in client.log(): authors[e.author] = True merges = 0 for e in client.log(onlymerges=True): merges += 1 print "%d revisions" % revs print "%d merges" % merges print "%d files" % files print "%d heads" % heads print "%d branches" % branches print "%d tags" % tags print "%d authors" % len(authors)