comparison jb2_GFF/_utils.py @ 17:4c201a3d4755 draft

planemo upload for repository https://github.com/usegalaxy-eu/temporary-tools/tree/master/jbrowse2 commit a37bfdfc108501b11c7b2aa15efb1bd16f0c4b66
author fubar
date Sun, 28 Jan 2024 06:48:52 +0000
parents
children
comparison
equal deleted inserted replaced
16:1fe91657bfd6 17:4c201a3d4755
1 class defaultdict(dict):
2 """Back compatible defaultdict:
3 http://code.activestate.com/recipes/523034/"""
4
5 def __init__(self, default_factory=None, *a, **kw):
6 if default_factory is not None and not hasattr(
7 default_factory, "__call__"
8 ):
9 raise TypeError("first argument must be callable")
10 dict.__init__(self, *a, **kw)
11 self.default_factory = default_factory
12
13 def __getitem__(self, key):
14 try:
15 return dict.__getitem__(self, key)
16 except KeyError:
17 return self.__missing__(key)
18
19 def __missing__(self, key):
20 if self.default_factory is None:
21 raise KeyError(key)
22 self[key] = value = self.default_factory()
23 return value
24
25 def __reduce__(self):
26 if self.default_factory is None:
27 args = tuple()
28 else:
29 args = (self.default_factory,)
30 return type(self), args, None, None, self.items()
31
32 def copy(self):
33 return self.__copy__()
34
35 def __copy__(self):
36 return type(self)(self.default_factory, self)
37
38 def __deepcopy__(self, memo):
39 import copy
40
41 return type(self)(
42 self.default_factory, copy.deepcopy(self.items())
43 )
44
45 def __repr__(self):
46 return "defaultdict(%s, %s)" % (
47 self.default_factory,
48 dict.__repr__(self),
49 )