annotate utils/odict.py @ 5:0d97b11ed3d5 draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
author devteam
date Thu, 22 Jun 2017 18:51:24 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
1 """
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
2 Ordered dictionary implementation.
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
3 """
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
4
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
5 from UserDict import UserDict
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
6
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
7
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
8 class odict(UserDict):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
9 """
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
10 http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/107747
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
11
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
12 This dictionary class extends UserDict to record the order in which items are
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
13 added. Calling keys(), values(), items(), etc. will return results in this
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
14 order.
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
15 """
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
16 def __init__( self, dict=None ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
17 self._keys = []
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
18 UserDict.__init__( self, dict )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
19
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
20 def __delitem__( self, key ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
21 UserDict.__delitem__( self, key )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
22 self._keys.remove( key )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
23
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
24 def __setitem__( self, key, item ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
25 UserDict.__setitem__( self, key, item )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
26 if key not in self._keys:
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
27 self._keys.append( key )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
28
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
29 def clear( self ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
30 UserDict.clear( self )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
31 self._keys = []
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
32
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
33 def copy(self):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
34 new = odict()
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
35 new.update( self )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
36 return new
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
37
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
38 def items( self ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
39 return zip( self._keys, self.values() )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
40
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
41 def keys( self ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
42 return self._keys[:]
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
43
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
44 def popitem( self ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
45 try:
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
46 key = self._keys[-1]
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
47 except IndexError:
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
48 raise KeyError( 'dictionary is empty' )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
49 val = self[ key ]
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
50 del self[ key ]
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
51 return ( key, val )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
52
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
53 def setdefault( self, key, failobj=None ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
54 if key not in self._keys:
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
55 self._keys.append( key )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
56 return UserDict.setdefault( self, key, failobj )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
57
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
58 def update( self, dict ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
59 for ( key, val ) in dict.items():
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
60 self.__setitem__( key, val )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
61
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
62 def values( self ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
63 return map( self.get, self._keys )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
64
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
65 def iterkeys( self ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
66 return iter( self._keys )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
67
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
68 def itervalues( self ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
69 for key in self._keys:
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
70 yield self.get( key )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
71
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
72 def iteritems( self ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
73 for key in self._keys:
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
74 yield key, self.get( key )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
75
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
76 def __iter__( self ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
77 for key in self._keys:
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
78 yield key
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
79
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
80 def reverse( self ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
81 self._keys.reverse()
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
82
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
83 def insert( self, index, key, item ):
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
84 if key not in self._keys:
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
85 self._keys.insert( index, key )
0d97b11ed3d5 planemo upload for repository https://github.com/galaxyproject/tools-devteam/tree/master/tool_collections/gops/subtract commit cae3e05d02e60f595bb8b6d77a84f030e9bd1689
devteam
parents:
diff changeset
86 UserDict.__setitem__( self, key, item )