From 394f39eec5d14bf5b7e4c2c55c4f3175286f3394 Mon Sep 17 00:00:00 2001
From: Jean-Paul Calderone <exarkun@twistedmatrix.com>
Date: Mon, 29 Jun 2020 15:38:22 -0400
Subject: [PATCH] Split get_share_sizes into two useful pieces

---
 src/_zkapauthorizer/_storage_server.py | 28 +++++++++++++++++++++-----
 1 file changed, 23 insertions(+), 5 deletions(-)

diff --git a/src/_zkapauthorizer/_storage_server.py b/src/_zkapauthorizer/_storage_server.py
index cd6a765..ffe74b8 100644
--- a/src/_zkapauthorizer/_storage_server.py
+++ b/src/_zkapauthorizer/_storage_server.py
@@ -575,7 +575,25 @@ def get_all_share_numbers(storage_server, storage_index):
 
 def get_share_sizes(storage_server, storage_index_or_slot, sharenums):
     """
-    Get the sizes of the given share numbers for the given storage index *or*
+    Get sizes of the given share numbers for the given storage index *or*
+    slot.
+
+    :see: ``get_share_stats``
+
+    :return: A generator of tuples of (int, int) where the first element is a
+        share number and the second element is the data size for that share
+        number.
+    """
+    return (
+        (sharenum, stat.size)
+        for (sharenum, stat)
+        in get_share_stats(storage_server, storage_index_or_slot, sharenums)
+    )
+
+
+def get_share_stats(storage_server, storage_index_or_slot, sharenums):
+    """
+    Get the stats for the given share numbers for the given storage index *or*
     slot.
 
     :param allmydata.storage.server.StorageServer storage_server: The storage
@@ -589,16 +607,16 @@ def get_share_sizes(storage_server, storage_index_or_slot, sharenums):
         included in the result.  Or, ``None`` to get sizes for all shares
         which exist.
 
-    :return: A generator of tuples of (int, int) where the first element is a
-        share number and the second element is the data size for that share
-        number.
+    :return: A generator of tuples of (int, ShareStat) where the first element
+        is a share number and the second element gives stats about that share.
     """
     stat = None
     for sharenum, sharepath in get_all_share_paths(storage_server, storage_index_or_slot):
         if stat is None:
             stat = get_stat(sharepath)
         if sharenums is None or sharenum in sharenums:
-            yield sharenum, stat(storage_server, storage_index_or_slot, sharepath).size
+            info = stat(storage_server, storage_index_or_slot, sharepath)
+            yield sharenum, info
 
 
 def get_storage_index_share_size(sharepath):
-- 
GitLab