Skip to content

Commit

Permalink
Update compat_map
Browse files Browse the repository at this point in the history
Sync some code with python 3.11 collections ChainMap.

force-test
  • Loading branch information
Taapat committed May 7, 2023
1 parent 28b69e0 commit 2951279
Showing 1 changed file with 11 additions and 15 deletions.
26 changes: 11 additions & 15 deletions src/compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,8 @@
from collections import ChainMap as compat_map
else:
from collections import MutableMapping
from itertools import chain

class compat_map(MutableMapping):
maps = [{}]

def __init__(self, *maps):
self.maps = list(maps) or [{}]

Expand All @@ -53,31 +50,30 @@ def __getitem__(self, k):
raise KeyError(k)

def __setitem__(self, k, v):
self.maps[0].__setitem__(k, v)
return
self.maps[0][k] = v

def __contains__(self, k):
return any((k in m) for m in self.maps)

def __delitem(self, k):
if k in self.maps[0]:
del self.maps[0][k]
return
raise KeyError(k)

def __delitem__(self, k):
self.__delitem(k)
try:
del self.maps[0][k]
except KeyError:
raise KeyError(k)

def __iter__(self):
return chain(*reversed(self.maps))
d = {}
for m in reversed(self.maps):
d.update(dict.fromkeys(m))
return iter(d)

def __len__(self):
return len(iter(self))
return len(set().union(*self.maps))

def new_child(self, m=None, **kwargs):
m = m or {}
m.update(kwargs)
return compat_map(m, *self.maps)
return self.__class__(m, *self.maps)


SUBURI = '&suburi='
Expand Down

0 comments on commit 2951279

Please sign in to comment.