Submitter | Pierre-Yves David |
---|---|
Date | Jan. 11, 2013, 12:23 a.m. |
Message ID | <f474b1184d82e9ad72b6.1357863827@yamac.lan> |
Download | mbox | patch |
Permalink | /patch/522/ |
State | Superseded |
Headers | show |
Comments
On Jan 11, 2013 10:37 PM, "Pierre-Yves David" < pierre-yves.david@ens-lyon.org> wrote: > > # HG changeset patch > # User Pierre-Yves David <pierre-yves.david@logilab.fr> > # Date 1357598846 -3600 > # Node ID f474b1184d82e9ad72b624541bbfe02bc9d2efe3 > # Parent 12a9a51ca6f925bac254c693ef53627d39c622db > hgweb: renamed `limit` argument to `lastest` > > The `limit` argument of several generator have only two possible values in > practice: 0 and 1. We rename this parameter to `lastest` and simplify it's > handling. > > diff --git a/mercurial/hgweb/webcommands.py b/mercurial/hgweb/webcommands.py > --- a/mercurial/hgweb/webcommands.py > +++ b/mercurial/hgweb/webcommands.py > @@ -192,13 +192,16 @@ def changelog(web, req, tmpl, shortlog=F > try: > ctx = web.repo[hi] > except error.RepoError: > return _search(web, req, tmpl) # XXX redirect to 404 page? > > - def changelist(limit=0, **map): > + def changelist(lastest=False, **map): > l = [] # build a list in forward order for efficiency > - for i in xrange(start, end): > + revs = xrange(start, end) > + if lastest: > + revs = (end - 1,) > + for i in revs: > ctx = web.repo[i] > n = ctx.node() > showtags = webutil.showtag(web.repo, tmpl, 'changelogtag', n) > files = webutil.listfilediffs(tmpl, ctx.files(), n, web.maxfiles) > > @@ -215,13 +218,10 @@ def changelog(web, req, tmpl, shortlog=F > "tags": webutil.nodetagsdict(web.repo, n), > "bookmarks": webutil.nodebookmarksdict(web.repo, n), > "inbranch": webutil.nodeinbranch(web.repo, ctx), > "branches": webutil.nodebranchdict(web.repo, ctx) > }) > - if limit > 0: > - l = l[-limit:] > - > for e in reversed(l): > yield e > > revcount = shortlog and web.maxshortchanges or web.maxchanges > if 'revcount' in req.form: > @@ -243,12 +243,12 @@ def changelog(web, req, tmpl, shortlog=F > > changenav = webutil.revnavgen(pos, revcount, count, web.repo.changectx) > > return tmpl(shortlog and 'shortlog' or 'changelog', changenav=changenav, > node=ctx.hex(), rev=pos, changesets=count, > - entries=lambda **x: changelist(limit=0,**x), > - latestentry=lambda **x: changelist(limit=1,**x), > + entries=lambda **x: changelist(**x), > + latestentry=lambda **x: changelist(lastest=True,**x), > archives=web.archivelist("tip"), revcount=revcount, > morevars=morevars, lessvars=lessvars) > > def shortlog(web, req, tmpl): > return changelog(web, req, tmpl, shortlog = True) > @@ -399,48 +399,47 @@ def manifest(web, req, tmpl): > > def tags(web, req, tmpl): > i = list(reversed(web.repo.tagslist())) > parity = paritygen(web.stripecount) > > - def entries(notip=False, limit=0, **map): > - count = 0 > - for k, n in i: > - if notip and k == "tip": > - continue > - if limit > 0 and count >= limit: > - continue > - count = count + 1 > + def entries(notip=False, lastest=False, **map): > + t = i > + if notip: > + t = [(k, n) for k, n in i if k != "tip"] > + if lastest: > + t = t[:1] > + for k, n in t: > yield {"parity": parity.next(), > "tag": k, > "date": web.repo[n].date(), > "node": hex(n)} > > return tmpl("tags", > node=hex(web.repo.changelog.tip()), > - entries=lambda **x: entries(False, 0, **x), > - entriesnotip=lambda **x: entries(True, 0, **x), > - latestentry=lambda **x: entries(True, 1, **x)) > + entries=lambda **x: entries(False, **x), > + entriesnotip=lambda **x: entries(True, **x), > + latestentry=lambda **x: entries(True, True, **x)) > > def bookmarks(web, req, tmpl): > i = web.repo._bookmarks.items() > parity = paritygen(web.stripecount) > > - def entries(limit=0, **map): > - count = 0 > - for k, n in sorted(i): > - if limit > 0 and count >= limit: > - continue > - count = count + 1 > + def entries(lastest=False, **map): > + if lastest: > + t = min(i) > + else: > + t = sorted(i) > + for k, n in t: > yield {"parity": parity.next(), > "bookmark": k, > "date": web.repo[n].date(), > "node": hex(n)} > > return tmpl("bookmarks", > node=hex(web.repo.changelog.tip()), > - entries=lambda **x: entries(0, **x), > - latestentry=lambda **x: entries(1, **x)) > + entries=lambda **x: entries(**x), > + latestentry=lambda **x: entries(lastest=True, **x)) > > def branches(web, req, tmpl): > tips = [] > heads = web.repo.heads() > parity = paritygen(web.stripecount) > @@ -739,15 +738,18 @@ def filelog(web, req, tmpl): > count = fctx.filerev() + 1 > start = max(0, fctx.filerev() - revcount + 1) # first rev on this page > end = min(count, start + revcount) # last rev on this page > parity = paritygen(web.stripecount, offset=start - end) > > - def entries(limit=0, **map): > + def entries(lastest=False, **map): > l = [] > > repo = web.repo > - for i in xrange(start, end): > + revs = xrange(start, end) > + if lastest: > + revs = (end - 1,) > + for i in revs: > iterfctx = fctx.filectx(i) > > l.append({"parity": parity.next(), > "filerev": i, > "file": f, > @@ -762,22 +764,18 @@ def filelog(web, req, tmpl): > "bookmarks": webutil.nodebookmarksdict( > repo, iterfctx.node()), > "branch": webutil.nodebranchnodefault(iterfctx), > "inbranch": webutil.nodeinbranch(repo, iterfctx), > "branches": webutil.nodebranchdict(repo, iterfctx)}) > - > - if limit > 0: > - l = l[-limit:] > - > for e in reversed(l): > yield e > > nodefunc = lambda x: fctx.filectx(fileid=x) > nav = webutil.revnavgen(end - 1, revcount, count, nodefunc) > return tmpl("filelog", file=f, node=fctx.hex(), nav=nav, > - entries=lambda **x: entries(limit=0, **x), > - latestentry=lambda **x: entries(limit=1, **x), > + entries=lambda **x: entries(**x), > + latestentry=lambda **x: entries(lastest=True, **x), > revcount=revcount, morevars=morevars, lessvars=lessvars) > > def archive(web, req, tmpl): > type_ = req.form.get('type', [None])[0] > allowed = web.configlist("web", "allow_archive") > Pierre-Yves, What does "lastest" mean? Do you mean "latest"? Angel
Pierre-Yves David wrote, On 01/11/2013 01:23 AM: > # HG changeset patch > # User Pierre-Yves David <pierre-yves.david@logilab.fr> > # Date 1357598846 -3600 > # Node ID f474b1184d82e9ad72b624541bbfe02bc9d2efe3 > # Parent 12a9a51ca6f925bac254c693ef53627d39c622db > hgweb: renamed `limit` argument to `lastest` > > The `limit` argument of several generator have only two possible values in > practice: 0 and 1. We rename this parameter to `lastest` and simplify it's > handling. The parameter is used for generating a single element iterable "latestentry" with the last element from the "entries" iterable. So +1 for calling it "latest" or "latestonly". > diff --git a/mercurial/hgweb/webcommands.py b/mercurial/hgweb/webcommands.py > --- a/mercurial/hgweb/webcommands.py > +++ b/mercurial/hgweb/webcommands.py > @@ -192,13 +192,16 @@ def changelog(web, req, tmpl, shortlog=F > try: > ctx = web.repo[hi] > except error.RepoError: > return _search(web, req, tmpl) # XXX redirect to 404 page? > > - def changelist(limit=0, **map): > + def changelist(lastest=False, **map): > l = [] # build a list in forward order for efficiency > - for i in xrange(start, end): > + revs = xrange(start, end) > + if lastest: > + revs = (end - 1,) > + for i in revs: > ctx = web.repo[i] > n = ctx.node() > showtags = webutil.showtag(web.repo, tmpl, 'changelogtag', n) > files = webutil.listfilediffs(tmpl, ctx.files(), n, web.maxfiles) > > @@ -215,13 +218,10 @@ def changelog(web, req, tmpl, shortlog=F > "tags": webutil.nodetagsdict(web.repo, n), > "bookmarks": webutil.nodebookmarksdict(web.repo, n), > "inbranch": webutil.nodeinbranch(web.repo, ctx), > "branches": webutil.nodebranchdict(web.repo, ctx) > }) > - if limit > 0: > - l = l[-limit:] > - > for e in reversed(l): > yield e > > revcount = shortlog and web.maxshortchanges or web.maxchanges > if 'revcount' in req.form: > @@ -243,12 +243,12 @@ def changelog(web, req, tmpl, shortlog=F > > changenav = webutil.revnavgen(pos, revcount, count, web.repo.changectx) > > return tmpl(shortlog and 'shortlog' or 'changelog', changenav=changenav, > node=ctx.hex(), rev=pos, changesets=count, > - entries=lambda **x: changelist(limit=0,**x), > - latestentry=lambda **x: changelist(limit=1,**x), > + entries=lambda **x: changelist(**x), I would like to comment that you lost a parameter here ... but realized that you just started using the default value. The combination of parameters with default value and ** is not pretty, and removing the parameter makes the code less readable. FWIW, I would prefer to make it more explicit and drop the default values ... and also let the lambda pass the x on directly without first expanding it as parameters and then fold it back to a dict. > + latestentry=lambda **x: changelist(lastest=True,**x), I think it is OK to fix minor whitespace damage when touching a line for other reasons. > archives=web.archivelist("tip"), revcount=revcount, > morevars=morevars, lessvars=lessvars) > /Mads
Patch
diff --git a/mercurial/hgweb/webcommands.py b/mercurial/hgweb/webcommands.py --- a/mercurial/hgweb/webcommands.py +++ b/mercurial/hgweb/webcommands.py @@ -192,13 +192,16 @@ def changelog(web, req, tmpl, shortlog=F try: ctx = web.repo[hi] except error.RepoError: return _search(web, req, tmpl) # XXX redirect to 404 page? - def changelist(limit=0, **map): + def changelist(lastest=False, **map): l = [] # build a list in forward order for efficiency - for i in xrange(start, end): + revs = xrange(start, end) + if lastest: + revs = (end - 1,) + for i in revs: ctx = web.repo[i] n = ctx.node() showtags = webutil.showtag(web.repo, tmpl, 'changelogtag', n) files = webutil.listfilediffs(tmpl, ctx.files(), n, web.maxfiles) @@ -215,13 +218,10 @@ def changelog(web, req, tmpl, shortlog=F "tags": webutil.nodetagsdict(web.repo, n), "bookmarks": webutil.nodebookmarksdict(web.repo, n), "inbranch": webutil.nodeinbranch(web.repo, ctx), "branches": webutil.nodebranchdict(web.repo, ctx) }) - if limit > 0: - l = l[-limit:] - for e in reversed(l): yield e revcount = shortlog and web.maxshortchanges or web.maxchanges if 'revcount' in req.form: @@ -243,12 +243,12 @@ def changelog(web, req, tmpl, shortlog=F changenav = webutil.revnavgen(pos, revcount, count, web.repo.changectx) return tmpl(shortlog and 'shortlog' or 'changelog', changenav=changenav, node=ctx.hex(), rev=pos, changesets=count, - entries=lambda **x: changelist(limit=0,**x), - latestentry=lambda **x: changelist(limit=1,**x), + entries=lambda **x: changelist(**x), + latestentry=lambda **x: changelist(lastest=True,**x), archives=web.archivelist("tip"), revcount=revcount, morevars=morevars, lessvars=lessvars) def shortlog(web, req, tmpl): return changelog(web, req, tmpl, shortlog = True) @@ -399,48 +399,47 @@ def manifest(web, req, tmpl): def tags(web, req, tmpl): i = list(reversed(web.repo.tagslist())) parity = paritygen(web.stripecount) - def entries(notip=False, limit=0, **map): - count = 0 - for k, n in i: - if notip and k == "tip": - continue - if limit > 0 and count >= limit: - continue - count = count + 1 + def entries(notip=False, lastest=False, **map): + t = i + if notip: + t = [(k, n) for k, n in i if k != "tip"] + if lastest: + t = t[:1] + for k, n in t: yield {"parity": parity.next(), "tag": k, "date": web.repo[n].date(), "node": hex(n)} return tmpl("tags", node=hex(web.repo.changelog.tip()), - entries=lambda **x: entries(False, 0, **x), - entriesnotip=lambda **x: entries(True, 0, **x), - latestentry=lambda **x: entries(True, 1, **x)) + entries=lambda **x: entries(False, **x), + entriesnotip=lambda **x: entries(True, **x), + latestentry=lambda **x: entries(True, True, **x)) def bookmarks(web, req, tmpl): i = web.repo._bookmarks.items() parity = paritygen(web.stripecount) - def entries(limit=0, **map): - count = 0 - for k, n in sorted(i): - if limit > 0 and count >= limit: - continue - count = count + 1 + def entries(lastest=False, **map): + if lastest: + t = min(i) + else: + t = sorted(i) + for k, n in t: yield {"parity": parity.next(), "bookmark": k, "date": web.repo[n].date(), "node": hex(n)} return tmpl("bookmarks", node=hex(web.repo.changelog.tip()), - entries=lambda **x: entries(0, **x), - latestentry=lambda **x: entries(1, **x)) + entries=lambda **x: entries(**x), + latestentry=lambda **x: entries(lastest=True, **x)) def branches(web, req, tmpl): tips = [] heads = web.repo.heads() parity = paritygen(web.stripecount) @@ -739,15 +738,18 @@ def filelog(web, req, tmpl): count = fctx.filerev() + 1 start = max(0, fctx.filerev() - revcount + 1) # first rev on this page end = min(count, start + revcount) # last rev on this page parity = paritygen(web.stripecount, offset=start - end) - def entries(limit=0, **map): + def entries(lastest=False, **map): l = [] repo = web.repo - for i in xrange(start, end): + revs = xrange(start, end) + if lastest: + revs = (end - 1,) + for i in revs: iterfctx = fctx.filectx(i) l.append({"parity": parity.next(), "filerev": i, "file": f, @@ -762,22 +764,18 @@ def filelog(web, req, tmpl): "bookmarks": webutil.nodebookmarksdict( repo, iterfctx.node()), "branch": webutil.nodebranchnodefault(iterfctx), "inbranch": webutil.nodeinbranch(repo, iterfctx), "branches": webutil.nodebranchdict(repo, iterfctx)}) - - if limit > 0: - l = l[-limit:] - for e in reversed(l): yield e nodefunc = lambda x: fctx.filectx(fileid=x) nav = webutil.revnavgen(end - 1, revcount, count, nodefunc) return tmpl("filelog", file=f, node=fctx.hex(), nav=nav, - entries=lambda **x: entries(limit=0, **x), - latestentry=lambda **x: entries(limit=1, **x), + entries=lambda **x: entries(**x), + latestentry=lambda **x: entries(lastest=True, **x), revcount=revcount, morevars=morevars, lessvars=lessvars) def archive(web, req, tmpl): type_ = req.form.get('type', [None])[0] allowed = web.configlist("web", "allow_archive")