hgweb: deduplicate code stable
authorManuel Jacob <me@manueljacob.de>
Thu, 25 Jun 2020 03:10:13 +0200
branchstable
changeset 45003 839328c5a728
parent 44979 2fd8a8c11273
child 45004 2632c1ed8f34
hgweb: deduplicate code A following patch will change the way keys and values are encoded. To reduce the diff, I’ve split off the uninteresting part.
mercurial/hgweb/request.py
--- a/mercurial/hgweb/request.py	Tue Jun 23 16:07:18 2020 +0200
+++ b/mercurial/hgweb/request.py	Thu Jun 25 03:10:13 2020 +0200
@@ -162,11 +162,11 @@
     # strings on Python 3 must be between \00000-\000FF. We deal with bytes
     # in Mercurial, so mass convert string keys and values to bytes.
     if pycompat.ispy3:
-        env = {k.encode('latin-1'): v for k, v in pycompat.iteritems(env)}
-        env = {
-            k: v.encode('latin-1') if isinstance(v, str) else v
-            for k, v in pycompat.iteritems(env)
-        }
+        def tobytes(s):
+            if not isinstance(s, str):
+                return s
+            return s.encode('latin-1')
+        env = {tobytes(k): tobytes(v) for k, v in pycompat.iteritems(env)}
 
     # Some hosting solutions are emulating hgwebdir, and dispatching directly
     # to an hgweb instance using this environment variable.  This was always