Skip to content

Commit 6a9e6b6

Browse files
committed
- Replaced gqlFetchWithRetry with customGqlFetch in TypeScript and Python SDKs to handle subgraph requests with retry logic for bad indexer errors.
- Updated interfaces to rename SubgraphRetryConfig to SubgraphOptions for better clarity. - Generated changeset for new changes
1 parent 6b58513 commit 6a9e6b6

File tree

27 files changed

+260
-256
lines changed

27 files changed

+260
-256
lines changed

.changeset/wide-sites-pull.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@human-protocol/sdk": minor
3+
"@human-protocol/python-sdk": minor
4+
---
5+
6+
Added new optional config for querying subgraph with retries when failuers are due to bad indexers errors in Python and Typescript SDK

packages/sdk/python/human-protocol-sdk/human_protocol_sdk/escrow/escrow_utils.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
)
4040
from human_protocol_sdk.utils import (
4141
SubgraphRetryConfig,
42-
get_data_from_subgraph,
42+
custom_gql_fetch,
4343
)
4444

4545
from human_protocol_sdk.escrow.escrow_client import EscrowClientError
@@ -260,7 +260,7 @@ def get_escrows(
260260
else:
261261
statuses = [filter.status.name]
262262

263-
escrows_data = get_data_from_subgraph(
263+
escrows_data = custom_gql_fetch(
264264
network,
265265
query=get_escrows_query(filter),
266266
params={
@@ -373,7 +373,7 @@ def get_escrow(
373373

374374
network = NETWORKS[ChainId(chain_id)]
375375

376-
escrow_data = get_data_from_subgraph(
376+
escrow_data = custom_gql_fetch(
377377
network,
378378
query=get_escrow_query(),
379379
params={
@@ -446,7 +446,7 @@ def get_status_events(
446446

447447
status_names = [status.name for status in filter.statuses]
448448

449-
data = get_data_from_subgraph(
449+
data = custom_gql_fetch(
450450
network,
451451
get_status_query(filter.date_from, filter.date_to, filter.launcher),
452452
{
@@ -510,7 +510,7 @@ def get_payouts(
510510
if not network:
511511
raise EscrowClientError("Unsupported Chain ID")
512512

513-
data = get_data_from_subgraph(
513+
data = custom_gql_fetch(
514514
network,
515515
get_payouts_query(filter),
516516
{
@@ -577,7 +577,7 @@ def get_cancellation_refunds(
577577
if not network:
578578
raise EscrowClientError("Unsupported Chain ID")
579579

580-
data = get_data_from_subgraph(
580+
data = custom_gql_fetch(
581581
network,
582582
get_cancellation_refunds_query(filter),
583583
{
@@ -658,7 +658,7 @@ def get_cancellation_refund(
658658
if not network:
659659
raise EscrowClientError("Unsupported Chain ID")
660660

661-
data = get_data_from_subgraph(
661+
data = custom_gql_fetch(
662662
network,
663663
get_cancellation_refund_by_escrow_query(),
664664
{

packages/sdk/python/human-protocol-sdk/human_protocol_sdk/kvstore/kvstore_utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import requests
3030

3131
from human_protocol_sdk.constants import NETWORKS, ChainId, KVStoreKeys
32-
from human_protocol_sdk.utils import SubgraphRetryConfig, get_data_from_subgraph
32+
from human_protocol_sdk.utils import SubgraphRetryConfig, custom_gql_fetch
3333

3434
from human_protocol_sdk.kvstore.kvstore_client import KVStoreClientError
3535

@@ -90,7 +90,7 @@ def get_kvstore_data(
9090

9191
network = NETWORKS[ChainId(chain_id)]
9292

93-
kvstore_data = get_data_from_subgraph(
93+
kvstore_data = custom_gql_fetch(
9494
network,
9595
query=get_kvstore_by_address_query(),
9696
params={
@@ -151,7 +151,7 @@ def get(
151151

152152
network = NETWORKS[ChainId(chain_id)]
153153

154-
kvstore_data = get_data_from_subgraph(
154+
kvstore_data = custom_gql_fetch(
155155
network,
156156
query=get_kvstore_by_address_and_key_query(),
157157
params={

packages/sdk/python/human-protocol-sdk/human_protocol_sdk/operator/operator_utils.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
from human_protocol_sdk.constants import NETWORKS, ChainId, OrderDirection
2727
from human_protocol_sdk.gql.reward import get_reward_added_events_query
28-
from human_protocol_sdk.utils import SubgraphRetryConfig, get_data_from_subgraph
28+
from human_protocol_sdk.utils import SubgraphRetryConfig, custom_gql_fetch
2929
from web3 import Web3
3030

3131
LOG = logging.getLogger("human_protocol_sdk.operator")
@@ -230,7 +230,7 @@ def get_operators(
230230
if not network.get("subgraph_url"):
231231
return []
232232

233-
operators_data = get_data_from_subgraph(
233+
operators_data = custom_gql_fetch(
234234
network,
235235
query=get_operators_query(filter),
236236
params={
@@ -321,7 +321,7 @@ def get_operator(
321321

322322
network = NETWORKS[chain_id]
323323

324-
operator_data = get_data_from_subgraph(
324+
operator_data = custom_gql_fetch(
325325
network,
326326
query=get_operator_query,
327327
params={"address": operator_address.lower()},
@@ -401,7 +401,7 @@ def get_reputation_network_operators(
401401

402402
network = NETWORKS[chain_id]
403403

404-
reputation_network_data = get_data_from_subgraph(
404+
reputation_network_data = custom_gql_fetch(
405405
network,
406406
query=get_reputation_network_query(role),
407407
params={"address": address.lower(), "role": role},
@@ -483,7 +483,7 @@ def get_rewards_info(
483483

484484
network = NETWORKS[chain_id]
485485

486-
reward_added_events_data = get_data_from_subgraph(
486+
reward_added_events_data = custom_gql_fetch(
487487
network,
488488
query=get_reward_added_events_query,
489489
params={"slasherAddress": slasher.lower()},

packages/sdk/python/human-protocol-sdk/human_protocol_sdk/staking/staking_utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
from typing import List, Optional
3131
from human_protocol_sdk.constants import NETWORKS, ChainId
3232
from human_protocol_sdk.filter import StakersFilter
33-
from human_protocol_sdk.utils import SubgraphRetryConfig, get_data_from_subgraph
33+
from human_protocol_sdk.utils import SubgraphRetryConfig, custom_gql_fetch
3434
from human_protocol_sdk.gql.staking import get_staker_query, get_stakers_query
3535

3636

@@ -71,7 +71,7 @@ def get_staker(
7171
if not network:
7272
raise StakingUtilsError("Unsupported Chain ID")
7373

74-
data = get_data_from_subgraph(
74+
data = custom_gql_fetch(
7575
network,
7676
query=get_staker_query(),
7777
params={"id": address.lower()},
@@ -106,7 +106,7 @@ def get_stakers(
106106
if not network_data:
107107
raise StakingUtilsError("Unsupported Chain ID")
108108

109-
data = get_data_from_subgraph(
109+
data = custom_gql_fetch(
110110
network_data,
111111
query=get_stakers_query(filter),
112112
params={

packages/sdk/python/human-protocol-sdk/human_protocol_sdk/statistics/statistics_client.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
from human_protocol_sdk.constants import ChainId, NETWORKS
2424

25-
from human_protocol_sdk.utils import SubgraphRetryConfig, get_data_from_subgraph
25+
from human_protocol_sdk.utils import SubgraphRetryConfig, custom_gql_fetch
2626
from human_protocol_sdk.filter import StatisticsFilter
2727

2828
LOG = logging.getLogger("human_protocol_sdk.statistics")
@@ -326,14 +326,14 @@ def get_escrow_statistics(
326326
get_escrow_statistics_query,
327327
)
328328

329-
escrow_statistics_data = get_data_from_subgraph(
329+
escrow_statistics_data = custom_gql_fetch(
330330
self.network,
331331
query=get_escrow_statistics_query,
332332
retry_config=retry_config,
333333
)
334334
escrow_statistics = escrow_statistics_data["data"]["escrowStatistics"]
335335

336-
event_day_datas_data = get_data_from_subgraph(
336+
event_day_datas_data = custom_gql_fetch(
337337
self.network,
338338
query=get_event_day_data_query(filter),
339339
params={
@@ -407,7 +407,7 @@ def get_worker_statistics(
407407
get_event_day_data_query,
408408
)
409409

410-
event_day_datas_data = get_data_from_subgraph(
410+
event_day_datas_data = custom_gql_fetch(
411411
self.network,
412412
query=get_event_day_data_query(filter),
413413
params={
@@ -469,7 +469,7 @@ def get_payment_statistics(
469469
get_event_day_data_query,
470470
)
471471

472-
event_day_datas_data = get_data_from_subgraph(
472+
event_day_datas_data = custom_gql_fetch(
473473
self.network,
474474
query=get_event_day_data_query(filter),
475475
params={
@@ -528,7 +528,7 @@ def get_hmt_statistics(
528528
get_hmtoken_statistics_query,
529529
)
530530

531-
hmtoken_statistics_data = get_data_from_subgraph(
531+
hmtoken_statistics_data = custom_gql_fetch(
532532
self.network,
533533
query=get_hmtoken_statistics_query,
534534
retry_config=retry_config,
@@ -577,7 +577,7 @@ def get_hmt_holders(
577577
"""
578578
from human_protocol_sdk.gql.hmtoken import get_holders_query
579579

580-
holders_data = get_data_from_subgraph(
580+
holders_data = custom_gql_fetch(
581581
self.network,
582582
query=get_holders_query(address=param.address),
583583
params={
@@ -632,7 +632,7 @@ def get_hmt_daily_data(
632632
get_event_day_data_query,
633633
)
634634

635-
event_day_datas_data = get_data_from_subgraph(
635+
event_day_datas_data = custom_gql_fetch(
636636
self.network,
637637
query=get_event_day_data_query(filter),
638638
params={

packages/sdk/python/human-protocol-sdk/human_protocol_sdk/transaction/transaction_utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
from human_protocol_sdk.constants import NETWORKS, ChainId
3131
from web3 import Web3
3232
from human_protocol_sdk.filter import TransactionFilter
33-
from human_protocol_sdk.utils import SubgraphRetryConfig, get_data_from_subgraph
33+
from human_protocol_sdk.utils import SubgraphRetryConfig, custom_gql_fetch
3434

3535

3636
class InternalTransaction:
@@ -127,7 +127,7 @@ def get_transaction(
127127

128128
from human_protocol_sdk.gql.transaction import get_transaction_query
129129

130-
transaction_data = get_data_from_subgraph(
130+
transaction_data = custom_gql_fetch(
131131
network,
132132
query=get_transaction_query(),
133133
params={"hash": hash.lower()},
@@ -207,7 +207,7 @@ def get_transactions(
207207
if not network_data:
208208
raise TransactionUtilsError("Unsupported Chain ID")
209209

210-
data = get_data_from_subgraph(
210+
data = custom_gql_fetch(
211211
network_data,
212212
query=get_transactions_query(filter),
213213
params={

packages/sdk/python/human-protocol-sdk/human_protocol_sdk/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def is_indexer_error(error: Exception) -> bool:
7474
return "bad indexers" in message.lower()
7575

7676

77-
def get_data_from_subgraph(
77+
def custom_gql_fetch(
7878
network: dict,
7979
query: str,
8080
params: dict = None,

packages/sdk/python/human-protocol-sdk/human_protocol_sdk/worker/worker_utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from web3 import Web3
55

66
from human_protocol_sdk.constants import NETWORKS, ChainId
7-
from human_protocol_sdk.utils import SubgraphRetryConfig, get_data_from_subgraph
7+
from human_protocol_sdk.utils import SubgraphRetryConfig, custom_gql_fetch
88
from human_protocol_sdk.filter import WorkerFilter
99

1010
LOG = logging.getLogger("human_protocol_sdk.worker")
@@ -66,7 +66,7 @@ def get_workers(
6666
if not network:
6767
raise WorkerUtilsError("Unsupported Chain ID")
6868

69-
workers_data = get_data_from_subgraph(
69+
workers_data = custom_gql_fetch(
7070
network,
7171
query=get_workers_query(filter),
7272
params={
@@ -126,7 +126,7 @@ def get_worker(
126126
raise WorkerUtilsError(f"Invalid operator address: {worker_address}")
127127

128128
network = NETWORKS[chain_id]
129-
worker_data = get_data_from_subgraph(
129+
worker_data = custom_gql_fetch(
130130
network,
131131
query=get_worker_query(),
132132
params={"address": worker_address.lower()},

0 commit comments

Comments
 (0)