[PATCH 2 of 5] namespaces: use named args for namespace api
Sean Farley
sean.michael.farley at gmail.com
Thu Jan 15 00:58:18 CST 2015
# HG changeset patch
# User Sean Farley <sean.michael.farley at gmail.com>
# Date 1421294120 28800
# Wed Jan 14 19:55:20 2015 -0800
# Node ID eb89945cb5f4535e5f8d3f2dfc9935f864291de2
# Parent e2309aabdb6e67fc9eb0082917b6d79c8798cfbf
namespaces: use named args for namespace api
This is just a style change but makes adding new arguments more robust for
callers.
diff --git a/mercurial/namespaces.py b/mercurial/namespaces.py
--- a/mercurial/namespaces.py
+++ b/mercurial/namespaces.py
@@ -20,31 +20,31 @@ class namespaces(object):
_names_version = 0
def __init__(self):
self._names = util.sortdict()
- # shorten the class name for less indentation
- ns = namespace
-
# we need current mercurial named objects (bookmarks, tags, and
# branches) to be initialized somewhere, so that place is here
- n = ns("bookmarks", "bookmark",
- lambda repo: repo._bookmarks.keys(),
- lambda repo, name: tolist(repo._bookmarks.get(name)),
- lambda repo, name: repo.nodebookmarks(name))
+ bmknames = lambda repo: repo._bookmarks.keys()
+ bmknamemap = lambda repo, name: tolist(repo._bookmarks.get(name))
+ bmknodemap = lambda repo, name: repo.nodebookmarks(name)
+ n = namespace("bookmarks", templatename="bookmark", listnames=bmknames,
+ namemap=bmknamemap, nodemap=bmknodemap)
self.addnamespace(n)
- n = ns("tags", "tag",
- lambda repo: [t for t, n in repo.tagslist()],
- lambda repo, name: tolist(repo._tagscache.tags.get(name)),
- lambda repo, name: repo.nodetags(name))
+ tagnames = lambda repo: [t for t, n in repo.tagslist()]
+ tagnamemap = lambda repo, name: tolist(repo._tagscache.tags.get(name))
+ tagnodemap = lambda repo, name: repo.nodetags(name)
+ n = namespace("tags", templatename="tag", listnames=tagnames,
+ namemap=tagnamemap, nodemap=tagnodemap)
self.addnamespace(n)
- n = ns("branches", "branch",
- lambda repo: repo.branchmap().keys(),
- lambda repo, name: tolist(repo.branchtip(name, True)),
- lambda repo, node: [repo[node].branch()])
+ bnames = lambda repo: repo.branchmap().keys()
+ bnamemap = lambda repo, name: tolist(repo.branchtip(name, True))
+ bnodemap = lambda repo, node: [repo[node].branch()]
+ n = namespace("branches", templatename="branch", listnames=bnames,
+ namemap=bnamemap, nodemap=bnodemap)
self.addnamespace(n)
def __getitem__(self, namespace):
"""returns the namespace object"""
return self._names[namespace]
diff --git a/tests/test-log.t b/tests/test-log.t
--- a/tests/test-log.t
+++ b/tests/test-log.t
@@ -1565,16 +1565,17 @@ Check that adding an arbitrary name show
> """A small extension to test adding arbitrary names to a repo"""
> from mercurial.namespaces import namespace
>
> def reposetup(ui, repo):
> foo = {'foo': repo[0].node()}
- > ns = namespace("bars", "bar",
- > lambda r: foo.keys(),
- > lambda r, name: foo.get(name),
- > lambda r, node: [name for name, n
- > in foo.iteritems()
- > if n == node])
+ > names = lambda r: foo.keys()
+ > namemap = lambda r, name: foo.get(name)
+ > nodemap = lambda r, node: [name for name, n in foo.iteritems()
+ > if n == node]
+ > ns = namespace("bars", templatename="bar", listnames=names,
+ > namemap=namemap, nodemap=nodemap)
+ >
> repo.names.addnamespace(ns)
> EOF
$ hg --config extensions.names=../names.py log -r 0
changeset: 0:65624cd9070a
More information about the Mercurial-devel
mailing list