@@ -96,3 +96,8 @@ def yaml_diff(a, b, dumper = None, colors = False):
if colors:
diff_lines = [u'%s%s%s' % (yaml_diff_colors[l[0]], l, ioex.shell.TextColor.default) for l in diff_lines]
return u''.join(diff_lines)
+
+class AutoDict(dict):
+ def __missing__(self, key):
+ value = self[key] = type(self)()
+ return value
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+import pytest
+from ioex import AutoDict
+def test_assign():
+ d = AutoDict()
+ assert d == {}
+ d['A'] = 1
+ assert d == {'A': 1}
+ d['B'][2] = 'b'
+ assert d == {'A': 1, 'B': {2: 'b'}}
+ del d['A']
+ assert d == {'B': {2: 'b'}}
+ d['C'][3]['c'] = ('Γ', 'γ')
+ assert d == {'B': {2: 'b'}, 'C': {3: {'c': ('Γ', 'γ')}}}