Mercurial > hg
changeset 42730:92ac6b1697a7
flagutil: move REVIDX_KNOWN_FLAGS source of truth in flagutil (API)
Since REVIDX_KNOWN_FLAGS is "not really a constant" (extension can update it)
and python integer,... it needs to be the responsability of a single module and
always accessed through the module. We update all the user and move the source
of truth in flagutil.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Thu, 08 Aug 2019 01:28:34 +0200 |
parents | 05c80f9ef100 |
children | 5109217a9ab6 |
files | mercurial/revlog.py mercurial/revlogutils/constants.py mercurial/revlogutils/flagutil.py tests/flagprocessorext.py tests/simplestorerepo.py |
diffstat | 5 files changed, 22 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/revlog.py Thu Aug 08 01:04:48 2019 +0200 +++ b/mercurial/revlog.py Thu Aug 08 01:28:34 2019 +0200 @@ -53,7 +53,6 @@ REVIDX_EXTSTORED, REVIDX_FLAGS_ORDER, REVIDX_ISCENSORED, - REVIDX_KNOWN_FLAGS, REVIDX_RAWTEXT_CHANGING_FLAGS, ) from .thirdparty import ( @@ -97,7 +96,6 @@ REVIDX_EXTSTORED REVIDX_DEFAULT_FLAGS REVIDX_FLAGS_ORDER -REVIDX_KNOWN_FLAGS REVIDX_RAWTEXT_CHANGING_FLAGS parsers = policy.importmod(r'parsers') @@ -155,7 +153,7 @@ _insertflagprocessor(flag, processor, flagutil.flagprocessors) def _insertflagprocessor(flag, processor, flagprocessors): - if not flag & REVIDX_KNOWN_FLAGS: + if not flag & flagutil.REVIDX_KNOWN_FLAGS: msg = _("cannot register processor on unknown flag '%#x'.") % (flag) raise error.ProgrammingError(msg) if flag not in REVIDX_FLAGS_ORDER: @@ -173,7 +171,7 @@ return int(q & 0xFFFF) def offset_type(offset, type): - if (type & ~REVIDX_KNOWN_FLAGS) != 0: + if (type & ~flagutil.REVIDX_KNOWN_FLAGS) != 0: raise ValueError('unknown revlog index flags') return int(int(offset) << 16 | type) @@ -685,7 +683,7 @@ # fast path: if no "read" flag processor could change the content, # size is rawsize. note: ELLIPSIS is known to not change the content. flags = self.flags(rev) - if flags & (REVIDX_KNOWN_FLAGS ^ REVIDX_ELLIPSIS) == 0: + if flags & (flagutil.REVIDX_KNOWN_FLAGS ^ REVIDX_ELLIPSIS) == 0: return self.rawsize(rev) return len(self.revision(rev, raw=False)) @@ -1762,9 +1760,9 @@ raise error.ProgrammingError(_("invalid '%s' operation") % operation) # Check all flags are known. - if flags & ~REVIDX_KNOWN_FLAGS: + if flags & ~flagutil.REVIDX_KNOWN_FLAGS: raise error.RevlogError(_("incompatible revision flag '%#x'") % - (flags & ~REVIDX_KNOWN_FLAGS)) + (flags & ~flagutil.REVIDX_KNOWN_FLAGS)) validatehash = True # Depending on the operation (read or write), the order might be # reversed due to non-commutative transforms.
--- a/mercurial/revlogutils/constants.py Thu Aug 08 01:04:48 2019 +0200 +++ b/mercurial/revlogutils/constants.py Thu Aug 08 01:28:34 2019 +0200 @@ -11,7 +11,6 @@ from .. import ( repository, - util, ) # revlog header flags @@ -48,7 +47,7 @@ REVIDX_ELLIPSIS, REVIDX_EXTSTORED, ] -REVIDX_KNOWN_FLAGS = util.bitsfrom(REVIDX_FLAGS_ORDER) + # bitmark for flags that could cause rawdata content change REVIDX_RAWTEXT_CHANGING_FLAGS = REVIDX_ISCENSORED | REVIDX_EXTSTORED
--- a/mercurial/revlogutils/flagutil.py Thu Aug 08 01:04:48 2019 +0200 +++ b/mercurial/revlogutils/flagutil.py Thu Aug 08 01:28:34 2019 +0200 @@ -14,10 +14,13 @@ REVIDX_EXTSTORED, REVIDX_FLAGS_ORDER, REVIDX_ISCENSORED, - REVIDX_KNOWN_FLAGS, REVIDX_RAWTEXT_CHANGING_FLAGS, ) +from .. import ( + util +) + # blanked usage of all the name to prevent pyflakes constraints # We need these name available in the module for extensions. REVIDX_ISCENSORED @@ -25,9 +28,10 @@ REVIDX_EXTSTORED REVIDX_DEFAULT_FLAGS REVIDX_FLAGS_ORDER -REVIDX_KNOWN_FLAGS REVIDX_RAWTEXT_CHANGING_FLAGS +REVIDX_KNOWN_FLAGS = util.bitsfrom(REVIDX_FLAGS_ORDER) + # Store flag processors (cf. 'addflagprocessor()' to register) flagprocessors = { REVIDX_ISCENSORED: None,
--- a/tests/flagprocessorext.py Thu Aug 08 01:04:48 2019 +0200 +++ b/tests/flagprocessorext.py Thu Aug 08 01:28:34 2019 +0200 @@ -12,6 +12,9 @@ revlog, util, ) +from mercurial.revlogutils import ( + flagutil, +) # Test only: These flags are defined here only in the context of testing the # behavior of the flag processor. The canonical way to add flags is to get in @@ -58,7 +61,7 @@ class wrappedfile(obj.__class__): def addrevision(self, text, transaction, link, p1, p2, cachedelta=None, node=None, - flags=revlog.REVIDX_DEFAULT_FLAGS): + flags=flagutil.REVIDX_DEFAULT_FLAGS): if b'[NOOP]' in text: flags |= REVIDX_NOOP @@ -102,7 +105,7 @@ # Teach revlog about our test flags flags = [REVIDX_NOOP, REVIDX_BASE64, REVIDX_GZIP, REVIDX_FAIL] - revlog.REVIDX_KNOWN_FLAGS |= util.bitsfrom(flags) + flagutil.REVIDX_KNOWN_FLAGS |= util.bitsfrom(flags) revlog.REVIDX_FLAGS_ORDER.extend(flags) # Teach exchange to use changegroup 3
--- a/tests/simplestorerepo.py Thu Aug 08 01:04:48 2019 +0200 +++ b/tests/simplestorerepo.py Thu Aug 08 01:28:34 2019 +0200 @@ -42,6 +42,9 @@ interfaceutil, storageutil, ) +from mercurial.revlogutils import ( + flagutil, +) # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should @@ -262,9 +265,9 @@ if flags == 0: return text, True - if flags & ~revlog.REVIDX_KNOWN_FLAGS: + if flags & ~flagutil.REVIDX_KNOWN_FLAGS: raise simplestoreerror(_("incompatible revision flag '%#x'") % - (flags & ~revlog.REVIDX_KNOWN_FLAGS)) + (flags & ~flagutil.REVIDX_KNOWN_FLAGS)) validatehash = True # Depending on the operation (read or write), the order might be