mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 12:40:35 +00:00
Merge branch 'develop' of https://github.com/OpenBB-finance/OpenBBTerminal into develop
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
)
|
||||
|
||||
2
openbb_terminal/core/sdk/trail_map.csv
vendored
2
openbb_terminal/core/sdk/trail_map.csv
vendored
@@ -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,
|
||||
|
||||
|
@@ -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 "")
|
||||
@@ -137,43 +134,6 @@ class OnchainController(BaseController):
|
||||
mt.add_cmd("tx", self.address_type == "tx")
|
||||
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"""
|
||||
|
||||
@@ -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()
|
||||
@@ -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)
|
||||
@@ -1109,36 +1109,6 @@ class KeysController(BaseController): # pylint: disable=too-many-public-methods
|
||||
key=ns_parser.key, persist=True, show_output=True
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_shroom(self, other_args: List[str]):
|
||||
"""Process shroom command"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
||||
prog="shroom",
|
||||
description="Set Shroom API key.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-k",
|
||||
"--key",
|
||||
type=str,
|
||||
dest="key",
|
||||
help="key",
|
||||
)
|
||||
if not other_args:
|
||||
console.print(
|
||||
"For your API Key, visit: https://sdk.flipsidecrypto.xyz/shroomdk"
|
||||
)
|
||||
return
|
||||
|
||||
if other_args and "-" not in other_args[0][0]:
|
||||
other_args.insert(0, "-k")
|
||||
ns_parser = self.parse_simple_args(parser, other_args)
|
||||
if ns_parser:
|
||||
self.status_dict["shroom"] = keys_model.set_shroom_key(
|
||||
key=ns_parser.key, persist=True, show_output=True
|
||||
)
|
||||
|
||||
@log_start_end(log=logger)
|
||||
def call_tokenterminal(self, other_args: List[str]):
|
||||
"""Process tokenterminal command"""
|
||||
|
||||
@@ -17,7 +17,6 @@ import openai
|
||||
import pandas as pd
|
||||
import praw
|
||||
import quandl
|
||||
import requests
|
||||
import stocksera
|
||||
from alpha_vantage.timeseries import TimeSeries
|
||||
from coinmarketcapapi import CoinMarketCapAPI
|
||||
@@ -81,7 +80,6 @@ API_DICT: Dict = {
|
||||
"eodhd": "EODHD",
|
||||
"santiment": "SANTIMENT",
|
||||
"tokenterminal": "TOKEN_TERMINAL",
|
||||
"shroom": "SHROOM",
|
||||
"stocksera": "STOCKSERA",
|
||||
"dappradar": "DAPPRADAR",
|
||||
"openai": "OPENAI",
|
||||
@@ -2338,81 +2336,6 @@ def check_santiment_key(show_output: bool = False) -> str:
|
||||
return str(status)
|
||||
|
||||
|
||||
def set_shroom_key(key: str, persist: bool = False, show_output: bool = False) -> str:
|
||||
"""Set Shroom key
|
||||
|
||||
Parameters
|
||||
----------
|
||||
key: str
|
||||
API key
|
||||
persist: bool, optional
|
||||
If False, api key change will be contained to where it was changed. For example, a Jupyter notebook session.
|
||||
If True, api key change will be global, i.e. it will affect terminal environment variables.
|
||||
By default, False.
|
||||
show_output: bool, optional
|
||||
Display status string or not. By default, False.
|
||||
|
||||
Returns
|
||||
-------
|
||||
str
|
||||
Status of key set
|
||||
|
||||
Examples
|
||||
--------
|
||||
>>> from openbb_terminal.sdk import openbb
|
||||
>>> openbb.keys.shroom(key="example_key")
|
||||
"""
|
||||
|
||||
handle_credential("API_SHROOM_KEY", key, persist)
|
||||
return check_shroom_key(show_output)
|
||||
|
||||
|
||||
def check_shroom_key(show_output: bool = False) -> str:
|
||||
"""Check Shroom key
|
||||
|
||||
Parameters
|
||||
----------
|
||||
show_output: bool, optional
|
||||
Display status string or not. By default, False.
|
||||
|
||||
Returns
|
||||
-------
|
||||
str
|
||||
Status of key set
|
||||
"""
|
||||
|
||||
if show_output:
|
||||
console.print("Checking status...")
|
||||
|
||||
current_user = get_current_user()
|
||||
|
||||
if current_user.credentials.API_SHROOM_KEY == "REPLACE_ME":
|
||||
status = KeyStatus.NOT_DEFINED
|
||||
else:
|
||||
try:
|
||||
response = request(
|
||||
"https://node-api.flipsidecrypto.com/queries",
|
||||
method="POST",
|
||||
headers={"x-api-key": current_user.credentials.API_SHROOM_KEY},
|
||||
)
|
||||
if response.status_code == 400:
|
||||
# this is expected because shroom returns 400 when query is not passed
|
||||
status = KeyStatus.DEFINED_TEST_PASSED
|
||||
elif response.status_code == 401:
|
||||
logger.warning("Shroom key defined, test failed")
|
||||
status = KeyStatus.DEFINED_TEST_FAILED
|
||||
else:
|
||||
logger.warning("Shroom key defined, test failed")
|
||||
status = KeyStatus.DEFINED_TEST_FAILED
|
||||
except requests.exceptions.RequestException:
|
||||
logger.warning("Shroom key defined, test failed")
|
||||
status = KeyStatus.DEFINED_TEST_FAILED
|
||||
if show_output:
|
||||
console.print(status.colorize())
|
||||
|
||||
return str(status)
|
||||
|
||||
|
||||
def set_tokenterminal_key(
|
||||
key: str, persist: bool = False, show_output: bool = False
|
||||
) -> str:
|
||||
|
||||
@@ -37,7 +37,6 @@ website/content/sdk/usage/guides/api-keys.md,keys.oanda
|
||||
website/content/sdk/usage/guides/api-keys.md,keys.polygon
|
||||
website/content/sdk/usage/guides/api-keys.md,keys.cpanic
|
||||
website/content/sdk/usage/guides/api-keys.md,keys.santiment
|
||||
website/content/sdk/usage/guides/api-keys.md,keys.shroom
|
||||
website/content/sdk/usage/guides/api-keys.md,keys.stocksera
|
||||
website/content/sdk/usage/guides/api-keys.md,keys.tokenterminal
|
||||
website/content/sdk/usage/guides/api-keys.md,keys.tradier
|
||||
|
||||
|
@@ -20,7 +20,6 @@
|
||||
"API_SMARTSTAKE_KEY": "",
|
||||
"API_SMARTSTAKE_TOKEN": "",
|
||||
"API_MESSARI_KEY": "",
|
||||
"API_SHROOM_KEY": "",
|
||||
"API_SANTIMENT_KEY": "",
|
||||
"API_EODHD_KEY": "",
|
||||
"API_TOKEN_TERMINAL_KEY": "",
|
||||
|
||||
@@ -402,7 +402,6 @@
|
||||
"ueat": ["BitQuery"],
|
||||
"ttcp": ["BitQuery"],
|
||||
"baas": ["BitQuery"],
|
||||
"query": ["Shroom"],
|
||||
"address": ["Ethplorer"],
|
||||
"top": ["Ethplorer"],
|
||||
"balance": ["Ethplorer"],
|
||||
|
||||
@@ -433,7 +433,6 @@ class OpenBBSDK:
|
||||
`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
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
ueat unique ethereum addresses which made a transaction [BitQuery]
|
||||
ttcp top traded crypto pairs on given decentralized exchange [BitQuery]
|
||||
baas bid, ask prices, average spread for given crypto pair [BitQuery]
|
||||
query flipsidecrypto query [Shroom]
|
||||
|
||||
Ethereum address:
|
||||
Address type:
|
||||
|
||||
@@ -77,7 +77,6 @@ class MockCFG:
|
||||
self.API_MESSARI_KEY = kwargs.get("MESSARI", None)
|
||||
self.API_SANTIMENT_KEY = kwargs.get("SANTIMENT", None)
|
||||
self.API_TOKENTERMINAL_KEY = kwargs.get("TOKENTERMINAL", None)
|
||||
self.API_SHROOM_KEY = kwargs.get("SHROOM", None)
|
||||
|
||||
|
||||
@pytest.mark.skip
|
||||
@@ -242,9 +241,3 @@ def test_call_messari(other):
|
||||
@pytest.mark.parametrize("other", [[], ["-k", "1234", "-t", "456"]])
|
||||
def test_call_tokenterminal(other):
|
||||
controller.call_tokenterminal(other)
|
||||
|
||||
|
||||
@pytest.mark.vcr
|
||||
@pytest.mark.parametrize("other", [[], ["-k", "1234", "-t", "456"]])
|
||||
def test_call_shroom(other):
|
||||
controller.call_shroom(other)
|
||||
|
||||
@@ -792,29 +792,3 @@ def test_set_tokenterminal_key(
|
||||
show_output=show_output,
|
||||
)
|
||||
mock_check.assert_called_once_with(show_output)
|
||||
|
||||
|
||||
@pytest.mark.vcr
|
||||
@pytest.mark.parametrize(
|
||||
"args, persist, show_output",
|
||||
[
|
||||
(
|
||||
["test_key"],
|
||||
False,
|
||||
True,
|
||||
),
|
||||
(
|
||||
["test_key"],
|
||||
False,
|
||||
False,
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_set_shroom_key(args: List[str], persist: bool, show_output: bool, mocker):
|
||||
mock_check = mocker.patch("openbb_terminal.keys_model.check_shroom_key")
|
||||
keys_model.set_shroom_key(
|
||||
key=args[0],
|
||||
persist=persist,
|
||||
show_output=show_output,
|
||||
)
|
||||
mock_check.assert_called_once_with(show_output)
|
||||
|
||||
1
website/content/sdk/reference/keys/index.md
vendored
1
website/content/sdk/reference/keys/index.md
vendored
@@ -27,7 +27,6 @@
|
||||
- [rh](/sdk/reference/keys/rh)
|
||||
- [santiment](/sdk/reference/keys/santiment)
|
||||
- [set_keys](/sdk/reference/keys/set_keys)
|
||||
- [shroom](/sdk/reference/keys/shroom)
|
||||
- [si](/sdk/reference/keys/si)
|
||||
- [smartstake](/sdk/reference/keys/smartstake)
|
||||
- [stocksera](/sdk/reference/keys/stocksera)
|
||||
|
||||
44
website/content/sdk/reference/keys/shroom.md
vendored
44
website/content/sdk/reference/keys/shroom.md
vendored
@@ -1,44 +0,0 @@
|
||||
---
|
||||
title: shroom
|
||||
description: OpenBB SDK Function
|
||||
---
|
||||
|
||||
# shroom
|
||||
|
||||
Set Shroom key
|
||||
|
||||
Source Code: [[link](https://github.com/OpenBB-finance/OpenBBTerminal/tree/main/openbb_terminal/keys_model.py#L2412)]
|
||||
|
||||
```python
|
||||
openbb.keys.shroom(key: str, persist: bool = False, show_output: bool = False)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Parameters
|
||||
|
||||
| Name | Type | Description | Default | Optional |
|
||||
| ---- | ---- | ----------- | ------- | -------- |
|
||||
| key | str | API key | None | False |
|
||||
| persist | bool | If False, api key change will be contained to where it was changed. For example, a Jupyter notebook session.<br/>If True, api key change will be global, i.e. it will affect terminal environment variables.<br/>By default, False. | False | True |
|
||||
| show_output | bool | Display status string or not. By default, False. | False | True |
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Returns
|
||||
|
||||
| Type | Description |
|
||||
| ---- | ----------- |
|
||||
| str | Status of key set |
|
||||
---
|
||||
|
||||
## Examples
|
||||
|
||||
```python
|
||||
from openbb_terminal.sdk import openbb
|
||||
openbb.keys.shroom(key="example_key")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
27
website/content/sdk/usage/guides/api-keys.md
vendored
27
website/content/sdk/usage/guides/api-keys.md
vendored
@@ -729,33 +729,6 @@ openbb.keys.santiment(key = 'REPLACE_WITH_KEY', persist = True)
|
||||
|
||||
</details>
|
||||
|
||||
### ShroomDK
|
||||
|
||||
> ShroomDK (SDK), by Flipside Crypto gives you programmatic query access to the most comprehensive blockchain data sets in Web3, for free.
|
||||
|
||||
<details>
|
||||
<summary>Instructions</summary>
|
||||
|
||||
Go to: https://sdk.flipsidecrypto.xyz/shroomdk
|
||||
|
||||

|
||||
|
||||
Click "Mint Your ShroomDK API Key", and sign up for an account.
|
||||
|
||||

|
||||
|
||||
Once created, connect a wallet to complete minting the NFT license. The API key will be displayed under the account.
|
||||
|
||||

|
||||
|
||||
Enter it into the OpenBB SDK with:
|
||||
|
||||
```console
|
||||
openbb.keys.shroom(key = 'REPLACE_WITH_KEY', persist = True)
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
### Stocksera
|
||||
|
||||
> Empowering investors to take advantage of alternative data. We track trending tickers on social media and provide alternative data for easy due-diligence & analysis.
|
||||
|
||||
@@ -551,7 +551,7 @@ Upon completion of the account setup, enter the credentials into the OpenBB Term
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
|
||||
### OpenAI
|
||||
|
||||
@@ -574,7 +574,7 @@ Click the top right "Personal" button to find the following drop down:
|
||||
|
||||
Click `View API Keys`. This will take you to the api Keys menu. Then click `Create new secret key`:
|
||||

|
||||
|
||||
|
||||
Then enter the Secret key credentials into the OpenBB Terminal using the syntax:
|
||||
|
||||
```console
|
||||
@@ -582,9 +582,9 @@ Then enter the Secret key credentials into the OpenBB Terminal using the syntax:
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### Polygon
|
||||
|
||||
@@ -717,33 +717,6 @@ Add it to the OpenBB Terminal by entering:
|
||||
|
||||
</details>
|
||||
|
||||
### ShroomDK
|
||||
|
||||
> ShroomDK (SDK), by Flipside Crypto gives you programmatic query access to the most comprehensive blockchain data sets in Web3, for free.
|
||||
|
||||
<details>
|
||||
<summary>Instructions</summary>
|
||||
|
||||
Go to: https://sdk.flipsidecrypto.xyz/shroomdk
|
||||
|
||||

|
||||
|
||||
Click "Mint Your ShroomDK API Key", and sign up for an account.
|
||||
|
||||

|
||||
|
||||
Once created, connect a wallet to complete minting the NFT license. The API key will be displayed under the account.
|
||||
|
||||

|
||||
|
||||
Enter it into the OpenBB Terminal by typing:
|
||||
|
||||
```console
|
||||
/keys/shroom REPLACE_WITH_KEY
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
### Stocksera
|
||||
|
||||
> Empowering investors to take advantage of alternative data. We track trending tickers on social media and provide alternative data for easy due-diligence & analysis.
|
||||
|
||||
Reference in New Issue
Block a user