Merge branch 'develop' into feature/real_estate

This commit is contained in:
kulbinderdio
2023-01-27 17:31:05 +00:00
committed by GitHub
409 changed files with 156721 additions and 115450 deletions

View File

@@ -81,7 +81,13 @@ class AlternativeDataController(BaseController):
)
if ns_parser:
hackernews_view.display_stories(limit=ns_parser.limit)
hackernews_view.display_stories(
limit=ns_parser.limit,
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_realestate(self, _):

View File

@@ -125,6 +125,9 @@ class CovidController(BaseController):
raw=ns_parser.raw,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -150,6 +153,9 @@ class CovidController(BaseController):
raw=ns_parser.raw,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -175,6 +181,9 @@ class CovidController(BaseController):
raw=ns_parser.raw,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -200,6 +209,9 @@ class CovidController(BaseController):
raw=ns_parser.raw,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -251,4 +263,8 @@ class CovidController(BaseController):
limit=ns_parser.limit,
ascend=ns_parser.reverse,
threshold=ns_parser.threshold,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)

View File

@@ -133,6 +133,7 @@ def display_covid_ov(
raw: bool = False,
limit: int = 10,
export: str = "",
sheet_name: str = None,
plot: bool = True,
) -> None:
"""Prints table showing historical cases and deaths by country.
@@ -145,6 +146,8 @@ def display_covid_ov(
Flag to display raw data
limit: int
Number of raw data to show
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
plot: bool
@@ -165,7 +168,14 @@ def display_covid_ov(
)
if export:
export_data(export, os.path.dirname(os.path.abspath(__file__)), "ov", data)
data = covid_model.get_covid_ov(country, limit)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"ov",
data,
sheet_name,
)
@log_start_end(log=logger)
@@ -175,6 +185,7 @@ def display_covid_stat(
raw: bool = False,
limit: int = 10,
export: str = "",
sheet_name: str = None,
plot: bool = True,
) -> None:
"""Prints table showing historical cases and deaths by country.
@@ -189,6 +200,8 @@ def display_covid_stat(
Flag to display raw data
limit: int
Number of raw data to show
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
plot : bool
@@ -213,7 +226,13 @@ def display_covid_stat(
cols = data.columns.tolist()
cols = cols[-1:] + cols[:-1]
data = data[cols]
export_data(export, os.path.dirname(os.path.abspath(__file__)), stat, data)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
stat,
data,
sheet_name,
)
@log_start_end(log=logger)
@@ -223,6 +242,7 @@ def display_case_slopes(
threshold: int = 10000,
ascend: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing countries with the highest case slopes.
@@ -253,4 +273,5 @@ def display_case_slopes(
os.path.dirname(os.path.abspath(__file__)),
f"slopes_{days_back}day",
data,
sheet_name,
)

View File

@@ -15,12 +15,14 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def display_stories(limit: int = 10, export: str = "") -> None:
def display_stories(limit: int = 10, export: str = "", sheet_name: str = None) -> None:
"""View top stories from HackerNews.
Parameters
----------
limit: int
Number of stories to return
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Export dataframe data to csv,json,xlsx file
"""
@@ -28,4 +30,10 @@ def display_stories(limit: int = 10, export: str = "") -> None:
if not df.empty:
df.columns = [col.capitalize() for col in df.columns]
print_rich_table(df, title="HackerNews Top Stories")
export_data(export, os.path.dirname(os.path.abspath(__file__)), "hn", df)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"hn",
df,
sheet_name,
)

View File

@@ -26,7 +26,10 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def display_star_history(
repo: str, export: str = "", external_axes: Optional[List[plt.Axes]] = None
repo: str,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots repo summary [Source: https://api.github.com].
@@ -58,7 +61,13 @@ def display_star_history(
if external_axes is None:
theme.visualize_output()
export_data(export, os.path.dirname(os.path.abspath(__file__)), "sh", df)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"sh",
df,
sheet_name,
)
@log_start_end(log=logger)
@@ -67,6 +76,7 @@ def display_top_repos(
categories: str = "",
limit: int = 10,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots repo summary [Source: https://api.github.com].
@@ -116,11 +126,17 @@ def display_top_repos(
if external_axes is None:
theme.visualize_output()
export_data(export, os.path.dirname(os.path.abspath(__file__)), "tr", df)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"tr",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_repo_summary(repo: str, export: str = "") -> None:
def display_repo_summary(repo: str, export: str = "", sheet_name: str = None) -> None:
"""Prints table showing repo summary [Source: https://api.github.com].
Parameters
@@ -141,4 +157,5 @@ def display_repo_summary(repo: str, export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"rs",
data,
sheet_name,
)

View File

@@ -121,7 +121,11 @@ class OSSController(BaseController):
if ns_parser:
if valid_repo(ns_parser.repo):
github_view.display_repo_summary(
repo=ns_parser.repo, export=ns_parser.export
repo=ns_parser.repo,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -200,6 +204,9 @@ class OSSController(BaseController):
show_growth=ns_parser.show_growth,
chart_type=ns_parser.chart_type,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -244,4 +251,7 @@ class OSSController(BaseController):
categories=ns_parser.categories,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)

View File

@@ -20,6 +20,8 @@ from openbb_terminal.rich_config import console
logger = logging.getLogger(__name__)
# pylint: disable=too-many-arguments
@log_start_end(log=logger)
def display_rossindex(
@@ -30,6 +32,7 @@ def display_rossindex(
show_growth: bool = True,
chart_type: str = "stars",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots list of startups from ross index [Source: https://runacap.com/]
@@ -128,4 +131,5 @@ def display_rossindex(
os.path.dirname(os.path.abspath(__file__)),
"runaidx",
df,
sheet_name,
)

View File

@@ -37,6 +37,7 @@ def display_sentiment_analysis(
symbol: str,
raw: bool = False,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots Sentiment analysis from FinBrain. Prints table if raw is True. [Source: FinBrain]
@@ -47,6 +48,8 @@ def display_sentiment_analysis(
Ticker symbol to get the sentiment analysis from
raw: False
Display raw table data
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes: Optional[List[plt.Axes]], optional
@@ -138,5 +141,9 @@ def display_sentiment_analysis(
)
export_data(
export, os.path.dirname(os.path.abspath(__file__)), "headlines", sentiment
export,
os.path.dirname(os.path.abspath(__file__)),
"headlines",
sentiment,
sheet_name,
)

View File

@@ -17,7 +17,7 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
@check_api_key(["API_FINNHUB_KEY"])
def display_sentiment_stats(ticker: str, export: str = ""):
def display_sentiment_stats(ticker: str, export: str = "", sheet_name: str = None):
"""
Prints Sentiment stats which displays buzz, news score, articles last week, articles weekly average,
bullish vs bearish percentages, sector average bullish percentage, and sector average news score
@@ -55,6 +55,7 @@ Sector Average News Score: {round(100*d_stats['sectorAverageNewsScore'],2)} %"""
os.path.dirname(os.path.abspath(__file__)),
"stats",
pd.DataFrame(d_stats),
sheet_name,
)
else:

View File

@@ -27,6 +27,7 @@ def display_mentions(
symbol: str,
start_date: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots weekly bars of stock's interest over time. other users watchlist. [Source: Google].
@@ -37,6 +38,8 @@ def display_mentions(
Ticker symbol
start_date : str
Start date as YYYY-MM-DD string
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes : Optional[List[plt.Axes]], optional
@@ -80,7 +83,11 @@ def display_mentions(
theme.visualize_output()
export_data(
export, os.path.dirname(os.path.abspath(__file__)), "mentions", df_interest
export,
os.path.dirname(os.path.abspath(__file__)),
"mentions",
df_interest,
sheet_name,
)
@@ -90,6 +97,7 @@ def display_correlation_interest(
data: pd.DataFrame,
words: List[str],
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots interest over time of words/sentences versus stock price. [Source: Google].
@@ -102,6 +110,8 @@ def display_correlation_interest(
Data dataframe
words : List[str]
Words to check for interest for
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes : Optional[List[plt.Axes]], optional
@@ -150,7 +160,11 @@ def display_correlation_interest(
theme.visualize_output()
export_data(
export, os.path.dirname(os.path.abspath(__file__)), "interest", df_interest
export,
os.path.dirname(os.path.abspath(__file__)),
"interest",
df_interest,
sheet_name,
)
@@ -159,6 +173,7 @@ def display_regions(
symbol: str,
limit: int = 5,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots bars of regions based on stock's interest. [Source: Google].
@@ -169,6 +184,8 @@ def display_regions(
Ticker symbol
limit: int
Number of regions to show
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes : Optional[List[plt.Axes]], optional
@@ -201,11 +218,19 @@ def display_regions(
if external_axes is None:
theme.visualize_output()
export_data(export, os.path.dirname(os.path.abspath(__file__)), "regions", df)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"regions",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_queries(symbol: str, limit: int = 5, export: str = ""):
def display_queries(
symbol: str, limit: int = 5, export: str = "", sheet_name: str = None
):
"""Prints table showing top related queries with this stock's query. [Source: Google].
Parameters
@@ -214,6 +239,8 @@ def display_queries(symbol: str, limit: int = 5, export: str = ""):
Ticker symbol
limit: int
Number of regions to show
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
{"csv","json","xlsx","png","jpg","pdf","svg"}
@@ -235,11 +262,14 @@ def display_queries(symbol: str, limit: int = 5, export: str = ""):
os.path.dirname(os.path.abspath(__file__)),
"queries",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_rise(symbol: str, limit: int = 10, export: str = ""):
def display_rise(
symbol: str, limit: int = 10, export: str = "", sheet_name: str = None
):
"""Prints top rising related queries with this stock's query. [Source: Google].
Parameters
@@ -248,6 +278,8 @@ def display_rise(symbol: str, limit: int = 10, export: str = ""):
Ticker symbol
limit: int
Number of queries to show
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
"""
@@ -263,5 +295,9 @@ def display_rise(symbol: str, limit: int = 10, export: str = ""):
)
export_data(
export, os.path.dirname(os.path.abspath(__file__)), "rise", df_related_queries
export,
os.path.dirname(os.path.abspath(__file__)),
"rise",
df_related_queries,
sheet_name,
)

View File

@@ -193,7 +193,11 @@ def display_watchlist(limit: int = 5):
]
)
def display_popular_tickers(
limit: int = 10, post_limit: int = 50, subreddits: str = "", export: str = ""
limit: int = 10,
post_limit: int = 50,
subreddits: str = "",
export: str = "",
sheet_name: str = None,
):
"""Prints table showing latest popular tickers. [Source: Reddit].
@@ -224,6 +228,7 @@ def display_popular_tickers(
os.path.dirname(os.path.abspath(__file__)),
"popular",
popular_tickers_df,
sheet_name,
)
@@ -408,6 +413,7 @@ def display_redditsent(
subreddits: str = "all",
display: bool = False,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots Reddit sentiment about a search term. Prints table showing if display is True.
@@ -430,6 +436,8 @@ def display_redditsent(
Comma-separated list of subreddits
display: bool
Enable printing of raw sentiment values for each post
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes: Optional[List[plt.Axes]]
@@ -469,4 +477,5 @@ def display_redditsent(
os.path.dirname(os.path.abspath(__file__)),
"polarity_scores",
df,
sheet_name,
)

View File

@@ -22,6 +22,7 @@ from openbb_terminal.helper_funcs import (
is_valid_axes_count,
)
# pylint: disable=too-many-arguments
logger = logging.getLogger(__name__)
@@ -36,6 +37,7 @@ def display_historical(
raw: bool = False,
limit: int = 10,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Display historical sentiment data of a ticker,
@@ -57,6 +59,8 @@ def display_historical(
limit: int
Number of results display on the terminal
Default: 10
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes: Optional[List[plt.Axes]], optional
@@ -123,6 +127,7 @@ def display_historical(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"hist",
df,
sheet_name,
)
RAW_COLS = ["twitter", "stocktwits", "yahoo", "likes", "RHI", "AHI"]
@@ -155,6 +160,7 @@ def display_trending(
number: int = 10,
limit: int = 10,
export: str = "",
sheet_name: str = None,
):
"""Display most talked about tickers within
the last hour together with their sentiment data.
@@ -171,6 +177,8 @@ def display_trending(
limit: int
Number of results display on the terminal
Default: 10
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
"""
@@ -188,6 +196,7 @@ def display_trending(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"trend",
df,
sheet_name,
)
RAW_COLS = [

View File

@@ -26,7 +26,9 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def display_inference(symbol: str, limit: int = 100, export: str = ""):
def display_inference(
symbol: str, limit: int = 100, export: str = "", sheet_name: str = None
):
"""Prints Inference sentiment from past n tweets.
Parameters
@@ -35,6 +37,8 @@ def display_inference(symbol: str, limit: int = 100, export: str = ""):
Stock ticker symbol
limit: int
Number of tweets to analyze
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export tweet dataframe
"""
@@ -72,7 +76,13 @@ def display_inference(symbol: str, limit: int = 100, export: str = ""):
f"Of the last {len(df_tweets)} tweets, {100*percent_neg:.2f} % had a higher negative sentiment"
)
export_data(export, os.path.dirname(os.path.abspath(__file__)), "infer", df_tweets)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"infer",
df_tweets,
sheet_name,
)
@log_start_end(log=logger)
@@ -82,6 +92,7 @@ def display_sentiment(
n_days_past: int = 2,
compare: bool = False,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots sentiments from symbol
@@ -96,6 +107,8 @@ def display_sentiment(
Number of days to extract tweets for
compare: bool
Show corresponding change in stock price
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export tweet dataframe
external_axes: Optional[List[plt.Axes]], optional
@@ -185,5 +198,9 @@ def display_sentiment(
theme.visualize_output()
export_data(
export, os.path.dirname(os.path.abspath(__file__)), "sentiment", df_tweets
export,
os.path.dirname(os.path.abspath(__file__)),
"sentiment",
df_tweets,
sheet_name,
)

View File

@@ -18,6 +18,7 @@ def display_news(
sources: str = "",
limit: int = 5,
export: str = "",
sheet_name: str = None,
sort: str = "published",
):
"""Plots news for a given term and source. [Source: Feedparser]
@@ -48,4 +49,5 @@ def display_news(
os.path.dirname(os.path.abspath(__file__)),
f"news_{'_'.join(term)}_{'_'.join(sources)}",
articles,
sheet_name,
)

View File

@@ -25,6 +25,7 @@ def display_news(
show_newest: bool = True,
sources: str = "",
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing news for a given term. [Source: NewsAPI]
@@ -53,4 +54,5 @@ def display_news(
os.path.dirname(os.path.abspath(__file__)),
f"news_{query}_{'_'.join(sources)}",
pd.DataFrame(tables),
sheet_name,
)

View File

@@ -50,7 +50,9 @@ def lambda_color_red(val: Any) -> str:
@log_start_end(log=logger)
def display_summary(data: pd.DataFrame, export: str = "") -> None:
def display_summary(
data: pd.DataFrame, export: str = "", sheet_name: str = None
) -> None:
"""Prints table showing summary statistics
Parameters
@@ -75,6 +77,7 @@ def display_summary(data: pd.DataFrame, export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"summary",
summary,
sheet_name,
)
@@ -161,6 +164,7 @@ def display_cdf(
target: str,
symbol: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots Cumulative Distribution Function
@@ -263,6 +267,7 @@ def display_cdf(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"cdf",
pd.DataFrame(cdf),
sheet_name,
)
@@ -660,6 +665,7 @@ def display_seasonal(
target: str,
multiplicative: bool = False,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots seasonal decomposition data
@@ -798,11 +804,14 @@ def display_seasonal(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"summary",
cycle.join(trend),
sheet_name,
)
@log_start_end(log=logger)
def display_normality(data: pd.DataFrame, target: str, export: str = "") -> None:
def display_normality(
data: pd.DataFrame, target: str, export: str = "", sheet_name: str = None
) -> None:
"""Prints table showing normality statistics
Parameters
@@ -832,6 +841,7 @@ def display_normality(data: pd.DataFrame, target: str, export: str = "") -> None
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"normality",
normal,
sheet_name,
)
@@ -842,6 +852,7 @@ def display_unitroot(
fuller_reg: str = "c",
kpss_reg: str = "c",
export: str = "",
sheet_name: str = None,
):
"""Prints table showing unit root test calculations
@@ -873,6 +884,7 @@ def display_unitroot(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"unitroot",
data,
sheet_name,
)
@@ -883,6 +895,7 @@ def display_raw(
ascend: bool = False,
limit: int = 20,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing raw stock data
@@ -931,6 +944,7 @@ def display_raw(
os.path.dirname(os.path.abspath(__file__)),
"raw",
data,
sheet_name,
)
@@ -942,6 +956,7 @@ def display_line(
markers_lines: Optional[List[datetime]] = None,
markers_scatter: Optional[List[datetime]] = None,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Display line plot of data
@@ -958,6 +973,8 @@ def display_line(
List of dates to highlight using vertical lines
markers_scatter: Optional[List[datetime]]
List of dates to highlight using scatter
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes : Optional[List[plt.Axes]], optional
@@ -1042,6 +1059,7 @@ def display_line(
export,
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"line",
sheet_name,
)

View File

@@ -29,6 +29,7 @@ def display_mean_std(
symbol: str = "",
window: int = 14,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots mean std deviation
@@ -43,6 +44,8 @@ def display_mean_std(
Stock ticker
window : int
Length of window
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes: Optional[List[plt.Axes]], optional
@@ -128,6 +131,7 @@ def display_mean_std(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"rolling",
rolling_mean.join(rolling_std, lsuffix="_mean", rsuffix="_std"),
sheet_name,
)
@@ -138,6 +142,7 @@ def display_spread(
symbol: str = "",
window: int = 14,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots rolling spread
@@ -154,6 +159,8 @@ def display_spread(
Stock ticker
window : int
Length of window
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes: Optional[List[plt.Axes]], optional
@@ -238,6 +245,7 @@ def display_spread(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"spread",
df_sd.join(df_var, lsuffix="_sd", rsuffix="_var"),
sheet_name,
)
@@ -249,6 +257,7 @@ def display_quantile(
window: int = 14,
quantile: float = 0.5,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots rolling quantile
@@ -265,6 +274,8 @@ def display_quantile(
Length of window
quantile: float
Quantile to get
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes: Optional[List[plt.Axes]], optional
@@ -334,6 +345,7 @@ def display_quantile(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"quantile",
df_med.join(df_quantile),
sheet_name,
)
@@ -344,6 +356,7 @@ def display_skew(
target: str,
window: int = 14,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots rolling skew
@@ -358,6 +371,8 @@ def display_skew(
Column in data to look at
window: int
Length of window
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes: Optional[List[plt.Axes]], optional
@@ -417,6 +432,7 @@ def display_skew(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"skew",
df_skew,
sheet_name,
)
@@ -427,6 +443,7 @@ def display_kurtosis(
target: str,
window: int = 14,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots rolling kurtosis
@@ -441,6 +458,8 @@ def display_kurtosis(
Column in data to look at
window: int
Length of window
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes: Optional[List[plt.Axes]], optional
@@ -503,4 +522,5 @@ def display_kurtosis(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"kurtosis",
df_kurt,
sheet_name,
)

View File

@@ -33,6 +33,7 @@ def fibonacci_retracement(
end_date: Optional[Union[str, None]] = None,
symbol: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots Calculated fibonacci retracement levels
@@ -49,6 +50,8 @@ def fibonacci_retracement(
User picked date for ending retracement
symbol: str
Ticker symbol
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes : Optional[List[plt.Axes]], optional
@@ -138,4 +141,5 @@ def fibonacci_retracement(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"fib",
df_fib,
sheet_name,
)

View File

@@ -37,6 +37,7 @@ def display_cci(
scalar: float = 0.0015,
symbol: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots CCI Indicator
@@ -119,6 +120,7 @@ def display_cci(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"cci",
df_ta,
sheet_name,
)
@@ -130,6 +132,7 @@ def display_macd(
n_signal: int = 9,
symbol: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots MACD signal
@@ -212,6 +215,7 @@ def display_macd(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"macd",
df_ta,
sheet_name,
)
@@ -223,6 +227,7 @@ def display_rsi(
drift: int = 1,
symbol: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots RSI Indicator
@@ -300,6 +305,7 @@ def display_rsi(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"rsi",
df_ta,
sheet_name,
)
@@ -311,6 +317,7 @@ def display_stoch(
slowkperiod: int = 3,
symbol: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots stochastic oscillator signal
@@ -399,6 +406,7 @@ def display_stoch(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"stoch",
df_ta,
sheet_name,
)
@@ -408,6 +416,7 @@ def display_fisher(
window: int = 14,
symbol: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots Fisher Indicator
@@ -492,6 +501,7 @@ def display_fisher(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"fisher",
df_ta,
sheet_name,
)
@@ -501,6 +511,7 @@ def display_cg(
window: int = 14,
symbol: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots center of gravity Indicator
@@ -563,6 +574,7 @@ def display_cg(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"cg",
df_ta,
sheet_name,
)
@@ -572,6 +584,7 @@ def display_clenow_momentum(
symbol: str = "",
window: int = 90,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Prints table and plots clenow momentum
@@ -638,6 +651,7 @@ def display_clenow_momentum(
export,
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"clenow",
sheet_name,
)
@@ -646,6 +660,7 @@ def display_demark(
symbol: str = "",
min_to_show: int = 5,
export: str = "",
sheet_name: Optional[str] = "",
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plot demark sequential indicator
@@ -753,4 +768,5 @@ def display_demark(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"demark",
stock_data,
sheet_name,
)

View File

@@ -25,6 +25,8 @@ from openbb_terminal.rich_config import console
logger = logging.getLogger(__name__)
# pylint: disable=too-many-arguments
register_matplotlib_converters()
@@ -36,6 +38,7 @@ def view_ma(
ma_type: str = "EMA",
symbol: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots MA technical indicator
@@ -52,6 +55,8 @@ def view_ma(
Type of moving average. Either "EMA" "ZLMA" or "SMA"
symbol: str
Ticker
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes: Optional[List[plt.Axes]], optional
@@ -126,6 +131,7 @@ def view_ma(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
f"{ma_type.lower()}{'_'.join([str(win) for win in window])}",
price_df,
sheet_name,
)
@@ -138,6 +144,7 @@ def view_vwap(
offset: int = 0,
interval: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots VWMA technical indicator
@@ -233,4 +240,5 @@ def view_vwap(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"VWAP",
df_vwap,
sheet_name,
)

View File

@@ -34,6 +34,7 @@ def display_adx(
drift: int = 1,
symbol: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots ADX indicator
@@ -114,6 +115,7 @@ def display_adx(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"adx",
df_ta,
sheet_name,
)
@@ -124,6 +126,7 @@ def display_aroon(
scalar: int = 100,
symbol: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots Aroon indicator
@@ -138,6 +141,8 @@ def display_aroon(
Ticker
scalar: int
Scalar variable
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes: Optional[List[plt.Axes]], optional
@@ -204,4 +209,5 @@ def display_aroon(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"aroon",
df_ta,
sheet_name,
)

View File

@@ -22,6 +22,8 @@ from openbb_terminal.common.technical_analysis import ta_helpers
logger = logging.getLogger(__name__)
# pylint: disable=too-many-arguments
@log_start_end(log=logger)
def display_bbands(
@@ -31,6 +33,7 @@ def display_bbands(
n_std: float = 2,
mamode: str = "sma",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots bollinger bands
@@ -105,6 +108,7 @@ def display_bbands(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"bbands",
df_ta,
sheet_name,
)
@@ -115,6 +119,7 @@ def display_donchian(
upper_length: int = 20,
lower_length: int = 20,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots donchian channels
@@ -187,6 +192,7 @@ def display_donchian(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"donchian",
df_ta,
sheet_name,
)
@@ -199,6 +205,7 @@ def view_kc(
offset: int = 0,
symbol: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots Keltner Channels Indicator
@@ -218,6 +225,8 @@ def view_kc(
Offset value
symbol: str
Ticker symbol
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes: Optional[List[plt.Axes]], optional
@@ -282,6 +291,7 @@ def view_kc(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"kc",
df_ta,
sheet_name,
)
@@ -293,6 +303,7 @@ def display_atr(
mamode: str = "sma",
offset: int = 0,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots ATR
@@ -354,4 +365,5 @@ def display_atr(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"atr",
df_ta,
sheet_name,
)

View File

@@ -30,6 +30,7 @@ def display_ad(
use_open: bool = False,
symbol: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots AD technical indicator
@@ -42,6 +43,8 @@ def display_ad(
Whether to use open prices in calculation
symbol : str
Ticker symbol
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data as
external_axes : Optional[List[plt.Axes]], optional
@@ -134,6 +137,7 @@ def display_ad(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"ad",
df_ta,
sheet_name,
)
@@ -145,6 +149,7 @@ def display_adosc(
use_open: bool = False,
symbol: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots AD Osc Indicator
@@ -242,6 +247,7 @@ def display_adosc(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"adosc",
df_ta,
sheet_name,
)
@@ -250,6 +256,7 @@ def display_obv(
data: pd.DataFrame,
symbol: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots OBV technical indicator
@@ -260,6 +267,8 @@ def display_obv(
Dataframe of ohlc prices
symbol : str
Ticker
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data as
external_axes : Optional[List[plt.Axes]], optional
@@ -345,4 +354,5 @@ def display_obv(
os.path.dirname(os.path.abspath(__file__)).replace("common", "stocks"),
"obv",
df_ta,
sheet_name,
)

View File

@@ -295,6 +295,7 @@ class CryptoController(CryptoBaseController):
os.path.join(os.path.dirname(os.path.abspath(__file__))),
f"{self.symbol}",
self.current_df,
" ".join(ns_parser.sheet_name) if ns_parser.sheet_name else None,
)
plot_chart(
@@ -520,6 +521,9 @@ class CryptoController(CryptoBaseController):
skip=ns_parser.skip,
show_all=True,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
else:
find(
@@ -528,6 +532,9 @@ class CryptoController(CryptoBaseController):
key=ns_parser.key,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)

View File

@@ -10,6 +10,7 @@ def find(
key: str = "symbol",
limit: int = 10,
export: str = "",
sheet_name: str = None,
) -> None:
"""Find similar coin by coin name,symbol or id.
@@ -48,4 +49,5 @@ def find(
os.path.dirname(os.path.abspath(__file__)),
"find",
df,
sheet_name,
)

View File

@@ -639,7 +639,13 @@ def load_yf_data(symbol: str, currency: str, interval: str, days: int):
def display_all_coins(
source: str, symbol: str, limit: int, skip: int, show_all: bool, export: str
source: str,
symbol: str,
limit: int,
skip: int,
show_all: bool,
export: str,
sheet_name: str,
) -> None:
"""Find similar coin by coin name,symbol or id.
If you don't remember exact name or id of the Coin at CoinGecko, CoinPaprika, Coinbase, Binance
@@ -745,6 +751,7 @@ def display_all_coins(
os.path.dirname(os.path.abspath(__file__)),
"coins",
df,
sheet_name,
)

View File

@@ -14,6 +14,8 @@ from openbb_terminal.helper_funcs import (
logger = logging.getLogger(__name__)
# pylint: disable=too-many-arguments
@log_start_end(log=logger)
def display_defi_vaults(
@@ -25,6 +27,7 @@ def display_defi_vaults(
ascend: bool = True,
link: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing Top DeFi Vaults - pools of funds with an assigned strategy which main goal is to
maximize returns of its crypto assets. [Source: https://coindix.com/]
@@ -85,4 +88,5 @@ def display_defi_vaults(
os.path.dirname(os.path.abspath(__file__)),
"vaults",
df,
sheet_name,
)

View File

@@ -25,6 +25,7 @@ logger = logging.getLogger(__name__)
def display_anchor_data(
address: str = "",
export: str = "",
sheet_name: str = None,
show_transactions: bool = False,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
@@ -78,4 +79,5 @@ def display_anchor_data(
os.path.dirname(os.path.abspath(__file__)),
"anchor",
df,
sheet_name,
)

View File

@@ -132,6 +132,9 @@ class DefiController(BaseController):
cryptosaurio_view.display_anchor_data(
show_transactions=ns_parser.transactions,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
address=ns_parser.address,
)
@@ -172,9 +175,12 @@ class DefiController(BaseController):
if ns_parser:
terramoney_fcd_view.display_account_staking_info(
export=ns_parser.export,
address=ns_parser.address,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -222,10 +228,13 @@ class DefiController(BaseController):
)
if ns_parser:
terramoney_fcd_view.display_validators(
export=ns_parser.export,
sortby=ns_parser.sortby,
ascend=ns_parser.reverse,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -272,6 +281,9 @@ class DefiController(BaseController):
terramoney_fcd_view.display_account_growth(
kind=ns_parser.kind,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
cumulative=ns_parser.cumulative,
limit=ns_parser.limit,
)
@@ -302,7 +314,11 @@ class DefiController(BaseController):
if ns_parser:
terramoney_fcd_view.display_staking_ratio_history(
export=ns_parser.export, limit=ns_parser.limit
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
limit=ns_parser.limit,
)
@log_start_end(log=logger)
@@ -331,7 +347,11 @@ class DefiController(BaseController):
if ns_parser:
terramoney_fcd_view.display_staking_returns_history(
export=ns_parser.export, limit=ns_parser.limit
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
limit=ns_parser.limit,
)
@log_start_end(log=logger)
@@ -450,6 +470,9 @@ class DefiController(BaseController):
ascend=ns_parser.reverse,
description=ns_parser.description,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -479,7 +502,13 @@ class DefiController(BaseController):
)
if ns_parser:
llama_view.display_defi_tvl(limit=ns_parser.limit, export=ns_parser.export)
llama_view.display_defi_tvl(
limit=ns_parser.limit,
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_newsletter(self, other_args: List[str]):
@@ -509,7 +538,11 @@ class DefiController(BaseController):
if ns_parser:
substack_view.display_newsletters(
limit=ns_parser.limit, export=ns_parser.export
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -572,6 +605,9 @@ class DefiController(BaseController):
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)
@@ -592,7 +628,12 @@ class DefiController(BaseController):
)
if ns_parser:
graph_view.display_uni_stats(export=ns_parser.export)
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]):
@@ -677,6 +718,9 @@ class DefiController(BaseController):
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)
@@ -730,6 +774,9 @@ class DefiController(BaseController):
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)
@@ -783,6 +830,9 @@ class DefiController(BaseController):
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)
@@ -880,6 +930,9 @@ class DefiController(BaseController):
ascend=ns_parser.reverse,
link=ns_parser.link,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
def call_lcsc(self, other_args: List[str]):
@@ -923,4 +976,7 @@ class DefiController(BaseController):
days=ns_parser.days,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)

View File

@@ -13,6 +13,8 @@ from openbb_terminal.helper_funcs import export_data, print_rich_table
logger = logging.getLogger(__name__)
# pylint: disable=too-many-arguments
@log_start_end(log=logger)
def display_uni_tokens(
@@ -21,6 +23,7 @@ def display_uni_tokens(
sortby: str = "index",
ascend: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing tokens trade-able on Uniswap DEX.
[Source: https://thegraph.com/en/]
@@ -65,11 +68,12 @@ def display_uni_tokens(
os.path.dirname(os.path.abspath(__file__)),
"tokens",
df_data,
sheet_name,
)
@log_start_end(log=logger)
def display_uni_stats(export: str = "") -> None:
def display_uni_stats(export: str = "", sheet_name: str = None) -> None:
"""Prints table showing base statistics about Uniswap DEX. [Source: https://thegraph.com/en/]
[Source: https://thegraph.com/en/]
@@ -95,6 +99,7 @@ def display_uni_stats(export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"stats",
df_data,
sheet_name,
)
@@ -108,6 +113,7 @@ def display_recently_added(
sortby: str = "created",
ascend: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing Lastly added pairs on Uniswap DEX.
[Source: https://thegraph.com/en/]
@@ -163,12 +169,17 @@ def display_recently_added(
os.path.dirname(os.path.abspath(__file__)),
"pairs",
df_data,
sheet_name,
)
@log_start_end(log=logger)
def display_uni_pools(
limit: int = 20, sortby: str = "volumeUSD", ascend: bool = True, export: str = ""
limit: int = 20,
sortby: str = "volumeUSD",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing uniswap pools by volume.
[Source: https://thegraph.com/en/]
@@ -211,12 +222,17 @@ def display_uni_pools(
os.path.dirname(os.path.abspath(__file__)),
"pools",
df_data,
sheet_name,
)
@log_start_end(log=logger)
def display_last_uni_swaps(
limit: int = 10, sortby: str = "timestamp", ascend: bool = False, export: str = ""
limit: int = 10,
sortby: str = "timestamp",
ascend: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing last swaps done on Uniswap
[Source: https://thegraph.com/en/]
@@ -245,4 +261,5 @@ def display_last_uni_swaps(
os.path.dirname(os.path.abspath(__file__)),
"swaps",
df,
sheet_name,
)

View File

@@ -26,7 +26,10 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def display_grouped_defi_protocols(
limit: int = 50, export: str = "", external_axes: Optional[List[plt.Axes]] = None
limit: int = 50,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots top dApps (in terms of TVL) grouped by chain.
[Source: https://docs.llama.fi/api]
@@ -87,6 +90,7 @@ def display_grouped_defi_protocols(
os.path.dirname(os.path.abspath(__file__)),
"gdapps",
chains,
sheet_name,
)
@@ -97,6 +101,7 @@ def display_defi_protocols(
ascend: bool = False,
description: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing information about listed DeFi protocols, their current TVL and changes to it in
the last hour/day/week. [Source: https://docs.llama.fi/api]
@@ -124,6 +129,7 @@ def display_defi_protocols(
os.path.dirname(os.path.abspath(__file__)),
"ldapps",
df,
sheet_name,
)
@@ -131,6 +137,7 @@ def display_defi_protocols(
def display_historical_tvl(
dapps: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots historical TVL of different dApps
@@ -181,6 +188,7 @@ def display_historical_tvl(
os.path.dirname(os.path.abspath(__file__)),
"dtvl",
None,
sheet_name,
)
@@ -188,6 +196,7 @@ def display_historical_tvl(
def display_defi_tvl(
limit: int = 5,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots historical values of the total sum of TVLs from all listed protocols.
@@ -233,4 +242,5 @@ def display_defi_tvl(
os.path.dirname(os.path.abspath(__file__)),
"stvl",
df_data,
sheet_name,
)

View File

@@ -30,6 +30,7 @@ logger = logging.getLogger(__name__)
def display_luna_circ_supply_change(
days: int = 30,
export: str = "",
sheet_name: str = None,
supply_type: str = "lunaSupplyChallengeStats",
limit: int = 5,
external_axes: Optional[List[plt.Axes]] = None,
@@ -42,6 +43,8 @@ def display_luna_circ_supply_change(
Number of days
supply_type: str
Supply type to unpack json
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Export type
limit: int
@@ -110,6 +113,7 @@ def display_luna_circ_supply_change(
os.path.dirname(os.path.abspath(__file__)),
"lcsc",
df[RAW_COLS],
sheet_name,
)
df.index = df.index.strftime("%Y-%m-%d")

View File

@@ -13,7 +13,9 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def display_newsletters(limit: int = 10, export: str = "") -> None:
def display_newsletters(
limit: int = 10, export: str = "", sheet_name: str = None
) -> None:
"""Prints table showing DeFi related substack newsletters.
[Source: substack.com]
@@ -34,4 +36,10 @@ def display_newsletters(limit: int = 10, export: str = "") -> None:
title="Substack Newsletters",
)
export_data(export, os.path.dirname(os.path.abspath(__file__)), "newsletter", df)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"newsletter",
df,
sheet_name,
)

View File

@@ -30,6 +30,7 @@ def display_terra_asset_history(
asset: str = "",
address: str = "",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots the 30-day history of specified asset in terra address
@@ -78,12 +79,15 @@ def display_terra_asset_history(
os.path.dirname(os.path.abspath(__file__)),
"aterra",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_anchor_yield_reserve(
export: str = "", external_axes: Optional[List[plt.Axes]] = None
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots the 30-day history of the Anchor Yield Reserve.
[Source: https://terra.engineer/]
@@ -126,4 +130,5 @@ def display_anchor_yield_reserve(
os.path.dirname(os.path.abspath(__file__)),
"ayr",
df,
sheet_name,
)

View File

@@ -30,7 +30,7 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def display_account_staking_info(
address: str = "", limit: int = 10, export: str = ""
address: str = "", limit: int = 10, export: str = "", sheet_name: str = None
) -> None:
"""Prints table showing staking info for provided terra account address [Source: https://fcd.terra.dev/swagger]
@@ -57,12 +57,17 @@ def display_account_staking_info(
os.path.dirname(os.path.abspath(__file__)),
"sinfo",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_validators(
limit: int = 10, sortby: str = "votingPower", ascend: bool = True, export: str = ""
limit: int = 10,
sortby: str = "votingPower",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing information about terra validators [Source: https://fcd.terra.dev/swagger]
@@ -101,6 +106,7 @@ def display_validators(
os.path.dirname(os.path.abspath(__file__)),
"validators",
df_data,
sheet_name,
)
@@ -111,6 +117,7 @@ def display_gov_proposals(
sortby: str = "id",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing terra blockchain governance proposals list [Source: https://fcd.terra.dev/swagger]
@@ -132,7 +139,13 @@ def display_gov_proposals(
print_rich_table(df, headers=list(df.columns), floatfmt=".2f", show_index=False)
export_data(export, os.path.dirname(os.path.abspath(__file__)), "govp", df)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"govp",
df,
sheet_name,
)
@log_start_end(log=logger)
@@ -141,6 +154,7 @@ def display_account_growth(
cumulative: bool = False,
limit: int = 90,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots terra blockchain account growth history [Source: https://fcd.terra.dev/swagger]
@@ -200,6 +214,7 @@ def display_account_growth(
os.path.dirname(os.path.abspath(__file__)),
"gacc",
df,
sheet_name,
)
@@ -207,6 +222,7 @@ def display_account_growth(
def display_staking_ratio_history(
limit: int = 90,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots terra blockchain staking ratio history [Source: https://fcd.terra.dev/v1]
@@ -247,6 +263,7 @@ def display_staking_ratio_history(
os.path.dirname(os.path.abspath(__file__)),
"sratio",
df,
sheet_name,
)
@@ -254,6 +271,7 @@ def display_staking_ratio_history(
def display_staking_returns_history(
limit: int = 90,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots terra blockchain staking returns history [Source: https://fcd.terra.dev/swagger]
@@ -294,4 +312,5 @@ def display_staking_returns_history(
os.path.dirname(os.path.abspath(__file__)),
"sreturn",
df,
sheet_name,
)

View File

@@ -20,6 +20,7 @@ def display_cmc_top_coins(
sortby: str = "CMC_Rank",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing top n coins. [Source: CoinMarketCap]
@@ -56,4 +57,5 @@ def display_cmc_top_coins(
os.path.dirname(os.path.abspath(__file__)),
"cmctop",
df,
sheet_name,
)

View File

@@ -20,6 +20,7 @@ def display_search_results(
sortby: str = "id",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing Search over CoinPaprika. [Source: CoinPaprika]
@@ -65,4 +66,5 @@ def display_search_results(
os.path.dirname(os.path.abspath(__file__)),
"search",
df,
sheet_name,
)

View File

@@ -17,7 +17,9 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def display_top_nfts(limit: int = 10, sortby: str = "", export: str = "") -> None:
def display_top_nfts(
limit: int = 10, sortby: str = "", export: str = "", sheet_name: str = None
) -> None:
"""Prints table showing top nft collections [Source: https://dappradar.com/]
Parameters
@@ -54,11 +56,14 @@ def display_top_nfts(limit: int = 10, sortby: str = "", export: str = "") -> Non
os.path.dirname(os.path.abspath(__file__)),
"drnft",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_top_games(limit: int = 10, export: str = "", sortby: str = "") -> None:
def display_top_games(
limit: int = 10, export: str = "", sheet_name: str = None, sortby: str = ""
) -> None:
"""Prints table showing top blockchain games [Source: https://dappradar.com/]
Parameters
@@ -90,11 +95,14 @@ def display_top_games(limit: int = 10, export: str = "", sortby: str = "") -> No
os.path.dirname(os.path.abspath(__file__)),
"drgames",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_top_dexes(limit: int = 10, export: str = "", sortby: str = "") -> None:
def display_top_dexes(
limit: int = 10, export: str = "", sheet_name: str = None, sortby: str = ""
) -> None:
"""Prints table showing top decentralized exchanges [Source: https://dappradar.com/]
Parameters
@@ -126,11 +134,14 @@ def display_top_dexes(limit: int = 10, export: str = "", sortby: str = "") -> No
os.path.dirname(os.path.abspath(__file__)),
"drdex",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_top_dapps(limit: int = 10, export: str = "", sortby: str = "") -> None:
def display_top_dapps(
limit: int = 10, export: str = "", sheet_name: str = None, sortby: str = ""
) -> None:
"""Prints table showing top decentralized exchanges [Source: https://dappradar.com/]
Parameters
@@ -162,4 +173,5 @@ def display_top_dapps(limit: int = 10, export: str = "", sortby: str = "") -> No
os.path.dirname(os.path.abspath(__file__)),
"drdapps",
df,
sheet_name,
)

View File

@@ -154,6 +154,9 @@ class DiscoveryController(BaseController):
category=ns_parser.category,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
ascend=ns_parser.reverse,
)
elif ns_parser.source == "CoinMarketCap":
@@ -162,6 +165,9 @@ class DiscoveryController(BaseController):
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)
@@ -204,6 +210,9 @@ class DiscoveryController(BaseController):
sortby=" ".join(ns_parser.sortby),
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -246,6 +255,9 @@ class DiscoveryController(BaseController):
sortby=" ".join(ns_parser.sortby),
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -288,6 +300,9 @@ class DiscoveryController(BaseController):
sortby=" ".join(ns_parser.sortby),
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -331,6 +346,9 @@ class DiscoveryController(BaseController):
sortby=" ".join(ns_parser.sortby),
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -386,6 +404,9 @@ class DiscoveryController(BaseController):
interval=ns_parser.interval,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
sortby=" ".join(ns_parser.sortby),
)
@@ -443,6 +464,9 @@ class DiscoveryController(BaseController):
interval=ns_parser.interval,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
sortby=" ".join(ns_parser.sortby),
)
@@ -465,6 +489,9 @@ class DiscoveryController(BaseController):
if ns_parser:
pycoingecko_view.display_trending(
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -542,6 +569,9 @@ class DiscoveryController(BaseController):
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,
query=" ".join(ns_parser.query),
category=ns_parser.category,
)

View File

@@ -37,6 +37,7 @@ def display_coins(
limit: int = 250,
sortby: str = "Symbol",
export: str = "",
sheet_name: str = None,
ascend: bool = False,
) -> None:
"""Prints table showing top coins [Source: CoinGecko]
@@ -91,6 +92,7 @@ def display_coins(
os.path.dirname(os.path.abspath(__file__)),
"cgtop",
df,
sheet_name,
)
else:
console.print("\nUnable to retrieve data from CoinGecko.\n")
@@ -102,6 +104,7 @@ def display_gainers(
limit: int = 20,
sortby: str = "market_cap_rank",
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing Largest Gainers - coins which gain the most in given period. [Source: CoinGecko]
@@ -137,6 +140,7 @@ def display_gainers(
os.path.dirname(os.path.abspath(__file__)),
"gainers",
df,
sheet_name,
)
else:
console.print("\nUnable to retrieve data from CoinGecko.\n")
@@ -147,6 +151,7 @@ def display_losers(
interval: str = "1h",
limit: int = 20,
export: str = "",
sheet_name: str = None,
sortby: str = "Market Cap Rank",
) -> None:
"""Prints table showing Largest Losers - coins which lost the most in given period of time. [Source: CoinGecko]
@@ -183,13 +188,14 @@ def display_losers(
os.path.dirname(os.path.abspath(__file__)),
"cglosers",
df,
sheet_name,
)
else:
console.print("\nUnable to retrieve data from CoinGecko.\n")
@log_start_end(log=logger)
def display_trending(export: str = "") -> None:
def display_trending(export: str = "", sheet_name: str = None) -> None:
"""Prints table showing trending coins [Source: CoinGecko]
Parameters
@@ -213,6 +219,7 @@ def display_trending(export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"cgtrending",
df,
sheet_name,
)
else:
console.print("\nUnable to retrieve data from CoinGecko.\n")

View File

@@ -26,6 +26,7 @@ def display_order_book(
limit: int = 100,
to_symbol: str = "USDT",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots order book for currency. [Source: Binance]
@@ -39,6 +40,8 @@ def display_order_book(
Limit parameter. Adjusts the weight
to_symbol: str
Quote currency (what to view coin vs)
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Export dataframe data to csv,json,xlsx
external_axes : Optional[List[plt.Axes]]
@@ -57,12 +60,13 @@ def display_order_book(
os.path.dirname(os.path.abspath(__file__)),
"book",
market_book,
sheet_name,
)
@log_start_end(log=logger)
def display_balance(
from_symbol: str, to_symbol: str = "USDT", export: str = ""
from_symbol: str, to_symbol: str = "USDT", export: str = "", sheet_name: str = None
) -> None:
"""Prints table showing account holdings for asset. [Source: Binance]
@@ -72,6 +76,8 @@ def display_balance(
Cryptocurrency
to_symbol: str
Cryptocurrency
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Export dataframe data to csv,json,xlsx
"""
@@ -94,4 +100,5 @@ def display_balance(
os.path.dirname(os.path.abspath(__file__)),
"book",
df,
sheet_name,
)

View File

@@ -21,6 +21,7 @@ def display_order_book(
symbol: str,
to_symbol: str,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots order book for a coin in a given exchange
@@ -56,12 +57,18 @@ def display_order_book(
os.path.dirname(os.path.abspath(__file__)),
"ob",
market_book,
sheet_name,
)
@log_start_end(log=logger)
def display_trades(
exchange: str, symbol: str, to_symbol: str, limit: int = 10, export: str = ""
exchange: str,
symbol: str,
to_symbol: str,
limit: int = 10,
export: str = "",
sheet_name: str = None,
):
"""Prints table showing trades for a coin in a given exchange
[Source: https://docs.ccxt.com/en/latest/manual.html]
@@ -92,4 +99,5 @@ def display_trades(
os.path.dirname(os.path.abspath(__file__)),
"trades",
df,
sheet_name,
)

View File

@@ -23,6 +23,7 @@ register_matplotlib_converters()
def display_order_book(
symbol: str,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots a list of available currency pairs for trading. [Source: Coinbase]
@@ -44,12 +45,17 @@ def display_order_book(
os.path.dirname(os.path.abspath(__file__)),
"book",
pd.DataFrame(market_book),
sheet_name,
)
@log_start_end(log=logger)
def display_trades(
symbol: str, limit: int = 20, side: Optional[str] = None, export: str = ""
symbol: str,
limit: int = 20,
side: Optional[str] = None,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing last N trades for chosen trading pair. [Source: Coinbase]
@@ -69,11 +75,19 @@ def display_trades(
print_rich_table(df, headers=list(df.columns), show_index=False)
export_data(export, os.path.dirname(os.path.abspath(__file__)), "trades", df)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"trades",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_candles(symbol: str, interval: str = "24hour", export: str = "") -> None:
def display_candles(
symbol: str, interval: str = "24hour", export: str = "", sheet_name: str = None
) -> None:
"""Prints table showing candles for chosen trading pair and time interval. [Source: Coinbase]
Parameters
@@ -92,11 +106,17 @@ def display_candles(symbol: str, interval: str = "24hour", export: str = "") ->
df, headers=list(df.columns), show_index=True, title="Trading Pair Candles"
)
export_data(export, os.path.dirname(os.path.abspath(__file__)), "candles", df)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"candles",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_stats(symbol: str, export: str = "") -> None:
def display_stats(symbol: str, export: str = "", sheet_name: str = None) -> None:
"""Prints table showing 24 hr stats for the product. Volume is in base currency units.
Open, high and low are in quote currency units. [Source: Coinbase]
@@ -117,4 +137,10 @@ def display_stats(symbol: str, export: str = "") -> None:
title=f"Coinbase:{symbol.upper()} 24 hr Product Stats",
)
export_data(export, os.path.dirname(os.path.abspath(__file__)), "stats", df)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"stats",
df,
sheet_name,
)

View File

@@ -27,7 +27,7 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
@check_api_key(["API_COINGLASS_KEY"])
def display_funding_rate(symbol: str, export: str = "") -> None:
def display_funding_rate(symbol: str, export: str = "", sheet_name: str = None) -> None:
"""Plots funding rate by exchange for a certain cryptocurrency
[Source: https://coinglass.github.io/API-Reference/]
@@ -48,12 +48,15 @@ def display_funding_rate(symbol: str, export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"fundrate",
df,
sheet_name,
)
@log_start_end(log=logger)
@check_api_key(["API_COINGLASS_KEY"])
def display_open_interest(symbol: str, interval: int = 0, export: str = "") -> None:
def display_open_interest(
symbol: str, interval: int = 0, export: str = "", sheet_name: str = None
) -> None:
"""Plots open interest by exchange for a certain cryptocurrency
[Source: https://coinglass.github.io/API-Reference/]
@@ -81,12 +84,13 @@ def display_open_interest(symbol: str, interval: int = 0, export: str = "") -> N
os.path.dirname(os.path.abspath(__file__)),
"oi",
df,
sheet_name,
)
@log_start_end(log=logger)
@check_api_key(["API_COINGLASS_KEY"])
def display_liquidations(symbol: str, export: str = "") -> None:
def display_liquidations(symbol: str, export: str = "", sheet_name: str = None) -> None:
"""Plots liquidation per day data for a certain cryptocurrency
[Source: https://coinglass.github.io/API-Reference/#liquidation-chart]
@@ -112,6 +116,7 @@ def display_liquidations(symbol: str, export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"liquidations",
df,
sheet_name,
)

View File

@@ -89,6 +89,7 @@ def display_twitter(
sortby: str = "date",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing twitter timeline for given coin id. Not more than last 50 tweets [Source: CoinPaprika]
@@ -125,6 +126,7 @@ def display_twitter(
os.path.dirname(os.path.abspath(__file__)),
"twitter",
df,
sheet_name,
)
@@ -136,6 +138,7 @@ def display_events(
ascend: bool = False,
links: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing all events for given coin id. [Source: CoinPaprika]
@@ -178,6 +181,7 @@ def display_events(
os.path.dirname(os.path.abspath(__file__)),
"events",
df_data,
sheet_name,
)
@@ -188,6 +192,7 @@ def display_exchanges(
sortby: str = "adjusted_volume_24h_share",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing all exchanges for given coin id. [Source: CoinPaprika]
@@ -223,6 +228,7 @@ def display_exchanges(
os.path.dirname(os.path.abspath(__file__)),
"ex",
df,
sheet_name,
)
@@ -235,6 +241,7 @@ def display_markets(
ascend: bool = True,
links: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing all markets for given coin id. [Source: CoinPaprika]
@@ -280,6 +287,7 @@ def display_markets(
os.path.dirname(os.path.abspath(__file__)),
"mkt",
df_data,
sheet_name,
)
@@ -288,6 +296,7 @@ def display_price_supply(
from_symbol: str = "BTC",
to_symbol: str = "USD",
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing ticker information for single coin [Source: CoinPaprika]
@@ -297,6 +306,8 @@ def display_price_supply(
Cryptocurrency symbol (e.g. BTC)
to_symbol: str
Quoted currency
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Export dataframe data to csv,json,xlsx
@@ -318,6 +329,7 @@ def display_price_supply(
os.path.dirname(os.path.abspath(__file__)),
"ps",
df,
sheet_name,
)
@@ -325,6 +337,7 @@ def display_price_supply(
def display_basic(
symbol: str = "BTC",
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing basic information for coin. Like:
name, symbol, rank, type, description, platform, proof_type, contract, tags, parent.
@@ -334,6 +347,8 @@ def display_basic(
----------
symbol: str
Cryptocurrency symbol (e.g. BTC)
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Export dataframe data to csv,json,xlsx
"""
@@ -352,4 +367,5 @@ def display_basic(
os.path.dirname(os.path.abspath(__file__)),
"basic",
df,
sheet_name,
)

View File

@@ -13,6 +13,8 @@ from openbb_terminal.cryptocurrency.dataframe_helpers import prettify_column_nam
logger = logging.getLogger(__name__)
# pylint: disable=too-many-arguments
@log_start_end(log=logger)
@check_api_key(["API_CRYPTO_PANIC_KEY"])
@@ -25,6 +27,7 @@ def display_news(
limit: int = 25,
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing recent posts from CryptoPanic news aggregator platform.
[Source: https://cryptopanic.com/]
@@ -73,4 +76,5 @@ def display_news(
os.path.dirname(os.path.abspath(__file__)),
"news",
df,
sheet_name,
)

View File

@@ -269,6 +269,9 @@ class DueDiligenceController(CryptoBaseController):
start_date=ns_parser.since.strftime("%Y-%m-%d"),
end_date=ns_parser.until.strftime("%Y-%m-%d"),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
else:
@@ -302,7 +305,7 @@ class DueDiligenceController(CryptoBaseController):
if ns_parser:
pair = f"{coin}-{ns_parser.vs.upper()}"
coinbase_view.display_stats(pair, ns_parser.export)
coinbase_view.display_stats(pair, ns_parser.export, ns_parser.sheet_name)
@log_start_end(log=logger)
def call_active(self, other_args: List[str]):
@@ -357,6 +360,9 @@ class DueDiligenceController(CryptoBaseController):
start_date=ns_parser.since.strftime("%Y-%m-%d"),
end_date=ns_parser.until.strftime("%Y-%m-%d"),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
else:
console.print(f"[red]{self.symbol} not supported on Glassnode.[/red]")
@@ -419,6 +425,9 @@ class DueDiligenceController(CryptoBaseController):
start_date=ns_parser.since.strftime("%Y-%m-%d"),
end_date=ns_parser.until.strftime("%Y-%m-%d"),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
else:
console.print(f"[red]{self.symbol} not supported on Glassnode.[/red]")
@@ -491,6 +500,9 @@ class DueDiligenceController(CryptoBaseController):
end_date=ns_parser.until.strftime("%Y-%m-%d"),
percentage=ns_parser.percentage,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
else:
console.print(f"[red]{self.symbol} not supported on Glassnode.[/red]")
@@ -528,6 +540,9 @@ class DueDiligenceController(CryptoBaseController):
symbol=self.symbol.upper(),
interval=ns_parser.interval,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -552,6 +567,9 @@ class DueDiligenceController(CryptoBaseController):
coinglass_view.display_liquidations(
symbol=self.symbol.upper(),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -576,6 +594,9 @@ class DueDiligenceController(CryptoBaseController):
coinglass_view.display_funding_rate(
symbol=self.symbol.upper(),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -600,6 +621,9 @@ class DueDiligenceController(CryptoBaseController):
pycoingecko_view.display_info(
symbol=self.symbol,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -619,7 +643,13 @@ class DueDiligenceController(CryptoBaseController):
if ns_parser:
cg_id = check_cg_id(self.symbol)
if cg_id:
pycoingecko_view.display_market(cg_id, ns_parser.export)
pycoingecko_view.display_market(
cg_id,
ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
def call_web(self, other_args):
@@ -641,6 +671,9 @@ class DueDiligenceController(CryptoBaseController):
pycoingecko_view.display_web(
self.symbol,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -660,7 +693,13 @@ class DueDiligenceController(CryptoBaseController):
if ns_parser:
cg_id = check_cg_id(self.symbol)
if cg_id:
pycoingecko_view.display_social(cg_id, export=ns_parser.export)
pycoingecko_view.display_social(
cg_id,
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_dev(self, other_args):
@@ -682,7 +721,13 @@ class DueDiligenceController(CryptoBaseController):
if ns_parser:
cg_id = check_cg_id(self.symbol)
if cg_id:
pycoingecko_view.display_dev(cg_id, ns_parser.export)
pycoingecko_view.display_dev(
cg_id,
ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
def call_ath(self, other_args):
@@ -709,7 +754,14 @@ class DueDiligenceController(CryptoBaseController):
if ns_parser:
cg_id = check_cg_id(self.symbol)
if cg_id:
pycoingecko_view.display_ath(cg_id, ns_parser.vs, ns_parser.export)
pycoingecko_view.display_ath(
cg_id,
ns_parser.vs,
ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
def call_atl(self, other_args):
@@ -735,7 +787,14 @@ class DueDiligenceController(CryptoBaseController):
if ns_parser:
cg_id = check_cg_id(self.symbol)
if cg_id:
pycoingecko_view.display_atl(cg_id, ns_parser.vs, ns_parser.export)
pycoingecko_view.display_atl(
cg_id,
ns_parser.vs,
ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
def call_score(self, other_args):
@@ -758,7 +817,13 @@ class DueDiligenceController(CryptoBaseController):
if ns_parser:
cg_id = check_cg_id(self.symbol)
if cg_id:
pycoingecko_view.display_score(cg_id, ns_parser.export)
pycoingecko_view.display_score(
cg_id,
ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
def call_bc(self, other_args):
@@ -779,7 +844,13 @@ class DueDiligenceController(CryptoBaseController):
if ns_parser:
cg_id = check_cg_id(self.symbol)
if cg_id:
pycoingecko_view.display_bc(cg_id, ns_parser.export)
pycoingecko_view.display_bc(
cg_id,
ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
def call_ob(self, other_args):
@@ -824,6 +895,9 @@ class DueDiligenceController(CryptoBaseController):
symbol=self.symbol,
to_symbol=ns_parser.vs,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -869,6 +943,9 @@ class DueDiligenceController(CryptoBaseController):
symbol=self.symbol,
to_symbol=ns_parser.vs,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
limit=ns_parser.limit,
)
@@ -904,7 +981,12 @@ class DueDiligenceController(CryptoBaseController):
if ns_parser:
binance_view.display_balance(
from_symbol=coin, to_symbol=ns_parser.vs, export=ns_parser.export
from_symbol=coin,
to_symbol=ns_parser.vs,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1031,6 +1113,9 @@ class DueDiligenceController(CryptoBaseController):
ascend=ns_parser.reverse,
links=ns_parser.urls,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1087,6 +1172,9 @@ class DueDiligenceController(CryptoBaseController):
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)
@@ -1154,6 +1242,9 @@ class DueDiligenceController(CryptoBaseController):
ascend=ns_parser.reverse,
links=ns_parser.urls,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1211,6 +1302,9 @@ class DueDiligenceController(CryptoBaseController):
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)
@@ -1266,6 +1360,9 @@ class DueDiligenceController(CryptoBaseController):
start_date=ns_parser.start,
end_date=ns_parser.end,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1289,6 +1386,9 @@ class DueDiligenceController(CryptoBaseController):
messari_view.display_links(
symbol=self.symbol.upper(),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1391,6 +1491,9 @@ class DueDiligenceController(CryptoBaseController):
symbol=self.symbol.upper(),
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1416,6 +1519,9 @@ class DueDiligenceController(CryptoBaseController):
messari_view.display_tokenomics(
symbol=self.symbol.upper(),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1440,6 +1546,9 @@ class DueDiligenceController(CryptoBaseController):
messari_view.display_project_info(
symbol=self.symbol.upper(),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1464,6 +1573,9 @@ class DueDiligenceController(CryptoBaseController):
messari_view.display_team(
symbol=self.symbol.upper(),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1488,6 +1600,9 @@ class DueDiligenceController(CryptoBaseController):
messari_view.display_investors(
symbol=self.symbol.upper(),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1512,6 +1627,9 @@ class DueDiligenceController(CryptoBaseController):
messari_view.display_fundraising(
symbol=self.symbol.upper(),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1536,6 +1654,9 @@ class DueDiligenceController(CryptoBaseController):
messari_view.display_governance(
symbol=self.symbol.upper(),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1644,6 +1765,9 @@ class DueDiligenceController(CryptoBaseController):
start_date=ns_parser.start,
end_date=ns_parser.end,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1737,6 +1861,9 @@ class DueDiligenceController(CryptoBaseController):
source=None,
symbol=self.symbol,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
ascend=ns_parser.reverse,
post_kind=ns_parser.kind,
filter_=ns_parser.filter,
@@ -1780,6 +1907,9 @@ class DueDiligenceController(CryptoBaseController):
metric=ns_parser.metric,
project=ns_parser.project,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1811,4 +1941,7 @@ class DueDiligenceController(CryptoBaseController):
tokenterminal_view.display_description(
project=ns_parser.project,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)

View File

@@ -40,6 +40,7 @@ def display_crypto_sentiment_analysis(
symbol: str,
raw: bool = False,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Sentiment analysis from FinBrain for Cryptocurrencies
@@ -131,4 +132,5 @@ def display_crypto_sentiment_analysis(
os.path.dirname(os.path.abspath(__file__)),
"finbrain",
sentiment,
sheet_name,
)

View File

@@ -36,6 +36,7 @@ def display_active_addresses(
end_date: Optional[str] = None,
interval: str = "24h",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots active addresses of a certain symbol over time
@@ -89,6 +90,7 @@ def display_active_addresses(
os.path.dirname(os.path.abspath(__file__)),
"active",
df_addresses,
sheet_name,
)
@@ -99,6 +101,7 @@ def display_non_zero_addresses(
start_date: str = "2010-01-01",
end_date: Optional[str] = None,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots addresses with non-zero balance of a certain symbol
@@ -150,6 +153,7 @@ def display_non_zero_addresses(
os.path.dirname(os.path.abspath(__file__)),
"nonzero",
df_addresses,
sheet_name,
)
@@ -161,6 +165,7 @@ def display_exchange_net_position_change(
start_date: str = "2010-01-01",
end_date: Optional[str] = None,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots 30d change of the supply held in exchange wallets.
@@ -231,6 +236,7 @@ def display_exchange_net_position_change(
os.path.dirname(os.path.abspath(__file__)),
"change",
df_addresses,
sheet_name,
)
@@ -243,6 +249,7 @@ def display_exchange_balances(
end_date: Optional[str] = None,
percentage: bool = False,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots total amount of coins held on exchange addresses in units and percentage.
@@ -313,6 +320,7 @@ def display_exchange_balances(
os.path.dirname(os.path.abspath(__file__)),
"eb",
df_balance,
sheet_name,
)
@@ -324,6 +332,7 @@ def display_hashrate(
end_date: Optional[str] = None,
interval: str = "24h",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots dataframe with mean hashrate of btc or eth blockchain and symbol price.
@@ -392,4 +401,5 @@ def display_hashrate(
os.path.dirname(os.path.abspath(__file__)),
"hr",
df,
sheet_name,
)

View File

@@ -52,6 +52,7 @@ def display_messari_timeseries_list(
query: str = "",
only_free: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing messari timeseries list
[Source: https://messari.io/]
@@ -94,6 +95,7 @@ def display_messari_timeseries_list(
os.path.dirname(os.path.abspath(__file__)),
"mt",
df,
sheet_name,
)
else:
console.print("\nUnable to retrieve data from Messari.\n")
@@ -108,6 +110,7 @@ def display_messari_timeseries(
end_date: Optional[str] = None,
interval: str = "1d",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots messari timeseries
@@ -174,6 +177,7 @@ def display_messari_timeseries(
os.path.dirname(os.path.abspath(__file__)),
"mt",
df,
sheet_name,
)
@@ -185,6 +189,7 @@ def display_marketcap_dominance(
end_date: Optional[str] = None,
interval: str = "1d",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots market dominance of a coin over time
@@ -242,12 +247,13 @@ def display_marketcap_dominance(
os.path.dirname(os.path.abspath(__file__)),
"mcapdom",
df,
sheet_name,
)
@log_start_end(log=logger)
@check_api_key(["API_MESSARI_KEY"])
def display_links(symbol: str, export: str = "") -> None:
def display_links(symbol: str, export: str = "", sheet_name: str = None) -> None:
"""Prints table showing coin links
[Source: https://messari.io/]
@@ -275,6 +281,7 @@ def display_links(symbol: str, export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"links",
df,
sheet_name,
)
else:
console.print("\nUnable to retrieve data from Messari.\n")
@@ -287,6 +294,7 @@ def display_roadmap(
ascend: bool = True,
limit: int = 5,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots coin roadmap
@@ -377,6 +385,7 @@ def display_roadmap(
os.path.dirname(os.path.abspath(__file__)),
"rm",
df,
sheet_name,
)
else:
console.print("\nUnable to retrieve data from Messari.\n")
@@ -387,6 +396,7 @@ def display_roadmap(
def display_tokenomics(
symbol: str,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Plots coin tokenomics
@@ -461,6 +471,7 @@ def display_tokenomics(
os.path.dirname(os.path.abspath(__file__)),
"tk",
df,
sheet_name,
)
else:
console.print("\nUnable to retrieve data from Messari.\n")
@@ -471,6 +482,7 @@ def display_tokenomics(
def display_project_info(
symbol: str,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing project info
[Source: https://messari.io/]
@@ -503,6 +515,7 @@ def display_project_info(
os.path.dirname(os.path.abspath(__file__)),
"pi",
df_info,
sheet_name,
)
@@ -511,6 +524,7 @@ def display_project_info(
def display_investors(
symbol: str,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing coin investors
[Source: https://messari.io/]
@@ -547,6 +561,7 @@ def display_investors(
os.path.dirname(os.path.abspath(__file__)),
"inv",
df_individuals,
sheet_name,
)
else:
console.print("\nInvestors not found\n")
@@ -557,6 +572,7 @@ def display_investors(
def display_team(
symbol: str,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing coin team
[Source: https://messari.io/]
@@ -593,6 +609,7 @@ def display_team(
os.path.dirname(os.path.abspath(__file__)),
"team",
df_individuals,
sheet_name,
)
else:
console.print("\nTeam not found\n")
@@ -603,6 +620,7 @@ def display_team(
def display_governance(
symbol: str,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing coin governance
[Source: https://messari.io/]
@@ -630,6 +648,7 @@ def display_governance(
os.path.dirname(os.path.abspath(__file__)),
"gov",
df,
sheet_name,
)
else:
console.print(f"\n{symbol} governance details not found\n")
@@ -640,6 +659,7 @@ def display_governance(
def display_fundraising(
symbol: str,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Display coin fundraising
@@ -738,4 +758,5 @@ def display_fundraising(
os.path.dirname(os.path.abspath(__file__)),
"fr",
df_details,
sheet_name,
)

View File

@@ -23,6 +23,7 @@ def display_coin_potential_returns(
limit: Optional[int] = None,
price: Optional[int] = None,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing potential returns of a certain coin. [Source: CoinGecko]
@@ -50,11 +51,12 @@ def display_coin_potential_returns(
os.path.dirname(os.path.abspath(__file__)),
"prt",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_info(symbol: str, export: str = "") -> None:
def display_info(symbol: str, export: str = "", sheet_name: str = None) -> None:
"""Prints table showing basic information about loaded coin. [Source: CoinGecko]
Parameters
@@ -83,11 +85,12 @@ def display_info(symbol: str, export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"info",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_web(symbol: str, export: str = "") -> None:
def display_web(symbol: str, export: str = "", sheet_name: str = None) -> None:
"""Prints table showing found websites corresponding to loaded coin. [Source: CoinGecko]
Parameters
@@ -116,11 +119,12 @@ def display_web(symbol: str, export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"web",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_social(symbol: str, export: str = "") -> None:
def display_social(symbol: str, export: str = "", sheet_name: str = None) -> None:
"""Prints table showing social media corresponding to loaded coin. [Source: CoinGecko]
Parameters
@@ -145,11 +149,12 @@ def display_social(symbol: str, export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"social",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_dev(symbol: str, export: str = "") -> None:
def display_dev(symbol: str, export: str = "", sheet_name: str = None) -> None:
"""Prints table showing developers data for loaded coin. [Source: CoinGecko]
Parameters
@@ -175,11 +180,14 @@ def display_dev(symbol: str, export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"dev",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_ath(symbol: str, currency: str = "usd", export: str = "") -> None:
def display_ath(
symbol: str, currency: str = "usd", export: str = "", sheet_name: str = None
) -> None:
"""Prints table showing all time high data for loaded coin. [Source: CoinGecko]
Parameters
@@ -202,11 +210,14 @@ def display_ath(symbol: str, currency: str = "usd", export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"ath",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_atl(symbol: str, currency: str = "usd", export: str = "") -> None:
def display_atl(
symbol: str, currency: str = "usd", export: str = "", sheet_name: str = None
) -> None:
"""Prints table showing all time low data for loaded coin. [Source: CoinGecko]
Parameters
@@ -229,11 +240,12 @@ def display_atl(symbol: str, currency: str = "usd", export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"atl",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_score(symbol: str, export: str = "") -> None:
def display_score(symbol: str, export: str = "", sheet_name: str = None) -> None:
"""Prints table showing different kind of scores for loaded coin. [Source: CoinGecko]
Parameters
@@ -259,11 +271,12 @@ def display_score(symbol: str, export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"score",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_bc(symbol: str, export: str = "") -> None:
def display_bc(symbol: str, export: str = "", sheet_name: str = None) -> None:
"""Prints table showing urls to blockchain explorers. [Source: CoinGecko]
Parameters
@@ -286,11 +299,12 @@ def display_bc(symbol: str, export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"bc",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_market(symbol: str, export: str = "") -> None:
def display_market(symbol: str, export: str = "", sheet_name: str = None) -> None:
"""Prints table showing market data for loaded coin. [Source: CoinGecko]
Parameters
@@ -313,4 +327,5 @@ def display_market(symbol: str, export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"market",
df,
sheet_name,
)

View File

@@ -30,6 +30,7 @@ def display_github_activity(
end_date: Optional[str] = None,
interval: str = "1d",
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Returns a list of github activity for a given coin and time interval.
@@ -89,4 +90,5 @@ def display_github_activity(
os.path.dirname(os.path.abspath(__file__)),
"gh",
df,
sheet_name,
)

View File

@@ -32,6 +32,7 @@ def display_fundamental_metric_from_project_over_time(
metric: str,
project: str,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Plots fundamental metric from a project over time [Source: Token Terminal]
@@ -101,12 +102,13 @@ def display_fundamental_metric_from_project_over_time(
os.path.dirname(os.path.abspath(__file__)),
"funot",
metric_over_time,
sheet_name,
)
@log_start_end(log=logger)
@check_api_key(["API_TOKEN_TERMINAL_KEY"])
def display_description(project: str, export: str = ""):
def display_description(project: str, export: str = "", sheet_name: str = None):
"""Prints description from a project [Source: Token Terminal]
Parameters
@@ -132,4 +134,5 @@ def display_description(project: str, export: str = ""):
os.path.dirname(os.path.abspath(__file__)),
"desc",
pd.DataFrame(description.values(), index=description.keys()),
sheet_name,
)

View File

@@ -89,6 +89,9 @@ class NFTController(BaseController):
nftpricefloor_view.display_floor_price(
slug=ns_parser.slug,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
raw=ns_parser.raw,
limit=ns_parser.limit,
)
@@ -125,6 +128,9 @@ class NFTController(BaseController):
opensea_view.display_collection_stats(
slug=ns_parser.slug,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -159,4 +165,7 @@ class NFTController(BaseController):
show_fp=ns_parser.fp,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)

View File

@@ -25,7 +25,11 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def display_collections(
show_fp: bool = False, show_sales: bool = False, limit: int = 5, export: str = ""
show_fp: bool = False,
show_sales: bool = False,
limit: int = 5,
export: str = "",
sheet_name: str = None,
):
"""Display NFT collections. [Source: https://nftpricefloor.com/]
@@ -81,6 +85,7 @@ def display_collections(
os.path.dirname(os.path.abspath(__file__)),
"collections",
df,
sheet_name,
)
@@ -89,6 +94,7 @@ def display_floor_price(
slug: str,
limit: int = 10,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
raw: bool = False,
):
@@ -102,6 +108,8 @@ def display_floor_price(
Flag to display raw data
limit: int
Number of raw data to show
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
external_axes : Optional[List[plt.Axes]], optional
@@ -150,4 +158,5 @@ def display_floor_price(
os.path.dirname(os.path.abspath(__file__)),
"fp",
df,
sheet_name,
)

View File

@@ -12,7 +12,7 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def display_collection_stats(slug: str, export: str):
def display_collection_stats(slug: str, export: str, sheet_name: str):
"""Prints table showing collection stats. [Source: opensea.io]
Parameters
@@ -40,4 +40,5 @@ def display_collection_stats(slug: str, export: str):
os.path.dirname(os.path.abspath(__file__)),
"stats",
collection_stats_df,
sheet_name,
)

View File

@@ -28,6 +28,7 @@ def display_dex_trades(
sortby: str = "tradeAmount",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing Trades on Decentralized Exchanges aggregated by DEX or Month
[Source: https://graphql.bitquery.io/]
@@ -80,6 +81,7 @@ def display_dex_trades(
os.path.dirname(os.path.abspath(__file__)),
"lt",
df_data,
sheet_name,
)
@@ -92,6 +94,7 @@ def display_daily_volume_for_given_pair(
sortby: str = "date",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing daily volume for given pair
[Source: https://graphql.bitquery.io/]
@@ -153,6 +156,7 @@ def display_daily_volume_for_given_pair(
os.path.dirname(os.path.abspath(__file__)),
"dvcp",
df_data,
sheet_name,
)
@@ -165,6 +169,7 @@ def display_dex_volume_for_token(
sortby: str = "tradeAmount",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing token volume on different Decentralized Exchanges.
[Source: https://graphql.bitquery.io/]
@@ -218,6 +223,7 @@ def display_dex_volume_for_token(
os.path.dirname(os.path.abspath(__file__)),
"tv",
df_data,
sheet_name,
)
@@ -229,6 +235,7 @@ def display_ethereum_unique_senders(
sortby: str = "date",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing number of unique ethereum addresses which made a transaction in given time interval
[Source: https://graphql.bitquery.io/]
@@ -279,6 +286,7 @@ def display_ethereum_unique_senders(
os.path.dirname(os.path.abspath(__file__)),
"ueat",
df_data,
sheet_name,
)
@@ -291,6 +299,7 @@ def display_most_traded_pairs(
sortby: str = "tradeAmount",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing most traded crypto pairs on given decentralized exchange in chosen time period.
[Source: https://graphql.bitquery.io/]
@@ -339,6 +348,7 @@ def display_most_traded_pairs(
os.path.dirname(os.path.abspath(__file__)),
"ttcp",
df_data,
sheet_name,
)
@@ -351,6 +361,7 @@ def display_spread_for_crypto_pair(
sortby: str = "date",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Prints table showing an average bid and ask prices, average spread for given crypto pair for chosen
time period. [Source: https://graphql.bitquery.io/]
@@ -393,4 +404,5 @@ def display_spread_for_crypto_pair(
os.path.dirname(os.path.abspath(__file__)),
"baas",
df,
sheet_name,
)

View File

@@ -30,6 +30,7 @@ def display_btc_circulating_supply(
start_date: str = "2010-01-01",
end_date: Optional[str] = None,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Returns BTC circulating supply [Source: https://api.blockchain.info/]
@@ -82,6 +83,7 @@ def display_btc_circulating_supply(
os.path.dirname(os.path.abspath(__file__)),
"btccp",
df,
sheet_name,
)
@@ -90,6 +92,7 @@ def display_btc_confirmed_transactions(
start_date: str = "2010-01-01",
end_date: Optional[str] = None,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Returns BTC confirmed transactions [Source: https://api.blockchain.info/]
@@ -144,6 +147,7 @@ def display_btc_confirmed_transactions(
os.path.dirname(os.path.abspath(__file__)),
"btcct",
df,
sheet_name,
)
@@ -151,6 +155,7 @@ def display_btc_confirmed_transactions(
def display_btc_single_block(
blockhash: str,
export: str = "",
sheet_name: str = None,
) -> None:
"""Returns BTC block data. [Source: https://api.blockchain.info/]
Parameters
@@ -199,4 +204,5 @@ def display_btc_single_block(
os.path.dirname(os.path.abspath(__file__)),
"btcblockdata",
df_data,
sheet_name,
)

View File

@@ -11,7 +11,7 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def display_gwei_fees(export: str = "") -> None:
def display_gwei_fees(export: str = "", sheet_name: str = None) -> None:
"""Current gwei fees
[Source: https://ethgasstation.info]
@@ -40,4 +40,5 @@ def display_gwei_fees(export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"gwei",
df_fees,
sheet_name,
)

View File

@@ -25,6 +25,7 @@ def display_address_info(
sortby: str = "index",
ascend: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Display info about tokens for given ethereum blockchain balance e.g. ETH balance,
balance of all tokens with name and symbol. [Source: Ethplorer]
@@ -63,6 +64,7 @@ def display_address_info(
os.path.dirname(os.path.abspath(__file__)),
"balance",
df_data,
sheet_name,
)
@@ -73,6 +75,7 @@ def display_top_tokens(
sortby: str = "rank",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Display top ERC20 tokens [Source: Ethplorer]
@@ -107,6 +110,7 @@ def display_top_tokens(
os.path.dirname(os.path.abspath(__file__)),
"top",
df_data,
sheet_name,
)
@@ -118,6 +122,7 @@ def display_top_token_holders(
sortby: str = "balance",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Display info about top ERC20 token holders. [Source: Ethplorer]
@@ -151,6 +156,7 @@ def display_top_token_holders(
os.path.dirname(os.path.abspath(__file__)),
"holders",
df_data,
sheet_name,
)
@@ -162,6 +168,7 @@ def display_address_history(
sortby: str = "timestamp",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Display information about balance historical transactions. [Source: Ethplorer]
@@ -199,6 +206,7 @@ def display_address_history(
os.path.dirname(os.path.abspath(__file__)),
"hist",
df_data,
sheet_name,
)
@@ -208,6 +216,7 @@ def display_token_info(
address: str,
social: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Display info about ERC20 token. [Source: Ethplorer]
@@ -242,6 +251,7 @@ def display_token_info(
os.path.dirname(os.path.abspath(__file__)),
"info",
df_data,
sheet_name,
)
@@ -250,6 +260,7 @@ def display_token_info(
def display_tx_info(
tx_hash: str,
export: str = "",
sheet_name: str = None,
) -> None:
"""Display info about transaction. [Source: Ethplorer]
@@ -269,7 +280,13 @@ def display_tx_info(
title="Information About Transactions",
)
export_data(export, os.path.dirname(os.path.abspath(__file__)), "tx", df)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"tx",
df,
sheet_name,
)
@log_start_end(log=logger)
@@ -281,6 +298,7 @@ def display_token_history(
ascend: bool = False,
hash_: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Display info about token history. [Source: Ethplorer]
@@ -327,6 +345,7 @@ def display_token_history(
os.path.dirname(os.path.abspath(__file__)),
"th",
df_data,
sheet_name,
)
@@ -338,6 +357,7 @@ def display_token_historical_prices(
sortby: str = "date",
ascend: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Display token historical prices with volume and market cap, and average price.
[Source: Ethplorer]
@@ -380,4 +400,5 @@ def display_token_historical_prices(
os.path.dirname(os.path.abspath(__file__)),
"prices",
df_data,
sheet_name,
)

View File

@@ -206,6 +206,9 @@ class OnchainController(BaseController):
interval=ns_parser.interval,
symbol=ns_parser.symbol,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -244,6 +247,9 @@ class OnchainController(BaseController):
limit=ns_parser.limit,
platform=ns_parser.platform,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -266,6 +272,9 @@ class OnchainController(BaseController):
if ns_parser:
shroom_view.display_daily_transactions(
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -307,6 +316,9 @@ class OnchainController(BaseController):
start_date=ns_parser.since.strftime("%Y-%m-%d"),
end_date=ns_parser.until.strftime("%Y-%m-%d"),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -348,6 +360,9 @@ class OnchainController(BaseController):
start_date=ns_parser.since.strftime("%Y-%m-%d"),
end_date=ns_parser.until.strftime("%Y-%m-%d"),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -415,6 +430,9 @@ class OnchainController(BaseController):
start_date=ns_parser.since.strftime("%Y-%m-%d"),
end_date=ns_parser.until.strftime("%Y-%m-%d"),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -435,7 +453,12 @@ class OnchainController(BaseController):
)
if ns_parser:
ethgasstation_view.display_gwei_fees(export=ns_parser.export)
ethgasstation_view.display_gwei_fees(
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_whales(self, other_args: List[str]):
@@ -506,6 +529,9 @@ class OnchainController(BaseController):
ascend=ns_parser.reverse,
show_address=ns_parser.address,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -636,6 +662,9 @@ class OnchainController(BaseController):
ascend=ns_parser.reverse,
address=self.address,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
else:
console.print("You need to set an ethereum address\n")
@@ -693,6 +722,9 @@ class OnchainController(BaseController):
ascend=ns_parser.reverse,
address=self.address,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
else:
console.print("You need to set an ethereum address\n")
@@ -749,6 +781,9 @@ class OnchainController(BaseController):
ascend=ns_parser.reverse,
address=self.address,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
else:
console.print("You need to set an ethereum address\n")
@@ -804,6 +839,9 @@ class OnchainController(BaseController):
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)
@@ -837,6 +875,9 @@ class OnchainController(BaseController):
social=ns_parser.social,
address=self.address,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
else:
console.print("You need to set an ethereum address\n")
@@ -903,6 +944,9 @@ class OnchainController(BaseController):
ascend=ns_parser.reverse,
address=self.address,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
else:
console.print("You need to set an ethereum address\n")
@@ -930,6 +974,9 @@ class OnchainController(BaseController):
ethplorer_view.display_tx_info(
tx_hash=self.address,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
else:
console.print("You need to set an ethereum address\n")
@@ -986,6 +1033,9 @@ class OnchainController(BaseController):
ascend=ns_parser.reverse,
address=self.address,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
else:
console.print("You need to set an ethereum address\n")
@@ -1071,6 +1121,9 @@ class OnchainController(BaseController):
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)
@@ -1148,6 +1201,9 @@ class OnchainController(BaseController):
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)
@@ -1223,6 +1279,9 @@ class OnchainController(BaseController):
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)
@@ -1294,6 +1353,9 @@ class OnchainController(BaseController):
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)
@@ -1404,6 +1466,9 @@ class OnchainController(BaseController):
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)
@@ -1481,6 +1546,9 @@ class OnchainController(BaseController):
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,
)
else:
@@ -1505,6 +1573,9 @@ class OnchainController(BaseController):
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,
)
except Exception:
similar_cmd = difflib.get_close_matches(
@@ -1551,4 +1622,7 @@ class OnchainController(BaseController):
blockchain_view.display_btc_single_block(
blockhash=ns_parser.blockhash,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)

View File

@@ -32,6 +32,7 @@ logger = logging.getLogger(__name__)
@check_api_key(["API_SHROOM_KEY"])
def display_daily_transactions(
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Get daily transactions for certain symbols in ethereum blockchain
@@ -76,6 +77,7 @@ def display_daily_transactions(
os.path.dirname(os.path.abspath(__file__)),
"dt",
df,
sheet_name,
)
@@ -86,6 +88,7 @@ def display_dapp_stats(
raw: bool = False,
limit: int = 10,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Get daily transactions for certain symbols in ethereum blockchain
@@ -144,6 +147,7 @@ def display_dapp_stats(
os.path.dirname(os.path.abspath(__file__)),
"ds",
df,
sheet_name,
)
@@ -155,6 +159,7 @@ def display_total_value_locked(
symbol: str = "USDC",
interval: int = 1,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
@@ -218,4 +223,5 @@ def display_total_value_locked(
os.path.dirname(os.path.abspath(__file__)),
"tvl",
df,
sheet_name,
)

View File

@@ -26,6 +26,7 @@ def display_whales_transactions(
ascend: bool = False,
show_address: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Display huge value transactions from major blockchains. [Source: https://docs.whale-alert.io/]
@@ -77,4 +78,5 @@ def display_whales_transactions(
os.path.dirname(os.path.abspath(__file__)),
"whales",
df_data,
sheet_name,
)

View File

@@ -29,6 +29,7 @@ def display_altcoin_index(
start_date: str = "2010-01-01",
end_date: Optional[str] = None,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Displays altcoin index overtime
@@ -86,4 +87,5 @@ def display_altcoin_index(
os.path.dirname(os.path.abspath(__file__)),
"altindex",
df,
sheet_name,
)

View File

@@ -22,6 +22,7 @@ def display_trading_pairs(
sortby: str = "quote_increment",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
) -> None:
"""Displays a list of available currency pairs for trading. [Source: Coinbase]
@@ -51,4 +52,5 @@ def display_trading_pairs(
os.path.dirname(os.path.abspath(__file__)),
"cbpairs",
df,
sheet_name,
)

View File

@@ -71,7 +71,7 @@ CURRENCIES = [
@log_start_end(log=logger)
def display_global_market(export: str = "") -> None:
def display_global_market(export: str = "", sheet_name: str = None) -> None:
"""Return data frame with most important global crypto statistics like:
market_cap_usd, volume_24h_usd, bitcoin_dominance_percentage, cryptocurrencies_number,
market_cap_ath_value, market_cap_ath_date, volume_24h_ath_value, volume_24h_ath_date,
@@ -98,6 +98,7 @@ def display_global_market(export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"global",
df_data,
sheet_name,
)
@@ -108,6 +109,7 @@ def display_all_coins_market_info(
ascend: bool = True,
limit: int = 15,
export: str = "",
sheet_name: str = None,
) -> None:
"""Displays basic market information for all coins from CoinPaprika API. [Source: CoinPaprika]
@@ -152,6 +154,7 @@ def display_all_coins_market_info(
os.path.dirname(os.path.abspath(__file__)),
"markets",
df_data,
sheet_name,
)
@@ -162,6 +165,7 @@ def display_all_coins_info(
ascend: bool = True,
limit: int = 15,
export: str = "",
sheet_name: str = None,
) -> None:
"""Displays basic coin information for all coins from CoinPaprika API. [Source: CoinPaprika]
@@ -206,6 +210,7 @@ def display_all_coins_info(
os.path.dirname(os.path.abspath(__file__)),
"info",
df_data,
sheet_name,
)
@@ -216,6 +221,7 @@ def display_all_exchanges(
ascend: bool = True,
limit: int = 15,
export: str = "",
sheet_name: str = None,
) -> None:
"""List exchanges from CoinPaprika API. [Source: CoinPaprika]
@@ -260,6 +266,7 @@ def display_all_exchanges(
os.path.dirname(os.path.abspath(__file__)),
"exchanges",
df_data,
sheet_name,
)
@@ -271,6 +278,7 @@ def display_exchange_markets(
limit: int = 15,
links: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Get all markets for given exchange [Source: CoinPaprika]
@@ -317,11 +325,12 @@ def display_exchange_markets(
os.path.dirname(os.path.abspath(__file__)),
"exmarkets",
df_data,
sheet_name,
)
@log_start_end(log=logger)
def display_all_platforms(export: str) -> None:
def display_all_platforms(export: str = "", sheet_name: str = None) -> None:
"""List all smart contract platforms like ethereum, solana, cosmos, polkadot, kusama.
[Source: CoinPaprika]
@@ -342,6 +351,7 @@ def display_all_platforms(export: str) -> None:
os.path.dirname(os.path.abspath(__file__)),
"platforms",
df,
sheet_name,
)
@@ -352,6 +362,7 @@ def display_contracts(
ascend: bool = True,
limit: int = 15,
export: str = "",
sheet_name: str = None,
) -> None:
"""Gets all contract addresses for given platform. [Source: CoinPaprika]
@@ -387,4 +398,5 @@ def display_contracts(
os.path.dirname(os.path.abspath(__file__)),
"contracts",
df,
sheet_name,
)

View File

@@ -12,6 +12,8 @@ from openbb_terminal.decorators import check_api_key
logger = logging.getLogger(__name__)
# pylint: disable=too-many-arguments
@log_start_end(log=logger)
@check_api_key(["API_CRYPTO_PANIC_KEY"])
@@ -24,6 +26,7 @@ def display_news(
ascend: bool = False,
links: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Display recent posts from CryptoPanic news aggregator platform.
[Source: https://cryptopanic.com/]
@@ -75,4 +78,5 @@ def display_news(
os.path.dirname(os.path.abspath(__file__)),
"news",
df,
sheet_name,
)

View File

@@ -31,6 +31,7 @@ def display_btc_rainbow(
start_date: str = "2010-01-01",
end_date: Optional[str] = None,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Displays bitcoin rainbow chart
@@ -147,4 +148,5 @@ def display_btc_rainbow(
os.path.dirname(os.path.abspath(__file__)),
"btcrb",
df_data,
sheet_name,
)

View File

@@ -27,6 +27,7 @@ def display_crypto_rates(
rate_type: str = "borrow",
limit: int = 10,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Displays crypto {borrow,supply} interest rates for cryptocurrencies across several platforms
@@ -119,4 +120,5 @@ def display_crypto_rates(
os.path.dirname(os.path.abspath(__file__)),
"cr",
df,
sheet_name,
)

View File

@@ -309,6 +309,9 @@ class OverviewController(BaseController):
slug=ns_parser.slug,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
sortby=" ".join(ns_parser.sortby),
ascend=not ns_parser.reverse,
)
@@ -350,6 +353,9 @@ class OverviewController(BaseController):
start_date=ns_parser.since.strftime("%Y-%m-%d"),
end_date=ns_parser.until.strftime("%Y-%m-%d"),
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -408,6 +414,9 @@ class OverviewController(BaseController):
end_date=ns_parser.until.strftime("%Y-%m-%d"),
period=ns_parser.period,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -576,6 +585,9 @@ class OverviewController(BaseController):
pycoingecko_view.display_holdings_overview(
symbol=ns_parser.coin,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
show_bar=ns_parser.bar,
limit=ns_parser.limit,
)
@@ -632,6 +644,9 @@ class OverviewController(BaseController):
pycoingecko_view.display_categories(
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
sortby=ns_parser.sortby,
pie=ns_parser.pie,
)
@@ -702,6 +717,9 @@ class OverviewController(BaseController):
pycoingecko_view.display_stablecoins(
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
sortby=ns_parser.sortby,
ascend=ns_parser.reverse,
pie=ns_parser.pie,
@@ -765,6 +783,9 @@ class OverviewController(BaseController):
platforms=ns_parser.platforms,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -840,6 +861,9 @@ class OverviewController(BaseController):
pycoingecko_view.display_exchanges(
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
sortby=ns_parser.sortby,
ascend=ns_parser.reverse,
links=ns_parser.urls,
@@ -851,6 +875,9 @@ class OverviewController(BaseController):
ascend=ns_parser.reverse,
sortby=ns_parser.sortby,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -903,6 +930,9 @@ class OverviewController(BaseController):
limit=ns_parser.limit,
ascend=not 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)
@@ -959,6 +989,9 @@ class OverviewController(BaseController):
sortby=ns_parser.sortby,
ascend=not 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)
@@ -1017,6 +1050,9 @@ class OverviewController(BaseController):
sortby=ns_parser.sortby,
ascend=not 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)
@@ -1043,10 +1079,19 @@ class OverviewController(BaseController):
if ns_parser:
if ns_parser.source == "CoinGecko":
pycoingecko_view.display_global_market_info(
export=ns_parser.export, pie=ns_parser.pie
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
pie=ns_parser.pie,
)
elif ns_parser.source == "CoinPaprika":
coinpaprika_view.display_global_market(export=ns_parser.export)
coinpaprika_view.display_global_market(
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_defi(self, other_args):
@@ -1066,7 +1111,12 @@ class OverviewController(BaseController):
parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED
)
if ns_parser:
pycoingecko_view.display_global_defi_info(export=ns_parser.export)
pycoingecko_view.display_global_defi_info(
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_markets(self, other_args):
@@ -1130,6 +1180,9 @@ class OverviewController(BaseController):
limit=ns_parser.limit,
ascend=ns_parser.reverse,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
sortby=ns_parser.sortby,
)
@@ -1206,6 +1259,9 @@ class OverviewController(BaseController):
exchange=ns_parser.exchange,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
sortby=ns_parser.sortby,
ascend=ns_parser.reverse,
links=ns_parser.urls,
@@ -1276,6 +1332,9 @@ class OverviewController(BaseController):
ascend=not ns_parser.reverse,
sortby=ns_parser.sortby,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1292,7 +1351,12 @@ class OverviewController(BaseController):
parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED
)
if ns_parser:
coinpaprika_view.display_all_platforms(export=ns_parser.export)
coinpaprika_view.display_all_platforms(
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_contracts(self, other_args):
@@ -1364,6 +1428,9 @@ class OverviewController(BaseController):
ascend=not ns_parser.reverse,
sortby=ns_parser.sortby,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1411,6 +1478,9 @@ class OverviewController(BaseController):
coinbase_view.display_trading_pairs(
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
sortby=ns_parser.sortby,
ascend=not ns_parser.reverse,
)
@@ -1496,6 +1566,9 @@ class OverviewController(BaseController):
cryptopanic_view.display_news(
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
sortby=ns_parser.sortby,
ascend=ns_parser.reverse,
links=ns_parser.urls,

View File

@@ -37,6 +37,7 @@ def display_crypto_heatmap(
category: str = "",
limit: int = 15,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
) -> None:
"""Shows cryptocurrencies heatmap [Source: CoinGecko]
@@ -47,6 +48,8 @@ def display_crypto_heatmap(
Category (e.g., stablecoins). Empty for no category (default: )
limit: int
Number of top cryptocurrencies to display
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Export dataframe data to csv,json,xlsx
external_axes : Optional[List[plt.Axes]], optional
@@ -128,12 +131,17 @@ def display_crypto_heatmap(
os.path.dirname(os.path.abspath(__file__)),
"hm",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_holdings_overview(
symbol: str, show_bar: bool = False, export: str = "", limit: int = 15
symbol: str,
show_bar: bool = False,
export: str = "",
sheet_name: str = None,
limit: int = 15,
) -> None:
"""Shows overview of public companies that holds ethereum or bitcoin. [Source: CoinGecko]
@@ -143,6 +151,8 @@ def display_holdings_overview(
Cryptocurrency: ethereum or bitcoin
show_bar : bool
Whether to show a bar graph for the data
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Export dataframe data to csv,json,xlsx
limit: int
@@ -193,12 +203,17 @@ def display_holdings_overview(
os.path.dirname(os.path.abspath(__file__)),
"cghold",
df,
sheet_name,
)
@log_start_end(log=logger)
def display_exchange_rates(
sortby: str = "Name", ascend: bool = False, limit: int = 15, export: str = ""
sortby: str = "Name",
ascend: bool = False,
limit: int = 15,
export: str = "",
sheet_name: str = None,
) -> None:
"""Shows list of crypto, fiats, commodity exchange rates. [Source: CoinGecko]
@@ -229,13 +244,16 @@ def display_exchange_rates(
os.path.dirname(os.path.abspath(__file__)),
"exrates",
df,
sheet_name,
)
else:
console.print("Unable to retrieve data from CoinGecko.")
@log_start_end(log=logger)
def display_global_market_info(pie: bool = False, export: str = "") -> None:
def display_global_market_info(
pie: bool = False, export: str = "", sheet_name: str = None
) -> None:
"""Shows global statistics about crypto. [Source: CoinGecko]
- market cap change
- number of markets
@@ -292,13 +310,14 @@ def display_global_market_info(pie: bool = False, export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"cgglobal",
df,
sheet_name,
)
else:
console.print("Unable to retrieve data from CoinGecko.")
@log_start_end(log=logger)
def display_global_defi_info(export: str = "") -> None:
def display_global_defi_info(export: str = "", sheet_name: str = None) -> None:
"""Shows global statistics about Decentralized Finances. [Source: CoinGecko]
Parameters
@@ -322,6 +341,7 @@ def display_global_defi_info(export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"defi",
df,
sheet_name,
)
else:
console.print("Unable to retrieve data from CoinGecko.")
@@ -331,6 +351,7 @@ def display_global_defi_info(export: str = "") -> None:
def display_stablecoins(
limit: int = 15,
export: str = "",
sheet_name: str = None,
sortby: str = "Market_Cap_[$]",
ascend: bool = False,
pie: bool = True,
@@ -407,6 +428,7 @@ def display_stablecoins(
os.path.dirname(os.path.abspath(__file__)),
"cgstables",
df,
sheet_name,
)
else:
console.print("\nUnable to retrieve data from CoinGecko.\n")
@@ -417,6 +439,7 @@ def display_categories(
sortby: str = "market_cap_desc",
limit: int = 15,
export: str = "",
sheet_name: str = None,
pie: bool = False,
) -> None:
"""Shows top cryptocurrency categories by market capitalization
@@ -429,6 +452,8 @@ def display_categories(
Key by which to sort data
limit: int
Number of records to display
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Export dataframe data to csv,json,xlsx file
pie: bool
@@ -473,6 +498,7 @@ def display_categories(
os.path.dirname(os.path.abspath(__file__)),
"cgcategories",
df_data,
sheet_name,
)
else:
console.print("\nUnable to retrieve data from CoinGecko.\n")
@@ -485,6 +511,7 @@ def display_exchanges(
limit: int = 15,
links: bool = False,
export: str = "",
sheet_name: str = None,
) -> None:
"""Shows list of top exchanges from CoinGecko. [Source: CoinGecko]
@@ -523,6 +550,7 @@ def display_exchanges(
os.path.dirname(os.path.abspath(__file__)),
"exchanges",
df,
sheet_name,
)
else:
console.print("Unable to retrieve data from CoinGecko.")
@@ -530,7 +558,11 @@ def display_exchanges(
@log_start_end(log=logger)
def display_platforms(
sortby: str = "Name", ascend: bool = True, limit: int = 15, export: str = ""
sortby: str = "Name",
ascend: bool = True,
limit: int = 15,
export: str = "",
sheet_name: str = None,
) -> None:
"""Shows list of financial platforms. [Source: CoinGecko]
@@ -561,6 +593,7 @@ def display_platforms(
os.path.dirname(os.path.abspath(__file__)),
"platforms",
df,
sheet_name,
)
else:
console.print("\nUnable to retrieve data from CoinGecko.\n")
@@ -568,7 +601,11 @@ def display_platforms(
@log_start_end(log=logger)
def display_products(
sortby: str = "Platform", ascend: bool = False, limit: int = 15, export: str = ""
sortby: str = "Platform",
ascend: bool = False,
limit: int = 15,
export: str = "",
sheet_name: str = None,
) -> None:
"""Shows list of financial products. [Source: CoinGecko]
@@ -599,6 +636,7 @@ def display_products(
os.path.dirname(os.path.abspath(__file__)),
"products",
df,
sheet_name,
)
else:
console.print("Unable to retrieve data from CoinGecko.")
@@ -606,7 +644,11 @@ def display_products(
@log_start_end(log=logger)
def display_indexes(
sortby: str = "Name", ascend: bool = True, limit: int = 15, export: str = ""
sortby: str = "Name",
ascend: bool = True,
limit: int = 15,
export: str = "",
sheet_name: str = None,
) -> None:
"""Shows list of crypto indexes. [Source: CoinGecko]
@@ -636,6 +678,7 @@ def display_indexes(
os.path.dirname(os.path.abspath(__file__)),
"indexes",
df,
sheet_name,
)
else:
console.print("Unable to retrieve data from CoinGecko.")
@@ -643,7 +686,11 @@ def display_indexes(
@log_start_end(log=logger)
def display_derivatives(
sortby: str = "Rank", ascend: bool = False, limit: int = 15, export: str = ""
sortby: str = "Rank",
ascend: bool = False,
limit: int = 15,
export: str = "",
sheet_name: str = None,
) -> None:
"""Shows list of crypto derivatives. [Source: CoinGecko]
@@ -675,6 +722,7 @@ def display_derivatives(
os.path.dirname(os.path.abspath(__file__)),
"derivatives",
df,
sheet_name,
)
else:
console.print("Unable to retrieve data from CoinGecko.")

View File

@@ -21,6 +21,7 @@ def display_crypto_hacks(
ascend: bool = False,
slug: str = "polyntwork-rekt",
export: str = "",
sheet_name: str = None,
) -> None:
"""Display list of major crypto-related hacks. If slug is passed
individual crypto hack is displayed instead of list of crypto hacks
@@ -48,6 +49,7 @@ def display_crypto_hacks(
os.path.dirname(os.path.abspath(__file__)),
"ch",
text,
sheet_name,
)
else:
df = rekt_model.get_crypto_hacks(sortby, ascend)
@@ -73,4 +75,5 @@ def display_crypto_hacks(
os.path.dirname(os.path.abspath(__file__)),
"ch",
df,
sheet_name,
)

View File

@@ -132,8 +132,5 @@ def display_fundamental_metrics(
theme.visualize_output()
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"fun",
metric_series,
export, os.path.dirname(os.path.abspath(__file__)), "fun", metric_series
)

View File

@@ -15,7 +15,9 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def display_overall_withdrawal_fees(limit: int = 15, export: str = "") -> None:
def display_overall_withdrawal_fees(
limit: int = 15, export: str = "", sheet_name: str = None
) -> None:
"""Top coins withdrawal fees
[Source: https://withdrawalfees.com/]
@@ -46,11 +48,14 @@ def display_overall_withdrawal_fees(limit: int = 15, export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"withdrawal_fees",
df_fees,
sheet_name,
)
@log_start_end(log=logger)
def display_overall_exchange_withdrawal_fees(export: str = "") -> None:
def display_overall_exchange_withdrawal_fees(
export: str = "", sheet_name: str = None
) -> None:
"""Exchange withdrawal fees
[Source: https://withdrawalfees.com/]
@@ -79,11 +84,14 @@ def display_overall_exchange_withdrawal_fees(export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"exchange_withdrawal_fees",
df_fees,
sheet_name,
)
@log_start_end(log=logger)
def display_crypto_withdrawal_fees(symbol: str, export: str = "") -> None:
def display_crypto_withdrawal_fees(
symbol: str, export: str = "", sheet_name: str = None
) -> None:
"""Coin withdrawal fees per exchange
[Source: https://withdrawalfees.com/]
@@ -117,4 +125,5 @@ def display_crypto_withdrawal_fees(symbol: str, export: str = "") -> None:
os.path.dirname(os.path.abspath(__file__)),
"crypto_withdrawal_fees",
df_fees,
sheet_name,
)

View File

@@ -217,6 +217,9 @@ class QaController(CryptoBaseController):
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)
@@ -234,7 +237,13 @@ class QaController(CryptoBaseController):
parser, other_args, export_allowed=EXPORT_ONLY_RAW_DATA_ALLOWED
)
if ns_parser:
qa_view.display_summary(data=self.data, export=ns_parser.export)
qa_view.display_summary(
data=self.data,
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_line(self, other_args: List[str]):
@@ -328,6 +337,9 @@ class QaController(CryptoBaseController):
data=self.data,
target=self.target,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -389,6 +401,9 @@ class QaController(CryptoBaseController):
target=self.target,
multiplicative=ns_parser.multiplicative,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -500,6 +515,9 @@ class QaController(CryptoBaseController):
target=self.target,
window=ns_parser.n_window,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -533,6 +551,9 @@ class QaController(CryptoBaseController):
target=self.target,
window=ns_parser.n_window,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -586,6 +607,9 @@ class QaController(CryptoBaseController):
window=ns_parser.n_window,
quantile=ns_parser.f_quantile,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -625,6 +649,9 @@ class QaController(CryptoBaseController):
target=self.target,
window=ns_parser.n_window,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -664,6 +691,9 @@ class QaController(CryptoBaseController):
target=self.target,
window=ns_parser.n_window,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -741,4 +771,7 @@ class QaController(CryptoBaseController):
fuller_reg=ns_parser.fuller_reg,
kpss_reg=ns_parser.kpss_reg,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)

View File

@@ -234,6 +234,9 @@ class TechnicalAnalysisController(CryptoBaseController):
window=ns_parser.n_length,
offset=ns_parser.n_offset,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -288,6 +291,9 @@ class TechnicalAnalysisController(CryptoBaseController):
window=ns_parser.n_length,
offset=ns_parser.n_offset,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -339,6 +345,9 @@ class TechnicalAnalysisController(CryptoBaseController):
window=ns_parser.n_length,
offset=ns_parser.n_offset,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -390,6 +399,9 @@ class TechnicalAnalysisController(CryptoBaseController):
window=ns_parser.n_length,
offset=ns_parser.n_offset,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -444,6 +456,9 @@ class TechnicalAnalysisController(CryptoBaseController):
window=ns_parser.n_length,
offset=ns_parser.n_offset,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -507,6 +522,9 @@ class TechnicalAnalysisController(CryptoBaseController):
end_date=ns_parser.end,
offset=ns_parser.n_offset,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -557,6 +575,9 @@ class TechnicalAnalysisController(CryptoBaseController):
window=ns_parser.n_length,
scalar=ns_parser.n_scalar,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -616,6 +637,9 @@ class TechnicalAnalysisController(CryptoBaseController):
n_slow=ns_parser.n_slow,
n_signal=ns_parser.n_signal,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -680,6 +704,9 @@ class TechnicalAnalysisController(CryptoBaseController):
scalar=ns_parser.n_scalar,
drift=ns_parser.n_drift,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -742,6 +769,9 @@ class TechnicalAnalysisController(CryptoBaseController):
slowdperiod=ns_parser.n_slowdperiod,
slowkperiod=ns_parser.n_slowkperiod,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -783,6 +813,9 @@ class TechnicalAnalysisController(CryptoBaseController):
data=self.stock,
window=ns_parser.n_length,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -824,6 +857,9 @@ class TechnicalAnalysisController(CryptoBaseController):
data=self.stock["Adj Close"],
window=ns_parser.n_length,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -885,6 +921,9 @@ class TechnicalAnalysisController(CryptoBaseController):
scalar=ns_parser.n_scalar,
drift=ns_parser.n_drift,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -942,6 +981,9 @@ class TechnicalAnalysisController(CryptoBaseController):
window=ns_parser.n_length,
scalar=ns_parser.n_scalar,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1011,6 +1053,9 @@ class TechnicalAnalysisController(CryptoBaseController):
n_std=ns_parser.n_std,
mamode=ns_parser.s_mamode,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1062,6 +1107,9 @@ class TechnicalAnalysisController(CryptoBaseController):
upper_length=ns_parser.n_length_upper,
lower_length=ns_parser.n_length_lower,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1135,6 +1183,9 @@ class TechnicalAnalysisController(CryptoBaseController):
mamode=ns_parser.s_mamode,
offset=ns_parser.n_offset,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1174,6 +1225,9 @@ class TechnicalAnalysisController(CryptoBaseController):
data=self.stock,
use_open=ns_parser.b_use_open,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1230,6 +1284,9 @@ class TechnicalAnalysisController(CryptoBaseController):
fast=ns_parser.n_length_fast,
slow=ns_parser.n_length_slow,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1258,6 +1315,9 @@ class TechnicalAnalysisController(CryptoBaseController):
symbol=self.coin,
data=self.stock,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1308,4 +1368,7 @@ class TechnicalAnalysisController(CryptoBaseController):
start_date=ns_parser.start,
end_date=ns_parser.end,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)

View File

@@ -123,6 +123,9 @@ class ToolsController(BaseController):
initial_pool_value=ns_parser.value,
narrative=ns_parser.narrative,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -179,4 +182,7 @@ class ToolsController(BaseController):
compounding_times=ns_parser.compounding,
narrative=ns_parser.narrative,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)

View File

@@ -14,7 +14,11 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def display_apy(
apr: float, compounding_times: int, narrative: bool = False, export: str = ""
apr: float,
compounding_times: int,
narrative: bool = False,
export: str = "",
sheet_name: str = None,
):
"""Displays APY value converted from APR
@@ -49,6 +53,7 @@ def display_apy(
os.path.dirname(os.path.abspath(__file__)),
"aprtoapy",
apy_str,
sheet_name,
)
@@ -60,6 +65,7 @@ def display_il(
initial_pool_value: int,
narrative: bool = False,
export: str = "",
sheet_name: str = None,
):
"""Displays Impermanent Loss in a custom liquidity pool
@@ -102,4 +108,5 @@ def display_il(
os.path.dirname(os.path.abspath(__file__)),
"il",
df,
sheet_name,
)

View File

@@ -129,7 +129,7 @@ def check_api_key(api_keys):
undefined_apis_name = ", ".join(undefined_apis)
console.print(
f"[red]{undefined_apis_name} not defined. "
"Set API Keys in ~/.openbb_terminal/.env or under keys menu.[/red]\n"
"Set API Keys in ~/.openbb_terminal/.env or under keys menu.[/red]"
) # pragma: allowlist secret
return None
return func(*args, **kwargs)

View File

@@ -597,6 +597,7 @@ class EconometricsController(BaseController):
os.path.dirname(os.path.abspath(__file__)),
f"{ns_parser.name}_show",
df.head(ns_parser.limit),
ns_parser.sheet_name,
)
@log_start_end(log=logger)
@@ -640,6 +641,7 @@ class EconometricsController(BaseController):
os.path.dirname(os.path.abspath(__file__)),
f"{dataset}_{col}_desc",
df,
ns_parser.sheet_name,
)
else:
df = self.datasets[ns_parser.name]
@@ -657,6 +659,7 @@ class EconometricsController(BaseController):
os.path.dirname(os.path.abspath(__file__)),
f"{ns_parser.name}_desc",
df,
ns_parser.sheet_name,
)
else:
console.print("Empty dataset")
@@ -1524,7 +1527,13 @@ class EconometricsController(BaseController):
parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED
)
if ns_parser:
regression_model.get_comparison(self.regression, ns_parser.export)
regression_model.get_comparison(
self.regression,
ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
console.print()
@log_start_end(log=logger)
@@ -1748,6 +1757,9 @@ class EconometricsController(BaseController):
significant=ns_parser.significant,
plot=ns_parser.plot,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
else:

View File

@@ -28,6 +28,7 @@ def show_options(
datasets: Dict[str, pd.DataFrame],
dataset_name: str = None,
export: str = "",
sheet_name: str = None,
):
"""Plot custom data
@@ -37,6 +38,8 @@ def show_options(
The loaded in datasets
dataset_name: str
The name of the dataset you wish to show options for
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export image
"""
@@ -60,6 +63,7 @@ def show_options(
os.path.dirname(os.path.abspath(__file__)),
f"{dataset}_options",
data_values.set_index("column"),
sheet_name,
)
@@ -67,6 +71,7 @@ def show_options(
def display_plot(
data: Union[pd.Series, pd.DataFrame, Dict[str, pd.DataFrame]],
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.axes]] = None,
):
"""Plot data from a dataset
@@ -75,6 +80,8 @@ def display_plot(
----------
data: Union[pd.Series, pd.DataFrame, Dict[str: pd.DataFrame]
Dictionary with key being dataset.column and dataframes being values
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export image
external_axes:Optional[List[plt.axes]]
@@ -122,6 +129,7 @@ def display_plot(
export,
os.path.dirname(os.path.abspath(__file__)),
"plot",
sheet_name,
)
@@ -132,6 +140,7 @@ def display_norm(
column: str = "",
plot: bool = True,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.axes]] = None,
):
"""Determine the normality of a timeseries.
@@ -146,6 +155,8 @@ def display_norm(
Column for y data
plot : bool
Whether you wish to plot a histogram
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data.
external_axes: Optional[List[plt.axes]]
@@ -188,6 +199,7 @@ def display_norm(
os.path.dirname(os.path.abspath(__file__)),
f"{column}_{dataset}_norm",
results,
sheet_name,
)
else:
console.print()
@@ -201,6 +213,7 @@ def display_root(
fuller_reg: str = "c",
kpss_reg: str = "c",
export: str = "",
sheet_name: str = None,
):
"""Determine the normality of a timeseries.
@@ -216,6 +229,8 @@ def display_root(
Type of regression of ADF test. Choose c, ct, ctt, or nc
kpss_reg : str
Type of regression for KPSS test. Choose c or ct
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data.
"""
@@ -240,6 +255,7 @@ def display_root(
os.path.dirname(os.path.abspath(__file__)),
f"{dataset}_{column}_root",
results,
sheet_name,
)
@@ -250,6 +266,7 @@ def display_granger(
lags: int = 3,
confidence_level: float = 0.05,
export: str = "",
sheet_name: str = None,
):
"""Show granger tests
@@ -307,6 +324,7 @@ def display_granger(
os.path.dirname(os.path.abspath(__file__)),
f'{dependent_series.name.replace(".","-")}_{independent_series.name.replace(".","-")}_granger',
granger_df,
sheet_name,
)
@@ -316,6 +334,7 @@ def display_cointegration_test(
significant: bool = False,
plot: bool = True,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.axes]] = None,
):
"""Estimates long-run and short-run cointegration relationship for series y and x and apply
@@ -393,4 +412,5 @@ def display_cointegration_test(
os.path.dirname(os.path.abspath(__file__)),
"coint",
df,
sheet_name,
)

View File

@@ -434,7 +434,7 @@ def get_fdols(Y: pd.DataFrame, X: pd.DataFrame) -> Any:
@log_start_end(log=logger)
def get_comparison(regressions: Dict, export: str = ""):
def get_comparison(regressions: Dict, export: str = "", sheet_name: str = None):
"""Compare regression results between Panel Data regressions.
Parameters
@@ -477,6 +477,7 @@ def get_comparison(regressions: Dict, export: str = ""):
os.path.dirname(os.path.abspath(__file__)),
"regressions_compare",
df,
sheet_name,
)
return comparison_result

View File

@@ -27,6 +27,7 @@ def display_panel(
entity_effects: bool = False,
time_effects: bool = False,
export: str = "",
sheet_name: str = None,
):
"""Based on the regression type, this function decides what regression to run.
@@ -72,6 +73,7 @@ def display_panel(
os.path.dirname(os.path.abspath(__file__)),
f"{dependent}_{regression_type}_regression",
df,
sheet_name,
)
return model
@@ -83,6 +85,7 @@ def display_dwat(
dependent_variable: pd.Series,
plot: bool = True,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.axes]] = None,
):
"""Show Durbin-Watson autocorrelation tests
@@ -134,6 +137,7 @@ def display_dwat(
os.path.dirname(os.path.abspath(__file__)),
f"{dependent_variable.name}_dwat",
autocorr,
sheet_name,
)
@@ -142,6 +146,7 @@ def display_bgod(
model: statsmodels.regression.linear_model.RegressionResultsWrapper,
lags: int = 3,
export: str = "",
sheet_name: str = None,
):
"""Show Breusch-Godfrey autocorrelation test
@@ -173,7 +178,13 @@ def display_bgod(
f"The result {round(p_value, 2)} indicates no existence of autocorrelation."
)
export_data(export, os.path.dirname(os.path.abspath(__file__)), "results_bgod", df)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"results_bgod",
df,
sheet_name,
)
console.print()
@@ -182,6 +193,7 @@ def display_bgod(
def display_bpag(
model: statsmodels.regression.linear_model.RegressionResultsWrapper,
export: str = "",
sheet_name: str = None,
):
"""Show Breusch-Pagan heteroscedasticity test
@@ -211,6 +223,12 @@ def display_bpag(
f"The result {round(p_value, 2)} indicates no existence of heteroscedasticity."
)
export_data(export, os.path.dirname(os.path.abspath(__file__)), "results_bpag", df)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"results_bpag",
df,
sheet_name,
)
console.print()

View File

@@ -28,6 +28,7 @@ logger = logging.getLogger(__name__)
def realtime_performance_sector(
raw: bool = False,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Display Real-Time Performance sector. [Source: AlphaVantage]
@@ -81,6 +82,7 @@ def realtime_performance_sector(
os.path.dirname(os.path.abspath(__file__)),
"rtps",
df_rtp,
sheet_name,
)
@@ -91,6 +93,7 @@ def display_real_gdp(
start_year: int = 2010,
raw: bool = False,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Display US GDP from AlphaVantage
@@ -135,6 +138,7 @@ def display_real_gdp(
os.path.dirname(os.path.abspath(__file__)),
"gdp",
gdp,
sheet_name,
)
if raw:
print_rich_table(
@@ -148,6 +152,7 @@ def display_gdp_capita(
start_year: int = 2010,
raw: bool = False,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Display US GDP per Capita from AlphaVantage
@@ -188,6 +193,7 @@ def display_gdp_capita(
os.path.dirname(os.path.abspath(__file__)),
"gdpc",
gdp,
sheet_name,
)
if raw:
print_rich_table(
@@ -204,6 +210,7 @@ def display_inflation(
start_year: int = 2010,
raw: bool = False,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Display US Inflation from AlphaVantage
@@ -243,6 +250,7 @@ def display_inflation(
os.path.dirname(os.path.abspath(__file__)),
"inf",
inf,
sheet_name,
)
if raw:
print_rich_table(
@@ -260,6 +268,7 @@ def display_cpi(
start_year: int = 2010,
raw: bool = False,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Display US consumer price index (CPI) from AlphaVantage
@@ -304,6 +313,7 @@ def display_cpi(
os.path.dirname(os.path.abspath(__file__)),
"cpi",
cpi,
sheet_name,
)
if raw:
print_rich_table(
@@ -319,6 +329,7 @@ def display_treasury_yield(
start_date: str = "2010-01-01",
raw: bool = False,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Display historical treasury yield for given maturity
@@ -363,6 +374,7 @@ def display_treasury_yield(
os.path.dirname(os.path.abspath(__file__)),
"tyld",
yld,
sheet_name,
)
if raw:
print_rich_table(
@@ -379,6 +391,7 @@ def display_unemployment(
start_year: int = 2010,
raw: bool = False,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Display US unemployment AlphaVantage
@@ -420,6 +433,7 @@ def display_unemployment(
os.path.dirname(os.path.abspath(__file__)),
"unemp",
un,
sheet_name,
)
if raw:

View File

@@ -25,7 +25,7 @@ def format_large_numbers(num: float) -> str:
@log_start_end(log=logger)
def display_debt(export: str = "", limit: int = 20):
def display_debt(export: str = "", sheet_name: str = None, limit: int = 20):
"""Displays external debt for given countries [Source: Wikipedia]
Parameters
@@ -48,5 +48,9 @@ def display_debt(export: str = "", limit: int = 20):
)
if export:
export_data(
export, os.path.dirname(os.path.abspath(__file__)), "cdebt", debt_df
export,
os.path.dirname(os.path.abspath(__file__)),
"cdebt",
debt_df,
sheet_name,
)

View File

@@ -32,6 +32,7 @@ def show_macro_data(
raw: bool = False,
external_axes: Optional[List[plt.axes]] = None,
export: str = "",
sheet_name: str = None,
):
"""Show the received macro data about a company [Source: EconDB]
@@ -133,6 +134,7 @@ def show_macro_data(
os.path.dirname(os.path.abspath(__file__)),
"macro_data",
df_rounded,
sheet_name,
)
theme.style_primary_axis(ax)
@@ -151,6 +153,7 @@ def show_treasuries(
raw: bool = False,
external_axes: Optional[List[plt.axes]] = None,
export: str = "",
sheet_name: str = None,
):
"""Display U.S. Treasury rates [Source: EconDB]
@@ -228,6 +231,7 @@ def show_treasuries(
os.path.dirname(os.path.abspath(__file__)),
"treasuries_data",
treasury_data,
sheet_name,
)

View File

@@ -312,22 +312,37 @@ class EconomyController(BaseController):
if not ns_parser.type:
wsj_view.display_overview(
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
elif ns_parser.type == "indices":
wsj_view.display_indices(
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
if ns_parser.type == "usbonds":
wsj_view.display_usbonds(
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
if ns_parser.type == "glbonds":
wsj_view.display_glbonds(
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
if ns_parser.type == "currencies":
wsj_view.display_currencies(
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -384,6 +399,9 @@ class EconomyController(BaseController):
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,
)
else:
console.print(
@@ -394,6 +412,9 @@ class EconomyController(BaseController):
console.print("[red]Commodity flag valid with Finviz only.[/red]")
wsj_view.display_futures(
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -479,6 +500,9 @@ class EconomyController(BaseController):
country_codes=ns_parser.countries,
raw=ns_parser.raw,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -626,6 +650,9 @@ class EconomyController(BaseController):
symbol=ns_parser.currency,
raw=ns_parser.raw,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
self.update_runtime_choices()
@@ -725,6 +752,9 @@ class EconomyController(BaseController):
limit=ns_parser.limit,
raw=ns_parser.raw,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
get_data=True,
)
@@ -878,6 +908,9 @@ class EconomyController(BaseController):
column=ns_parser.column,
raw=ns_parser.raw,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
returns=ns_parser.returns,
)
@@ -1005,6 +1038,9 @@ class EconomyController(BaseController):
end_date=ns_parser.end_date,
raw=ns_parser.raw,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
self.update_runtime_choices()
@@ -1041,6 +1077,9 @@ class EconomyController(BaseController):
date=ns_parser.date.strftime("%Y-%m-%d") if ns_parser.date else "",
raw=ns_parser.raw,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
# TODO: Add `Investing` to sources again when `investpy` is fixed
@@ -1137,6 +1176,9 @@ class EconomyController(BaseController):
end_date=end_date,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1334,6 +1376,9 @@ class EconomyController(BaseController):
dataset_yaxis_1=dataset_yaxis1,
dataset_yaxis_2=dataset_yaxis2,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1359,6 +1404,9 @@ class EconomyController(BaseController):
alphavantage_view.realtime_performance_sector(
raw=ns_parser.raw,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -1419,6 +1467,9 @@ class EconomyController(BaseController):
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)
@@ -1477,6 +1528,9 @@ class EconomyController(BaseController):
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)
@@ -1494,7 +1548,13 @@ class EconomyController(BaseController):
parser, other_args, export_allowed=EXPORT_ONLY_RAW_DATA_ALLOWED, limit=20
)
if ns_parser:
commodity_view.display_debt(export=ns_parser.export, limit=ns_parser.limit)
commodity_view.display_debt(
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
limit=ns_parser.limit,
)
@log_start_end(log=logger)
def call_spectrum(self, other_args: List[str]):

View File

@@ -12,7 +12,9 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
@check_api_key(["API_FINNHUB_KEY"])
def economy_calendar_events(country: str, limit: int, impact: str, export: str):
def economy_calendar_events(
country: str, limit: int, impact: str, export: str = "", sheet_name: str = None
):
"""Output economy calendar impact events. [Source: Finnhub]
Parameters
@@ -82,4 +84,5 @@ def economy_calendar_events(country: str, limit: int, impact: str, export: str):
os.path.dirname(os.path.abspath(__file__)),
"events",
df_econ_calendar,
sheet_name,
)

View File

@@ -33,6 +33,7 @@ def display_valuation(
sortby: str = "Name",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
):
"""Display group (sectors, industry or country) valuation data. [Source: Finviz]
@@ -64,6 +65,7 @@ def display_valuation(
os.path.dirname(os.path.abspath(__file__)),
"valuation",
df_group,
sheet_name,
)
@@ -73,6 +75,7 @@ def display_performance(
sortby: str = "Name",
ascend: bool = True,
export: str = "",
sheet_name: str = None,
):
"""View group (sectors, industry or country) performance data. [Source: Finviz]
@@ -104,17 +107,20 @@ def display_performance(
os.path.dirname(os.path.abspath(__file__)),
"performance",
df_group,
sheet_name,
)
@log_start_end(log=logger)
def display_spectrum(group: str = "sector", export: str = ""):
def display_spectrum(group: str = "sector", export: str = "", sheet_name: str = None):
"""Display finviz spectrum in system viewer [Source: Finviz]
Parameters
----------
group: str
Group by category. Available groups can be accessed through get_groups().
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
"""
@@ -127,6 +133,7 @@ def display_spectrum(group: str = "sector", export: str = ""):
export,
os.path.dirname(os.path.abspath(__file__)),
"spectrum",
sheet_name,
)
img.show()
@@ -138,6 +145,7 @@ def display_future(
sortby: str = "ticker",
ascend: bool = False,
export: str = "",
sheet_name: str = None,
):
"""Display table of a particular future type. [Source: Finviz]
@@ -166,4 +174,5 @@ def display_future(
os.path.dirname(os.path.abspath(__file__)),
future_type.lower(),
df,
sheet_name,
)

View File

@@ -28,6 +28,8 @@ logger = logging.getLogger(__name__)
register_matplotlib_converters()
# pylint: disable=too-many-arguments
@log_start_end(log=logger)
def format_units(num: int) -> str:
@@ -81,6 +83,7 @@ def display_fred_series(
get_data: bool = False,
raw: bool = False,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Display (multiple) series from https://fred.stlouisfed.org. [Source: FRED]
@@ -160,6 +163,7 @@ def display_fred_series(
os.path.dirname(os.path.abspath(__file__)),
"fred",
data,
sheet_name,
)
if get_data:
@@ -189,6 +193,7 @@ def display_yield_curve(
external_axes: Optional[List[plt.Axes]] = None,
raw: bool = False,
export: str = "",
sheet_name: str = None,
):
"""Display yield curve based on US Treasury rates for a specified date.
@@ -236,4 +241,5 @@ def display_yield_curve(
os.path.dirname(os.path.abspath(__file__)),
"ycrv",
rates,
sheet_name,
)

View File

@@ -45,6 +45,7 @@ def display_spread_matrix(
raw: bool = False,
external_axes: Optional[List[plt.Axes]] = None,
export: str = "",
sheet_name: str = None,
):
"""Display spread matrix. [Source: Investing.com]
@@ -198,7 +199,13 @@ def display_spread_matrix(
if not external_axes:
theme.visualize_output()
export_data(export, os.path.dirname(os.path.abspath(__file__)), "spread", df)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"spread",
df,
sheet_name,
)
@log_start_end(log=logger)
@@ -207,6 +214,7 @@ def display_yieldcurve(
external_axes: Optional[List[plt.Axes]] = None,
raw: bool = False,
export: str = "",
sheet_name: str = None,
):
"""Display yield curve for specified country. [Source: Investing.com]
@@ -285,6 +293,7 @@ def display_yieldcurve(
os.path.dirname(os.path.abspath(__file__)),
"ycrv",
df,
sheet_name,
)
@@ -297,6 +306,7 @@ def display_economic_calendar(
end_date: str = "",
limit=100,
export: str = "",
sheet_name: str = None,
):
"""Display economic calendar. [Source: Investing.com]
@@ -336,4 +346,5 @@ def display_economic_calendar(
os.path.dirname(os.path.abspath(__file__)),
"events",
df,
sheet_name,
)

View File

@@ -30,6 +30,7 @@ def display_economic_calendar(
end_date: str,
limit: int = 10,
export: str = "",
sheet_name: str = None,
) -> None:
"""Display economic calendar for specified country between start and end dates
@@ -56,7 +57,13 @@ def display_economic_calendar(
headers=df.columns,
)
console.print()
export_data(export, os.path.dirname(os.path.abspath(__file__)), "events", df)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"events",
df,
sheet_name,
)
@log_start_end(log=logger)
@@ -65,6 +72,7 @@ def display_big_mac_index(
country_codes: List[str] = None,
raw: bool = False,
export: str = "",
sheet_name: str = None,
external_axes: Optional[List[plt.Axes]] = None,
):
"""Display Big Mac Index for given countries
@@ -107,7 +115,11 @@ def display_big_mac_index(
)
export_data(
export, os.path.dirname(os.path.abspath(__file__)), "bigmac", big_mac
export,
os.path.dirname(os.path.abspath(__file__)),
"bigmac",
big_mac,
sheet_name,
)
else:
logger.error("Unable to get big mac data")

View File

@@ -18,7 +18,8 @@ from openbb_terminal.helper_funcs import (
def show_plot(
dataset_yaxis_1,
dataset_yaxis_2,
export,
export: str = "",
sheet_name: Optional[str] = "",
external_axes: Optional[List[plt.Axes]] = None,
):
"""
@@ -104,11 +105,16 @@ def show_plot(
os.path.dirname(os.path.abspath(__file__)),
"plot_macro_data",
df,
sheet_name,
)
def show_options(
datasets: Dict[Any, pd.DataFrame], raw: str = "", limit: int = 10, export: str = ""
datasets: Dict[Any, pd.DataFrame],
raw: str = "",
limit: int = 10,
export: str = "",
sheet_name: str = None,
):
"""
The ability to plot any data coming from EconDB, FRED or Yahoo Finance.
@@ -146,6 +152,7 @@ def show_options(
os.path.dirname(os.path.abspath(__file__)),
"dataset",
df,
sheet_name,
)
else:
options = {

View File

@@ -279,6 +279,9 @@ class QaController(StockBaseController):
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)
@@ -297,7 +300,11 @@ class QaController(StockBaseController):
)
if ns_parser:
qa_view.display_summary(
data=self.current_source_dataframe, export=ns_parser.export
data=self.current_source_dataframe,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -386,6 +393,9 @@ class QaController(StockBaseController):
data=self.current_source_dataframe,
target=self.current_id,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -447,6 +457,9 @@ class QaController(StockBaseController):
target=self.current_id,
multiplicative=ns_parser.multiplicative,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -544,6 +557,9 @@ class QaController(StockBaseController):
target=self.current_id,
window=ns_parser.n_window,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -575,6 +591,9 @@ class QaController(StockBaseController):
target=self.current_id,
window=ns_parser.n_window,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -624,6 +643,9 @@ class QaController(StockBaseController):
window=ns_parser.n_window,
quantile=ns_parser.f_quantile,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -661,6 +683,9 @@ class QaController(StockBaseController):
target=self.current_id,
window=ns_parser.n_window,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -698,6 +723,9 @@ class QaController(StockBaseController):
target=self.current_id,
window=ns_parser.n_window,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -719,6 +747,9 @@ class QaController(StockBaseController):
data=self.current_source_dataframe,
target=self.current_id,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -777,4 +808,7 @@ class QaController(StockBaseController):
fuller_reg=ns_parser.fuller_reg,
kpss_reg=ns_parser.kpss_reg,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)

View File

@@ -13,7 +13,7 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def display_overview(export: str = ""):
def display_overview(export: str = "", sheet_name: str = None):
"""Market overview with daily change. [Source: Wall St. Journal]
Parameters
@@ -38,11 +38,12 @@ def display_overview(export: str = ""):
os.path.dirname(os.path.abspath(__file__)),
"overview",
df_data,
sheet_name,
)
@log_start_end(log=logger)
def display_indices(export: str = ""):
def display_indices(export: str = "", sheet_name: str = None):
"""US indices. [Source: Wall St. Journal]
Parameters
@@ -64,11 +65,12 @@ def display_indices(export: str = ""):
os.path.dirname(os.path.abspath(__file__)),
"indices",
df_data,
sheet_name,
)
@log_start_end(log=logger)
def display_futures(export: str = ""):
def display_futures(export: str = "", sheet_name: str = None):
"""Futures/Commodities. [Source: Wall St. Journal]
Parameters
@@ -93,11 +95,12 @@ def display_futures(export: str = ""):
os.path.dirname(os.path.abspath(__file__)),
"futures",
df_data,
sheet_name,
)
@log_start_end(log=logger)
def display_usbonds(export: str = ""):
def display_usbonds(export: str = "", sheet_name: str = None):
"""US bonds. [Source: Wall St. Journal]
Parameters
@@ -119,11 +122,12 @@ def display_usbonds(export: str = ""):
os.path.dirname(os.path.abspath(__file__)),
"usbonds",
df_data,
sheet_name,
)
@log_start_end(log=logger)
def display_glbonds(export: str = ""):
def display_glbonds(export: str = "", sheet_name: str = None):
"""Global bonds. [Source: Wall St. Journal]
Parameters
@@ -145,11 +149,12 @@ def display_glbonds(export: str = ""):
os.path.dirname(os.path.abspath(__file__)),
"glbonds",
df_data,
sheet_name,
)
@log_start_end(log=logger)
def display_currencies(export: str = ""):
def display_currencies(export: str = "", sheet_name: str = None):
"""Display currencies. [Source: Wall St. Journal]
Parameters
@@ -171,4 +176,5 @@ def display_currencies(export: str = ""):
os.path.dirname(os.path.abspath(__file__)),
"currencies",
df_data,
sheet_name,
)

View File

@@ -37,6 +37,7 @@ def show_indices(
raw: bool = False,
external_axes: Optional[List[plt.axes]] = None,
export: str = "",
sheet_name: str = None,
):
"""Load (and show) the selected indices over time [Source: Yahoo Finance]
Parameters
@@ -127,6 +128,7 @@ def show_indices(
os.path.dirname(os.path.abspath(__file__)),
"index_data",
indices_data,
sheet_name,
)
return indices_data

View File

@@ -62,7 +62,14 @@ class DiscoveryController(BaseController):
parser, other_args, export_allowed=EXPORT_ONLY_RAW_DATA_ALLOWED, limit=10
)
if ns_parser:
wsj_view.show_top_mover("gainers", ns_parser.limit, ns_parser.export)
wsj_view.show_top_mover(
"gainers",
ns_parser.limit,
ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
def call_decliners(self, other_args):
@@ -81,7 +88,14 @@ class DiscoveryController(BaseController):
limit=10,
)
if ns_parser:
wsj_view.show_top_mover("decliners", ns_parser.limit, ns_parser.export)
wsj_view.show_top_mover(
"decliners",
ns_parser.limit,
ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
def call_active(self, other_args):
@@ -100,4 +114,11 @@ class DiscoveryController(BaseController):
limit=10,
)
if ns_parser:
wsj_view.show_top_mover("active", ns_parser.limit, ns_parser.export)
wsj_view.show_top_mover(
"active",
ns_parser.limit,
ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)

View File

@@ -13,7 +13,12 @@ logger = logging.getLogger(__name__)
@log_start_end(log=logger)
def show_top_mover(sort_type: str = "gainers", limit: int = 10, export: str = ""):
def show_top_mover(
sort_type: str = "gainers",
limit: int = 10,
export: str = "",
sheet_name: str = None,
):
"""
Show top ETF movers from wsj.com
@@ -23,6 +28,8 @@ def show_top_mover(sort_type: str = "gainers", limit: int = 10, export: str = ""
What to show. Either Gainers, Decliners or Activity
limit: int
Number of etfs to show
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Format to export data
"""
@@ -43,4 +50,5 @@ def show_top_mover(sort_type: str = "gainers", limit: int = 10, export: str = ""
os.path.dirname(os.path.abspath(__file__)),
sort_type,
data,
sheet_name,
)

View File

@@ -178,12 +178,18 @@ class ETFController(BaseController):
name=name_to_search,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
elif ns_parser.source == "StockAnalysis":
stockanalysis_view.display_etf_by_name(
name=name_to_search,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
else:
console.print("Wrong source choice!\n")
@@ -193,6 +199,9 @@ class ETFController(BaseController):
description=description_to_search,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -307,7 +316,11 @@ class ETFController(BaseController):
if ns_parser:
stockanalysis_view.view_overview(
symbol=self.etf_name, export=ns_parser.export
symbol=self.etf_name,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -339,6 +352,9 @@ class ETFController(BaseController):
symbol=self.etf_name,
limit=ns_parser.limit,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
console.print()
else:
@@ -535,6 +551,7 @@ class ETFController(BaseController):
os.path.dirname(os.path.abspath(__file__)),
f"{self.etf_name}",
self.etf_data,
ns_parser.sheet_name,
)
@log_start_end(log=logger)
@@ -634,6 +651,9 @@ class ETFController(BaseController):
raw=ns_parser.raw,
min_pct_to_display=ns_parser.min,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)
@log_start_end(log=logger)
@@ -723,4 +743,10 @@ class ETFController(BaseController):
)
if ns_parser:
etf_list = ns_parser.names.upper().split(",")
stockanalysis_view.view_comparisons(etf_list, export=ns_parser.export)
stockanalysis_view.view_comparisons(
etf_list,
export=ns_parser.export,
sheet_name=" ".join(ns_parser.sheet_name)
if ns_parser.sheet_name
else None,
)

View File

@@ -19,6 +19,7 @@ def display_etf_by_name(
name: str,
limit: int = 10,
export: str = "",
sheet_name: str = None,
):
"""Display a selection of ETFs based on name filtered by total assets. [Source: Finance Database]
@@ -28,6 +29,8 @@ def display_etf_by_name(
Search by name to find ETFs matching the criteria.
limit: int
Limit of ETFs to display
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Type of format to export data
"""
@@ -50,7 +53,11 @@ def display_etf_by_name(
)
export_data(
export, os.path.dirname(os.path.abspath(__file__)), "ln_fd", table_data_sorted
export,
os.path.dirname(os.path.abspath(__file__)),
"ln_fd",
table_data_sorted,
sheet_name,
)
@@ -59,6 +66,7 @@ def display_etf_by_description(
description: str,
limit: int = 10,
export: str = "",
sheet_name: str = None,
):
"""Display a selection of ETFs based on description filtered by total assets.
[Source: Finance Database]
@@ -69,6 +77,8 @@ def display_etf_by_description(
Search by description to find ETFs matching the criteria.
limit: int
Limit of ETFs to display
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Type of format to export data
"""
@@ -90,7 +100,13 @@ def display_etf_by_description(
title="ETFs by Total Assets",
)
export_data(export, os.path.dirname(os.path.abspath(__file__)), "ld", data)
export_data(
export,
os.path.dirname(os.path.abspath(__file__)),
"ld",
data,
sheet_name,
)
@log_start_end(log=logger)
@@ -98,6 +114,7 @@ def display_etf_by_category(
category: str,
limit: int = 10,
export: str = "",
sheet_name: str = None,
):
"""Display a selection of ETFs based on a category filtered by total assets.
[Source: Finance Database]
@@ -108,6 +125,8 @@ def display_etf_by_category(
Search by description to find ETFs matching the criteria.
limit: int
Limit of ETFs to display
sheet_name: str
Optionally specify the name of the sheet the data is exported to.
export: str
Type of format to export data
"""
@@ -134,4 +153,5 @@ def display_etf_by_category(
os.path.join(os.path.dirname(os.path.abspath(__file__)), "screener"),
"sbc",
data,
sheet_name,
)

Some files were not shown because too many files have changed in this diff Show More