Skip to content

Commit 02ceda2

Browse files
committed
feat: cleanup threadpool
1 parent 82a9bec commit 02ceda2

File tree

2 files changed

+20
-13
lines changed

2 files changed

+20
-13
lines changed

src/sasctl/core.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1529,6 +1529,13 @@ def __init__(self, obj, session=None, threads=4):
15291529
# Store the current items to iterate over
15301530
self._obj = obj
15311531

1532+
def __enter__(self):
1533+
return self
1534+
1535+
def __exit__(self, exc_type, exc_val, exc_tb):
1536+
if self._pool is not None:
1537+
self._pool.shutdown(wait=False, cancel_futures=True)
1538+
15321539
def __next__(self):
15331540
if self._pool is None:
15341541
self._pool = concurrent.futures.ThreadPoolExecutor(

tests/unit/test_pageiterator.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -62,16 +62,16 @@ def test_paging_required(paging):
6262
"""Requests should be made to retrieve additional pages."""
6363
obj, items, _ = paging
6464

65-
pager = PageIterator(obj)
66-
init_count = pager._start
67-
68-
for i, page in enumerate(pager):
69-
for j, item in enumerate(page):
70-
if i == 0:
71-
item_idx = j
72-
else:
73-
# Account for initial page size not necessarily being same size
74-
# as additional pages
75-
item_idx = init_count + (i - 1) * pager._limit + j
76-
target = RestObj(items[item_idx])
77-
assert item.name == target.name
65+
with PageIterator(obj) as pager:
66+
init_count = pager._start
67+
68+
for i, page in enumerate(pager):
69+
for j, item in enumerate(page):
70+
if i == 0:
71+
item_idx = j
72+
else:
73+
# Account for initial page size not necessarily being same size
74+
# as additional pages
75+
item_idx = init_count + (i - 1) * pager._limit + j
76+
target = RestObj(items[item_idx])
77+
assert item.name == target.name

0 commit comments

Comments
 (0)