Exemplo n.º 1
0
 def merge(self, key, value):
     """合并配置项"""
     if not isinstance(value, dict):
         return False
     news = MergeDict(self.get(key, {}))
     news.merge(value)
     self.set(key, news)
     return news
Exemplo n.º 2
0
    def test_custom_merge(self):
        class SumDict(MergeDict):
            @MergeDict.dispatch(int)
            def merge_int(this, other):
                return this + other

        d1 = SumDict({'a': 1, 'b': 'one', 'c': [1]})
        d1.merge({'a': 2, 'c': [2]})
        assert d1 == {'a': 3, 'b': 'one', 'c': [2]}

        # make sure subclass doesnt mess up with MergeDict
        d2 = MergeDict({'a': 1, 'b': 'one', 'c': [1]})
        d2.merge({'a': 2, 'c': [2]})
        assert d2 == {'a': 2, 'b': 'one', 'c': [2]}
Exemplo n.º 3
0
    def test_custom_merge(self):
        class SumDict(MergeDict):
            @MergeDict.dispatch(int)
            def merge_int(this, other):
                return this + other

        d1 = SumDict({"a": 1, "b": "one", "c": [1]})
        d1.merge({"a": 2, "c": [2]})
        assert d1 == {"a": 3, "b": "one", "c": [2]}

        # make sure subclass doesnt mess up with MergeDict
        d2 = MergeDict({"a": 1, "b": "one", "c": [1]})
        d2.merge({"a": 2, "c": [2]})
        assert d2 == {"a": 2, "b": "one", "c": [2]}
Exemplo n.º 4
0
 def test_default_merge_is_like_update(self):
     d1 = MergeDict({'a': 1, 'b': 'one', 'c': [1]})
     d1.merge({'a': 2, 'c': [2]})
     assert d1 == {'a': 2, 'b': 'one', 'c': [2]}
Exemplo n.º 5
0
 def test_merge_keyword(self):
     config = MergeDict({'foo': 'bar'})
     config.merge(foo='baz')
     assert config['foo'] == 'baz'
Exemplo n.º 6
0
 def test_update_error_two_args(self):
     config = MergeDict({'foo': 'bar'})
     pytest.raises(TypeError, config.merge, {'foo': 'baz'}, {'foo': 'baz2'})
Exemplo n.º 7
0
 def test_default_merge_is_like_update(self):
     d1 = MergeDict({"a": 1, "b": "one", "c": [1]})
     d1.merge({"a": 2, "c": [2]})
     assert d1 == {"a": 2, "b": "one", "c": [2]}
Exemplo n.º 8
0
 def test_merge_keyword(self):
     config = MergeDict({"foo": "bar"})
     config.merge(foo="baz")
     assert config["foo"] == "baz"