Skip to content

Commit c778786

Browse files
codebydivineclaude
andcommitted
fix: Fix mypy type errors by returning response.data instead of response
- All async methods in evm.py and svm.py now return response.data - This matches the pattern in base.py and fixes TypedResponse[T] vs T type mismatch - Add typing.Any import to simple.py and fix dict type annotation - Add pragma comments for false positive secrets in example code - Add type ignore for divine-requests import The remaining mypy errors about returning Any will be addressed once divine-requests library provides proper type stubs. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 8f47bb6 commit c778786

File tree

4 files changed

+25
-24
lines changed

4 files changed

+25
-24
lines changed

src/thegraph_token_api/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import os
88

99
# Import divine-requests (should be installed as a package)
10-
from requests import NetworkingManager
10+
from requests import NetworkingManager # type: ignore[attr-defined]
1111

1212
from .types import NetworksResponse, VersionResponse
1313

src/thegraph_token_api/evm.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class EVMTokenAPI(BaseTokenAPI):
4545
async def main():
4646
# Create EVM client for specific network
4747
async with EVMTokenAPI(
48-
api_key="your_bearer_token",
48+
api_key="your_bearer_token", # pragma: allowlist secret
4949
network=NetworkId.MAINNET
5050
) as evm_api:
5151
# All methods automatically use the configured network
@@ -101,7 +101,7 @@ async def get_nft_ownerships(
101101
params=params,
102102
expected_type=NFTOwnershipsResponse,
103103
)
104-
return response
104+
return response.data
105105

106106
async def get_nft_collection(self, contract: str) -> NFTCollectionsResponse:
107107
"""
@@ -121,7 +121,7 @@ async def get_nft_collection(self, contract: str) -> NFTCollectionsResponse:
121121
params=params,
122122
expected_type=NFTCollectionsResponse,
123123
)
124-
return response
124+
return response.data
125125

126126
async def get_nft_item(self, contract: str, token_id: str) -> NFTItemsResponse:
127127
"""
@@ -142,7 +142,7 @@ async def get_nft_item(self, contract: str, token_id: str) -> NFTItemsResponse:
142142
params=params,
143143
expected_type=NFTItemsResponse,
144144
)
145-
return response
145+
return response.data
146146

