Mercurial > hg-stable
changeset 42749: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