Patchwork [5,of,9] flagutil: move addflagprocessor to the new module (API)

login
register
mail settings
Submitter Pierre-Yves David
Date Aug. 8, 2019, 1:47 a.m.
Message ID <82e7f9d4d0bac574e4aa.1565228841@nodosa.octopoid.net>
Download mbox | patch
Permalink /patch/41213/
State Accepted
Headers show

Comments

Pierre-Yves David - Aug. 8, 2019, 1:47 a.m.
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david@octobus.net>
# Date 1565222383 -7200
#      Thu Aug 08 01:59:43 2019 +0200
# Node ID 82e7f9d4d0bac574e4aa1b8f81e81ac1df3f6ddc
# Parent  c446e19887223d1e7299ea6123b408564f3832d9
# EXP-Topic flag-processors
# Available At https://bitbucket.org/octobus/mercurial-devel/
#              hg pull https://bitbucket.org/octobus/mercurial-devel/ -r 82e7f9d4d0ba
flagutil: move addflagprocessor to the new module (API)

Patch

diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -125,33 +125,6 @@  ellipsisprocessor = (
     ellipsisrawprocessor,
 )
 
-def addflagprocessor(flag, processor):
-    """Register a flag processor on a revision data flag.
-
-    Invariant:
-    - Flags need to be defined in REVIDX_KNOWN_FLAGS and REVIDX_FLAGS_ORDER,
-      and REVIDX_RAWTEXT_CHANGING_FLAGS if they can alter rawtext.
-    - Only one flag processor can be registered on a specific flag.
-    - flagprocessors must be 3-tuples of functions (read, write, raw) with the
-      following signatures:
-          - (read)  f(self, rawtext) -> text, bool
-          - (write) f(self, text) -> rawtext, bool
-          - (raw)   f(self, rawtext) -> bool
-      "text" is presented to the user. "rawtext" is stored in revlog data, not
-      directly visible to the user.
-      The boolean returned by these transforms is used to determine whether
-      the returned text can be used for hash integrity checking. For example,
-      if "write" returns False, then "text" is used to generate hash. If
-      "write" returns True, that basically means "rawtext" returned by "write"
-      should be used to generate hash. Usually, "write" and "read" return
-      different booleans. And "raw" returns a same boolean as "write".
-
-      Note: The 'raw' transform is used for changegroup generation and in some
-      debug commands. In this case the transform only indicates whether the
-      contents can be used for hash integrity checks.
-    """
-    flagutil.insertflagprocessor(flag, processor, flagutil.flagprocessors)
-
 def getoffset(q):
     return int(q >> 16)
 
@@ -2599,7 +2572,7 @@  class revlog(object):
             #
             # L1 should be equal to L2. L3 could be different from them.
             # "text" may or may not affect commit hash depending on flag
-            # processors (see revlog.addflagprocessor).
+            # processors (see flagutil.addflagprocessor).
             #
             #              | common  | rename | meta  | ext
             # -------------------------------------------------
diff --git a/mercurial/revlogutils/flagutil.py b/mercurial/revlogutils/flagutil.py
--- a/mercurial/revlogutils/flagutil.py
+++ b/mercurial/revlogutils/flagutil.py
@@ -40,6 +40,33 @@  flagprocessors = {
     REVIDX_ISCENSORED: None,
 }
 
+def addflagprocessor(flag, processor):
+    """Register a flag processor on a revision data flag.
+
+    Invariant:
+    - Flags need to be defined in REVIDX_KNOWN_FLAGS and REVIDX_FLAGS_ORDER,
+      and REVIDX_RAWTEXT_CHANGING_FLAGS if they can alter rawtext.
+    - Only one flag processor can be registered on a specific flag.
+    - flagprocessors must be 3-tuples of functions (read, write, raw) with the
+      following signatures:
+          - (read)  f(self, rawtext) -> text, bool
+          - (write) f(self, text) -> rawtext, bool
+          - (raw)   f(self, rawtext) -> bool
+      "text" is presented to the user. "rawtext" is stored in revlog data, not
+      directly visible to the user.
+      The boolean returned by these transforms is used to determine whether
+      the returned text can be used for hash integrity checking. For example,
+      if "write" returns False, then "text" is used to generate hash. If
+      "write" returns True, that basically means "rawtext" returned by "write"
+      should be used to generate hash. Usually, "write" and "read" return
+      different booleans. And "raw" returns a same boolean as "write".
+
+      Note: The 'raw' transform is used for changegroup generation and in some
+      debug commands. In this case the transform only indicates whether the
+      contents can be used for hash integrity checks.
+    """
+    insertflagprocessor(flag, processor, flagprocessors)
+
 def insertflagprocessor(flag, processor, flagprocessors):
     if not flag & REVIDX_KNOWN_FLAGS:
         msg = _("cannot register processor on unknown flag '%#x'.") % (flag)
diff --git a/tests/flagprocessorext.py b/tests/flagprocessorext.py
--- a/tests/flagprocessorext.py
+++ b/tests/flagprocessorext.py
@@ -113,7 +113,7 @@  def extsetup(ui):
         exchange._bundlespeccontentopts[k][b"cg.version"] = b"03"
 
     # Register flag processors for each extension
-    revlog.addflagprocessor(
+    flagutil.addflagprocessor(
         REVIDX_NOOP,
         (
             noopdonothing,
@@ -121,7 +121,7 @@  def extsetup(ui):
             validatehash,
         )
     )
-    revlog.addflagprocessor(
+    flagutil.addflagprocessor(
         REVIDX_BASE64,
         (
             b64decode,
@@ -129,7 +129,7 @@  def extsetup(ui):
             bypass,
         ),
     )
-    revlog.addflagprocessor(
+    flagutil.addflagprocessor(
         REVIDX_GZIP,
         (
             gzipdecompress,
diff --git a/tests/test-flagprocessor.t b/tests/test-flagprocessor.t
--- a/tests/test-flagprocessor.t
+++ b/tests/test-flagprocessor.t
@@ -205,8 +205,8 @@  Ensure the data got to the server OK
       extsetup(ui)
     File "*/tests/flagprocessorext.py", line *, in extsetup (glob)
       validatehash,
-    File "*/mercurial/revlog.py", line *, in addflagprocessor (glob)
-      flagutil.insertflagprocessor(flag, processor, flagutil.flagprocessors)
+    File "*/mercurial/revlogutils/flagutil.py", line *, in addflagprocessor (glob)
+      insertflagprocessor(flag, processor, flagprocessors)
     File "*/mercurial/revlogutils/flagutil.py", line *, in insertflagprocessor (glob)
       raise error.Abort(msg)
   mercurial.error.Abort: b"cannot register multiple processors on flag '0x8'." (py3 !)
diff --git a/tests/test-revlog-raw.py b/tests/test-revlog-raw.py
--- a/tests/test-revlog-raw.py
+++ b/tests/test-revlog-raw.py
@@ -16,6 +16,7 @@  from mercurial import (
 
 from mercurial.revlogutils import (
     deltas,
+    flagutil,
 )
 
 # TESTTMP is optional. This makes it convenient to run without run-tests.py
@@ -56,7 +57,7 @@  def rawprocessor(self, rawtext):
     # can be used to verify hash.
     return False
 
-revlog.addflagprocessor(revlog.REVIDX_EXTSTORED,
+flagutil.addflagprocessor(revlog.REVIDX_EXTSTORED,
                         (readprocessor, writeprocessor, rawprocessor))
 
 # Utilities about reading and appending revlog