summaryrefslogtreecommitdiffstats
path: root/Lib/bsddb/dbobj.py
blob: 0918cc26216908346084edf634d328f7131e86d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
#-------------------------------------------------------------------------
#  This file contains real Python object wrappers for DB and DBEnv
#  C "objects" that can be usefully subclassed.  The previous SWIG
#  based interface allowed this thanks to SWIG's shadow classes.
#   --  Gregory P. Smith
#-------------------------------------------------------------------------
#
# (C) Copyright 2001  Autonomous Zone Industries
#
# License:  This is free software.  You may use this software for any
#           purpose including modification/redistribution, so long as
#           this header remains intact and that you do not claim any
#           rights of ownership or authorship of this software.  This
#           software has been tested, but no warranty is expressed or
#           implied.
#

#
# TODO it would be *really nice* to have an automatic shadow class populator
# so that new methods don't need to be added  here manually after being
# added to _bsddb.c.
#

import db

try:
    from UserDict import DictMixin
except ImportError:
    # DictMixin is new in Python 2.3
    class DictMixin: pass

class DBEnv:
    def __init__(self, *args, **kwargs):
        self._cobj = db.DBEnv(*args, **kwargs)

    def close(self, *args, **kwargs):
        return self._cobj.close(*args, **kwargs)
    def open(self, *args, **kwargs):
        return self._cobj.open(*args, **kwargs)
    def remove(self, *args, **kwargs):
        return self._cobj.remove(*args, **kwargs)
    def set_shm_key(self, *args, **kwargs):
        return self._cobj.set_shm_key(*args, **kwargs)
    def set_cachesize(self, *args, **kwargs):
        return self._cobj.set_cachesize(*args, **kwargs)
    def set_data_dir(self, *args, **kwargs):
        return self._cobj.set_data_dir(*args, **kwargs)
    def set_flags(self, *args, **kwargs):
        return self._cobj.set_flags(*args, **kwargs)
    def set_lg_bsize(self, *args, **kwargs):
        return self._cobj.set_lg_bsize(*args, **kwargs)
    def set_lg_dir(self, *args, **kwargs):
        return self._cobj.set_lg_dir(*args, **kwargs)
    def set_lg_max(self, *args, **kwargs):
        return self._cobj.set_lg_max(*args, **kwargs)
    def set_lk_detect(self, *args, **kwargs):
        return self._cobj.set_lk_detect(*args, **kwargs)
    def set_lk_max(self, *args, **kwargs):
        return self._cobj.set_lk_max(*args, **kwargs)
    def set_lk_max_locks(self, *args, **kwargs):
        return self._cobj.set_lk_max_locks(*args, **kwargs)
    def set_lk_max_lockers(self, *args, **kwargs):
        return self._cobj.set_lk_max_lockers(*args, **kwargs)
    def set_lk_max_objects(self, *args, **kwargs):
        return self._cobj.set_lk_max_objects(*args, **kwargs)
    def set_mp_mmapsize(self, *args, **kwargs):
        return self._cobj.set_mp_mmapsize(*args, **kwargs)
    def set_timeout(self, *args, **kwargs):
        return self._cobj.set_timeout(*args, **kwargs)
    def set_tmp_dir(self, *args, **kwargs):
        return self._cobj.set_tmp_dir(*args, **kwargs)
    def txn_begin(self, *args, **kwargs):
        return self._cobj.txn_begin(*args, **kwargs)
    def txn_checkpoint(self, *args, **kwargs):
        return self._cobj.txn_checkpoint(*args, **kwargs)
    def txn_stat(self, *args, **kwargs):
        return self._cobj.txn_stat(*args, **kwargs)
    def set_tx_max(self, *args, **kwargs):
        return self._cobj.set_tx_max(*args, **kwargs)
    def set_tx_timestamp(self, *args, **kwargs):
        return self._cobj.set_tx_timestamp(*args, **kwargs)
    def lock_detect(self, *args, **kwargs):
        return self._cobj.lock_detect(*args, **kwargs)
    def lock_get(self, *args, **kwargs):
        return self._cobj.lock_get(*args, **kwargs)
    def lock_id(self, *args, **kwargs):
        return self._cobj.lock_id(*args, **kwargs)
    def lock_put(self, *args, **kwargs):
        return self._cobj.lock_put(*args, **kwargs)
    def lock_stat(self, *args, **kwargs):
        return self._cobj.lock_stat(*args, **kwargs)
    def log_archive(self, *args, **kwargs):
        return self._cobj.log_archive(*args, **kwargs)

    def set_get_returns_none(self, *args, **kwargs):
        return self._cobj.set_get_returns_none(*args, **kwargs)

    if db.version() >= (4,0):
        def log_stat(self, *args, **kwargs):
            return apply(self._cobj.log_stat, args, kwargs)

    if db.version() >= (4,1):
        def dbremove(self, *args, **kwargs):
            return self._cobj.dbremove(*args, **kwargs)
        def dbrename(self, *args, **kwargs):
            return self._cobj.dbrename(*args, **kwargs)
        def set_encrypt(self, *args, **kwargs):
            return self._cobj.set_encrypt(*args, **kwargs)

    if db.version() >= (4,4):
        def lsn_reset(self, *args, **kwargs):
            return apply(self._cobj.lsn_reset, args, kwargs)


