Skip to content

Commit 549cdc6

Browse files
codebydivineclaude
andcommitted
docs: Fix documentation coherence issues and implement missing methods
- Fix API_REFERENCE.md installation command to divine-thegraph-token-api - Implement 6 missing methods in simple.py: - NFTWrapper: item(), holders(), sales() - EVMWrapper: historical_balances() - TokenAPI: version(), networks() - Fix version consistency across documentation (0.1.21) - Fix GitHub workflow documentation typos - Remove sys.path hacks from all example files for cleaner imports - Add comprehensive backend implementations for new methods - Fix mypy return type annotations and pragma comments for crypto addresses - All tests pass with 98% coverage 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 552c204 commit 549cdc6

File tree

14 files changed

+129
-69
lines changed

14 files changed

+129
-69
lines changed

.github/workflows/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,11 @@ To run the same tests locally:
6565
pip install -e ".[dev]"
6666

6767
# Run tests with coverage
68-
pytest -v --cov=thegraph_thegraph_token_api --cov-report=term-missing
68+
pytest -v --cov=thegraph_token_api --cov-report=term-missing
6969

7070
# Run linting
7171
pip install ruff mypy
7272
ruff check .
7373
ruff format --check .
74-
mypy src/thegraph_thegraph_token_api --ignore-missing-imports
74+
mypy src/thegraph_token_api --ignore-missing-imports
7575
```

API_REFERENCE.md

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Complete technical documentation for The Graph Token API client with EVM and SVM
2727
### Installation
2828

2929
```bash
30-
pip install token-api
30+
pip install divine-thegraph-token-api
3131
```
3232

3333
### Basic Setup
@@ -698,11 +698,11 @@ Get Solana SPL token balances.
698698
balances = await api.svm.balances(limit=20)
699699

700700
# Get balances for specific mint (USDC)
701-
usdc_balances = await api.svm.balances(mint="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v")
701+
usdc_balances = await api.svm.balances(mint="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v # pragma: allowlist secret")
702702

703703
# Get Token 2022 program balances
704704
token_2022_balances = await api.svm.balances(
705-
program_id="TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" # or SolanaPrograms.TOKEN_2022
705+
program_id="TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb # pragma: allowlist secret" # or SolanaPrograms.TOKEN_2022
706706
)
707707
```
708708

@@ -714,9 +714,9 @@ token_2022_balances = await api.svm.balances(
714714
"block_num": 150000000.0,
715715
"datetime": "2023-11-01T12:00:00Z",
716716
"timestamp": 1698768000.0,
717-
"program_id": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
717+
"program_id": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA # pragma: allowlist secret",
718718
"token_account": "4ct7br2vTPzfdmY3S5HLtTxcGSBfn6pnw98hsS6v359A",
719-
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
719+
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v # pragma: allowlist secret",
720720
"amount": "1000000",
721721
"value": 1.0,
722722
"decimals": 6.0,
@@ -764,7 +764,7 @@ transfers = await api.svm.transfers(limit=10)
764764

765765
# Get transfers for USDC
766766
usdc_transfers = await api.svm.transfers(
767-
mint="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
767+
mint="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v # pragma: allowlist secret"
768768
)
769769

770770
# Get transfers by authority
@@ -774,7 +774,7 @@ authority_transfers = await api.svm.transfers(
774774

775775
# Get Token Program transfers
776776
token_transfers = await api.svm.transfers(
777-
program_id="TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" # or SolanaPrograms.TOKEN
777+
program_id="TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA # pragma: allowlist secret" # or SolanaPrograms.TOKEN
778778
)
779779
```
780780

@@ -809,19 +809,19 @@ Get Solana DEX swap transactions with time filtering support.
809809
```python
810810
# Get Raydium swaps
811811
raydium_swaps = await api.svm.swaps(
812-
program_id="675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", # or SwapPrograms.RAYDIUM
812+
program_id="675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 # pragma: allowlist secret", # or SwapPrograms.RAYDIUM
813813
limit=10
814814
)
815815

816816
# Get Orca swaps
817817
orca_swaps = await api.svm.swaps(
818-
program_id="6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P", # or SwapPrograms.ORCA
818+
program_id="6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P # pragma: allowlist secret", # or SwapPrograms.ORCA
819819
limit=5
820820
)
821821

822822
# Get Jupiter V6 swaps
823823
jupiter_swaps = await api.svm.swaps(
824-
program_id="JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" # or SwapPrograms.JUPITER_V6
824+
program_id="JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 # pragma: allowlist secret" # or SwapPrograms.JUPITER_V6
825825
)
826826

827827
# Get swaps for specific pool with time filtering
@@ -830,7 +830,7 @@ end_time = int(datetime.now().timestamp())
830830
start_time = int((datetime.now() - timedelta(minutes=30)).timestamp())
831831

832832
recent_swaps = await api.svm.swaps(
833-
program_id="675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", # or SwapPrograms.RAYDIUM
833+
program_id="675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 # pragma: allowlist secret", # or SwapPrograms.RAYDIUM
834834
amm_pool="H7zh7kBJY8cGHcbHgKpJgRC9vmQGf3Bk4m8fdbNdy3hL",
835835
start_time=start_time,
836836
end_time=end_time,
@@ -839,9 +839,9 @@ recent_swaps = await api.svm.swaps(
839839

840840
# Get SOL/USDC swaps
841841
sol_usdc_swaps = await api.svm.swaps(
842-
program_id="675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8", # or SwapPrograms.RAYDIUM
843-
input_mint="So11111111111111111111111111111111111111112", # SOL
844-
output_mint="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" # USDC
842+
program_id="675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 # pragma: allowlist secret", # or SwapPrograms.RAYDIUM
843+
input_mint="So11111111111111111111111111111111111111112 # pragma: allowlist secret", # SOL
844+
output_mint="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v # pragma: allowlist secret" # USDC
845845
)
846846
```
847847

@@ -856,20 +856,20 @@ sol_usdc_swaps = await api.svm.swaps(
856856
"transaction_index": 1,
857857
"instruction_index": 0,
858858
"signature": "5J8oyTo6W1tBKhEDE7RyT5RqPZkY8q1YWZXMFfPsxQktqxqX",
859-
"program_id": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8",
859+
"program_id": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 # pragma: allowlist secret",
860860
"program_name": "Raydium",
861861
"user": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
862862
"amm": "EYTBKuQnvjGx7LSDKPBQJbKb8Jw5YWPfMTtdqXRpK7zx",
863863
"amm_name": "Raydium AMM",
864864
"amm_pool": "H7zh7kBJY8cGHcbHgKpJgRC9vmQGf3Bk4m8fdbNdy3hL",
865865
"input_mint": {
866-
"address": "So11111111111111111111111111111111111111112",
866+
"address": "So11111111111111111111111111111111111111112 # pragma: allowlist secret",
867867
"symbol": "SOL",
868868
"decimals": 9.0
869869
},
870870
"input_amount": 1.5,
871871
"output_mint": {
872-
"address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
872+
"address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v # pragma: allowlist secret",
873873
"symbol": "USDC",
874874
"decimals": 6.0
875875
},
@@ -1030,15 +1030,15 @@ Protocol.UNISWAP_V3 # Uniswap V3
10301030

10311031
```python
10321032
# SPL Token Program IDs (use strings as they appear in API)
1033-
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" # SPL Token Program
1034-
"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb" # SPL Token 2022 Program
1033+
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA # pragma: allowlist secret" # SPL Token Program
1034+
"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb # pragma: allowlist secret" # SPL Token 2022 Program
10351035

10361036
# DEX Program IDs
1037-
"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8" # Raydium
1038-
"6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P" # Orca
1039-
"JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB" # Jupiter V4
1040-
"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4" # Jupiter V6
1041-
"pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA" # Pump.fun
1037+
"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8 # pragma: allowlist secret" # Raydium
1038+
"6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P # pragma: allowlist secret" # Orca
1039+
"JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB # pragma: allowlist secret" # Jupiter V4
1040+
"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 # pragma: allowlist secret" # Jupiter V6
1041+
"pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA # pragma: allowlist secret" # Pump.fun
10421042

10431043
# Or use enums for type safety
10441044
from thegraph_token_api import SolanaPrograms, SwapPrograms

examples/endpoints/evm/balances.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
#!/usr/bin/env python3
22
"""Token Balances Example - Get ERC-20 token balances."""
33

4-
import os
5-
import sys
6-
74
import anyio
85

9-
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "..", "src"))
106
from thegraph_token_api import TokenAPI
117

128

examples/endpoints/evm/health.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
#!/usr/bin/env python3
22
"""Health Check Example - Check API health and connectivity."""
33

4-
import os
5-
import sys
6-
74
import anyio
85

9-
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "..", "src"))
106
from thegraph_token_api import TokenAPI
117

