Browse Source

factor out common method

Pi 1 year ago
parent
commit
e6e48373a5
3 changed files with 5 additions and 26 deletions
  1. 3 6
      cropswap-register-new.py
  2. 2 11
      gdbm-iter-subscribed.py
  3. 0 9
      gdbm_iter.py

+ 3 - 6
cropswap-register-new.py

@@ -1,9 +1,9 @@
 #!/usr/bin/env python3
 # depends (debian) python3-gdbm
-import dbm
 import sys
 import os
 from pathlib import Path
+from gdbm_iter import gdbm_iter_keys as gdbm_iter_items
 # from python 3.12 only :(
 #from itertools import batched
 
@@ -24,11 +24,8 @@ def batched(_iter, n, pad=True):
     yield ret
 
 def gdbm_iter_keys(dbpath):
-    with dbm.open(dbpath, 'r') as db:
-        k = db.firstkey()
-        while k is not None:
-            yield map(lambda x: x.decode('utf-8'), [k, db.get(k)])
-            k = db.nextkey(k)
+    for i in gdbm_iter_items(dbpath):
+        yield map(lambda x: x.decode('utf-8'), i)
 
 members = {
      k for k,_ in filter(

+ 2 - 11
gdbm-iter-subscribed.py

@@ -2,20 +2,11 @@
 # depends (debian) python3-gdbm
 import dbm
 import sys
-#mlist, alist, slist = sys.argv[1:4]
+from gdbm_iter import gdbm_iter_keys
+
 mlist, slist = sys.argv[1:3]
 noforward, to = sys.argv[3:5]
 
-def gdbm_iter_keys(dbpath):
-    with dbm.open(dbpath, 'r') as db:
-        k = db.firstkey()
-        while k is not None:
-            yield k, db.get(k)
-            k = db.nextkey(k)
-
-#admins = filter(lambda x: x[1].lower() == 'admin', gdbm_iter_keys(alist) if alist else [])
-#subscribed = filter(lambda x: x[1].lower() == 'subscribe', gdbm_iter_keys(slist))
-
 SUBSCRIBED = {
   'admin',
   'subscribe',

+ 0 - 9
gdbm-iter.py → gdbm_iter.py

@@ -1,8 +1,5 @@
-#!/usr/bin/env python3
 # depends (debian) python3-gdbm
 import dbm
-import sys
-list = sys.argv[1]
 
 def gdbm_iter_keys(dbpath):
     with dbm.open(dbpath, 'r') as db:
@@ -11,9 +8,3 @@ def gdbm_iter_keys(dbpath):
             yield k, db.get(k)
             k = db.nextkey(k)
 
-members = filter(lambda x: x[1], gdbm_iter_keys(list))
-
-for k, v in dict(members).items():
-    print(k.decode('utf-8'))
-    print(v.decode('utf-8'))
-