summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Maslek <jmaslek11@gmail.com>2023-08-22 10:39:51 -0400
committerJames Maslek <jmaslek11@gmail.com>2023-08-22 10:39:51 -0400
commitf5403338f2c803f92034a2d7aef3491816baf82e (patch)
tree4260389a4c04f11493657873093d5bdbcda9b810
parentceb91d15a61ef4ab4d4d102293d2a7b8a15ed9bb (diff)
parent3147577fc907e5a7b57214353e0c70fc1322c015 (diff)
Merge branch 'develop' of https://github.com/OpenBB-finance/OpenBBTerminal into develop
-rw-r--r--openbb_terminal/core/sdk/controllers/crypto_sdk_controller.py1
-rw-r--r--openbb_terminal/core/sdk/models/crypto_sdk_model.py3
-rw-r--r--openbb_terminal/core/sdk/models/keys_sdk_model.py2
-rw-r--r--openbb_terminal/core/sdk/sdk_init.py2
-rw-r--r--openbb_terminal/core/sdk/trail_map.csv2
-rw-r--r--openbb_terminal/cryptocurrency/onchain/onchain_controller.py40
-rw-r--r--openbb_terminal/cryptocurrency/onchain/shroom_model.py259
-rw-r--r--openbb_terminal/cryptocurrency/onchain/shroom_view.py230
-rw-r--r--openbb_terminal/keys_controller.py30
-rw-r--r--openbb_terminal/keys_model.py77
-rw-r--r--openbb_terminal/miscellaneous/documentation_scripts/documentation_commands_sdk.csv1
-rw-r--r--openbb_terminal/miscellaneous/models/hub_credentials.json1
-rw-r--r--openbb_terminal/miscellaneous/sources/openbb_default.json1
-rw-r--r--openbb_terminal/sdk.py1
-rw-r--r--tests/openbb_terminal/cryptocurrency/onchain/txt/test_onchain_controller/test_print_help.txt1
-rw-r--r--tests/openbb_terminal/test_keys_controller.py7
-rw-r--r--tests/openbb_terminal/test_keys_model.py26
-rw-r--r--website/content/sdk/reference/keys/index.md1
-rw-r--r--website/content/sdk/reference/keys/shroom.md44
-rw-r--r--website/content/sdk/usage/guides/api-keys.md27
-rw-r--r--website/content/terminal/usage/guides/api-keys.md37
21 files changed, 5 insertions, 788 deletions
diff --git a/openbb_terminal/core/sdk/controllers/crypto_sdk_controller.py b/openbb_terminal/core/sdk/controllers/crypto_sdk_controller.py
index 69f4f075c82..ac880083a5b 100644
--- a/openbb_terminal/core/sdk/controllers/crypto_sdk_controller.py
+++ b/openbb_terminal/core/sdk/controllers/crypto_sdk_controller.py
@@ -251,7 +251,6 @@ class CryptoController(model.CryptoRoot):
`prices`: Get token historical prices with volume and market cap, and average price. [Source: Ethplorer]\n
`prices_chart`: Display token historical prices with volume and market cap, and average price.\n
`query`: Get query data\n
- `query_chart`: Display query results from shroom\n
`query_graph`: Helper methods for querying graphql api. [Source: https://bitquery.io/]\n
`th`: Get info about token historical transactions. [Source: Ethplorer]\n
`th_chart`: Display info about token history. [Source: Ethplorer]\n
diff --git a/openbb_terminal/core/sdk/models/crypto_sdk_model.py b/openbb_terminal/core/sdk/models/crypto_sdk_model.py
index 2db93f2f659..e8f8e1c95e9 100644
--- a/openbb_terminal/core/sdk/models/crypto_sdk_model.py
+++ b/openbb_terminal/core/sdk/models/crypto_sdk_model.py
@@ -446,7 +446,6 @@ class CryptoOnChain(Category):
`prices`: Get token historical prices with volume and market cap, and average price. [Source: Ethplorer]\n
`prices_chart`: Display token historical prices with volume and market cap, and average price.\n
`query`: Get query data\n
- `query_chart`: Display query results from shroom\n
`query_graph`: Helper methods for querying graphql api. [Source: https://bitquery.io/]\n
`th`: Get info about token historical transactions. [Source: Ethplorer]\n
`th_chart`: Display info about token history. [Source: Ethplorer]\n
@@ -517,8 +516,6 @@ class CryptoOnChain(Category):
self.prices_chart = (
lib.crypto_onchain_ethplorer_view.display_token_historical_prices
)
- self.query = lib.crypto_onchain_shroom_model.get_query_data
- self.query_chart = lib.crypto_onchain_shroom_view.display_query
self.query_graph = lib.crypto_onchain_bitquery_model.query_graph
self.th = lib.crypto_onchain_ethplorer_model.get_token_history
self.th_chart = lib.crypto_onchain_ethplorer_view.display_token_history
diff --git a/openbb_terminal/core/sdk/models/keys_sdk_model.py b/openbb_terminal/core/sdk/models/keys_sdk_model.py
index 0ccee257bd4..de564944c9c 100644
--- a/openbb_terminal/core/sdk/models/keys_sdk_model.py
+++ b/openbb_terminal/core/sdk/models/keys_sdk_model.py
@@ -37,7 +37,6 @@ class KeysRoot(Category):
`rh`: Set Robinhood key\n
`santiment`: Set Santiment key.\n
`set_keys`: Set API keys in bundle.\n
- `shroom`: Set Shroom key\n
`smartstake`: Set Smartstake key.\n
`stocksera`: Set Stocksera key.\n
`tokenterminal`: Set Token Terminal key.\n
@@ -78,7 +77,6 @@ class KeysRoot(Category):
self.rh = lib.keys_model.set_rh_key
self.santiment = lib.keys_model.set_santiment_key
self.set_keys = lib.keys_model.set_keys
- self.shroom = lib.keys_model.set_shroom_key
self.smartstake = lib.keys_model.set_smartstake_key
self.stocksera = lib.keys_model.set_stocksera_key
self.tokenterminal = lib.keys_model.set_tokenterminal_key
diff --git a/openbb_terminal/core/sdk/sdk_init.py b/openbb_terminal/core/sdk/sdk_init.py
index 66050033423..db26d87614d 100644
--- a/openbb_terminal/core/sdk/sdk_init.py
+++ b/openbb_terminal/core/sdk/sdk_init.py
@@ -252,8 +252,6 @@ from openbb_terminal.cryptocurrency.onchain import (
ethplorer_view as crypto_onchain_ethplorer_view,
whale_alert_model as crypto_onchain_whale_alert_model,
whale_alert_view as crypto_onchain_whale_alert_view,
- shroom_model as crypto_onchain_shroom_model,
- shroom_view as crypto_onchain_shroom_view,
topledger_model as crypto_onchain_topledger_model,
topledger_view as crypto_onchain_topledger_view,
)
diff --git a/openbb_terminal/core/sdk/trail_map.csv b/openbb_terminal/core/sdk/trail_map.csv
index 1f62a953e00..ebb70a1affa 100644
--- a/openbb_terminal/core/sdk/trail_map.csv
+++ b/openbb_terminal/core/sdk/trail_map.csv
@@ -119,7 +119,6 @@ crypto.onchain.hr,crypto_dd_glassnode_model.get_hashrate,crypto_dd_glassnode_vie
crypto.onchain.info,crypto_onchain_ethplorer_model.get_token_info,crypto_onchain_ethplorer_view.display_token_info
crypto.onchain.lt,crypto_onchain_bitquery_model.get_dex_trades_by_exchange,crypto_onchain_bitquery_view.display_dex_trades
crypto.onchain.prices,crypto_onchain_ethplorer_model.get_token_historical_price,crypto_onchain_ethplorer_view.display_token_historical_prices
-crypto.onchain.query,crypto_onchain_shroom_model.get_query_data,crypto_onchain_shroom_view.display_query
crypto.onchain.query_graph,crypto_onchain_bitquery_model.query_graph,
crypto.onchain.th,crypto_onchain_ethplorer_model.get_token_history,crypto_onchain_ethplorer_view.display_token_history
crypto.onchain.token_decimals,crypto_onchain_ethplorer_model.get_token_decimals,
@@ -307,7 +306,6 @@ keys.reddit,keys_model.set_reddit_key,
keys.rh,keys_model.set_rh_key,
keys.santiment,keys_model.set_santiment_key,
keys.set_keys,keys_model.set_keys,
-keys.shroom,keys_model.set_shroom_key,
keys.smartstake,keys_model.set_smartstake_key,
keys.stocksera,keys_model.set_stocksera_key,
keys.tokenterminal,keys_model.set_tokenterminal_key,
diff --git a/openbb_terminal/cryptocurrency/onchain/onchain_controller.py b/openbb_terminal/cryptocurrency/onchain/onchain_controller.py
index 8f3be128519..083fed888d7 100644
--- a/openbb_terminal/cryptocurrency/onchain/onchain_controller.py
+++ b/openbb_terminal/cryptocurrency/onchain/onchain_controller.py
@@ -22,7 +22,6 @@ from openbb_terminal.cryptocurrency.onchain import (
ethgasstation_view,
ethplorer_model,
ethplorer_view,
- shroom_view,
topledger_model,
topledger_view,
whale_alert_model,
@@ -83,7 +82,6 @@ class OnchainController(BaseController):
"btccp",
"btcct",
"btcblockdata",
- "query",
"topledger",
]
@@ -120,7 +118,6 @@ class OnchainController(BaseController):
mt.add_cmd("ueat")
mt.add_cmd("ttcp")
mt.add_cmd("baas")
- mt.add_cmd("query")
mt.add_raw("\n")
mt.add_param("_address", self.address or "")
mt.add_param("_type", self.address_type or "")
@@ -138,43 +135,6 @@ class OnchainController(BaseController):
console.print(text=mt.menu_text, menu="Cryptocurrency - Onchain")
@log_start_end(log=logger)
- def call_query(self, other_args: List[str]):
- """Process query command"""
- parser = argparse.ArgumentParser(
- add_help=False,
- formatter_class=argparse.ArgumentDefaultsHelpFormatter,
- prog="query",
- description="""
- Make any flipsidecrypto query
- [Source:https://docs.flipsidecrypto.com/]
- """,
- )
-
- parser.add_argument(
- "-q",
- "--query",
- dest="query",
- type=str,
- nargs="+",
- required=not any(["-h" in other_args, "--help" in other_args]),
- help="Query to make",
- )
-
- if other_args and other_args[0][0] != "-":
- other_args.insert(0, "-q")
-
- ns_parser = self.parse_known_args_and_warn(
- parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES, limit=10
- )
-
- if ns_parser:
- shroom_view.display_query(
- query=" ".join(ns_parser.query),
- export=ns_parser.export,
- limit=ns_parser.limit,
- )
-
- @log_start_end(log=logger)
def call_btcct(self, other_args: List[str]):
"""Process btcct command"""
parser = argparse.ArgumentParser(
diff --git a/openbb_terminal/cryptocurrency/onchain/shroom_model.py b/openbb_terminal/cryptocurrency/onchain/shroom_model.py
deleted file mode 100644
index 5de9d366aa1..00000000000
--- a/openbb_terminal/cryptocurrency/onchain/shroom_model.py
+++ /dev/null
@@ -1,259 +0,0 @@
-"""Shroom model"""
-import json
-import logging
-import time
-from typing import List
-
-import pandas as pd
-
-from openbb_terminal.core.session.current_user import get_current_user
-from openbb_terminal.decorators import check_api_key, log_start_end
-from openbb_terminal.helper_funcs import request
-from openbb_terminal.rich_config import console
-
-logger = logging.getLogger(__name__)
-
-
-TTL_MINUTES = 15
-
-# return up to 100,000 results per GET request on the query id
-PAGE_SIZE = 100000
-
-# return results of page 1
-PAGE_NUMBER = 1
-
-
-def create_query(query: str):
- r = request(
- "https://node-api.flipsidecrypto.com/queries",
- method="POST",
- data=json.dumps({"sql": query, "ttlMinutes": TTL_MINUTES}),
- headers={
- "Accept": "application/json",
- "Content-Type": "application/json",
- "x-api-key": get_current_user().credentials.API_SHROOM_KEY,
- },
- )
- if r.status_code != 200:
- console.print(
- f"[red]Error creating query, got response: {r.text} with status code: {str(r.status_code)}[/red]"
- )
- return ""
-
- return json.loads(r.text)
-
-
-def get_query_results(token):
- r = request(
- f"https://node-api.flipsidecrypto.com/queries/{token}?pageNumber={PAGE_NUMBER}&pageSize={PAGE_SIZE}",
- headers={
- "Accept": "application/json",
- "Content-Type": "application/json",
- "x-api-key": get_current_user().credentials.API_SHROOM_KEY,
- },
- )
- if r.status_code != 200:
- console.print(
- f"[red]Error creating query, got response: {r.text} with status code: {str(r.status_code)}[/red]"
- )
- return ""
-
- data = json.loads(r.text)
- if data["status"] == "running":
- time.sleep(10)
- return get_query_results(token)
-
- return data
-
-
-DAPP_STATS_PLATFORM_CHOICES = ["uniswap-v3", "uniswap-v2", "sushiswap", "curve"]
-
-
-def get_shroom_data(sql: str):
- """Get shroom data"""
- query = create_query(sql)
- token = query["token"]
- data = get_query_results(token)
- return data
-
-
-@log_start_end(log=logger)
-@check_api_key(["API_SHROOM_KEY"])
-def get_query_data(sql: str) -> pd.DataFrame:
- """Get query data
-
- Parameters
- ----------
- sql : str
- SQL query
-
- Returns
- -------
- pd.DataFrame
- DataFrame with query data
- """
- data = get_shroom_data(sql)
-
- if data and data["results"] and data["columnLabels"]:
- df = pd.DataFrame(data["results"], columns=data["columnLabels"])
- return df
-
- return pd.DataFrame()
-
-
-@log_start_end(log=logger)
-@check_api_key(["API_SHROOM_KEY"])
-def get_dapp_stats(
- platform: str = "curve",
-) -> pd.DataFrame:
- """Get dapp stats
-
- Parameters
- ----------
- platform: str
- platform to get stats for
-
- Returns
- -------
- pd.DataFrame
- dapp stats
- """
- sql = f"""select
- date_trunc('week', s.block_timestamp) as date,
- sum(t.fee_usd) as fee,
- count(distinct(s.from_address)) as n_users,
- count(distinct(s.amount_usd)) as volume
- from ethereum.core.ez_dex_swaps s
- join ethereum.core.fact_transactions t
- on s.tx_id = t.tx_id
- where platform = '{platform}'
- group by date
- order by date asc
- """
- data = get_shroom_data(sql)
-
- if data:
- df = pd.DataFrame(
- data["results"], columns=["timeframe", "fees", "n_users", "volume"]
- )
-
- df["timeframe"] = pd.to_datetime(df["timeframe"])
- df = df.set_index("timeframe")
-
- return df
-
- return pd.DataFrame()
-
-
-@log_start_end(log=logger)
-@check_api_key(["API_SHROOM_KEY"])
-def get_daily_transactions(symbols: List[str]) -> pd.DataFrame:
- """Get daily transactions for certain symbols in ethereum blockchain
- [Source: https://sdk.flipsidecrypto.xyz/shroomdk]
-
- Parameters
- ----------
- symbols : List[str]
- List of symbols to get transactions for
-
- Returns
- -------
- pd.DataFrame
- DataFrame with transactions for each symbol
- """
- extra_sql = ""
- for symbol in symbols:
- extra_sql += (
- f"sum(case when symbol = '{symbol}' then amount_usd end) as {symbol},"
- )
- extra_sql = extra_sql[:-1]
- sql = f"""
- select
- date_trunc('day', block_timestamp) as timeframe,
- {extra_sql}
- from ethereum.core.udm_events
- where
- block_timestamp >= '2020-06-01'
- -- and amount0_usd > '0'
- group by 1
- order by timeframe desc
- """
-
- data = get_shroom_data(sql)
-
- if data:
- df = pd.DataFrame(data["results"], columns=["timeframe"] + symbols)
- df["timeframe"] = pd.to_datetime(df["timeframe"])
- df.set_index("timeframe", inplace=True)
-
- return df
-
- return pd.DataFrame()
-
-
-@log_start_end(log=logger)
-@check_api_key(["API_SHROOM_KEY"])
-def get_total_value_locked(
- user_address: str,
- address_name: str,
- symbol: str = "USDC",
- interval: int = 1,
-) -> pd.DataFrame:
- """
- Get total value locked for a user/name address and symbol
- TVL measures the total amount of a token that is locked in a contract.
- [Source: https://sdk.flipsidecrypto.xyz/shroomdk]
-
- Parameters
- ----------
- user_address : str
- User address
- address_name : str
- Name of the address
- symbol : str
- Symbol of the token
- interval : int
- Interval in months
-
- Returns
- -------
- pd.DataFrame
- DataFrame with total value locked
- """
-
- if not (user_address or address_name):
- console.print("[red]No user address or address name provided.[/red]")
- return pd.DataFrame()
- extra_sql = (
- f"user_address = '{user_address}' and"
- if user_address
- else f"address_name = '{address_name}' and"
- )
-
- sql = f"""
- SELECT
- date_trunc('day', balance_date) as metric_date,
- symbol,
- amount_usd/1000000 as amount_usd
- FROM
- ethereum.core.erc20_balances
- WHERE
- {extra_sql}
- symbol = '{symbol}' AND
- balance_date >= getdate() - interval '{interval} month'
- ORDER BY
- metric_date asc
- """
-
- data = get_shroom_data(sql)
-
- if data:
- df = pd.DataFrame(
- data["results"], columns=["metric_date", "symbol", "amount_usd"]
- )
- df["metric_date"] = pd.to_datetime(df["metric_date"])
- df.set_index("metric_date", inplace=True)
-
- return df
-
- return pd.DataFrame()
diff --git a/openbb_terminal/cryptocurrency/onchain/shroom_view.py b/openbb_terminal/cryptocurrency/onchain/shroom_view.py
deleted file mode 100644
index 4e4a7a4b5df..00000000000
--- a/openbb_terminal/cryptocurrency/onchain/shroom_view.py
+++ /dev/null
@@ -1,230 +0,0 @@
-"""Shroom view"""
-__docformat__ = "numpy"
-
-import logging
-import os
-from typing import Optional, Union
-
-from openbb_terminal import OpenBBFigure, theme
-from openbb_terminal.cryptocurrency.onchain.shroom_model import (
- get_daily_transactions,
- get_dapp_stats,
- get_query_data,
- get_total_value_locked,
-)
-from openbb_terminal.decorators import check_api_key, log_start_end
-from openbb_terminal.helper_funcs import export_data, print_rich_table
-from openbb_terminal.rich_config import console
-
-logger = logging.getLogger(__name__)
-
-
-@log_start_end(log=logger)
-@check_api_key(["API_SHROOM_KEY"])
-def display_query(
- query: str,
- sheet_name: Optional[str] = None,
- limit: int = 10,
- export: str = "",
-):
- """Display query results from shroom
- [Source: https://sdk.flipsidecrypto.xyz/shroomdk]
-
- Parameters
- ----------
- query : str
- Query string
- raw : bool
- Show raw data
- limit : int
- Limit of rows
- export : str
- Export dataframe data to csv,json,xlsx file
- """
- df = get_query_data(query)
- if df.empty:
- console.print("[red]No data found.[/red]")
- elif not df.empty:
- print_rich_table(df, limit=limit)
-
- export_data(
- export, os.path.dirname(os.path.abspath(__file__)), "query", df, sheet_name
- )
-
-
-@log_start_end(log=logger)
-@check_api_key(["API_SHROOM_KEY"])
-def display_daily_transactions(
- export: str = "",
- sheet_name: Optional[str] = None,
- external_axes: bool = False,
-) -> Union[OpenBBFigure, None]:
- """Get daily transactions for certain symbols in ethereum blockchain
- [Source: https://sdk.flipsidecrypto.xyz/shroomdk]
-
- Parameters
- ----------
-
- export : str
- Export dataframe data to csv,json,xlsx file
- """
- symbols = ["DAI", "USDT", "BUSD", "USDC"]
- df = get_daily_transactions(symbols)
- if df.empty:
- return console.print("[red]No data found.[/red]")
-
- fig = OpenBBFigure(yaxis_title="Transactions", xaxis_title="Date")
- fig.set_title("Daily Transactions in Ethereum")
-
- for name in symbols:
- fig.add_scatter(x=df.index, y=df[name], name=name)
-
- export_data(
- export,
- os.path.dirname(os.path.abspath(__file__)),
- "dt",
- df,
- sheet_name,
- fig,
- )
-
- return fig.show(external=external_axes)
-
-
-@log_start_end(log=logger)
-@check_api_key(["API_SHROOM_KEY"])
-def display_dapp_stats(
- platform: str,
- raw: bool = False,
- limit: int = 10,
- export: str = "",
- sheet_name: Optional[str] = None,
- external_axes: bool = False,
-) -> Union[OpenBBFigure, None]:
- """Get daily transactions for certain symbols in ethereum blockchain
- [Source: https://sdk.flipsidecrypto.xyz/shroomdk]
-
- Parameters
- ----------
- platform : str
- Platform name (e.g., uniswap-v3)
- raw : bool
- Show raw data
- limit : int
- Limit of rows
- export : str
- Export dataframe data to csv,json,xlsx file
- external_axes : bool, optional
- Whether to return the figure object or not, by default False
- """
- df = get_dapp_stats(platform=platform)
- if df.empty:
- return console.print("[red]No data found.[/red]")
-
- if raw:
- print_rich_table(
- df,
- headers=list(df.columns),
- show_index=True,
- export=bool(export),
- limit=limit,
- )
-
- fig = OpenBBFigure.create_subplots(specs=[[{"secondary_y": True}]])
- fig.set_title(f"{platform} stats")
-
- fig.add_bar(
- x=df.index,
- y=df["n_users"],
- name="Number of Users",
- marker_color=theme.down_color,
- secondary_y=False,
- )
-
- fig.add_scatter(
- x=df.index,
- y=df["fees"],
- name="Platform Fees",
- marker_color=theme.up_color,
- secondary_y=True,
- )
- fig.update_yaxes(title_text="Number of Users", secondary_y=False, side="left")
- fig.update_yaxes(title_text="Platform Fees [USD]", secondary_y=True)
-
- export_data(
- export,
- os.path.dirname(os.path.abspath(__file__)),
- "ds",
- df,
- sheet_name,
- fig,
- )
-
- return fig.show(external=raw or external_axes)
-
-
-@log_start_end(log=logger)
-@check_api_key(["API_SHROOM_KEY"])
-def display_total_value_locked(
- user_address: str,
- address_name: str,
- symbol: str = "USDC",
- interval: int = 1,
- export: str = "",
- sheet_name: Optional[str] = None,
- external_axes: bool = False,
-) -> Union[OpenBBFigure, None]:
- """
- Get total value locked for a certain address
- TVL measures the total amount of a token that is locked in a contract.
- [Source: https://sdk.flipsidecrypto.xyz/shroomdk]
-
- Parameters
- ----------
- user_address : str
- Address of the user (e.g., 0xa5407eae9ba41422680e2e00537571bcc53efbfd)
- address_name : str
- Name of the address (e.g., makerdao gem join usdc)
- symbol : str
- Symbol of the token
- interval : int
- Interval of months
- export : str
- Export dataframe data to csv,json,xlsx file
- external_axes : bool, optional
- Whether to return the figure object or not, by default False
- """
-
- # example user_address :
- # example addres_name :
-
- df = get_total_value_locked(
- user_address=user_address,
- address_name=address_name,
- symbol=symbol,
- interval=interval,
- )
-
- if df.empty:
- return console.print("[red]No data found.[/red]")
-
- fig = OpenBBFigure(yaxis_title="Amount [USD M]", xaxis_title="Date")
- fig.set_title("Total value locked Ethereum ERC20")
-
- fig.add_bar(
- x=df.index,
- y=df["amount_usd"],
- name="amount_usd",
- marker_color=theme.down_color,
- )
-
- export_data(
- export,
- os.path.dirname(os.path.abspath(__file__)),
- "tvl",
- df,
- sheet_name,
- fig,
- )
-
- return fig.show(external=external_axes)
diff --git a/openbb_terminal/keys_controller.py b/openbb_terminal/keys_controller.py
index 976475b934a..9814a1d4d87 100644
--- a/openbb_terminal/keys_controller.py
+++ b/