s3:utils: Fix 'Usage:' for 'net ads enctypes'
[samba4-gss.git] / lib / tdb / _tdb_text.py
blobf19869766d04df0200863db7ed2a7d6d24949ddf
1 # Text wrapper for tdb bindings
3 # Copyright (C) 2015 Petr Viktorin <pviktori@redhat.com>
4 # Published under the GNU LGPLv3 or later
6 import sys
8 import tdb
11 class TdbTextWrapper(object):
12 """Text interface for a TDB file"""
14 def __init__(self, tdb):
15 self._tdb = tdb
17 @property
18 def raw(self):
19 return self._tdb
21 def get(self, key):
22 key = key.encode('utf-8')
23 result = self._tdb.get(key)
24 if result is not None:
25 return result.decode('utf-8')
27 def append(self, key, value):
28 key = key.encode('utf-8')
29 value = value.encode('utf-8')
30 self._tdb.append(key, value)
32 def firstkey(self):
33 result = self._tdb.firstkey()
34 if result:
35 return result.decode('utf-8')
37 def nextkey(self, key):
38 key = key.encode('utf-8')
39 result = self._tdb.nextkey(key)
40 if result is not None:
41 return result.decode('utf-8')
43 def delete(self, key):
44 key = key.encode('utf-8')
45 self._tdb.delete(key)
47 def store(self, key, value):
48 key = key.encode('utf-8')
49 value = value.encode('utf-8')
50 self._tdb.store(key, value)
52 def __iter__(self):
53 for key in iter(self._tdb):
54 yield key.decode('utf-8')
56 def __getitem__(self, key):
57 key = key.encode('utf-8')
58 result = self._tdb[key]
59 return result.decode('utf-8')
61 def __contains__(self, key):
62 key = key.encode('utf-8')
63 return key in self._tdb
65 def __repr__(self):
66 return '<TdbTextWrapper for %r>' % self._tdb
68 def __setitem__(self, key, value):
69 key = key.encode('utf-8')
70 value = value.encode('utf-8')
71 self._tdb[key] = value
73 def __delitem__(self, key):
74 key = key.encode('utf-8')
75 del self._tdb[key]
77 keys = __iter__
80 ## Add wrappers for functions and getters that don't deal with text
82 def _add_wrapper(name):
83 orig = getattr(tdb.Tdb, name)
85 def wrapper(self, *args, **kwargs):
86 return orig(self._tdb, *args, **kwargs)
87 wrapper.__name__ = orig.__name__
88 wrapper.__doc__ = orig.__doc__
90 setattr(TdbTextWrapper, name, wrapper)
92 for name in ("transaction_cancel",
93 "transaction_commit",
94 "transaction_prepare_commit",
95 "transaction_start",
96 "reopen",
97 "lock_all",
98 "unlock_all",
99 "read_lock_all",
100 "read_unlock_all",
101 "close",
102 "add_flags",
103 "remove_flags",
104 "clear",
105 "repack",
106 "enable_seqnum",
107 "increment_seqnum_nonblock",
109 _add_wrapper(name)
112 def _add_getter(name):
113 orig = getattr(tdb.Tdb, name)
114 doc = orig.__doc__
116 def getter(self):
117 return getattr(self._tdb, name)
119 def setter(self, value):
120 return setattr(self._tdb, name, value)
122 setattr(TdbTextWrapper, name, property(getter, setter, doc=doc))
124 for name in ("hash_size",
125 "map_size",
126 "freelist_size",
127 "flags",
128 "max_dead",
129 "filename",
130 "seqnum",
131 "text",
133 _add_getter(name)