Rev 4804: Tweak ConfigurableFileMerger to use class variables rather than requiring __init__ wrapping as future proofing for helper functions. in http://bazaar.launchpad.net/~lifeless/bzr/bug-513822

Robert Collins robertc at robertcollins.net
Thu Jan 28 18:05:48 GMT 2010


At http://bazaar.launchpad.net/~lifeless/bzr/bug-513822

------------------------------------------------------------
revno: 4804
revision-id: robertc at robertcollins.net-20100128180544-6l8x7o7obaq7b51x
parent: robertc at robertcollins.net-20100128180103-kj106kj55vsbqxu1
committer: Robert Collins <robertc at robertcollins.net>
branch nick: bug-513822
timestamp: Fri 2010-01-29 05:05:44 +1100
message:
  Tweak ConfigurableFileMerger to use class variables rather than requiring __init__ wrapping as future proofing for helper functions.
=== modified file 'bzrlib/merge.py'
--- a/bzrlib/merge.py	2010-01-28 18:01:03 +0000
+++ b/bzrlib/merge.py	2010-01-28 18:05:44 +0000
@@ -100,17 +100,22 @@
     classes should implement ``merge_text``.
 
     :ivar affected_files: The configured file paths to merge.
-    :ivar name_prefix: The prefix to use when looking up configuration
+    :cvar name_prefix: The prefix to use when looking up configuration
         details.
-    :ivar default_files: The default file paths to merge when no configuration
+    :cvar default_files: The default file paths to merge when no configuration
         is present.
     """
 
-    def __init__(self, merger, name_prefix, default_files=None):
+    name_prefix = None
+    default_files = None
+
+    def __init__(self, merger):
         super(ConfigurableFileMerger, self).__init__(merger)
         self.affected_files = None
-        self.default_files = default_files or []
-        self.name_prefix = name_prefix
+        self.default_files = self.__class__.default_files or []
+        self.name_prefix = self.__class__.name_prefix
+        if self.name_prefix is None:
+            raise ValueError("name_prefix must be set.")
 
     def filename_matches_config(self, params):
         affected_files = self.affected_files

=== modified file 'bzrlib/plugins/news_merge/news_merge.py'
--- a/bzrlib/plugins/news_merge/news_merge.py	2010-01-28 18:01:03 +0000
+++ b/bzrlib/plugins/news_merge/news_merge.py	2010-01-28 18:05:44 +0000
@@ -27,8 +27,7 @@
 class NewsMerger(merge.ConfigurableFileMerger):
     """Merge bzr NEWS files."""
 
-    def __init__(self, merger):
-        super(NewsMerger, self).__init__(merger, 'news')
+    name_prefix = "news"
 
     def merge_text(self, params):
         """Perform a simple 3-way merge of a bzr NEWS file.

=== modified file 'bzrlib/tests/test_merge.py'
--- a/bzrlib/tests/test_merge.py	2010-01-28 18:01:03 +0000
+++ b/bzrlib/tests/test_merge.py	2010-01-28 18:05:44 +0000
@@ -2844,10 +2844,12 @@
     def test_affected_files_cached(self):
         """Ensures that the config variable is cached"""
         class SimplePlan(_mod_merge.ConfigurableFileMerger):
+            name_prefix = "foo"
+            default_files = ["my default"]
             def merge_text(self, params):
                 return ('not applicable', None)
         def factory(merger):
-            result = SimplePlan(merger, "foo", ["my default"])
+            result = SimplePlan(merger)
             self.assertEqual(None, result.affected_files)
             self.merger = result
             return result




More information about the bazaar-commits mailing list