diff options
author | Colin Delahunty <72827203+colin99d@users.noreply.github.com> | 2023-08-18 10:45:17 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-18 17:45:17 +0000 |
commit | 258ed9a11c7fe586f0f3be3e502c14b6a538df77 (patch) | |
tree | 389896d3b9b142b2e1e707464089462ed54912cd | |
parent | 673afcf4059cd1daf09ac795d85793c3cdc3ddfc (diff) |
Thegraph totally changed, I removed the endpoints (#5349)
* Thegraph totally changed, I removed the endpoints
* Cleaned up more
15 files changed, 1 insertions, 1492 deletions
diff --git a/openbb_terminal/core/sdk/models/crypto_sdk_model.py b/openbb_terminal/core/sdk/models/crypto_sdk_model.py index 1c0f1bba4e3..2db93f2f659 100644 --- a/openbb_terminal/core/sdk/models/crypto_sdk_model.py +++ b/openbb_terminal/core/sdk/models/crypto_sdk_model.py @@ -285,10 +285,6 @@ class CryptoDeFi(Category): ) self.newsletters = lib.crypto_defi_substack_model.get_newsletters self.newsletters_chart = lib.crypto_defi_substack_view.display_newsletters - self.pairs = lib.crypto_defi_graph_model.get_uniswap_pool_recently_added - self.pairs_chart = lib.crypto_defi_graph_view.display_recently_added - self.pools = lib.crypto_defi_graph_model.get_uni_pools_by_volume - self.pools_chart = lib.crypto_defi_graph_view.display_uni_pools self.sinfo = lib.crypto_defi_terramoney_fcd_model.get_staking_account_info self.sinfo_chart = ( lib.crypto_defi_terramoney_fcd_view.display_account_staking_info @@ -301,14 +297,8 @@ class CryptoDeFi(Category): self.sreturn_chart = ( lib.crypto_defi_terramoney_fcd_view.display_staking_returns_history ) - self.stats = lib.crypto_defi_graph_model.get_uniswap_stats - self.stats_chart = lib.crypto_defi_graph_view.display_uni_stats self.stvl = lib.crypto_defi_llama_model.get_defi_tvl self.stvl_chart = lib.crypto_defi_llama_view.display_defi_tvl - self.swaps = lib.crypto_defi_graph_model.get_last_uni_swaps - self.swaps_chart = lib.crypto_defi_graph_view.display_last_uni_swaps - self.tokens = lib.crypto_defi_graph_model.get_uni_tokens - self.tokens_chart = lib.crypto_defi_graph_view.display_uni_tokens self.validators = lib.crypto_defi_terramoney_fcd_model.get_validators self.validators_chart = lib.crypto_defi_terramoney_fcd_view.display_validators self.vaults = lib.crypto_defi_coindix_model.get_defi_vaults diff --git a/openbb_terminal/core/sdk/sdk_init.py b/openbb_terminal/core/sdk/sdk_init.py index 571269da415..0ec4b436d87 100644 --- a/openbb_terminal/core/sdk/sdk_init.py +++ b/openbb_terminal/core/sdk/sdk_init.py @@ -170,8 +170,6 @@ from openbb_terminal.cryptocurrency.defi import ( coindix_view as crypto_defi_coindix_view, cryptosaurio_model as crypto_defi_cryptosaurio_model, cryptosaurio_view as crypto_defi_cryptosaurio_view, - graph_model as crypto_defi_graph_model, - graph_view as crypto_defi_graph_view, llama_model as crypto_defi_llama_model, llama_view as crypto_defi_llama_view, smartstake_model as crypto_defi_smartstake_model, diff --git a/openbb_terminal/core/sdk/trail_map.csv b/openbb_terminal/core/sdk/trail_map.csv index a7e369182cd..33ff8830bff 100644 --- a/openbb_terminal/core/sdk/trail_map.csv +++ b/openbb_terminal/core/sdk/trail_map.csv @@ -75,15 +75,10 @@ crypto.defi.gov_proposals,crypto_defi_terramoney_fcd_model.get_proposals,crypto_ crypto.defi.ldapps,crypto_defi_llama_model.get_defi_protocols,crypto_defi_llama_view.display_defi_protocols crypto.defi.luna_supply,crypto_defi_smartstake_model.get_luna_supply_stats,crypto_defi_smartstake_view.display_luna_circ_supply_change crypto.defi.newsletters,crypto_defi_substack_model.get_newsletters,crypto_defi_substack_view.display_newsletters -crypto.defi.pairs,crypto_defi_graph_model.get_uniswap_pool_recently_added,crypto_defi_graph_view.display_recently_added -crypto.defi.pools,crypto_defi_graph_model.get_uni_pools_by_volume,crypto_defi_graph_view.display_uni_pools crypto.defi.sinfo,crypto_defi_terramoney_fcd_model.get_staking_account_info,crypto_defi_terramoney_fcd_view.display_account_staking_info crypto.defi.sratio,crypto_defi_terramoney_fcd_model.get_staking_ratio_history,crypto_defi_terramoney_fcd_view.display_staking_ratio_history crypto.defi.sreturn,crypto_defi_terramoney_fcd_model.get_staking_returns_history,crypto_defi_terramoney_fcd_view.display_staking_returns_history -crypto.defi.stats,crypto_defi_graph_model.get_uniswap_stats,crypto_defi_graph_view.display_uni_stats crypto.defi.stvl,crypto_defi_llama_model.get_defi_tvl,crypto_defi_llama_view.display_defi_tvl -crypto.defi.swaps,crypto_defi_graph_model.get_last_uni_swaps,crypto_defi_graph_view.display_last_uni_swaps -crypto.defi.tokens,crypto_defi_graph_model.get_uni_tokens,crypto_defi_graph_view.display_uni_tokens crypto.defi.validators,crypto_defi_terramoney_fcd_model.get_validators,crypto_defi_terramoney_fcd_view.display_validators crypto.defi.vaults,crypto_defi_coindix_model.get_defi_vaults,crypto_defi_coindix_view.display_defi_vaults crypto.disc.categories_keys,crypto_disc_pycoingecko_model.get_categories_keys, diff --git a/openbb_terminal/cryptocurrency/defi/defi_controller.py b/openbb_terminal/cryptocurrency/defi/defi_controller.py index 300d093ae1f..4ef44805445 100644 --- a/openbb_terminal/cryptocurrency/defi/defi_controller.py +++ b/openbb_terminal/cryptocurrency/defi/defi_controller.py @@ -12,8 +12,6 @@ from openbb_terminal.cryptocurrency.defi import ( coindix_model, coindix_view, cryptosaurio_view, - graph_model, - graph_view, llama_model, llama_view, smartstake_view, @@ -45,11 +43,6 @@ class DefiController(BaseController): "stvl", "dtvl", "newsletter", - "tokens", - "pairs", - "pools", - "swaps", - "stats", "vaults", "sinfo", "validators", @@ -76,11 +69,6 @@ class DefiController(BaseController): mt = MenuText("crypto/defi/") mt.add_cmd("newsletter") mt.add_cmd("vaults") - mt.add_cmd("tokens") - mt.add_cmd("stats") - mt.add_cmd("pairs") - mt.add_cmd("pools") - mt.add_cmd("swaps") mt.add_cmd("ldapps") mt.add_cmd("gdapps") mt.add_cmd("stvl") @@ -552,298 +540,8 @@ class DefiController(BaseController): ) @log_start_end(log=logger) - def call_tokens(self, other_args: List[str]): - """Process tokens command""" - parser = argparse.ArgumentParser( - add_help=False, - formatter_class=argparse.ArgumentDefaultsHelpFormatter, - prog="tokens", - description=""" - Display tokens trade-able on Uniswap DEX - [Source: https://thegraph.com/en/] - """, - ) - - parser.add_argument( - "--skip", - dest="skip", - type=check_positive, - help="Number of records to skip", - default=0, - choices=range(1, 1000), - metavar="SKIP", - ) - parser.add_argument( - "--limit", - dest="limit", - type=check_positive, - help="Number of records to display", - default=20, - ) - parser.add_argument( - "-s", - "--sort", - dest="sortby", - type=str, - help="Sort by given column. Default: index", - default="index", - choices=graph_model.TOKENS_FILTERS, - ) - parser.add_argument( - "-r", - "--reverse", - action="store_true", - dest="reverse", - default=False, - help=( - "Data is sorted in descending order by default. " - "Reverse flag will sort it in an ascending way. " - "Only works when raw data is displayed." - ), - ) - ns_parser = self.parse_known_args_and_warn( - parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED - ) - if ns_parser: - graph_view.display_uni_tokens( - skip=ns_parser.skip, - limit=ns_parser.limit, - sortby=ns_parser.sortby, - ascend=ns_parser.reverse, - export=ns_parser.export, - sheet_name=" ".join(ns_parser.sheet_name) - if ns_parser.sheet_name - else None, - ) - - @log_start_end(log=logger) - def call_stats(self, other_args: List[str]): - """Process stats command""" - parser = argparse.ArgumentParser( - add_help=False, - formatter_class=argparse.ArgumentDefaultsHelpFormatter, - prog="stats", - description=""" - Display base statistics about Uniswap DEX. - [Source: https://thegraph.com/en/] - """, - ) - - ns_parser = self.parse_known_args_and_warn( - parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED - ) - - if ns_parser: - graph_view.display_uni_stats( - export=ns_parser.export, - sheet_name=" ".join(ns_parser.sheet_name) - if ns_parser.sheet_name - else None, - ) - - @log_start_end(log=logger) - def call_pairs(self, other_args: List[str]): - """Process pairs command""" - parser = argparse.ArgumentParser( - add_help=False, - formatter_class=argparse.ArgumentDefaultsHelpFormatter, - prog="pairs", - description=""" - Displays Lastly added pairs on Uniswap DEX. - [Source: https://thegraph.com/en/] - """, - ) - parser.add_argument( - "-l", - "--limit", - dest="limit", - type=check_positive, - help="Number of records to display", - default=10, - ) - parser.add_argument( - "-v", - "--vol", - dest="vol", - type=check_positive, - help="Minimum trading volume", - default=100, - choices=range(1, 1000), - metavar="VOL", - ) - parser.add_argument( - "-tx", - "--tx", - dest="tx", - type=check_positive, - help="Minimum number of transactions", - default=100, - choices=range(1, 1000), - metavar="TX", - ) - parser.add_argument( - "--days", - dest="days", - type=check_positive, - help="Number of days the pair has been active,", - default=10, - choices=range(1, 1000), - metavar="DAY", - ) - parser.add_argument( - "-s", - "--sort", - dest="sortby", - type=str, - help="Sort by given column. Default: created", - default="created", - choices=graph_model.PAIRS_FILTERS, - ) - parser.add_argument( - "-r", - "--reverse", - action="store_true", - dest="reverse", - default=False, - help=( - "Data is sorted in descending order by default. " - "Reverse flag will sort it in an ascending way. " - "Only works when raw data is displayed." - ), - ) - ns_parser = self.parse_known_args_and_warn( - parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED - ) - - if ns_parser: - graph_view.display_recently_added( - limit=ns_parser.limit, - days=ns_parser.days, - min_volume=ns_parser.vol, - min_tx=ns_parser.tx, - sortby=ns_parser.sortby, - ascend=ns_parser.reverse, - export=ns_parser.export, - sheet_name=" ".join(ns_parser.sheet_name) - if ns_parser.sheet_name - else None, - ) - - @log_start_end(log=logger) - def call_pools(self, other_args: List[str]): - """Process pools command""" - parser = argparse.ArgumentParser( - add_help=False, - formatter_class=argparse.ArgumentDefaultsHelpFormatter, - prog="pairs", - description=""" - Display uniswap pools by volume. - [Source: https://thegraph.com/en/] - """, - ) - parser.add_argument( - "-l", - "--limit", - dest="limit", - type=check_positive, - help="Number of records to display", - default=10, - ) - parser.add_argument( - "-s", - "--sort", - dest="sortby", - type=str, - help="Sort by given column. Default: volumeUSD", - default="volumeUSD", - choices=graph_model.POOLS_FILTERS, - ) - parser.add_argument( - "-r", - "--reverse", - action="store_true", - dest="reverse", - default=False, - help=( - "Data is sorted in descending order by default. " - "Reverse flag will sort it in an ascending way. " - "Only works when raw data is displayed." - ), - ) - ns_parser = self.parse_known_args_and_warn( - parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED - ) - - if ns_parser: - graph_view.display_uni_pools( - limit=ns_parser.limit, - sortby=ns_parser.sortby, - ascend=ns_parser.reverse, - export=ns_parser.export, - sheet_name=" ".join(ns_parser.sheet_name) - if ns_parser.sheet_name - else None, - ) - - @log_start_end(log=logger) - def call_swaps(self, other_args: List[str]): - """Process swaps command""" - parser = argparse.ArgumentParser( - add_help=False, - formatter_class=argparse.ArgumentDefaultsHelpFormatter, - prog="pairs", - description=""" - Display last swaps done on Uniswap DEX. - [Source: https://thegraph.com/en/] - """, - ) - parser.add_argument( - "-l", - "--limit", - dest="limit", - type=check_positive, - help="Number of records to display", - default=10, - ) - parser.add_argument( - "-s", - "--sort", - dest="sortby", - type=str, - help="Sort by given column. Default: timestamp", - default="Datetime", - choices=graph_model.SWAPS_FILTERS, - ) - parser.add_argument( - "-r", - "--reverse", - action="store_true", - dest="reverse", - default=False, - help=( - "Data is sorted in descending order by default. " - "Reverse flag will sort it in an ascending way. " - "Only works when raw data is displayed." - ), - ) - ns_parser = self.parse_known_args_and_warn( - parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED - ) - - if ns_parser: - graph_view.display_last_uni_swaps( - limit=ns_parser.limit, - sortby=ns_parser.sortby, - ascend=ns_parser.reverse, - export=ns_parser.export, - sheet_name=" ".join(ns_parser.sheet_name) - if ns_parser.sheet_name - else None, - ) - - @log_start_end(log=logger) def call_vaults(self, other_args: List[str]): - """Process swaps command""" + """Process vaults command""" parser = argparse.ArgumentParser( add_help=False, formatter_class=argparse.ArgumentDefaultsHelpFormatter, diff --git a/openbb_terminal/cryptocurrency/defi/graph_model.py b/openbb_terminal/cryptocurrency/defi/graph_model.py deleted file mode 100644 index f839430d505..00000000000 --- a/openbb_terminal/cryptocurrency/defi/graph_model.py +++ /dev/null @@ -1,356 +0,0 @@ -"""The Graph model""" -__docformat__ = "numpy" - -import datetime -import logging - -import pandas as pd - -from openbb_terminal.cryptocurrency.dataframe_helpers import ( - lambda_very_long_number_formatter, -) -from openbb_terminal.decorators import log_start_end -from openbb_terminal.helper_funcs import request -from openbb_terminal.rich_config import console - -# pylint: disable=unsupported-assignment-operation - -logger = logging.getLogger(__name__) -# pylint: disable=unsupported-assignment-operation - -UNI_URL = "https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2" - -SWAPS_FILTERS = ["Datetime", "USD", "From", "To"] - -POOLS_FILTERS = [ - "volumeUSD", - "token0.name", - "token0.symbol", - "token1.name", - "token1.symbol", - "volumeUSD", - "txCount", -] - -TOKENS_FILTERS = [ - "index", - "symbol", - "name", - "tradeVolumeUSD", - "totalLiquidity", - "txCount", -] - -PAIRS_FILTERS = [ - "created", - "pair", - "token0", - "token1", - "volumeUSD", - "txCount", - "totalSupply", -] - -# TODO: convert USD values to int. otherwise sort by these columns won't work - - -@log_start_end(log=logger) -def query_graph(url: str, query: str) -> dict: - """Helper methods for querying graphql api. [Source: https://thegraph.com/en/] - - Parameters - ---------- - url: str - Endpoint url - query: str - Graphql query - - Returns - ------- - dict: - Dictionary with response data - """ - - response = request(url, method="POST", json={"query": query}) - if response.status_code == 200: - return response.json()["data"] - return {} - - -@log_start_end(log=logger) -def get_uni_tokens( - skip: int = 0, limit: int = 100, sortby: str = "index", ascend: bool = False -) -> pd.DataFrame: - """Get list of tokens trade-able on Uniswap DEX. [Source: https://thegraph.com/en/] - - Parameters - ---------- - skip: int - Skip n number of records. - limit: int - Show n number of records. - sortby: str - The column to sort by - ascend: bool - Whether to sort in ascending order - - Returns - ------- - pd.DataFrame - Uniswap tokens with trading volume, transaction count, liquidity. - """ - - limit = min(limit, 1000) - query = f""" - {{ - tokens(first: {limit}, skip:{skip}) {{ - symbol - name - tradeVolumeUSD - totalLiquidity - txCount - }} - }} - """ - - data = query_graph(UNI_URL, query) - if not data: - return pd.DataFrame() - df = pd.DataFrame(data["tokens"]).reset_index() - return df.sort_values(by=sortby, ascending=ascend) - - -@log_start_end(log=logger) -def get_uniswap_stats() -> pd.DataFrame: - """Get base statistics about Uniswap DEX. [Source: https://thegraph.com/en/] - - uniswapFactory id: 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f - ethereum address on which Uniswap Factory - smart contract was deployed. The factory contract is deployed once from the off-chain source code, and it contains - functions that make it possible to create exchange contracts for any ERC20 token that does not already have one. - It also functions as a registry of ERC20 tokens that have been added to the system, and the exchange with which they - are associated. More: https://docs.uniswap.org/protocol/V1/guides/connect-to-uniswap - We use 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f address to fetch all smart contracts that were - created with usage of this factory. - - - Returns - ------- - pd.DataFrame - Uniswap DEX statistics like liquidity, volume, number of pairs, number of transactions. - """ - - query = """ - { - uniswapFactory(id: "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f"){ - totalVolumeUSD - totalLiquidityUSD - pairCount - txCount - totalLiquidityUSD - totalLiquidityETH - } - } - """ - data = query_graph(UNI_URL, query) - if not data: - return pd.DataFrame() - df = pd.Series(data["uniswapFactory"]).reset_index() - df.columns = ["Metric", "Value"] - df["Value"] = df["Value"].apply(lambda x: lambda_very_long_number_formatter(x)) - return df - - -@log_start_end(log=logger) -def get_uniswap_pool_recently_added( - last_days: int = 14, - min_volume: int = 100, - min_liquidity: int = 0, - min_tx: int = 100, -) -> pd.DataFrame: - """Get lastly added trade-able pairs on Uniswap with parameters like: - * number of days the pair has been active, - * minimum trading volume, - * minimum liquidity, - * number of transactions. - - [Source: https://thegraph.com/en/] - - Parameters - ---------- - last_days: int - How many days back to look for added pairs. - min_volume: int - Minimum volume - min_liquidity: int - Minimum liquidity - min_tx: int - Minimum number of transactions done in given pool. - - Returns - ------- - pd.DataFrame - Lastly added pairs on Uniswap DEX. - """ - - days = int( - (datetime.datetime.now() - datetime.timedelta(days=last_days)).timestamp() - ) - query = f""" - {{ - pairs(first: 1000, - where: {{createdAtTimestamp_gt: "{days}", volumeUSD_gt: "{min_volume}", reserveUSD_gt: "{min_liquidity}", - txCount_gt: "{min_tx}" }}, - orderBy: createdAtTimestamp, orderDirection: desc) {{ - token0 {{ - symbol - name - }} - token1 {{ - symbol - name - }} - reserveUSD - volumeUSD - createdAtTimestamp - totalSupply - txCount - }} - }} - """ - - data = query_graph(UNI_URL, query) - if not data: - return pd.DataFrame() - - df = pd.json_normalize(data["pairs"]) - df["createdAtTimestamp"] = df["createdAtTimestamp"].apply( - lambda x: datetime.datetime.fromtimestamp(int(x)) - ) - - df["pair"] = df["token0.symbol"] + "/" + df["token1.symbol"] - df.rename( - columns={ - "createdAtTimestamp": "created", - "token0.name": "token0", - "token1.name": "token1", - }, - inplace=True, - ) - return df[ - [ - "created", - "pair", - "token0", - "token1", - "volumeUSD", - "txCount", - "totalSupply", - ] - ] - - -@log_start_end(log=logger) -def get_uni_pools_by_volume() -> pd.DataFrame: - """Get uniswap pools by volume. [Source: https://thegraph.com/en/] - - Returns - ------- - pd.DataFrame - Trade-able pairs listed on Uniswap by top volume. - """ - - query = """ - { - pairs(first: 1000, where: {reserveUSD_gt: "1000", volumeUSD_gt: "10000"}, - orderBy: volumeUSD, orderDirection: desc) { - token0 { - symbol - name - } - token1 { - symbol - name - } - volumeUSD - txCount - } - } - """ - data = query_graph(UNI_URL, query) - if not data: - return pd.DataFrame() - df = pd.json_normalize(data["pairs"]) - return df[ - [ - "token0.name", - "token0.symbol", - "token1.name", - "token1.symbol", - "volumeUSD", - "txCount", - ] - ] - - -@log_start_end(log=logger) -def get_last_uni_swaps( - limit: int = 100, sortby: str = "timestamp", ascend: bool = False -) -> pd.DataFrame: - """Get the last 100 swaps done on Uniswap [Source: https://thegraph.com/en/] - - Parameters - ---------- - limit: int - Number of swaps to return. Maximum possible number: 1000. - sortby: str - Key by which to sort data. The table can be sorted by every of its columns - (see https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v2). - ascend: bool - Flag to sort data descending - - Returns - ------- - pd.DataFrame - Last 100 swaps on Uniswap - """ - - limit = min(limit, 1000) - - query = f""" - {{ |