rubys / venus

Planet Venus is an awesome ‘river of news’ feed reader. It downloads news feeds published by web sites and aggregates their content together into a single combined feed, latest news first.
http://intertwingly.net/code/venus/docs/index.html
Other
273 stars 99 forks source link

Use bsddb3 instead of dbhash #44

Open Arfrever opened 7 years ago

Arfrever commented 7 years ago

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)
kgaughan commented 6 years ago

A better idea might be to use anydbm instead.