mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-29 13:32:08 +00:00
* I missed some sheet_name ones :) * Move quote to main menu and combine yahoo finance commands * Update stocks for quote * First update to move yfinance away from main functionality * Small updates * Update tests to reflect changes * Fix some little things * Update docs a little too * Remove the Due Diligence menu * Update tests for new change * Update fa and stocks with new text and move some stuff around * Bye bye dd * Pls work * work.. * work.. * work.. * Work..| * Add tests back in * Remove tests * Fix fix fix * Remove tests to fix conflicts * Improve the `stocks/search` command (#4084) * Improve search command * Make it more intuitive * Fix tests * Update the docs * Ok done * Ok done 2 * Ok done 3 * Git update tests that failed * Update commands with --sheet-name that didn't work (#4088) * Update commands with --sheet-name that didn't work * Fix test * oops * Adds auto completion to `news` (#4089) * Fix plot look when using eval and add query to choices (#3881) * convert index to datetime and update choices * uncomment economy integration test * fix treasury concat bug * fix datasets concat on duplciates * Lock ruff version so that new lints dont break our CI (#3905) * Lock ruff version so that new lints dont break our CI * Bumped pre-commit ruff version * returning always a dataframe * Revert "returning always a dataframe" This reverts commitd5dbf3132f. * quick fix to auto complete args --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com> Co-authored-by: James Maslek <jmaslek11@gmail.com> * Hotfix/Windows-CLI (#4087) * init * Update windows10_build.yml * Update windows10_build.yml * Update windows10_build.yml * Update windows10_build.yml * Update windows10_build.yml * Update windows10_build.yml * oops --------- Co-authored-by: James Maslek <jmaslek11@gmail.com> * Adds end date to `forex/load` (#4077) * Fix plot look when using eval and add query to choices (#3881) * convert index to datetime and update choices * uncomment economy integration test * fix treasury concat bug * fix datasets concat on duplciates * Lock ruff version so that new lints dont break our CI (#3905) * Lock ruff version so that new lints dont break our CI * Bumped pre-commit ruff version * returning always a dataframe * Revert "returning always a dataframe" This reverts commitd5dbf3132f. * adding end date to the forex load * added some tests * added example * always show msg * rewriting test * updating tests * updating tests * Redo load tests --------- Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com> Co-authored-by: James Maslek <jmaslek11@gmail.com> * Update tests to reflect changes * work.. * Remove tests * Fix fix fix * Remove tests * Update the whole test folder * Small updates * Revert change * Update eodhd to reflect it requires a paid plan and update tests * Fix all the tests * Update tests * Update integration tests * Removing tests so no whining happens * ADD ALL THE TESTS * Fix linting * gitignore. thanks jer * Add back dd and redirect to fa * Update to just display a message * Update OpenBB SDK commands * Fixing issues with exporting * Fix ruff messing up * Fix tests * Fix the tests by disabling isort to run on tests folder --------- Co-authored-by: Jeroen Bouma <jeroenbouma@Jeroens-MacBook-Pro.local> Co-authored-by: James Maslek <jmaslek11@gmail.com> Co-authored-by: Henrique Joaquim <h.joaquim@campus.fct.unl.pt> Co-authored-by: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Co-authored-by: Colin Delahunty <72827203+colin99d@users.noreply.github.com> Co-authored-by: teh_coderer <me@tehcoderer.com>
165 lines
4.8 KiB
Python
165 lines
4.8 KiB
Python
"""GitHub View Module"""
|
|
__docformat__ = "numpy"
|
|
|
|
import logging
|
|
import os
|
|
from typing import List, Optional
|
|
|
|
from matplotlib import (
|
|
pyplot as plt,
|
|
ticker,
|
|
)
|
|
|
|
from openbb_terminal.alternative.oss import github_model
|
|
from openbb_terminal.config_plot import PLOT_DPI
|
|
from openbb_terminal.config_terminal import theme
|
|
from openbb_terminal.cryptocurrency.dataframe_helpers import (
|
|
lambda_long_number_format_with_type_check,
|
|
)
|
|
from openbb_terminal.decorators import log_start_end
|
|
from openbb_terminal.helper_funcs import (
|
|
export_data,
|
|
is_valid_axes_count,
|
|
plot_autoscale,
|
|
print_rich_table,
|
|
)
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@log_start_end(log=logger)
|
|
def display_star_history(
|
|
repo: str,
|
|
export: str = "",
|
|
sheet_name: str = None,
|
|
external_axes: Optional[List[plt.Axes]] = None,
|
|
) -> None:
|
|
"""Plots repo summary [Source: https://api.github.com].
|
|
|
|
Parameters
|
|
----------
|
|
repo : str
|
|
Repository to display star history. Format: org/repo, e.g., openbb-finance/openbbterminal
|
|
export : str
|
|
Export dataframe data to csv,json,xlsx file
|
|
external_axes : Optional[List[plt.Axes]], optional
|
|
External axes (1 axis is expected in the list), by default None
|
|
"""
|
|
df = github_model.get_stars_history(repo)
|
|
if not df.empty:
|
|
if external_axes is None:
|
|
_, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI)
|
|
elif is_valid_axes_count(external_axes, 1):
|
|
(ax,) = external_axes
|
|
else:
|
|
return
|
|
ax.plot(df["Date"], df["Stars"])
|
|
|
|
ax.set_xlabel("Date")
|
|
ax.set_ylabel("Stars")
|
|
ax.set_title(f"Star History for {repo}")
|
|
|
|
theme.style_primary_axis(ax)
|
|
|
|
if external_axes is None:
|
|
theme.visualize_output()
|
|
|
|
export_data(
|
|
export,
|
|
os.path.dirname(os.path.abspath(__file__)),
|
|
"sh",
|
|
df,
|
|
sheet_name,
|
|
)
|
|
|
|
|
|
@log_start_end(log=logger)
|
|
def display_top_repos(
|
|
sortby: str,
|
|
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].
|
|
|
|
Parameters
|
|
----------
|
|
sortby : str
|
|
Sort repos by {stars, forks}
|
|
categories : str
|
|
Check for repo categories. If more than one separate with a comma: e.g., finance,investment. Default: None
|
|
limit : int
|
|
Number of repos to look at
|
|
export : str
|
|
Export dataframe data to csv,json,xlsx file
|
|
external_axes : Optional[List[plt.Axes]], optional
|
|
External axes (1 axis is expected in the list), by default None
|
|
"""
|
|
df = github_model.get_top_repos(categories=categories, sortby=sortby, limit=limit)
|
|
if not df.empty:
|
|
if external_axes is None:
|
|
_, ax = plt.subplots(figsize=(14, 8), dpi=PLOT_DPI)
|
|
elif is_valid_axes_count(external_axes, 1):
|
|
(ax,) = external_axes
|
|
else:
|
|
return
|
|
for _, row in df.iterrows():
|
|
ax.barh(
|
|
y=row["full_name"],
|
|
width=row["stargazers_count" if sortby == "stars" else "forks_count"],
|
|
height=0.5,
|
|
)
|
|
|
|
ax.set_xlabel(sortby.capitalize())
|
|
ax.get_xaxis().set_major_formatter(
|
|
ticker.FuncFormatter(
|
|
lambda x, _: lambda_long_number_format_with_type_check(x)
|
|
)
|
|
)
|
|
ax.yaxis.set_label_position("left")
|
|
ax.yaxis.set_ticks_position("left")
|
|
ax.set_ylabel("Repository Full Name")
|
|
category_substr = "ies" if "," in categories else "y"
|
|
category_str = f"categor{category_substr} {categories} " if categories else ""
|
|
ax.set_title(f"Top repos {category_str}sorted by {sortby}")
|
|
theme.style_primary_axis(ax)
|
|
|
|
if external_axes is None:
|
|
theme.visualize_output()
|
|
|
|
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 = "", sheet_name: str = None) -> None:
|
|
"""Prints table showing repo summary [Source: https://api.github.com].
|
|
|
|
Parameters
|
|
----------
|
|
repo : str
|
|
Repository to display summary. Format: org/repo, e.g., openbb-finance/openbbterminal
|
|
export : str
|
|
Export dataframe data to csv,json,xlsx file
|
|
"""
|
|
data = github_model.get_repo_summary(repo)
|
|
if not data.empty:
|
|
print_rich_table(
|
|
data, headers=list(data.columns), show_index=False, title="Repo summary"
|
|
)
|
|
|
|
export_data(
|
|
export,
|
|
os.path.dirname(os.path.abspath(__file__)),
|
|
"rs",
|
|
data,
|
|
sheet_name,
|
|
)
|