Mercurial > hg
diff mercurial/hgweb/hgwebdir_mod.py @ 43076:2372284d9457
formatting: blacken the codebase
This is using my patch to black
(https://github.com/psf/black/pull/826) so we don't un-wrap collection
literals.
Done with:
hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**"' | xargs black -S
# skip-blame mass-reformatting only
# no-check-commit reformats foo_bar functions
Differential Revision: https://phab.mercurial-scm.org/D6971
author | Augie Fackler <augie@google.com> |
---|---|
date | Sun, 06 Oct 2019 09:45:02 -0400 |
parents | d8e55c0c642c |
children | 687b865b95ad |
line wrap: on
line diff
--- a/mercurial/hgweb/hgwebdir_mod.py Sat Oct 05 10:29:34 2019 -0400 +++ b/mercurial/hgweb/hgwebdir_mod.py Sun Oct 06 09:45:02 2019 -0400 @@ -50,9 +50,11 @@ ) from ..utils import dateutil + def cleannames(items): return [(util.pconvert(name).strip('/'), path) for name, path in items] + def findrepos(paths): repos = [] for prefix, root in cleannames(paths): @@ -71,6 +73,7 @@ repos.extend(urlrepos(prefix, roothead, paths)) return repos + def urlrepos(prefix, roothead, paths): """yield url paths and filesystem paths from a list of repo paths @@ -82,8 +85,10 @@ """ for path in paths: path = os.path.normpath(path) - yield (prefix + '/' + - util.pconvert(path[len(roothead):]).lstrip('/')).strip('/'), path + yield ( + prefix + '/' + util.pconvert(path[len(roothead) :]).lstrip('/') + ).strip('/'), path + def readallowed(ui, req): """Check allow_read and deny_read config options of a repo's ui object @@ -107,6 +112,7 @@ return False + def rawindexentries(ui, repos, req, subdir=''): descend = ui.configbool('web', 'descend') collapse = ui.configbool('web', 'collapse') @@ -116,7 +122,7 @@ if not name.startswith(subdir): continue - name = name[len(subdir):] + name = name[len(subdir) :] directory = False if '/' in name: @@ -140,7 +146,7 @@ discarded = '/'.join(nameparts[1:]) # remove name parts plus accompanying slash - path = path[:-len(discarded) - 1] + path = path[: -len(discarded) - 1] try: hg.repository(ui, path) @@ -165,19 +171,20 @@ # add '/' to the name to make it obvious that # the entry is a directory, not a regular repository - row = {'contact': "", - 'contact_sort': "", - 'name': name + '/', - 'name_sort': name, - 'url': url, - 'description': "", - 'description_sort': "", - 'lastchange': d, - 'lastchange_sort': d[1] - d[0], - 'archives': templateutil.mappinglist([]), - 'isdirectory': True, - 'labels': templateutil.hybridlist([], name='label'), - } + row = { + 'contact': "", + 'contact_sort': "", + 'name': name + '/', + 'name_sort': name, + 'url': url, + 'description': "", + 'description_sort': "", + 'lastchange': d, + 'lastchange_sort': d[1] - d[0], + 'archives': templateutil.mappinglist([]), + 'isdirectory': True, + 'labels': templateutil.hybridlist([], name='label'), + } seendirs.add(name) yield row @@ -218,42 +225,47 @@ seenrepos.add(name) name = get("web", "name", name) labels = u.configlist('web', 'labels', untrusted=True) - row = {'contact': contact or "unknown", - 'contact_sort': contact.upper() or "unknown", - 'name': name, - 'name_sort': name, - 'url': url, - 'description': description or "unknown", - 'description_sort': description.upper() or "unknown", - 'lastchange': d, - 'lastchange_sort': d[1] - d[0], - 'archives': webutil.archivelist(u, "tip", url), - 'isdirectory': None, - 'labels': templateutil.hybridlist(labels, name='label'), - } + row = { + 'contact': contact or "unknown", + 'contact_sort': contact.upper() or "unknown", + 'name': name, + 'name_sort': name, + 'url': url, + 'description': description or "unknown", + 'description_sort': description.upper() or "unknown", + 'lastchange': d, + 'lastchange_sort': d[1] - d[0], + 'archives': webutil.archivelist(u, "tip", url), + 'isdirectory': None, + 'labels': templateutil.hybridlist(labels, name='label'), + } yield row -def _indexentriesgen(context, ui, repos, req, stripecount, sortcolumn, - descending, subdir): + +def _indexentriesgen( + context, ui, repos, req, stripecount, sortcolumn, descending, subdir +): rows = rawindexentries(ui, repos, req, subdir=subdir) sortdefault = None, False if sortcolumn and sortdefault != (sortcolumn, descending): sortkey = '%s_sort' % sortcolumn - rows = sorted(rows, key=lambda x: x[sortkey], - reverse=descending) + rows = sorted(rows, key=lambda x: x[sortkey], reverse=descending) for row, parity in zip(rows, paritygen(stripecount)): row['parity'] = parity yield row -def indexentries(ui, repos, req, stripecount, sortcolumn='', - descending=False, subdir=''): + +def indexentries( + ui, repos, req, stripecount, sortcolumn='', descending=False, subdir='' +): args = (ui, repos, req, stripecount, sortcolumn, descending, subdir) return templateutil.mappinggenerator(_indexentriesgen, args=args) + class hgwebdir(object): """HTTP server for multiple repositories. @@ -262,6 +274,7 @@ Instances are typically used as WSGI applications. """ + def __init__(self, conf, baseui=None): self.conf = conf self.baseui = baseui @@ -282,8 +295,10 @@ refreshinterval = item.default # refreshinterval <= 0 means to always refresh. - if (refreshinterval > 0 and - self.lastrefresh + refreshinterval > time.time()): + if ( + refreshinterval > 0 + and self.lastrefresh + refreshinterval > time.time() + ): return if self.baseui: @@ -318,7 +333,7 @@ repo = os.path.normpath(path) name = util.pconvert(repo) if name.startswith(prefix): - name = name[len(prefix):] + name = name[len(prefix) :] repos.append((name.lstrip('/'), repo)) self.repos = repos @@ -338,10 +353,13 @@ self.lastrefresh = time.time() def run(self): - if not encoding.environ.get('GATEWAY_INTERFACE', - '').startswith("CGI/1."): - raise RuntimeError("This function is only intended to be " - "called while running as a CGI script.") + if not encoding.environ.get('GATEWAY_INTERFACE', '').startswith( + "CGI/1." + ): + raise RuntimeError( + "This function is only intended to be " + "called while running as a CGI script." + ) wsgicgi.launch(self) def __call__(self, env, respond): @@ -409,7 +427,7 @@ # nested indexes and hgwebs if virtual.endswith('/index') and virtual not in repos: - subdir = virtual[:-len('index')] + subdir = virtual[: -len('index')] if any(r.startswith(subdir) for r in repos): return self.makeindex(req, res, tmpl, subdir) @@ -426,14 +444,17 @@ # repository path component. uenv = req.rawenv if pycompat.ispy3: - uenv = {k.decode('latin1'): v for k, v in - uenv.iteritems()} + uenv = { + k.decode('latin1'): v for k, v in uenv.iteritems() + } req = requestmod.parserequestfromenv( - uenv, reponame=virtualrepo, + uenv, + reponame=virtualrepo, altbaseurl=self.ui.config('web', 'baseurl'), # Reuse wrapped body file object otherwise state # tracking can get confused. - bodyfh=req.bodyfh) + bodyfh=req.bodyfh, + ) try: # ensure caller gets private copy of ui repo = hg.repository(self.ui.copy(), real) @@ -473,16 +494,29 @@ if sortcolumn not in sortable: sortcolumn = "" - sort = [("sort_%s" % column, - "%s%s" % ((not descending and column == sortcolumn) - and "-" or "", column)) - for column in sortable] + sort = [ + ( + "sort_%s" % column, + "%s%s" + % ( + (not descending and column == sortcolumn) and "-" or "", + column, + ), + ) + for column in sortable + ] self.refresh() - entries = indexentries(self.ui, self.repos, req, - self.stripecount, sortcolumn=sortcolumn, - descending=descending, subdir=subdir) + entries = indexentries( + self.ui, + self.repos, + req, + self.stripecount, + sortcolumn=sortcolumn, + descending=descending, + subdir=subdir, + ) mapping = { 'entries': entries, @@ -496,21 +530,22 @@ return res.sendresponse() def templater(self, req, nonce): - def config(section, name, default=uimod._unset, untrusted=True): return self.ui.config(section, name, default, untrusted) vars = {} - styles, (style, mapfile) = hgweb_mod.getstyle(req, config, - self.templatepath) + styles, (style, mapfile) = hgweb_mod.getstyle( + req, config, self.templatepath + ) if style == styles[0]: vars['style'] = style sessionvars = webutil.sessionvars(vars, '?') logourl = config('web', 'logourl') logoimg = config('web', 'logoimg') - staticurl = (config('web', 'staticurl') - or req.apppath.rstrip('/') + '/static/') + staticurl = ( + config('web', 'staticurl') or req.apppath.rstrip('/') + '/static/' + ) if not staticurl.endswith('/'): staticurl += '/' @@ -525,6 +560,7 @@ "nonce": nonce, } templatekeyword = registrar.templatekeyword(defaults) + @templatekeyword('motd', requires=()) def motd(context, mapping): if self.motd is not None: