anydbm.py (952B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\anydbm.py 2 3 4 class error(Exception): 5 pass 6 7 8 _names = ['dbhash', 9 'gdbm', 10 'dbm', 11 'dumbdbm'] 12 _errors = [error] 13 _defaultmod = None 14 for _name in _names: 15 try: 16 _mod = __import__(_name) 17 except ImportError: 18 continue 19 20 if not _defaultmod: 21 _defaultmod = _mod 22 _errors.append(_mod.error) 23 24 if not _defaultmod: 25 raise ImportError, 'no dbm clone found; tried %s' % _names 26 error = tuple(_errors) 27 28 def open(file, flag = 'r', mode = 438): 29 from whichdb import whichdb 30 result = whichdb(file) 31 if result is None: 32 if 'c' in flag or 'n' in flag: 33 mod = _defaultmod 34 else: 35 raise error, "need 'c' or 'n' flag to open new db" 36 elif result == '': 37 raise error, 'db type could not be determined' 38 else: 39 mod = __import__(result) 40 return mod.open(file, flag, mode)