class DB(DictMixin):
    def __init__(self, dbenv, *args, **kwargs):
        # give it the proper DBEnv C object that its expecting
        self._cobj = db.DB(dbenv._cobj, *args, **kwargs)

    # TODO are there other dict methods that need to be overridden?
    def __len__(self):
        return len(self._cobj)
    def __getitem__(self, arg):
        return self._cobj[arg]
    def __setitem__(self, key, value):
        self._cobj[key] = value
    def __delitem__(self, arg):
        del self._cobj[arg]

    def append(self, *args, **kwargs):
        return self._cobj.append(*args, **kwargs)
    def associate(self, *args, **kwargs):
        return self._cobj.associate(*args, **kwargs)
    def close(self, *args, **kwargs):
        return self._cobj.close(*args, **kwargs)
    def consume(self, *args, **kwargs):
        return self._cobj.consume(*args, **kwargs)
    def consume_wait(self, *args, **kwargs):
        return self._cobj.consume_wait(*args, **kwargs)
    def cursor(self, *args, **kwargs):
        return self._cobj.cursor(*args, **kwargs)
    def delete(self, *args, **kwargs):
        return self._cobj.delete(*args, **kwargs)
    def fd(self, *args, **kwargs):
        return self._cobj.fd(*args, **kwargs)
    def get(self, *args, **kwargs):
        return self._cobj.get(*args, **kwargs)
    def pget(self, *args, **kwargs):
        return self._cobj.pget(*args, **kwargs)
    def get_both(self, *args, **kwargs):
        return self._cobj.get_both(*args, **kwargs)
    def get_byteswapped(self, *args, **kwargs):
        return self._cobj.get_byteswapped(*args, **kwargs)
    def get_size(self, *args, **kwargs):
        return self._cobj.get_size(*args, **kwargs)
    def get_type(self, *args, **kwargs):
        return self._cobj.get_type(*args, **kwargs)
    def join(self, *args, **kwargs):
        return self._cobj.join(*args, **kwargs)
    def key_range(self, *args, **kwargs):
        return self._cobj.key_range(*args, **kwargs)
    def has_key(self, *args, **kwargs):
        return self._cobj.has_key(*args, **kwargs)
    def items(self, *args, **kwargs):
        return self._cobj.items(*args, **kwargs)
    def keys(self, *args, **kwargs):
        return self._cobj.keys(*args, **kwargs)
    def open(self, *args, **kwargs):
        return self._cobj.open(*args, **kwargs)
    def put(self, *args, **kwargs):
        return self._cobj.put(*args, **kwargs)
    def remove(self, *args, **kwargs):
        return self._cobj.remove(*args, **kwargs)
    def rename(self, *args, **kwargs):
        return self._cobj.rename(*args, **kwargs)
    def set_bt_minkey(self, *args, **kwargs):
        return self._cobj.set_bt_minkey(*args, **kwargs)
    def set_bt_compare(self, *args, **kwargs):
        return self._cobj.set_bt_compare(*args, **kwargs)
    def set_cachesize(self, *args, **kwargs):
        return self._cobj.set_cachesize(*args, **kwargs)
    def set_flags(self, *args, **kwargs):
        return self._cobj.set_flags(*args, **kwargs)
    def set_h_ffactor(self, *args, **kwargs):
        return self._cobj.set_h_ffactor(*args, **kwargs)
    def set_h_nelem(self, *args, **kwargs):
        return self._cobj.set_h_nelem(*args, **kwargs)
    def set_lorder(self, *args, **kwargs):
        return self._cobj.set_lorder(*args, **kwargs)
    def set_pagesize(self, *args, **kwargs):
        return self._cobj.set_pagesize(*args, **kwargs)
    def set_re_delim(self, *args, **kwargs):
        return self._cobj.set_re_delim(*args, **kwargs)
    def set_re_len(self, *args, **kwargs):
        return self._cobj.set_re_len(*args, **kwargs)
    def set_re_pad(self, *args, **kwargs):
        return self._cobj.set_re_pad(*args, **kwargs)
    def set_re_source(self, *args, **kwargs):
        return self._cobj.set_re_source(*args, **kwargs)
    def set_q_extentsize(self, *args, **kwargs):
        return self._cobj.set_q_extentsize(*args, **kwargs)
    def stat(self, *args, **kwargs):
        return self._cobj.stat(*args, **kwargs)
    def sync(self, *args, **kwargs):
        return self._cobj.sync(*args, **kwargs)
    def type(self, *args, **kwargs):
        return self._cobj.type(*args, **kwargs)
    def upgrade(self, *args, **kwargs):
        return self._cobj.upgrade(*args, **kwargs)
    def values(self, *args, **kwargs):
        return self._cobj.values(*args, **kwargs)
    def verify(self, *args, **kwargs):
        return self._cobj.verify(*args, **kwargs)
    def set_get_returns_none(self, *args, **kwargs):
        return self._cobj.set_get_returns_none(*args, **kwargs)

    if db.version() >= (4,1):
        def set_encrypt(self, *args, **kwargs):
            return self._cobj.set_encrypt(*args, **kwargs)


