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.
Files changed (33) hide show
  1. {strideutils-0.3.7 → strideutils-0.3.8}/PKG-INFO +1 -1
  2. {strideutils-0.3.7 → strideutils-0.3.8}/pyproject.toml +1 -1
  3. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/coingecko.py +30 -11
  4. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/stride_config.py +1 -1
  5. {strideutils-0.3.7 → strideutils-0.3.8}/README.md +0 -0
  6. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/Makefile +0 -0
  7. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/__init__.py +0 -0
  8. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/config_examples/strideutils_config.yaml.example +0 -0
  9. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/config_examples/strideutils_secrets.yaml.example +0 -0
  10. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/cryptography.py +0 -0
  11. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/exec_tx.py +0 -0
  12. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/invariant_helpers.py +0 -0
  13. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/run_safely.py +0 -0
  14. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/sheets_connector.py +0 -0
  15. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/slack_connector.py +0 -0
  16. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/stride_alerts.py +0 -0
  17. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/stride_requests.py +0 -0
  18. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/stride_upstash.py +0 -0
  19. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/twilio_connector.py +0 -0
  20. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils/types.py +0 -0
  21. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/__init__.pyi +0 -0
  22. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/coingecko.pyi +0 -0
  23. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/cryptography.pyi +0 -0
  24. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/exec_tx.pyi +0 -0
  25. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/invariant_helpers.pyi +0 -0
  26. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/run_safely.pyi +0 -0
  27. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/sheets_connector.pyi +0 -0
  28. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/slack_connector.pyi +0 -0
  29. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/stride_alerts.pyi +0 -0
  30. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/stride_config.pyi +0 -0
  31. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/stride_requests.pyi +0 -0
  32. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/stride_upstash.pyi +0 -0
  33. {strideutils-0.3.7 → strideutils-0.3.8}/strideutils-stubs/twilio_connector.pyi +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: strideutils
3
- Version: 0.3.7
3
+ Version: 0.3.8
4
4
  Summary:
5
5
  Author: Your Name
6
6
  Author-email: you@example.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "strideutils"
3
- version = "0.3.7"
3
+ version = "0.3.8"
4
4
  description = ""
5
5
  authors = ["Your Name <you@example.com>"]
6
6
  readme = "README.md"
@@ -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 = f"https://api.coingecko.com/api/v3/coins/{tstr}/market_chart?vs_currency=usd&days={num_days}"
66
- rel_headers = {"x-cg-pro-api-key": config.COINGECKO_API_TOKEN}
67
- if not use_key:
68
- rel_headers = None
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 = f"https://api.coingecko.com/api/v3/coins/{tstr}/market_chart?vs_currency=usd&days={num_days}"
93
- rel_headers = {"x-cg-pro-api-key": config.COINGECKO_API_TOKEN}
94
- if not use_key:
95
- rel_headers = None
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