strideutils 0.3.7__tar.gz → 0.3.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.3.7 → strideutils-0.3.8}/PKG-INFO +1 -1
- {strideutils-0.3.7 → strideutils-0.3.8}/pyproject.toml +1 -1
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/coingecko.py +30 -11
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/stride_config.py +1 -1
- {strideutils-0.3.7 → strideutils-0.3.8}/README.md +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/Makefile +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/__init__.py +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/config_examples/strideutils_config.yaml.example +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/config_examples/strideutils_secrets.yaml.example +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/cryptography.py +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/exec_tx.py +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/invariant_helpers.py +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/run_safely.py +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/sheets_connector.py +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/slack_connector.py +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/stride_alerts.py +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/stride_requests.py +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/stride_upstash.py +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/twilio_connector.py +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/types.py +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/__init__.pyi +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/coingecko.pyi +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/cryptography.pyi +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/exec_tx.pyi +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/invariant_helpers.pyi +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/run_safely.pyi +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/sheets_connector.pyi +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/slack_connector.pyi +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/stride_alerts.pyi +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/stride_config.pyi +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/stride_requests.pyi +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/stride_upstash.pyi +0 -0
- {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/twilio_connector.pyi +0 -0
|
@@ -12,6 +12,7 @@ from strideutils.stride_config import config
|
|
|
12
12
|
|
|
13
13
|
COINGECKO_ENDPOINT = "https://pro-api.coingecko.com/"
|
|
14
14
|
COINGECKO_PRICE_QUERY = "api/v3/simple/price?ids={ticker_id}&vs_currencies=usd"
|
|
15
|
+
COINGECKO_TVL_QUERY = "api/v3/coins/{ticker_id}"
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
def get_coingecko_name(chain_config: stride_config.ChainConfig) -> str:
|
|
@@ -31,7 +32,6 @@ def get_token_price(
|
|
|
31
32
|
):
|
|
32
33
|
"""
|
|
33
34
|
Reads token price from coingecko
|
|
34
|
-
If a redis_client is provided, then store the value.
|
|
35
35
|
"""
|
|
36
36
|
# TODO: Consider using the coingecko ID for stTokens instead of the redemption rate
|
|
37
37
|
# Get redemption rate for calculating st token prices
|
|
@@ -53,6 +53,23 @@ def get_token_price(
|
|
|
53
53
|
return price
|
|
54
54
|
|
|
55
55
|
|
|
56
|
+
def get_tvl(
|
|
57
|
+
chain_config: stride_config.ChainConfig,
|
|
58
|
+
api_token: str = config.COINGECKO_API_TOKEN,
|
|
59
|
+
cache_response: bool = False,
|
|
60
|
+
) -> float:
|
|
61
|
+
"""
|
|
62
|
+
Fetch TVL from coingecko in USD
|
|
63
|
+
"""
|
|
64
|
+
coingecko_name = get_coingecko_name(chain_config)
|
|
65
|
+
endpoint = COINGECKO_ENDPOINT + COINGECKO_TVL_QUERY.format(ticker_id=coingecko_name)
|
|
66
|
+
headers = {'x-cg-pro-api-key': api_token}
|
|
67
|
+
|
|
68
|
+
# The data structure is huge https://docs.coingecko.com/reference/coins-id
|
|
69
|
+
response = stride_requests.request(endpoint, headers=headers, cache_response=cache_response)
|
|
70
|
+
return float(response['market_data']['market_cap']['usd'])
|
|
71
|
+
|
|
72
|
+
|
|
56
73
|
def get_token_price_history(token: str, num_days=90, use_key=False, memo={}) -> pd.Series:
|
|
57
74
|
"""
|
|
58
75
|
returns a Pandas Series with token price data going back num_days
|
|
@@ -62,17 +79,18 @@ def get_token_price_history(token: str, num_days=90, use_key=False, memo={}) ->
|
|
|
62
79
|
price_key = (token, num_days)
|
|
63
80
|
if price_key not in memo:
|
|
64
81
|
tstr = get_coingecko_name(config.get_chain(ticker=token))
|
|
65
|
-
rurl =
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
82
|
+
rurl = (
|
|
83
|
+
f"https://api.coingecko.com/api/v3/coins/{tstr}/market_chart?vs_currency=usd&days={num_days}" # noqa:E231
|
|
84
|
+
)
|
|
85
|
+
rel_headers = {"x-cg-pro-api-key": config.COINGECKO_API_TOKEN} if use_key else None
|
|
86
|
+
|
|
69
87
|
r = requests.get(
|
|
70
88
|
rurl,
|
|
71
89
|
headers=rel_headers,
|
|
72
90
|
)
|
|
73
91
|
assert r.status_code == 200
|
|
74
92
|
out_df = pd.DataFrame(r.json()["prices"])
|
|
75
|
-
out_df.columns = ["time", "price"]
|
|
93
|
+
out_df.columns = pd.Index(["time", "price"])
|
|
76
94
|
out_df["time"] = pd.to_datetime(out_df["time"], unit="ms")
|
|
77
95
|
out_df["price"] = out_df["price"].astype(float)
|
|
78
96
|
out_df.set_index("time", inplace=True)
|
|
@@ -89,17 +107,18 @@ def get_token_volume_history(token: str, num_days=90, use_key=False, memo={}) ->
|
|
|
89
107
|
volume_key = (token, num_days)
|
|
90
108
|
if volume_key not in memo:
|
|
91
109
|
tstr = get_coingecko_name(config.get_chain(ticker=token))
|
|
92
|
-
rurl =
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
110
|
+
rurl = (
|
|
111
|
+
f"https://api.coingecko.com/api/v3/coins/{tstr}/market_chart?vs_currency=usd&days={num_days}" # noqa:E231
|
|
112
|
+
)
|
|
113
|
+
rel_headers = {"x-cg-pro-api-key": config.COINGECKO_API_TOKEN} if use_key else None
|
|
114
|
+
|
|
96
115
|
r = requests.get(
|
|
97
116
|
rurl,
|
|
98
117
|
headers=rel_headers,
|
|
99
118
|
)
|
|
100
119
|
assert r.status_code == 200
|
|
101
120
|
out_df = pd.DataFrame(r.json()["total_volumes"])
|
|
102
|
-
out_df.columns = ["time", "volume"]
|
|
121
|
+
out_df.columns = pd.Index(["time", "volume"])
|
|
103
122
|
out_df["time"] = pd.to_datetime(out_df["time"], unit="ms")
|
|
104
123
|
out_df["volume"] = out_df["volume"].astype(float)
|
|
105
124
|
out_df.set_index("time", inplace=True)
|
|
@@ -361,7 +361,7 @@ def _parse_raw_configs(raw_config: dict[str, Any], raw_secrets: dict[str, Option
|
|
|
361
361
|
# Load non-nested configs, then overwrite with the chain configs
|
|
362
362
|
config_dict = raw_secrets
|
|
363
363
|
config_dict.update(raw_config)
|
|
364
|
-
config_dict.update(chain_configs)
|
|
364
|
+
config_dict.update(chain_configs) # type: ignore
|
|
365
365
|
return Config(**config_dict) # type: ignore
|
|
366
366
|
|
|
367
367
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{strideutils-0.3.7 → strideutils-0.3.8}/strideutils/config_examples/strideutils_config.yaml.example
RENAMED
|
File without changes
|
{strideutils-0.3.7 → strideutils-0.3.8}/strideutils/config_examples/strideutils_secrets.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
|