[Reproducible-commits] [diffoscope] 02/09: Use a class property for global config
Jérémy Bobbio
lunar at moszumanska.debian.org
Thu Aug 20 22:09:41 UTC 2015
This is an automated email from the git hooks/post-receive script.
lunar pushed a commit to branch master
in repository diffoscope.
commit 18f5ac15c41d3c4d9a820149031825776a2d3f79
Author: Jérémy Bobbio <lunar at debian.org>
Date: Thu Aug 20 23:31:21 2015 +0200
Use a class property for global config
It's just a bit nicer.
---
diffoscope.py | 6 +++---
diffoscope/config.py | 19 ++++++++++++-------
diffoscope/difference.py | 6 +++---
diffoscope/presenters/html.py | 2 +-
4 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/diffoscope.py b/diffoscope.py
index 1b8182b..bcf935f 100755
--- a/diffoscope.py
+++ b/diffoscope.py
@@ -92,9 +92,9 @@ class ListToolsAction(argparse.Action):
def main():
- Config.config().max_diff_block_lines = parsed_args.max_diff_block_lines
- Config.config().max_diff_input_lines = parsed_args.max_diff_input_lines
- Config.config().max_report_size = parsed_args.max_report_size
+ Config.general.max_diff_block_lines = parsed_args.max_diff_block_lines
+ Config.general.max_diff_input_lines = parsed_args.max_diff_input_lines
+ Config.general.max_report_size = parsed_args.max_report_size
if parsed_args.debug:
logger.setLevel(logging.DEBUG)
set_locale()
diff --git a/diffoscope/config.py b/diffoscope/config.py
index 71e7d1f..27cdba5 100644
--- a/diffoscope/config.py
+++ b/diffoscope/config.py
@@ -18,19 +18,24 @@
# along with diffoscope. If not, see <http://www.gnu.org/licenses/>.
-class Config(object):
- _config = None
+# From http://stackoverflow.com/a/7864317
+# Credits to kylealanhale
+class classproperty(property):
+ def __get__(self, cls, owner):
+ return classmethod(self.fget).__get__(None, owner)()
+
+class Config(object):
def __init__(self):
self._max_diff_block_lines = 50
self._max_diff_input_lines = 100000 # GNU diff cannot process arbitrary large files :(
self._max_report_size = 2000 * 2 ** 10 # 2000 kB
- @classmethod
- def config(cls):
- if not cls._config:
- cls._config = Config()
- return cls._config
+ @classproperty
+ def general(cls):
+ if not hasattr(cls, '_general_config'):
+ cls._general_config = Config()
+ return cls._general_config
@property
def max_diff_block_lines(self):
diff --git a/diffoscope/difference.py b/diffoscope/difference.py
index 7d43c52..03206cc 100644
--- a/diffoscope/difference.py
+++ b/diffoscope/difference.py
@@ -104,7 +104,7 @@ class DiffParser(object):
self._diff.write(line)
if line[0] in ('-', '+') and line[0] == self._direction:
self._block_len += 1
- max_lines = Config.config().max_diff_block_lines
+ max_lines = Config.general.max_diff_block_lines
if max_lines > 0 and self._block_len >= max_lines:
return self.skip_block
else:
@@ -114,7 +114,7 @@ class DiffParser(object):
def skip_block(self, line):
if self._remaining_hunk_lines == 0 or line[0] != self._direction:
- self._diff.write('%s[ %d lines removed ]\n' % (self._direction, self._block_len - Config.config().max_diff_block_lines))
+ self._diff.write('%s[ %d lines removed ]\n' % (self._direction, self._block_len - Config.general.max_diff_block_lines))
return self.read_hunk(line)
self._block_len += 1
self._remaining_hunk_lines -= 1
@@ -229,7 +229,7 @@ def make_feeder_from_file(in_file, filter=lambda buf: buf.encode('utf-8')):
for buf in in_file.readlines():
line_count += 1
out_file.write(filter(buf))
- max_lines = Config.config().max_diff_input_lines
+ max_lines = Config.general.max_diff_input_lines
if max_lines > 0 and line_count >= max_lines:
out_file.write('[ Too much input for diff ]%s\n' % (' ' * out_file.fileno()))
end_nl = True
diff --git a/diffoscope/presenters/html.py b/diffoscope/presenters/html.py
index b80b3da..8846b9b 100644
--- a/diffoscope/presenters/html.py
+++ b/diffoscope/presenters/html.py
@@ -515,7 +515,7 @@ def output_header(css_url, print_func):
def output_html(difference, css_url=None, print_func=None):
if print_func is None:
print_func = print
- print_func = create_limited_print_func(print_func, Config.config().max_report_size)
+ print_func = create_limited_print_func(print_func, Config.general.max_report_size)
try:
output_header(css_url, print_func)
output_difference(difference, print_func, [])
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/diffoscope.git
More information about the Reproducible-commits
mailing list