flagutil: create a `mercurial.revlogutils.flagutil` module
The flagprocessings logic is duplicated in 2 extra places, and usually in a less
robust flavor. This is a maintenance nightmare that I would like to see cleaned
up. To do so I am creating a `flagutil` module to move flag processings related
code and make it easily reusable by other code.
--- a/contrib/import-checker.py Wed Aug 07 22:02:49 2019 +0200
+++ b/contrib/import-checker.py Thu Aug 08 01:03:01 2019 +0200
@@ -31,6 +31,7 @@
'mercurial.node',
# for revlog to re-export constant to extensions
'mercurial.revlogutils.constants',
+ 'mercurial.revlogutils.flagutil',
# for cffi modules to re-export pure functions
'mercurial.pure.base85',
'mercurial.pure.bdiff',
--- a/mercurial/revlog.py Wed Aug 07 22:02:49 2019 +0200
+++ b/mercurial/revlog.py Thu Aug 08 01:03:01 2019 +0200
@@ -38,13 +38,6 @@
from .revlogutils.constants import (
FLAG_GENERALDELTA,
FLAG_INLINE_DATA,
- REVIDX_DEFAULT_FLAGS,
- REVIDX_ELLIPSIS,
- REVIDX_EXTSTORED,
- REVIDX_FLAGS_ORDER,
- REVIDX_ISCENSORED,
- REVIDX_KNOWN_FLAGS,
- REVIDX_RAWTEXT_CHANGING_FLAGS,
REVLOGV0,
REVLOGV1,
REVLOGV1_FLAGS,
@@ -54,6 +47,15 @@
REVLOG_DEFAULT_FORMAT,
REVLOG_DEFAULT_VERSION,
)
+from .revlogutils.flagutil import (
+ REVIDX_DEFAULT_FLAGS,
+ REVIDX_ELLIPSIS,
+ REVIDX_EXTSTORED,
+ REVIDX_FLAGS_ORDER,
+ REVIDX_ISCENSORED,
+ REVIDX_KNOWN_FLAGS,
+ REVIDX_RAWTEXT_CHANGING_FLAGS,
+)
from .thirdparty import (
attr,
)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/revlogutils/flagutil.py Thu Aug 08 01:03:01 2019 +0200
@@ -0,0 +1,31 @@
+# flagutils.py - code to deal with revlog flags and their processors
+#
+# Copyright 2016 Remi Chaintron <remi@fb.com>
+# Copyright 2016-2019 Pierre-Yves David <pierre-yves.david@ens-lyon.org>
+#
+# This software may be used and distributed according to the terms of the
+# GNU General Public License version 2 or any later version.
+
+from __future__ import absolute_import
+
+from .constants import (
+ REVIDX_DEFAULT_FLAGS,
+ REVIDX_ELLIPSIS,
+ REVIDX_EXTSTORED,
+ REVIDX_FLAGS_ORDER,
+ REVIDX_ISCENSORED,
+ REVIDX_KNOWN_FLAGS,
+ REVIDX_RAWTEXT_CHANGING_FLAGS,
+)
+
+# blanked usage of all the name to prevent pyflakes constraints
+# We need these name available in the module for extensions.
+REVIDX_ISCENSORED
+REVIDX_ELLIPSIS
+REVIDX_EXTSTORED
+REVIDX_DEFAULT_FLAGS
+REVIDX_FLAGS_ORDER
+REVIDX_KNOWN_FLAGS
+REVIDX_RAWTEXT_CHANGING_FLAGS
+
+