venus
venus copied to clipboard
Use bsddb3 instead of dbhash
dbhash module is deprecated: https://docs.python.org/2.7/library/dbhash.html
This functionality still exists in bsddb3 (outside of standard library). bsddb3 also supports Python 3.
--- planet/idindex.py
+++ planet/idindex.py
@@ -13,8 +13,8 @@
cache = config.cache_directory()
index=os.path.join(cache,'index')
if not os.path.exists(index): return None
- import dbhash
- return dbhash.open(filename(index, 'id'),'w')
+ import bsddb3
+ return bsddb3.hashopen(filename(index, 'id'),'w')
except Exception, e:
if e.__class__.__name__ == 'DBError': e = e.args[-1]
from planet import logger as log
@@ -35,8 +35,8 @@
cache = config.cache_directory()
index=os.path.join(cache,'index')
if not os.path.exists(index): os.makedirs(index)
- import dbhash
- index = dbhash.open(filename(index, 'id'),'c')
+ import bsddb3
+ index = bsddb3.hashopen(filename(index, 'id'),'c')
try:
import libxml2
--- tests/test_idindex.py
+++ tests/test_idindex.py
@@ -67,8 +67,8 @@
self.assertEqual(12,len(doc.getElementsByTagName('planet:name')))
try:
- module = 'dbhash'
+ import bsddb3
except ImportError:
- planet.logger.warn("dbhash is not available => can't test id index")
+ planet.logger.warn("bsddb3 is not available => can't test id index")
for method in dir(idIndexTest):
if method.startswith('test_'): delattr(idIndexTest,method)
A better idea might be to use anydbm instead.