diff hgext/fastannotate/protocol.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 876494fd967d
children 687b865b95ad
line wrap: on
line diff
--- a/hgext/fastannotate/protocol.py	Sat Oct 05 10:29:34 2019 -0400
+++ b/hgext/fastannotate/protocol.py	Sun Oct 06 09:45:02 2019 -0400
@@ -22,28 +22,37 @@
 
 # common
 
+
 def _getmaster(ui):
     """get the mainbranch, and enforce it is set"""
     master = ui.config('fastannotate', 'mainbranch')
     if not master:
-        raise error.Abort(_('fastannotate.mainbranch is required '
-                            'for both the client and the server'))
+        raise error.Abort(
+            _(
+                'fastannotate.mainbranch is required '
+                'for both the client and the server'
+            )
+        )
     return master
 
+
 # server-side
 
+
 def _capabilities(orig, repo, proto):
     result = orig(repo, proto)
     result.append('getannotate')
     return result
 
+
 def _getannotate(repo, proto, path, lastnode):
     # output:
     #   FILE := vfspath + '\0' + str(size) + '\0' + content
     #   OUTPUT := '' | FILE + OUTPUT
     result = ''
-    buildondemand = repo.ui.configbool('fastannotate', 'serverbuildondemand',
-                                       True)
+    buildondemand = repo.ui.configbool(
+        'fastannotate', 'serverbuildondemand', True
+    )
     with context.annotatecontext(repo, path) as actx:
         if buildondemand:
             # update before responding to the client
@@ -57,7 +66,7 @@
                 try:
                     actx.annotate(master, master)
                 except Exception:
-                    actx.rebuild() # delete files
+                    actx.rebuild()  # delete files
             finally:
                 # although the "with" context will also do a close/flush, we
                 # need to do it early so we can send the correct respond to
@@ -78,29 +87,34 @@
                 result += '%s\0%d\0%s' % (relpath, len(content), content)
     return result
 
+
 def _registerwireprotocommand():
     if 'getannotate' in wireprotov1server.commands:
         return
-    wireprotov1server.wireprotocommand(
-        'getannotate', 'path lastnode')(_getannotate)
+    wireprotov1server.wireprotocommand('getannotate', 'path lastnode')(
+        _getannotate
+    )
+
 
 def serveruisetup(ui):
     _registerwireprotocommand()
     extensions.wrapfunction(wireprotov1server, '_capabilities', _capabilities)
 
+
 # client-side
 
+
 def _parseresponse(payload):
     result = {}
     i = 0
     l = len(payload) - 1
-    state = 0 # 0: vfspath, 1: size
+    state = 0  # 0: vfspath, 1: size
     vfspath = size = ''
     while i < l:
-        ch = payload[i:i + 1]
+        ch = payload[i : i + 1]
         if ch == '\0':
             if state == 1:
-                result[vfspath] = payload[i + 1:i + 1 + int(size)]
+                result[vfspath] = payload[i + 1 : i + 1 + int(size)]
                 i += int(size)
                 state = 0
                 vfspath = size = ''
@@ -114,6 +128,7 @@
         i += 1
     return result
 
+
 def peersetup(ui, peer):
     class fastannotatepeer(peer.__class__):
         @wireprotov1peer.batchable
@@ -126,14 +141,17 @@
                 f = wireprotov1peer.future()
                 yield args, f
                 yield _parseresponse(f.value)
+
     peer.__class__ = fastannotatepeer
 
+
 @contextlib.contextmanager
 def annotatepeer(repo):
     ui = repo.ui
 
     remotepath = ui.expandpath(
-        ui.config('fastannotate', 'remotepath', 'default'))
+        ui.config('fastannotate', 'remotepath', 'default')
+    )
     peer = hg.peer(ui, {}, remotepath)
 
     try:
@@ -141,6 +159,7 @@
     finally:
         peer.close()
 
+
 def clientfetch(repo, paths, lastnodemap=None, peer=None):
     """download annotate cache from the server for paths"""
     if not paths:
@@ -158,9 +177,11 @@
     with peer.commandexecutor() as batcher:
         ui.debug('fastannotate: requesting %d files\n' % len(paths))
         for p in paths:
-            results.append(batcher.callcommand(
-                'getannotate',
-                {'path': p, 'lastnode':lastnodemap.get(p)}))
+            results.append(
+                batcher.callcommand(
+                    'getannotate', {'path': p, 'lastnode': lastnodemap.get(p)}
+                )
+            )
 
         for result in results:
             r = result.result()
@@ -168,18 +189,22 @@
             r = {util.pconvert(p): v for p, v in r.iteritems()}
             for path in sorted(r):
                 # ignore malicious paths
-                if (not path.startswith('fastannotate/')
-                    or '/../' in (path + '/')):
+                if not path.startswith('fastannotate/') or '/../' in (
+                    path + '/'
+                ):
                     ui.debug('fastannotate: ignored malicious path %s\n' % path)
                     continue
                 content = r[path]
                 if ui.debugflag:
-                    ui.debug('fastannotate: writing %d bytes to %s\n'
-                             % (len(content), path))
+                    ui.debug(
+                        'fastannotate: writing %d bytes to %s\n'
+                        % (len(content), path)
+                    )
                 repo.vfs.makedirs(os.path.dirname(path))
                 with repo.vfs(path, 'wb') as f:
                     f.write(content)
 
+
 def _filterfetchpaths(repo, paths):
     """return a subset of paths whose history is long and need to fetch linelog
     from the server. works with remotefilelog and non-remotefilelog repos.
@@ -193,11 +218,12 @@
         try:
             if len(repo.file(path)) >= threshold:
                 result.append(path)
-        except Exception: # file not found etc.
+        except Exception:  # file not found etc.
             result.append(path)
 
     return result
 
+
 def localreposetup(ui, repo):
     class fastannotaterepo(repo.__class__):
         def prefetchfastannotate(self, paths, peer=None):
@@ -215,8 +241,10 @@
             except Exception as ex:
                 # could be directory not writable or so, not fatal
                 self.ui.debug('fastannotate: prefetch failed: %r\n' % ex)
+
     repo.__class__ = fastannotaterepo
 
+
 def clientreposetup(ui, repo):
     _registerwireprotocommand()
     if repo.local():