Mercurial > repos > devteam > subtract
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 |
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 ) |