changeset 42732:6d61be152c55

flagutil: move addflagprocessor to the new module (API)
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Thu, 08 Aug 2019 01:59:43 +0200
parents 5109217a9ab6
children d684449eef67
files mercurial/revlog.py mercurial/revlogutils/flagutil.py tests/flagprocessorext.py tests/test-flagprocessor.t tests/test-revlog-raw.py
diffstat 5 files changed, 35 insertions(+), 34 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/revlog.py	Thu Aug 08 01:25:37 2019 +0200
+++ b/mercurial/revlog.py	Thu Aug 08 01:59:43 2019 +0200
@@ -125,33 +125,6 @@
     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)
 
@@ -2609,7 +2582,7 @@
             #
             # 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
             # -------------------------------------------------
--- a/mercurial/revlogutils/flagutil.py	Thu Aug 08 01:25:37 2019 +0200
+++ b/mercurial/revlogutils/flagutil.py	Thu Aug 08 01:59:43 2019 +0200
@@ -40,6 +40,33 @@
     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)
--- a/tests/flagprocessorext.py	Thu Aug 08 01:25:37 2019 +0200
+++ b/tests/flagprocessorext.py	Thu Aug 08 01:59:43 2019 +0200
@@ -113,7 +113,7 @@
         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 @@
             validatehash,
         )
     )
-    revlog.addflagprocessor(
+    flagutil.addflagprocessor(
         REVIDX_BASE64,
         (
             b64decode,
@@ -129,7 +129,7 @@
             bypass,
         ),
     )
-    revlog.addflagprocessor(
+    flagutil.addflagprocessor(
         REVIDX_GZIP,
         (
             gzipdecompress,
--- a/tests/test-flagprocessor.t	Thu Aug 08 01:25:37 2019 +0200
+++ b/tests/test-flagprocessor.t	Thu Aug 08 01:59:43 2019 +0200
@@ -205,8 +205,8 @@
       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 !)
--- a/tests/test-revlog-raw.py	Thu Aug 08 01:25:37 2019 +0200
+++ b/tests/test-revlog-raw.py	Thu Aug 08 01:59:43 2019 +0200
@@ -16,6 +16,7 @@
 
 from mercurial.revlogutils import (
     deltas,
+    flagutil,
 )
 
 # TESTTMP is optional. This makes it convenient to run without run-tests.py
@@ -56,7 +57,7 @@
     # 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