8000 fixed implementation of mixins for Mapping and MutableMapping (still … · pythonnet/pythonnet@85897e3 · GitHub
[go: up one dir, main page]

Skip to content

Commit 85897e3

Browse files
committed
fixed implementation of mixins for Mapping and MutableMapping (still untested)
1 parent cd044c8 commit 85897e3

File tree

1 file changed

+29
-9
lines changed

1 file changed

+29
-9
lines changed

src/runtime/Mixins/collections.py

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,24 +39,44 @@ def keys(self): return self.Keys
3939
def items(self): return [(k,self[k]) for k in self.Keys]
4040
def values(self): return self.Values
4141
def __iter__(self): return self.Keys.__iter__()
42-
def get(self, key):
43-
_, item = self.TryGetValue(key)
44-
return item
42+
def get(self, key, default=None):
43+
existed, item = self.TryGetValue(key)
44+
return item if existed else default
4545

4646
class MutableMappingMixin(MappingMixin, col.MutableMapping):
47+
_UNSET_ = object()
48+
4749
def __delitem__(self, key):
48-
return self.Remove(key)
50+
self.Remove(key)
51+
4952
def clear(self):
5053
self.Clear()
51-
def pop(self, key):
52-
return self.Remove(key)
53-
def setdefault(self, key, value):
54+
55+
def pop(self, key, default=_UNSET_):
56+
existed, item = self.TryGetValue(key)
57+
if existed:
58+
self.Remove(key)
59+
return item
60+
elif default == self._UNSET_:
61+
raise KeyError(key)
62+
else:
63+
return default
64+
65+
def setdefault(self, key, value=None):
5466
existed, item = self.TryGetValue(key)
5567
if existed:
5668
return item
5769
else:
5870
self[key] = value
5971
return value
60-
def update(self, items):
61-
for key, value in items:
72+
73+
def update(self, items, **kwargs):
74+
if isinstance(items, col.Mapping):
75+
for key, value in items.items():
76+
self[key] = value
77+
else:
78+
for key, value in items:
79+
self[key] = value
80+
81+
for key, value in kwargs.items():
6282
self[key] = value

0 commit comments

Comments
 (0)
0