strideutils 0.2.8__tar.gz → 0.2.10__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.2.8 → strideutils-0.2.10}/PKG-INFO +1 -1
- {strideutils-0.2.8 → strideutils-0.2.10}/pyproject.toml +12 -2
- strideutils-0.2.10/strideutils/__init__.py +0 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/strideutils/stride_requests.py +17 -5
- strideutils-0.2.10/strideutils-stubs/coingecko.pyi +7 -0
- strideutils-0.2.10/strideutils-stubs/cryptography.pyi +2 -0
- strideutils-0.2.10/strideutils-stubs/exec_tx.pyi +15 -0
- strideutils-0.2.10/strideutils-stubs/invariant_helpers.pyi +5 -0
- strideutils-0.2.10/strideutils-stubs/run_safely.pyi +5 -0
- strideutils-0.2.10/strideutils-stubs/sheets_connector.pyi +13 -0
- strideutils-0.2.10/strideutils-stubs/slack_connector.pyi +3 -0
- strideutils-0.2.10/strideutils-stubs/stride_alerts.pyi +19 -0
- strideutils-0.2.10/strideutils-stubs/stride_config.pyi +109 -0
- strideutils-0.2.10/strideutils-stubs/stride_requests.pyi +66 -0
- strideutils-0.2.10/strideutils-stubs/stride_upstash.pyi +10 -0
- strideutils-0.2.10/strideutils-stubs/twilio_connector.pyi +9 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/README.md +0 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/strideutils/Makefile +0 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/strideutils/coingecko.py +0 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/strideutils/config_examples/strideutils_config.yaml.example +0 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/strideutils/config_examples/strideutils_secrets.yaml.example +0 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/strideutils/cryptography.py +0 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/strideutils/exec_tx.py +0 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/strideutils/invariant_helpers.py +0 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/strideutils/run_safely.py +0 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/strideutils/sheets_connector.py +0 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/strideutils/slack_connector.py +0 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/strideutils/stride_alerts.py +0 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/strideutils/stride_config.py +0 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/strideutils/stride_upstash.py +0 -0
- {strideutils-0.2.8 → strideutils-0.2.10}/strideutils/twilio_connector.py +0 -0
- /strideutils-0.2.8/strideutils/__init__.py → /strideutils-0.2.10/strideutils-stubs/__init__.pyi +0 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "strideutils"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.10"
|
|
4
4
|
description = ""
|
|
5
5
|
authors = ["Your Name <you@example.com>"]
|
|
6
6
|
readme = "README.md"
|
|
7
|
+
include = ["strideutils", "strideutils-stubs"]
|
|
7
8
|
|
|
8
9
|
[tool.poetry.dependencies]
|
|
9
10
|
python = ">=3.9"
|
|
@@ -24,9 +25,18 @@ pyyaml = ">=6.0.1"
|
|
|
24
25
|
python-dateutil = ">=2.8.2"
|
|
25
26
|
pycryptodome = ">=3.20.0"
|
|
26
27
|
|
|
27
|
-
|
|
28
28
|
[tool.poetry.group.dev.dependencies]
|
|
29
29
|
pytest = "^8.1.1"
|
|
30
|
+
mypy = "^1.10.0"
|
|
31
|
+
flake8 = "^7.0.0"
|
|
32
|
+
black = "^24.4.1"
|
|
33
|
+
types-pyyaml = "^6.0.12.20240311"
|
|
34
|
+
twilio-stubs = "^0.2.0"
|
|
35
|
+
pandas-stubs = "^2.2.1.240316"
|
|
36
|
+
types-tabulate = "^0.9.0.20240106"
|
|
37
|
+
types-openpyxl = "^3.1.0.20240408"
|
|
38
|
+
types-python-dateutil = "^2.9.0.20240316"
|
|
39
|
+
types-requests = "^2.31.0.20240406"
|
|
30
40
|
|
|
31
41
|
[build-system]
|
|
32
42
|
requires = ["poetry-core"]
|
|
File without changes
|
|
@@ -22,6 +22,8 @@ ACCOUNT_DELEGATIONS_QUERY = "cosmos/staking/v1beta1/delegations/{delegator_addre
|
|
|
22
22
|
ACCOUNT_UNBONDINGS_QUERY = "cosmos/staking/v1beta1/delegators/{delegator_address}/unbonding_delegations"
|
|
23
23
|
MODULE_ACCOUNTS_QUERY = "cosmos/auth/v1beta1/module_accounts"
|
|
24
24
|
SUPPLY_QUERY = "cosmos/bank/v1beta1/supply/by_denom"
|
|
25
|
+
VALIDATORS_QUERY = "cosmos/staking/v1beta1/validators"
|
|
26
|
+
VALIDATOR_SLASHES_QUERY = "cosmos/distribution/v1beta1/validators/{validator_address}/slashes"
|
|
25
27
|
|
|
26
28
|
CONNECTION_QUERY = "ibc/core/connection/v1/connections/{connection_id}"
|
|
27
29
|
CHANNELS_QUERY = "ibc/core/channel/v1/connections/{connection_id}/channels"
|
|
@@ -101,6 +103,7 @@ def query_list_with_pagination(
|
|
|
101
103
|
rel_key: str,
|
|
102
104
|
block_height: int = 0,
|
|
103
105
|
max_pages: int = 50,
|
|
106
|
+
params: Union[dict, List[Tuple[str, str]]] = {},
|
|
104
107
|
) -> List[Dict]:
|
|
105
108
|
"""
|
|
106
109
|
Query a list with pagination
|
|
@@ -111,7 +114,7 @@ def query_list_with_pagination(
|
|
|
111
114
|
query_count = 0
|
|
112
115
|
|
|
113
116
|
while True:
|
|
114
|
-
res = request(url=query_url, block_height=block_height)
|
|
117
|
+
res = request(url=query_url, block_height=block_height, params=params)
|
|
115
118
|
data += res[rel_key]
|
|
116
119
|
|
|
117
120
|
query_count += 1
|
|
@@ -393,16 +396,25 @@ def get_rate_limits(**kwargs):
|
|
|
393
396
|
return host_zone
|
|
394
397
|
|
|
395
398
|
|
|
396
|
-
def get_validators(
|
|
397
|
-
api_endpoint: str = config.stride.api_endpoint,
|
|
398
|
-
) -> List[Dict[str, Any]]:
|
|
399
|
+
def get_validators(api_endpoint: str = config.stride.api_endpoint) -> List[Dict[str, Any]]:
|
|
399
400
|
"""
|
|
400
401
|
Queries the list of validators from a chain
|
|
401
402
|
"""
|
|
402
|
-
url = f"{api_endpoint}/
|
|
403
|
+
url = f"{api_endpoint}/{VALIDATORS_QUERY}"
|
|
403
404
|
return query_list_with_pagination(url, rel_key="validators")
|
|
404
405
|
|
|
405
406
|
|
|
407
|
+
def get_validator_slashes(api_endpoint: str, validator_address: str) -> List[Dict[str, str]]:
|
|
408
|
+
"""
|
|
409
|
+
Queries the list of all slashes for a particular validator
|
|
410
|
+
The start and end heights are required with the query
|
|
411
|
+
An arbitrarily large end height to get all slashes
|
|
412
|
+
"""
|
|
413
|
+
url = f"{api_endpoint}/{VALIDATOR_SLASHES_QUERY.format(validator_address=validator_address)}"
|
|
414
|
+
params = {"starting_height": "0", "ending_height": "10000000000000000"}
|
|
415
|
+
return query_list_with_pagination(url, rel_key="slashes", params=params)
|
|
416
|
+
|
|
417
|
+
|
|
406
418
|
def get_redemption_rate(token: str) -> float:
|
|
407
419
|
"""
|
|
408
420
|
Queries the redemption rate for a particular token
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from strideutils import stride_requests as stride_requests
|
|
3
|
+
from strideutils.stride_config import config as config
|
|
4
|
+
|
|
5
|
+
@dataclass
|
|
6
|
+
class TxResponse:
|
|
7
|
+
stdout: str
|
|
8
|
+
stderr: str
|
|
9
|
+
tx_response: dict | None = ...
|
|
10
|
+
tx_hash: str | None = ...
|
|
11
|
+
success: bool = ...
|
|
12
|
+
raw_log: str | None = ...
|
|
13
|
+
def __init__(self, stdout, stderr, tx_response=..., tx_hash=..., success=..., raw_log=...) -> None: ...
|
|
14
|
+
|
|
15
|
+
def execute_tx(command: str, api_endpoint: str = ...) -> TxResponse: ...
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
from strideutils import slack_connector as slack_connector
|
|
2
|
+
from strideutils.stride_config import config as config
|
|
3
|
+
from typing import Callable
|
|
4
|
+
|
|
5
|
+
def try_and_log_with_status(*functions: Callable, slack_channel: str = 'alerts-status', job_name: str = 'alerts', botname: str | None = None): ...
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import gspread
|
|
2
|
+
import pandas as pd
|
|
3
|
+
from _typeshed import Incomplete
|
|
4
|
+
from strideutils.stride_config import config as config
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
SCOPES: Incomplete
|
|
8
|
+
|
|
9
|
+
def get_auth(scopes: tuple[str, ...] = ..., service: str = 'sheets', version: str = 'v4'): ...
|
|
10
|
+
def grab_sheet(sheet_id: str, sheet_name: str, columns_labeled: bool = True, worksheet: gspread.Worksheet | None = None, scopes: tuple[str, ...] = ..., _cache: dict[str, Any] = {}) -> pd.DataFrame: ...
|
|
11
|
+
def write_sheet(df: pd.DataFrame, sheet_id: str, sheet_name: str, worksheet: gspread.Worksheet | None = None, scopes: tuple[str, ...] = ...): ...
|
|
12
|
+
def reorder_sheet(sheet_id: str, sheet_name: str, new_location: int = 0, scopes: tuple[str, ...] = ...): ...
|
|
13
|
+
def get_sheet_names(sheet_id: str, scopes: tuple[str, ...] = ...) -> list[str]: ...
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import pandas as pd
|
|
2
|
+
from enum import Enum
|
|
3
|
+
from strideutils import slack_connector as slack_connector, twilio_connector as twilio_connector
|
|
4
|
+
from strideutils.stride_config import config as config
|
|
5
|
+
from typing import Callable, Iterable
|
|
6
|
+
|
|
7
|
+
class AlertType(Enum):
|
|
8
|
+
DEBUG: str
|
|
9
|
+
INFO: str
|
|
10
|
+
WARNING: str
|
|
11
|
+
CRITICAL: str
|
|
12
|
+
|
|
13
|
+
def get_tags(individuals: str | Iterable[str]) -> str: ...
|
|
14
|
+
def df_to_message_body(df: pd.DataFrame) -> str: ...
|
|
15
|
+
def wrap_in_code_block(message: str) -> str: ...
|
|
16
|
+
def notify(msgs: str | list[str], urgency, tag: str | Iterable[str] | None = None, call: str | Iterable[str] | None = None, beta_alert: bool = False, debug_readme_section: str = '') -> None: ...
|
|
17
|
+
def raise_alert(urgency: AlertType | str, tag: str | Iterable[str] | None = None, call: str | Iterable[str] | None = None, beta_alert: bool = False, debug_readme_section: str = '') -> Callable: ...
|
|
18
|
+
def run_daily(utc_hour_or_alert: int | Callable) -> Callable: ...
|
|
19
|
+
def run_epochly(f: Callable) -> Callable: ...
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import yaml
|
|
2
|
+
from _typeshed import Incomplete
|
|
3
|
+
from collections.abc import Generator
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
|
|
6
|
+
MISSING_CONFIG_MSG: str
|
|
7
|
+
ENV: Incomplete
|
|
8
|
+
|
|
9
|
+
class ConfigObj:
|
|
10
|
+
def __getattr__(self, name) -> None: ...
|
|
11
|
+
def __getattribute__(self, name): ...
|
|
12
|
+
def __iter__(self): ...
|
|
13
|
+
|
|
14
|
+
class ConfigDict(dict):
|
|
15
|
+
def __getitem__(self, key): ...
|
|
16
|
+
|
|
17
|
+
class Loader(yaml.FullLoader):
|
|
18
|
+
def construct_yaml_map(self, node) -> Generator[Incomplete, None, None]: ...
|
|
19
|
+
|
|
20
|
+
@dataclass(repr=False)
|
|
21
|
+
class ChainConfig(ConfigObj):
|
|
22
|
+
name: str = ...
|
|
23
|
+
id: str = ...
|
|
24
|
+
coingecko_name: str = ...
|
|
25
|
+
denom: str = ...
|
|
26
|
+
denom_decimals: int = ...
|
|
27
|
+
inflation_frequency_hours: int = ...
|
|
28
|
+
ticker: str = ...
|
|
29
|
+
stride_token_hash: str = ...
|
|
30
|
+
api_endpoint: str = ...
|
|
31
|
+
rpc_endpoint: str = ...
|
|
32
|
+
library_api: str = ...
|
|
33
|
+
library_rpc: str = ...
|
|
34
|
+
def __init__(self, name=..., id=..., coingecko_name=..., denom=..., denom_decimals=..., inflation_frequency_hours=..., ticker=..., stride_token_hash=..., api_endpoint=..., rpc_endpoint=..., library_api=..., library_rpc=...) -> None: ...
|
|
35
|
+
|
|
36
|
+
@dataclass(repr=False)
|
|
37
|
+
class HostZoneChainConfig(ConfigObj):
|
|
38
|
+
cosmoshub: ChainConfig = ...
|
|
39
|
+
osmosis: ChainConfig = ...
|
|
40
|
+
evmos: ChainConfig = ...
|
|
41
|
+
injective: ChainConfig = ...
|
|
42
|
+
juno: ChainConfig = ...
|
|
43
|
+
stargaze: ChainConfig = ...
|
|
44
|
+
terra: ChainConfig = ...
|
|
45
|
+
umee: ChainConfig = ...
|
|
46
|
+
comdex: ChainConfig = ...
|
|
47
|
+
sommelier: ChainConfig = ...
|
|
48
|
+
dydx: ChainConfig = ...
|
|
49
|
+
saga: ChainConfig = ...
|
|
50
|
+
def __init__(self, cosmoshub=..., osmosis=..., evmos=..., injective=..., juno=..., stargaze=..., terra=..., umee=..., comdex=..., sommelier=..., dydx=..., saga=...) -> None: ...
|
|
51
|
+
|
|
52
|
+
@dataclass(repr=False)
|
|
53
|
+
class AppConfig(ConfigObj):
|
|
54
|
+
neutron: ChainConfig = ...
|
|
55
|
+
kava: ChainConfig = ...
|
|
56
|
+
iris: ChainConfig = ...
|
|
57
|
+
akash: ChainConfig = ...
|
|
58
|
+
sentinel: ChainConfig = ...
|
|
59
|
+
persistence: ChainConfig = ...
|
|
60
|
+
cryptoorg: ChainConfig = ...
|
|
61
|
+
kichain: ChainConfig = ...
|
|
62
|
+
bitcanna: ChainConfig = ...
|
|
63
|
+
regen: ChainConfig = ...
|
|
64
|
+
gravity: ChainConfig = ...
|
|
65
|
+
desmos: ChainConfig = ...
|
|
66
|
+
chihuahua: ChainConfig = ...
|
|
67
|
+
secret: ChainConfig = ...
|
|
68
|
+
axelar: ChainConfig = ...
|
|
69
|
+
crescent: ChainConfig = ...
|
|
70
|
+
mantle: ChainConfig = ...
|
|
71
|
+
mars: ChainConfig = ...
|
|
72
|
+
canto: ChainConfig = ...
|
|
73
|
+
agoric: ChainConfig = ...
|
|
74
|
+
celestia: ChainConfig = ...
|
|
75
|
+
dymension: ChainConfig = ...
|
|
76
|
+
def __init__(self, neutron=..., kava=..., iris=..., akash=..., sentinel=..., persistence=..., cryptoorg=..., kichain=..., bitcanna=..., regen=..., gravity=..., desmos=..., chihuahua=..., secret=..., axelar=..., crescent=..., mantle=..., mars=..., canto=..., agoric=..., celestia=..., dymension=...) -> None: ...
|
|
77
|
+
|
|
78
|
+
@dataclass(repr=False)
|
|
79
|
+
class Config(ConfigObj):
|
|
80
|
+
ENV: str
|
|
81
|
+
timezone: str = ...
|
|
82
|
+
TWILIO_ALERTS_NUMBER: str = ...
|
|
83
|
+
TWILIO_ACCOUNT_ID: str = ...
|
|
84
|
+
TWILIO_API_TOKEN: str = ...
|
|
85
|
+
PHONE_NUMBERS: ConfigDict = ...
|
|
86
|
+
STRIDEBOT_API_TOKEN: str = ...
|
|
87
|
+
PUBLICSHEETS_AUTH: str | ConfigDict = ...
|
|
88
|
+
COINGECKO_API_TOKEN: str = ...
|
|
89
|
+
PROTOCOL_STAKING_API_TOKEN: str = ...
|
|
90
|
+
alerts_playbook: str = ...
|
|
91
|
+
slack_channels: ConfigDict = ...
|
|
92
|
+
UPSTASH_PUBLIC_PASSWORD: str = ...
|
|
93
|
+
UPSTASH_STRIDE_FRONTEND_PASSWORD: str = ...
|
|
94
|
+
UPSTASH_STRIDE_BACKEND_PASSWORD: str = ...
|
|
95
|
+
UPSTASH_STRIDE_DYDX_PUBLIC_PASSWORD: str = ...
|
|
96
|
+
SLACK_BEARER_TOKEN: str = ...
|
|
97
|
+
SLACK_SUCCESS_CHANNEL_ID: str = ...
|
|
98
|
+
SLACK_INVARIANT_FAILURE_CHANNEL_ID: str = ...
|
|
99
|
+
SLACK_PACKET_FAILURE_CHANNEL_ID: str = ...
|
|
100
|
+
NUMIA_API_TOKEN: str = ...
|
|
101
|
+
founders: list[str] = ...
|
|
102
|
+
stride: ChainConfig = ...
|
|
103
|
+
host_zones: HostZoneChainConfig = ...
|
|
104
|
+
app_chains: AppConfig = ...
|
|
105
|
+
def __post_init__(self) -> None: ...
|
|
106
|
+
def get_chain(self, name: str | None = None, id: str | None = None, ticker: str | None = None, denom: str | None = None, stride_token_hash: str | None = None) -> ChainConfig: ...
|
|
107
|
+
def __init__(self, ENV, timezone=..., TWILIO_ALERTS_NUMBER=..., TWILIO_ACCOUNT_ID=..., TWILIO_API_TOKEN=..., PHONE_NUMBERS=..., STRIDEBOT_API_TOKEN=..., PUBLICSHEETS_AUTH=..., COINGECKO_API_TOKEN=..., PROTOCOL_STAKING_API_TOKEN=..., alerts_playbook=..., slack_channels=..., UPSTASH_PUBLIC_PASSWORD=..., UPSTASH_STRIDE_FRONTEND_PASSWORD=..., UPSTASH_STRIDE_BACKEND_PASSWORD=..., UPSTASH_STRIDE_DYDX_PUBLIC_PASSWORD=..., SLACK_BEARER_TOKEN=..., SLACK_SUCCESS_CHANNEL_ID=..., SLACK_INVARIANT_FAILURE_CHANNEL_ID=..., SLACK_PACKET_FAILURE_CHANNEL_ID=..., NUMIA_API_TOKEN=..., founders=..., stride=..., host_zones=..., app_chains=...) -> None: ...
|
|
108
|
+
|
|
109
|
+
config: Config
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
import pandas as pd
|
|
3
|
+
from _typeshed import Incomplete
|
|
4
|
+
from strideutils import stride_upstash as stride_upstash
|
|
5
|
+
from strideutils.stride_config import config as config
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
ACCOUNT_QUERY: str
|
|
9
|
+
ACCOUNT_BALANCE_QUERY: str
|
|
10
|
+
ACCOUNT_DELEGATIONS_QUERY: str
|
|
11
|
+
ACCOUNT_UNBONDINGS_QUERY: str
|
|
12
|
+
MODULE_ACCOUNTS_QUERY: str
|
|
13
|
+
SUPPLY_QUERY: str
|
|
14
|
+
CONNECTION_QUERY: str
|
|
15
|
+
CHANNELS_QUERY: str
|
|
16
|
+
CHANNEL_QUERY: str
|
|
17
|
+
TXS_QUERY: str
|
|
18
|
+
TX_BY_ACCOUNT_EVENT: str
|
|
19
|
+
HOST_ZONE_QUERY: str
|
|
20
|
+
EPOCHS_QUERY: str
|
|
21
|
+
RATE_LIMIT_QUERY: str
|
|
22
|
+
STAKETIA: str
|
|
23
|
+
STAKEDYM: str
|
|
24
|
+
MULTISIG_HOST_ZONE_QUERY: str
|
|
25
|
+
MULTISIG_DELEGATION_RECORDS_QUERY: str
|
|
26
|
+
MULTISIG_UNBONDING_RECORDS_QUERY: str
|
|
27
|
+
MULTISIG_REDEMPTION_RECORDS_QUERY: str
|
|
28
|
+
COSMWASM_CONTRACT_QUERY: str
|
|
29
|
+
requests_session: Incomplete
|
|
30
|
+
retries: Incomplete
|
|
31
|
+
|
|
32
|
+
def request(url: str, headers: dict = {}, params: dict | list[tuple[str, str]] = {}, block_height: int = 0, cache_response: bool = False, _cache: dict[str, Any] = {}): ...
|
|
33
|
+
def query_list_with_pagination(endpoint: str, rel_key: str, block_height: int = 0, max_pages: int = 50) -> list[dict]: ...
|
|
34
|
+
def get_all_host_zones() -> list[dict]: ...
|
|
35
|
+
def get_host_zone_json(zone_id: str, cast_types: bool = True, **kwargs) -> dict[str, Any]: ...
|
|
36
|
+
def get_celestia_host_zone(cast_types: bool = True) -> dict[str, Any]: ...
|
|
37
|
+
def get_dymension_host_zone(cast_types: bool = True) -> dict[str, Any]: ...
|
|
38
|
+
def get_multisig_delegation_records(module: str, include_archived: bool = False) -> list[dict]: ...
|
|
39
|
+
def get_multisig_unbonding_records(module: str, include_archived: bool = False) -> list[dict]: ...
|
|
40
|
+
def get_multisig_redemption_records(module: str, address: str | None = None, unbonding_record_id: int | None = None) -> list[dict]: ...
|
|
41
|
+
def get_rate_limits(**kwargs): ...
|
|
42
|
+
def get_validators(api_endpoint: str = ...) -> list[dict[str, Any]]: ...
|
|
43
|
+
def get_redemption_rate(token: str) -> float: ...
|
|
44
|
+
def get_tvl_in_utokens(host_zone_id: str) -> float: ...
|
|
45
|
+
def get_latest_block(rpc_endpoint: str = ...) -> int: ...
|
|
46
|
+
def convert_cosmos_address(address: str, new_prefix: str) -> str: ...
|
|
47
|
+
def get_balances(address: str, block_height: int = 0, api_endpoint: str = ..., cache_response: bool = False) -> dict[str, int]: ...
|
|
48
|
+
def get_balance(address: str, denom: str, block_height: int = 0, api_endpoint: str = ..., cache_response: bool = False) -> int: ...
|
|
49
|
+
def get_supply(denom: str, block_height: int = 0, api_endpoint: str = ..., cache_response: bool = False) -> int: ...
|
|
50
|
+
def get_block_time(height: int, rpc_endpoint: str = ...) -> datetime.datetime: ...
|
|
51
|
+
def get_icns_name(address: str) -> str: ...
|
|
52
|
+
def get_account_info(address: str, api_endpoint: str = ...): ...
|
|
53
|
+
def get_txs(event_filters: list[str], api_endpoint: str = ..., limit: Incomplete | None = None) -> dict: ...
|
|
54
|
+
def get_tx_info(address: str, sequence: str | int, api_endpoint: str = ...) -> dict: ...
|
|
55
|
+
def generate_vesting_account(start_time_in_local_tz: str, total_tokens: int, seconds_in_period: int = 3600, number_of_days: int = 30, output_file: str = 'vesting_account.json') -> str: ...
|
|
56
|
+
def get_block_height_in_past(time_in_past: datetime.timedelta = ..., max_acceptable_error_seconds: int = ..., seconds_per_block: int = 6, prev_time: str | None = None, verbose: bool = False, rpc_endpoint: str = ...) -> int: ...
|
|
57
|
+
def get_block_height_one_day_ago(verbose: bool = False) -> int: ...
|
|
58
|
+
def get_sttoken_apr(token: str) -> float | None: ...
|
|
59
|
+
def get_delegated_tokens_on_address(delegator_address: str, api_endpoint: str = ...) -> dict[str, int]: ...
|
|
60
|
+
def get_unbonding_tokens_on_address(delegator_address: str, api_endpoint: str = ...) -> dict[str, int]: ...
|
|
61
|
+
def get_host_zone_delegations(host_zone_id: str, ground_truth_included: bool = True) -> pd.DataFrame: ...
|
|
62
|
+
def get_epochs() -> list[dict]: ...
|
|
63
|
+
def get_day_epoch() -> int: ...
|
|
64
|
+
def query_wasm_contract(contract_address: str, query_msg: dict, api_endpoint: str, block_height: int = 0) -> dict: ...
|
|
65
|
+
def get_module_accounts(api_endpoint: str = ...) -> list[dict]: ...
|
|
66
|
+
def get_empirical_annual_fees(ticker: str) -> float: ...
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import redis
|
|
2
|
+
from _typeshed import Incomplete
|
|
3
|
+
from strideutils.stride_config import config as config
|
|
4
|
+
|
|
5
|
+
redis_dbs: Incomplete
|
|
6
|
+
|
|
7
|
+
def get_redis_db(redis_db_name: str) -> redis.Redis: ...
|
|
8
|
+
def get(redis_key: str, db_name: str = 'frontend') -> str | None: ...
|
|
9
|
+
def set(redis_key: str, redis_val: str, db_name: str = 'frontend'): ...
|
|
10
|
+
def set_keys(dict_to_upload: dict[str, str], db_name: str = 'frontend', prefix: str = ''): ...
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{strideutils-0.2.8 → strideutils-0.2.10}/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
|
/strideutils-0.2.8/strideutils/__init__.py → /strideutils-0.2.10/strideutils-stubs/__init__.pyi
RENAMED
|
File without changes
|