diff -r e8f1e0e295bb -r 82e5a9b1ef1e hgext/rebase.py --- a/hgext/rebase.py Tue Mar 21 17:21:45 2023 -0400 +++ b/hgext/rebase.py Tue Mar 21 20:47:30 2023 -0400 @@ -24,6 +24,7 @@ wdirrev, ) from mercurial.pycompat import open +from mercurial.thirdparty.jaraco.collections import Projection from mercurial import ( bookmarks, cmdutil, @@ -52,6 +53,7 @@ util, ) + # The following constants are used throughout the rebase module. The ordering of # their values must be maintained. @@ -93,19 +95,8 @@ yield b'intermediate-source' -def _project(orig, names): - """Project a subset of names from orig.""" - names_saved = tuple(names) - values = (orig.get(name, None) for name in names_saved) - return { - name: value - for name, value in zip(names_saved, values) - if value is not None - } - - def _save_extras(ctx, extra): - extra.update(_project(ctx.extra(), retained_extras())) + extra.update(Projection(retained_extras(), ctx.extra())) def _savebranch(ctx, extra):