128

examples/endpoints/evm/nfts.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
#!/usr/bin/env python3
22
"""NFT Example - Get NFT ownership, collection info, and activities."""
33

4-
import os
5-
import sys
6-
74
import anyio
85

9-
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "..", "src"))
106
from thegraph_token_api import TokenAPI
117

128

examples/endpoints/evm/prices.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
#!/usr/bin/env python3
22
"""Price History Example - Get OHLC price data."""
33

4-
import os
5-
import sys
64
from datetime import datetime
75

86
import anyio
97

10-
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "..", "src"))
118
from thegraph_token_api import Interval, TokenAPI
129

1310

@@ -21,7 +18,9 @@ async def main():
2118
# Get LINK token price history
2219
print("\nLINK Price History (7 days):")
2320
price_data = await api.evm.price_history(
24-
token="0x514910771AF9Ca656af840dff83E8264EcF986CA", interval=Interval.ONE_DAY, days=7
21+
token="0x514910771AF9Ca656af840dff83E8264EcF986CA", # pragma: allowlist secret
22+
interval=Interval.ONE_DAY,
23+
days=7,
2524
)
2625

2726
for candle in price_data[:5]:

examples/endpoints/evm/swaps.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
#!/usr/bin/env python3
22
"""DeFi Swaps Example - Get DEX swap transactions."""
33

4-
import os
5-
import sys
64
from datetime import datetime
75

86
import anyio
97

10-
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "..", "src"))
118
from thegraph_token_api import Protocol, TokenAPI
129

1310

examples/endpoints/evm/tokens.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
#!/usr/bin/env python3
22
"""Token Information Example - Get token metadata and holder data."""
33

4-
import os
5-
import sys
6-
74
import anyio
85

9-
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "..", "src"))
106
from thegraph_token_api import TokenAPI
117

128

examples/endpoints/evm/transfers.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
#!/usr/bin/env python3
22
"""Token Transfers Example - Get token transfer events."""
33

4-
import os
5-
import sys
64
from datetime import datetime
75

86
import anyio
97

10-
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "..", "src"))
118
from thegraph_token_api import TokenAPI
129

1310

examples/endpoints/svm/balances.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
#!/usr/bin/env python3
22
"""Solana SPL Token Balances Example - Get SPL token balances."""
33

4-
import os
5-
import sys
6-
74
import anyio
85

9-
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "..", "src"))
106
from thegraph_token_api import SolanaPrograms, TokenAPI
117

128

0 commit comments

Comments
 (0)