class DBSequence:
    def __init__(self, *args, **kwargs):
        self._cobj = apply(db.DBSequence, args, kwargs)

    def close(self, *args, **kwargs):
        return apply(self._cobj.close, args, kwargs)
    def get(self, *args, **kwargs):
        return apply(self._cobj.get, args, kwargs)
    def get_dbp(self, *args, **kwargs):
        return apply(self._cobj.get_dbp, args, kwargs)
    def get_key(self, *args, **kwargs):
        return apply(self._cobj.get_key, args, kwargs)
    def init_value(self, *args, **kwargs):
        return apply(self._cobj.init_value, args, kwargs)
    def open(self, *args, **kwargs):
        return apply(self._cobj.open, args, kwargs)
    def remove(self, *args, **kwargs):
        return apply(self._cobj.remove, args, kwargs)
    def stat(self, *args, **kwargs):
        return apply(self._cobj.stat, args, kwargs)
    def set_cachesize(self, *args, **kwargs):
        return apply(self._cobj.set_cachesize, args, kwargs)
    def set_flags(self, *args, **kwargs):
        return apply(self._cobj.set_flags, args, kwargs)
    def set_range(self, *args, **kwargs):
        return apply(self._cobj.set_range, args, kwargs)
    def get_cachesize(self, *args, **kwargs):
        return apply(self._cobj.get_cachesize, args, kwargs)
    def get_flags(self, *args, **kwargs):
        return apply(self._cobj.get_flags, args, kwargs)
    def get_range(self, *args, **kwargs):
        return apply(self._cobj.get_range, args, kwargs)