extras: extract function for projecting names from a gettable object
authorJason R. Coombs <jaraco@jaraco.com>
Tue, 21 Mar 2023 17:17:09 -0400
changeset 50363 2cd959fe631a
parent 50361 c0fbd63d66a7
child 50364 e8f1e0e295bb
extras: extract function for projecting names from a gettable object
hgext/rebase.py
--- a/hgext/rebase.py	Sat Mar 25 23:02:33 2023 +0100
+++ b/hgext/rebase.py	Tue Mar 21 17:17:09 2023 -0400
@@ -84,13 +84,19 @@
     return 1
 
 
+graft_extras = b'source', b'intermediate-source'
+
+
+def _project(orig, names):
+    """Project a subset of names from orig."""
+    values = (orig.get(name, None) for name in names)
+    return {
+        name: value for name, value in zip(names, values) if value is not None
+    }
+
+
 def _savegraft(ctx, extra):
-    s = ctx.extra().get(b'source', None)
-    if s is not None:
-        extra[b'source'] = s
-    s = ctx.extra().get(b'intermediate-source', None)
-    if s is not None:
-        extra[b'intermediate-source'] = s
+    extra.update(_project(ctx.extra(), graft_extras))
 
 
 def _savebranch(ctx, extra):