Skip to content

Commit 75c7b29

Browse files
committed
fix: fix IndexError when getting address
Fix the error and simlify rewards records creation. - Replaced manual list extension with itertools.chain for querying rewards - Combined reward and reward_rest queries into a single chain - Updated return statement to use address directly
1 parent e161901 commit 75c7b29

File tree

1 file changed

+9
-21
lines changed

1 file changed

+9
-21
lines changed

cardano_node_tests/utils/dbsync_utils.py

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Functionality for interacting with db-sync."""
22

33
import functools
4+
import itertools
45
import logging
56
import time
67
import typing as tp
@@ -26,42 +27,29 @@ def get_address_reward(
2627
2728
The `epoch_from` and `epoch_to` are epochs where the reward can be spent.
2829
"""
29-
rewards: list[dbsync_types.RewardEpochRecord] = []
30-
rewards.extend(
31-
dbsync_types.RewardEpochRecord(
32-
amount=int(db_row.amount),
33-
earned_epoch=db_row.earned_epoch,
34-
spendable_epoch=db_row.spendable_epoch,
35-
type=db_row.type,
36-
pool_id=db_row.pool_id or "",
37-
)
38-
for db_row in dbsync_queries.query_address_reward(
30+
rewards_out = itertools.chain(
31+
dbsync_queries.query_address_reward(
3932
address=address, epoch_from=epoch_from, epoch_to=epoch_to
40-
)
41-
)
42-
43-
reward_rest = list(
33+
),
4434
dbsync_queries.query_address_reward_rest(
4535
address=address, epoch_from=epoch_from, epoch_to=epoch_to
46-
)
36+
),
4737
)
48-
rewards.extend(
38+
rewards: list[dbsync_types.RewardEpochRecord] = [
4939
dbsync_types.RewardEpochRecord(
5040
amount=int(db_row.amount),
5141
earned_epoch=db_row.earned_epoch,
5242
spendable_epoch=db_row.spendable_epoch,
5343
type=db_row.type,
5444
pool_id=db_row.pool_id or "",
5545
)
56-
for db_row in reward_rest
57-
)
46+
for db_row in rewards_out
47+
]
5848
if not rewards:
5949
return dbsync_types.RewardRecord(address=address, reward_sum=0, rewards=[])
6050

6151
reward_sum = functools.reduce(lambda x, y: x + y.amount, rewards, 0)
62-
return dbsync_types.RewardRecord(
63-
address=reward_rest[-1].address, reward_sum=reward_sum, rewards=rewards
64-
)
52+
return dbsync_types.RewardRecord(address=address, reward_sum=reward_sum, rewards=rewards)
6553

6654

6755
def check_address_reward(

0 commit comments

Comments
 (0)