venus icon indicating copy to clipboard operation
venus copied to clipboard

Use bsddb3 instead of dbhash

Open Arfrever opened this issue 7 years ago • 1 comments

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)

Arfrever avatar Jul 05 '17 19:07 Arfrever

A better idea might be to use anydbm instead.

kgaughan avatar Sep 18 '17 11:09 kgaughan