147147
async def get_nft_activities(
148148
self,
@@ -202,7 +202,7 @@ async def get_nft_activities(
202202
params=params,
203203
expected_type=NFTActivitiesResponse,
204204
)
205-
return response
205+
return response.data
206206

207207
async def get_nft_holders(self, contract: str) -> NFTHoldersResponse:
208208
"""
@@ -222,7 +222,7 @@ async def get_nft_holders(self, contract: str) -> NFTHoldersResponse:
222222
params=params,
223223
expected_type=NFTHoldersResponse,
224224
)
225-
return response
225+
return response.data
226226

227227
async def get_nft_sales(
228228
self,
@@ -283,7 +283,7 @@ async def get_nft_sales(
283283
response = await self.manager.get(
284284
f"{self.base_url}/nft/sales/evm", headers=self._headers, params=params, expected_type=NFTSalesResponse
285285
)
286-
return response
286+
return response.data
287287

288288
# ===== Balance Methods =====
289289

@@ -314,7 +314,7 @@ async def get_balances(
314314
expected_type=BalancesResponse,
315315
)
316316
# Return the full response object
317-
return response
317+
return response.data
318318

319319
# ===== Transfer Methods =====
320320

@@ -374,7 +374,7 @@ async def get_transfers(
374374
response = await self.manager.get(
375375
f"{self.base_url}/transfers/evm", headers=self._headers, params=params, expected_type=TransfersResponse
376376
)
377-
return response
377+
return response.data
378378

379379
# ===== Token Methods =====
380380

@@ -394,7 +394,7 @@ async def get_token(self, contract: str) -> TokensResponse:
394394
f"{self.base_url}/tokens/evm/{contract}", headers=self._headers, params=params, expected_type=TokensResponse
395395
)
396396
# Return the full response object
397-
return response
397+
return response.data
398398

399399
async def get_token_holders(
400400
self,
@@ -432,7 +432,7 @@ async def get_token_holders(
432432
params=params,
433433
expected_type=TokenHoldersResponse,
434434
)
435-
return response
435+
return response.data
436436

437437
# ===== Swap Methods =====
438438

@@ -501,7 +501,7 @@ async def get_swaps(
501501
f"{self.base_url}/swaps/evm", headers=self._headers, params=params, expected_type=SwapsResponse
502502
)
503503
# Return the full response object, since response is already the validated dict
504-
return response
504+
return response.data
505505

506506
# ===== Pool Methods =====
507507

@@ -547,7 +547,7 @@ async def get_pools(
547547
response = await self.manager.get(
548548
f"{self.base_url}/pools/evm", headers=self._headers, params=params, expected_type=PoolsResponse
549549
)
550-
return response
550+
return response.data
551551

552552
# ===== OHLC Methods =====
553553

@@ -585,7 +585,7 @@ async def get_ohlc_pools(
585585
response = await self.manager.get(
586586
f"{self.base_url}/ohlc/pools/evm/{pool}", headers=self._headers, params=params, expected_type=OHLCResponse
587587
)
588-
return response
588+
return response.data
589589

590590
async def get_ohlc_prices(
591591
self,
@@ -621,7 +621,7 @@ async def get_ohlc_prices(
621621
response = await self.manager.get(
622622
f"{self.base_url}/ohlc/prices/evm/{token}", headers=self._headers, params=params, expected_type=OHLCResponse
623623
)
624-
return response
624+
return response.data
625625

626626
# ===== Historical Methods =====
627627

@@ -666,4 +666,4 @@ async def get_historical_balances(
666666
params=params,
667667
expected_type=HistoricalBalancesResponse,
668668
)
669-
return response
669+
return response.data

src/thegraph_token_api/simple.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import os
1919
from datetime import datetime, timedelta
20+
from typing import Any
2021

2122
from dotenv import load_dotenv
2223

@@ -350,7 +351,7 @@ def __init__(
350351
self.evm = EVMWrapper(self)
351352
self.svm = SVMWrapper(self)
352353

353-
def _extract_data(self, response) -> list[dict]:
354+
def _extract_data(self, response) -> list[dict[Any, Any]]:
354355
"""Extract clean data from API response."""
355356
if hasattr(response, "data") and isinstance(response.data, dict):
356357
return response.data.get("data", [])

src/thegraph_token_api/svm.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,18 @@ class SVMTokenAPI(BaseTokenAPI):
3333
async def main():
3434
# Create SVM client for Solana
3535
async with SVMTokenAPI(
36-
api_key="your_bearer_token",
36+
api_key="your_bearer_token", # pragma: allowlist secret
3737
network=SolanaNetworkId.SOLANA
3838
) as svm_api:
3939
# Get SPL token balances
4040
balances = await svm_api.get_balances(
41-
token_account="4ct7br2vTPzfdmY3S5HLtTxcGSBfn6pnw98hsS6v359A"
41+
token_account="4ct7br2vTPzfdmY3S5HLtTxcGSBfn6pnw98hsS6v359A" # pragma: allowlist secret
4242
)
4343
4444
# Get swap transactions
4545
swaps = await svm_api.get_swaps(
4646
program_id=SwapPrograms.RAYDIUM,
47-
user="9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM"
47+
user="9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM" # pragma: allowlist secret
4848
)
4949
5050
anyio.run(main)
@@ -103,7 +103,7 @@ async def get_balances(
103103
response = await self.manager.get(
104104
f"{self.base_url}/balances/svm", headers=self._headers, params=params, expected_type=SolanaBalancesResponse
105105
)
106-
return response
106+
return response.data
107107

108108
# ===== Transfer Methods =====
109109

@@ -174,7 +174,7 @@ async def get_transfers(
174174
params=params,
175175
expected_type=SolanaTransfersResponse,
176176
)
177-
return response
177+
return response.data
178178

179179
# ===== Swap Methods =====
180180

@@ -245,4 +245,4 @@ async def get_swaps(
245245
response = await self.manager.get(
246246
f"{self.base_url}/swaps/svm", headers=self._headers, params=params, expected_type=SolanaSwapsResponse
247247
)
248-
return response
248+
return response.data

0 commit comments

Comments
 (0)