strideutils 0.8.7__tar.gz → 0.8.8__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {strideutils-0.8.7 → strideutils-0.8.8}/.bumpversion.cfg +1 -1
- {strideutils-0.8.7 → strideutils-0.8.8}/PKG-INFO +2 -1
- {strideutils-0.8.7 → strideutils-0.8.8}/pyproject.toml +2 -1
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/stride_requests.py +27 -6
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/stride_requests.pyi +2 -1
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils-stubs/stride_requests.pyi +2 -1
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils.egg-info/PKG-INFO +2 -1
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils.egg-info/requires.txt +1 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/.github/workflows/lint.yml +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/.github/workflows/publish.yml +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/.github/workflows/test.yml +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/.github/workflows/version.yaml +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/.gitignore +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/LICENSE +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/MANIFEST.in +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/Makefile +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/README.md +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/example-config.yaml +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/setup.cfg +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/Makefile +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/__init__.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/__init__.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/coingecko.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/coingecko.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/config_examples/env.local.example +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/config_examples/strideutils_config.yaml.example +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/cryptography.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/cryptography.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/exec_tx.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/exec_tx.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/py.typed +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/redis_connector.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/redis_connector.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/run_safely.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/run_safely.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/sheets_connector.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/sheets_connector.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/slack_connector.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/slack_connector.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/stride_alerts.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/stride_alerts.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/stride_config.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/stride_config.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/twilio_connector.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/twilio_connector.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/types.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils/types.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils-stubs/__init__.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils-stubs/coingecko.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils-stubs/cryptography.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils-stubs/exec_tx.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils-stubs/redis_connector.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils-stubs/run_safely.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils-stubs/sheets_connector.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils-stubs/slack_connector.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils-stubs/stride_alerts.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils-stubs/stride_config.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils-stubs/twilio_connector.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils-stubs/types.pyi +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils.egg-info/SOURCES.txt +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils.egg-info/dependency_links.txt +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/strideutils.egg-info/top_level.txt +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/tests/test_coingecko.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/tests/test_config.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/tests/test_encryption.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/tests/test_redis_connector.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/tests/test_sheets_connector.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/tests/test_slack_connector.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/tests/test_stride_requests.py +0 -0
- {strideutils-0.8.7 → strideutils-0.8.8}/tests/test_twilio_connector.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: strideutils
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.8
|
|
4
4
|
Summary: Utility functions for monitoring the Stride blockchain
|
|
5
5
|
Author-email: Stride Labs <hello@stridelabs.co>
|
|
6
6
|
License: MIT License
|
|
@@ -44,6 +44,7 @@ Requires-Dist: python-dotenv==1.0.1
|
|
|
44
44
|
Requires-Dist: pyyaml>=6.0.1
|
|
45
45
|
Requires-Dist: requests>=2.32.3
|
|
46
46
|
Requires-Dist: pycryptodome>=3.20.0
|
|
47
|
+
Requires-Dist: web3==7.6.1
|
|
47
48
|
Provides-Extra: dev
|
|
48
49
|
Requires-Dist: pytest>=8.1.1; extra == "dev"
|
|
49
50
|
Requires-Dist: mypy>=1.10.0; extra == "dev"
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "strideutils"
|
|
7
|
-
version = "0.8.
|
|
7
|
+
version = "0.8.8"
|
|
8
8
|
authors = [
|
|
9
9
|
{name = "Stride Labs", email = "hello@stridelabs.co"},
|
|
10
10
|
]
|
|
@@ -32,6 +32,7 @@ dependencies = [
|
|
|
32
32
|
"pyyaml>=6.0.1",
|
|
33
33
|
"requests>=2.32.3",
|
|
34
34
|
"pycryptodome>=3.20.0",
|
|
35
|
+
"web3==7.6.1"
|
|
35
36
|
]
|
|
36
37
|
|
|
37
38
|
[project.optional-dependencies]
|
|
@@ -11,6 +11,7 @@ import pandas as pd
|
|
|
11
11
|
import pytz
|
|
12
12
|
import requests
|
|
13
13
|
from requests.adapters import HTTPAdapter, Retry
|
|
14
|
+
from web3 import Web3
|
|
14
15
|
|
|
15
16
|
from strideutils import types
|
|
16
17
|
from strideutils.stride_config import config
|
|
@@ -58,6 +59,16 @@ COSMWASM_CONTRACT_QUERY = "cosmwasm/wasm/v1/contract/{contract_address}/smart/{q
|
|
|
58
59
|
CHANNELS_SUMMARY_QUERY_BY_HOST = "https://channels.main.stridenet.co/api/data/{chain_id}"
|
|
59
60
|
CHANNELS_SUMMARY_QUERY = "https://channels.main.stridenet.co/api/data"
|
|
60
61
|
|
|
62
|
+
ERC20_ABI = [
|
|
63
|
+
{
|
|
64
|
+
"constant": True,
|
|
65
|
+
"inputs": [{"name": "_owner", "type": "address"}],
|
|
66
|
+
"name": "balanceOf",
|
|
67
|
+
"outputs": [{"name": "balance", "type": "uint256"}],
|
|
68
|
+
"type": "function",
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
|
|
61
72
|
requests_session = requests.Session()
|
|
62
73
|
|
|
63
74
|
retries = Retry(total=5, backoff_factor=0.5, status_forcelist=[400, 403, 404, 500, 502, 503, 504])
|
|
@@ -1351,12 +1362,22 @@ def query_evm_method(method: str, params: list[str], rpc_endpoint: str) -> str:
|
|
|
1351
1362
|
return response["result"]
|
|
1352
1363
|
|
|
1353
1364
|
|
|
1354
|
-
def get_evm_balance(address: str, rpc_endpoint: str) -> int:
|
|
1365
|
+
def get_evm_balance(address: str, rpc_endpoint: str, token_address: str | None = None, decimals: int = 16) -> int:
|
|
1355
1366
|
"""
|
|
1356
|
-
Queries the native token balance of an evm address
|
|
1367
|
+
Queries the native or ERC20 token balance of an evm address
|
|
1357
1368
|
Address should be a hex address with an 0x prefix
|
|
1358
1369
|
"""
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1370
|
+
w3 = Web3(Web3.HTTPProvider(rpc_endpoint))
|
|
1371
|
+
assert w3.is_address(address), f"Invalid wallet address: {address}"
|
|
1372
|
+
assert not token_address or w3.is_address(token_address), f"Invalid token address: {token_address}"
|
|
1373
|
+
|
|
1374
|
+
wallet_address = Web3.to_checksum_address(address)
|
|
1375
|
+
|
|
1376
|
+
if not token_address:
|
|
1377
|
+
balance = w3.eth.get_balance(wallet_address)
|
|
1378
|
+
else:
|
|
1379
|
+
token_address = Web3.to_checksum_address(token_address)
|
|
1380
|
+
contract = w3.eth.contract(address=token_address, abi=ERC20_ABI)
|
|
1381
|
+
balance = contract.functions.balanceOf(wallet_address).call()
|
|
1382
|
+
|
|
1383
|
+
return balance / (10**decimals)
|
|
@@ -39,6 +39,7 @@ MULTISIG_REDEMPTION_RECORDS_QUERY: str
|
|
|
39
39
|
COSMWASM_CONTRACT_QUERY: str
|
|
40
40
|
CHANNELS_SUMMARY_QUERY_BY_HOST: str
|
|
41
41
|
CHANNELS_SUMMARY_QUERY: str
|
|
42
|
+
ERC20_ABI: Incomplete
|
|
42
43
|
requests_session: Incomplete
|
|
43
44
|
retries: Incomplete
|
|
44
45
|
|
|
@@ -95,4 +96,4 @@ def get_host_zone_channels(chain_id: str) -> dict[str, Any]: ...
|
|
|
95
96
|
def query_wasm_contract(contract_address: str, query_msg: dict, api_endpoint: str, block_height: int = 0) -> dict: ...
|
|
96
97
|
def get_module_accounts(api_endpoint: str = ...) -> list[dict]: ...
|
|
97
98
|
def query_evm_method(method: str, params: list[str], rpc_endpoint: str) -> str: ...
|
|
98
|
-
def get_evm_balance(address: str, rpc_endpoint: str) -> int: ...
|
|
99
|
+
def get_evm_balance(address: str, rpc_endpoint: str, token_address: str | None = None, decimals: int = 16) -> int: ...
|
|
@@ -41,6 +41,7 @@ MULTISIG_REDEMPTION_RECORDS_QUERY: str
|
|
|
41
41
|
COSMWASM_CONTRACT_QUERY: str
|
|
42
42
|
CHANNELS_SUMMARY_QUERY_BY_HOST: str
|
|
43
43
|
CHANNELS_SUMMARY_QUERY: str
|
|
44
|
+
ERC20_ABI: Incomplete
|
|
44
45
|
requests_session: Incomplete
|
|
45
46
|
retries: Incomplete
|
|
46
47
|
|
|
@@ -137,4 +138,4 @@ def get_host_zone_channels(chain_id: str) -> dict[str, Any]: ...
|
|
|
137
138
|
def query_wasm_contract(contract_address: str, query_msg: dict, api_endpoint: str, block_height: int = 0) -> dict: ...
|
|
138
139
|
def get_module_accounts(api_endpoint: str = ...) -> list[dict]: ...
|
|
139
140
|
def query_evm_method(method: str, params: list[str], rpc_endpoint: str) -> str: ...
|
|
140
|
-
def get_evm_balance(address: str, rpc_endpoint: str) -> int: ...
|
|
141
|
+
def get_evm_balance(address: str, rpc_endpoint: str, token_address: str | None = None, decimals: int = 16) -> int: ...
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: strideutils
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.8
|
|
4
4
|
Summary: Utility functions for monitoring the Stride blockchain
|
|
5
5
|
Author-email: Stride Labs <hello@stridelabs.co>
|
|
6
6
|
License: MIT License
|
|
@@ -44,6 +44,7 @@ Requires-Dist: python-dotenv==1.0.1
|
|
|
44
44
|
Requires-Dist: pyyaml>=6.0.1
|
|
45
45
|
Requires-Dist: requests>=2.32.3
|
|
46
46
|
Requires-Dist: pycryptodome>=3.20.0
|
|
47
|
+
Requires-Dist: web3==7.6.1
|
|
47
48
|
Provides-Extra: dev
|
|
48
49
|
Requires-Dist: pytest>=8.1.1; extra == "dev"
|
|
49
50
|
Requires-Dist: mypy>=1.10.0; extra == "dev"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{strideutils-0.8.7 → strideutils-0.8.8}/strideutils/config_examples/strideutils_config.yaml.example
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|