diff --git a/openbb_terminal/alternative/oss/oss_controller.py b/openbb_terminal/alternative/oss/oss_controller.py index 946862ff005..d6130e249d0 100644 --- a/openbb_terminal/alternative/oss/oss_controller.py +++ b/openbb_terminal/alternative/oss/oss_controller.py @@ -9,6 +9,7 @@ from prompt_toolkit.completion import NestedCompleter from openbb_terminal import feature_flags as obbff from openbb_terminal.alternative.oss import github_view +from openbb_terminal.alternative.oss import runa_view, runa_model from openbb_terminal.decorators import log_start_end from openbb_terminal.helper_funcs import ( EXPORT_BOTH_RAW_DATA_AND_FIGURES, @@ -27,7 +28,7 @@ logger = logging.getLogger(__name__) class OSSController(BaseController): """Open Source Controller class""" - CHOICES_COMMANDS = ["sh", "tr", "rs"] + CHOICES_COMMANDS = ["sh", "tr", "rs", "rossidx"] PATH = "/alternative/oss/" def __init__(self, queue: List[str] = None): @@ -37,11 +38,16 @@ class OSSController(BaseController): if session and obbff.USE_PROMPT_TOOLKIT: choices: dict = {c: {} for c in self.controller_choices} choices["tr"]["-s"] = {c: None for c in ["stars", "forks"]} + choices["rossidx"]["-s"] = {c: None for c in runa_model.SORT_COLUMNS} + choices["rossidx"]["-t"] = {c: None for c in ["stars", "forks"]} self.completer = NestedCompleter.from_nested_dict(choices) def print_help(self): """Print help""" help_text = """[cmds] +[src][Runa][/src] + rossidx the fastest-growing open-source startups +[src][GitHub][/src] rs repo summary sh repo star history tr top starred repos[/cmds] @@ -119,6 +125,80 @@ class OSSController(BaseController): github_view.display_repo_summary(repo=repo, export=ns_parser.export) self.queue = self.queue[1:] + @log_start_end(log=logger) + def call_rossidx(self, other_args: List[str]): + """Process rossidx command""" + parser = argparse.ArgumentParser( + add_help=False, + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + prog="rossidx", + description=""" + Display list of startups from ross index [Source: https://runacap.com/] + Use --chart to display chart and -t {stars,forks} to set chart type + """, + ) + parser.add_argument( + "-s", + "--sortby", + type=str, + dest="sortby", + nargs="+", + help="Sort startups by column", + default="Stars AGR [%]", + ) + + parser.add_argument( + "--descend", + action="store_true", + help="Flag to sort in descending order (lowest first)", + dest="descend", + default=False, + ) + + parser.add_argument( + "-c", + "--chart", + action="store_true", + help="Flag to show chart", + dest="show_chart", + default=False, + ) + parser.add_argument( + "-g", + "--growth", + action="store_true", + help="Flag to show growth chart", + dest="show_growth", + default=False, + ) + parser.add_argument( + "-t", + "--chart-type", + type=str, + dest="chart_type", + help="Chart type: {stars, forks}", + default="stars", + choices=["stars", "forks"], + ) + + ns_parser = parse_known_args_and_warn( + parser, + other_args, + export_allowed=EXPORT_ONLY_RAW_DATA_ALLOWED, + limit=10, + ) + + if ns_parser: + runa_view.display_rossindex( + sortby=" ".join(ns_parser.sortby), + descend=ns_parser.descend, + top=ns_parser.limit, + show_chart=ns_parser.show_chart, + show_growth=ns_parser.show_growth, + chart_type=ns_parser.chart_type, + export=ns_parser.export, + ) + @log_start_end(log=logger) def call_tr(self, other_args: List[str]): """Process tr command""" diff --git a/openbb_terminal/alternative/oss/runa_model.py b/openbb_terminal/alternative/oss/runa_model.py new file mode 100644 index 00000000000..92aa77814e7 --- /dev/null +++ b/openbb_terminal/alternative/oss/runa_model.py @@ -0,0 +1,161 @@ +"""Runa Model""" +import logging +from typing import Union + +import pandas as pd +import requests +from bs4 import BeautifulSoup +from requests.adapters import HTTPAdapter, RetryError +from urllib3.util.retry import Retry + +from openbb_terminal.decorators import log_start_end +from openbb_terminal.helper_funcs import get_user_agent +from openbb_terminal.rich_config import console + +logger = logging.getLogger(__name__) + +SORT_COLUMNS = [ + "GitHub", + "Company", + "Country", + "City", + "Founded", + "Raised [$M]", + "Stars", + "Forks", + "Stars AGR [%]", + "Forks AGR [%]", +] + + +@log_start_end(log=logger) +def _retry_session( + url: str, retries: int = 3, backoff_factor: float = 1.0 +) -> requests.Session: + """Helper methods that retries to make request + + + Parameters + ---------- + url: str + Url to mount a session + retries: int + How many retries + backoff_factor: float + Backoff schema - time periods between retry + + Returns + ------- + requests.Session + Mounted session + """ + + session = requests.Session() + retry = Retry( + total=retries, + read=retries, + connect=retries, + status_forcelist=[500, 502, 503, 504], + backoff_factor=backoff_factor, + ) + adapter = HTTPAdapter(max_retries=retry) + session.mount(url, adapter) + return session + + +@log_start_end(log=logger) +def _make_request(url: str) -> Union[BeautifulSoup, None]: + """Helper method to scrap + + Parameters + ---------- + url : str + url to scrape + + Returns + ------- + BeautifulSoup object + """ + headers = {"User-Agent": get_user_agent()} + session = _retry_session("https://runacap.com/") + try: + req = session.get(url, headers=headers, timeout=5) + except Exception as error: + logger.exception(str(error)) + console.print(error) + raise RetryError( + "Connection error. Couldn't connect to CoinGecko and scrape the data. " + "Please visit CoinGecko site, and check if it's not under maintenance" + ) from error + + if req.status_code == 404: + return None + + if req.status_code >= 400: + raise Exception( + f"Couldn't connect to {url}. Status code: {req.status_code}. Reason: {req.reason}" + ) + + return BeautifulSoup(req.text, features="lxml") + + +@log_start_end(log=logger) +def get_startups() -> pd.DataFrame: + """Get startups from ROSS index [Source: https://runacap.com/] + + Parameters + ---------- + + Returns + ------- + pandas.DataFrame: + list of startups + """ + soup = _make_request("https://runacap.com/ross-index/") + startups = [] + if soup: + table = soup.find("table", {"id": "table_1"}) + if table: + rows = table.find_all("tr") + for row in rows: + td = row.find_all("td") + startup = [tr.text for tr in td] + if len(startup) > 0: + startups.append(startup) + df = pd.DataFrame( + startups, + columns=[ + "GitHub", + "Company", + "Country", + "City", + "Founded", + "Raised [$M]", + "REPO", + "Language", + "Stars", + "Forks", + "Stars AGR [%]", + "Forks AGR [%]", + "SG", + "FG", + ], + ) + df.drop("REPO", inplace=True, axis=1) + df["SG"] = pd.to_numeric(df["SG"], errors="coerce") + df["Stars"] = pd.to_numeric( + df["Stars"].str.replace(",", ""), errors="coerce" + ) + df["FG"] = pd.to_numeric(df["FG"], errors="coerce") + df["Forks"] = pd.to_numeric( + df["Forks"].str.replace(",", ""), errors="coerce" + ) + df["Raised [$M]"] = pd.to_numeric(df["Raised [$M]"], errors="coerce") + df["Stars AGR [%]"] = pd.to_numeric( + df["Stars AGR [%]"].str.replace(",", ""), errors="coerce" + ) + df["Forks AGR [%]"] = pd.to_numeric( + df["Forks AGR [%]"].str.replace(",", ""), errors="coerce" + ) + return df + return pd.DataFrame() diff --git a/openbb_terminal/alternative/oss/runa_view.py b/openbb_terminal/alternative/oss/runa_view.py new file mode 100644 index 00000000000..6d44726cc9a --- /dev/null +++ b/openbb_terminal/alternative/oss/runa_view.py @@ -0,0 +1,135 @@ +"""Rekt view""" +import logging +import os +from typing import Optional, List + +from matplotlib import pyplot as plt +from matplotlib import ticker +from openbb_terminal.alternative.oss import runa_model +from openbb_terminal.decorators import log_start_end +from openbb_terminal.helper_funcs import ( + export_data, + plot_autoscale, + lambda_long_number_format, + print_rich_table, +) +from openbb_terminal.config_terminal import theme +from openbb_terminal.config_plot import PLOT_DPI +from openbb_terminal.rich_config import console + +logger = logging.getLogger(__name__) + + +@log_start_end(log=logger) +def display_rossindex( + top: int, + sortby: str, + descend: bool, + show_chart: bool = False, + show_growth: bool = True, + chart_type: str = "stars", + export: str = "", + external_axes: Optional[List[plt.Axes]] = None, +) -> None: + """Display list of startups from ross index [Source: https://runacap.com/] + + Parameters + ---------- + top: int + Number of startups to search + sortby: str + Key by which to sort data. Default: Stars AGR [%] + descend: bool + Flag to sort data descending + show_chart: bool + Flag to show chart with startups + show_growth: bool + Flag to show growth line chart + chart_type: str + Chart type {stars,forks} + 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 = runa_model.get_startups() + + if df.empty: + console.print("\nError in runa request\n") + else: + if sortby in runa_model.SORT_COLUMNS: + df = df.sort_values(by=sortby, ascending=descend) + df = df.head(top) + if show_chart: + if external_axes is None: + _, ax1 = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI) + else: + if len(external_axes) != 2: + logger.error("Expected list of two axis items.") + console.print("[red]Expected list of 2 axis item./n[/red]") + return + ax1, _ = external_axes + for _, row in df[::-1].iterrows(): + ax1.barh( + y=row["GitHub"], + width=row["Forks" if chart_type == "forks" else "Stars"], + ) + ax1.set_xlabel("Forks" if chart_type == "forks" else "Stars") + ax1.get_xaxis().set_major_formatter( + ticker.FuncFormatter(lambda x, _: lambda_long_number_format(x)) + ) + ax1.grid(axis="y") + ax1.yaxis.set_label_position("left") + ax1.yaxis.set_ticks_position("left") + ax1.set_ylabel("Company") + ax1.yaxis.set_tick_params(labelsize=8) + title = "Total Forks" if chart_type == "forks" else "Total Stars" + ax1.set_title(f"ROSS Index - {title}") + if external_axes is None: + theme.visualize_output() + if show_growth: + if external_axes is None: + fig, ax = plt.subplots(figsize=plot_autoscale(), dpi=PLOT_DPI) + else: + if len(external_axes) != 2: + logger.error("Expected list of two axis items.") + console.print("[red]Expected list of 2 axis item./n[/red]") + return + ax, _ = external_axes + for _, row in df[::-1].iterrows(): + ax.barh( + y=row["GitHub"], + width=row["FG" if chart_type == "forks" else "SG"], + ) + ax.yaxis.set_label_position("left") + ax.yaxis.set_ticks_position("left") + ax.set_ylabel("Company") + ax.set_xlabel("Annual Growth [times]") + ax.yaxis.set_tick_params(labelsize=8) + title = ( + "Forks Annual Growth" + if chart_type == "forks" + else "Stars Annual Growth" + ) + ax.set_title(f"ROSS Index - {title}") + fig.tight_layout() + if external_axes is None: + theme.visualize_output() + show_df = df.drop(["SG", "FG"], axis=1) + show_df = show_df.fillna("") + show_df["GitHub"] = show_df["GitHub"].str.wrap(10) + print_rich_table( + show_df.head(top), + headers=list(show_df.columns), + floatfmt=".1f", + show_index=False, + title="ROSS Index - the fastest-growing open-source startups", + ) + console.print("") + + export_data( + export, + os.path.dirname(os.path.abspath(__file__)), + "runaidx", + df, + ) diff --git a/openbb_terminal/cryptocurrency/overview/rekt_model.py b/openbb_terminal/cryptocurrency/overview/rekt_model.py index 93cd41ba42a..541441812d8 100644 --- a/openbb_terminal/cryptocurrency/overview/rekt_model.py +++ b/openbb_terminal/cryptocurrency/overview/rekt_model.py @@ -1,4 +1,4 @@ -"""Blockchain Center Model""" +"""Rekt Model""" import logging from typing import List, Union diff --git a/scripts/test_alt_oss.openbb b/scripts/test_alt_oss.openbb index b138601bf3e..376abad8ed2 100644 --- a/scripts/test_alt_oss.openbb +++ b/scripts/test_alt_oss.openbb @@ -3,4 +3,5 @@ oss rs openbb-finance/openbbterminal sh openbb-finance/openbbterminal tr +rossidx exit \ No newline at end of file diff --git a/tests/openbb_terminal/alternative/oss/cassettes/test_runa_model/test_get_startups.yaml b/tests/openbb_terminal/alternative/oss/cassettes/test_runa_model/test_get_startups.yaml new file mode 100644 index 00000000000..bf09a814a13 --- /dev/null +++ b/tests/openbb_terminal/alternative/oss/cassettes/test_runa_model/test_get_startups.yaml @@ -0,0 +1,497 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + method: GET + uri: https://runacap.com/ross-index/ + response: + body: + string: !!binary | + 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 + //8DAE5lcWvIegEA + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 6ff6c5a70c9a4203-MRS + Cache-Control: + - must-revalidate, public, max-age=300, stale-while-revalidate=360, stale-if-error=43200 + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - text/html; charset=UTF-8 + Date: + - Thu, 21 Apr 2022 14:22:29 GMT + Expect-CT: + - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" + NEL: + - '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}' + Report-To: + - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=kTM%2BFNU4WLmzlEOd5hhB7F0NS1hC4k1%2Fa7yy4rMF5qmhDPpXWaHDAyh3UWD2O5ZgmBTiXYS%2Fc9A3HxrNfe6VANhydMzeXgB9no1DPNeGWfFa1OHjf%2FuKjwQhGIzzZg%3D%3D"}],"group":"cf-nel","max_age":604800}' + Server: + - cloudflare + Transfer-Encoding: + - chunked + age: + - '2621' + alt-svc: + - h3=":443"; ma=86400, h3-29=":443"; ma=86400 + link: + - ; rel="https://api.w.org/", ; + rel="alternate"; type="application/json", ; rel=shortlink + strict-transport-security: + - max-age=31536000 + vary: + - Accept-Encoding + via: + - 1.1 varnish (Varnish/6.5) + x-cache: + - HIT + x-cacheable: + - YES:Forced + x-powered-by: + - DreamPress + x-varnish: + - 1151106 4852476 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/alternative/oss/cassettes/test_runa_view/test_display_rossindex.yaml b/tests/openbb_terminal/alternative/oss/cassettes/test_runa_view/test_display_rossindex.yaml new file mode 100644 index 00000000000..361710e861c --- /dev/null +++ b/tests/openbb_terminal/alternative/oss/cassettes/test_runa_view/test_display_rossindex.yaml @@ -0,0 +1,498 @@ +interactions: +- request: + body: null + headers: + Accept: + - '*/*' + Accept-Encoding: + - gzip, deflate + Connection: + - keep-alive + method: GET + uri: https://runacap.com/ross-index/ + response: + body: + string: !!binary | + H4sIAAAAAAAAA9RSTW/bMAy951dwOjSHWY3SfSKIM2DdB3oYWjTtYaeBsWlbmCxpIp3E/36wg3bp + ugK97iAIpJ7I9/i4fPHp8vzm+9VnaKR1q8lyuMChr3NFXt+u1ZAjLFeTZUuCUDSYmCRXtzdf9Ht1 + l/bYUq62lnYxJFFQBC/kJVc7W0qTl7S1BekxyMB6Kxad5gId5fNTk0GLe9t27XGqY0pjjBtHuQ9D + L2f9T2gSVblqRCIvZrMqeOHTOoTaEUbLp0VoZwXzhwpb6/r84uO3l1eO9i/X6HkxNyY7MyZ7dTg2 + e21M9saY7K0x2TtjTkrL0WGf8w7jCXebQatDsV7TXhQkcrli6R1xQyQP9U9T2ATh6b36qfUl7TOo + gnNhN6rUtsWadEw0DGvhMNV0eGBvYyRZ6Pkh3tqSwj1Qz6cwW00mS7HiaHV9uV7DxVB9AdIQVMhC + LLpOYWd9DSGS1xy6VBCwYJIucga0pdTDrw6TUFrODqUeOFgSF8lGscEfmXjTEIxShhRblrFFNXaW + EPWZ+ScBeESgSFgJlXcUXA+bHrbkpUsElU0tXHce4RyjFXTQ8VDqq5Wm20CJgmqYwWELRicK9MHb + Ap36aytS57HAOC5DCsx6pD87/B/1xhQiJelzFeqFC8PeHSkm/+N2/RRa+niMxSS2GH4/gR6mfAT/ + Yx3oZ3v3VPH/wq/HtLvkjug+x7TfAAAA///UXOlyGzmS/t1+CgwdPZSiq0Bk4qZb6oM7Pe4d9xE7 + Hm1EdzgURbJElcxrqoo6xqN330gUb/GyqN2ZdYQlAsgLicwPWSBKG4QUWZleUtguO3fJnI1808Vq + jiftflZcp/kGO+7u7vhV0knbo9HHypjKMBLa2Cl1MOpmV1navSyzFbNQIMZCxeDfg24qbEr4Soim + ENvmFlBij4vuxvF0vDEZ90dJt2igQNEA0aAYi4GPh72dCpoBkFfs3GNS8zrNetfLAA+AejfLWrqE + zsaqaRX4lHdZWaZ5s5Pk3SWGYjIYJPnDZcDKy6lntrC+dLKtSv//k22rdv9vRNOqBsrFJQXfLmXM + Vp5+0k77sMT1p6LkLE+TLs2ryqBtC5GUyTKnZINsOCnT6dJVq8Qo8M5qyXjczzoJLVqj3/3qpgiL + 10+K4qz2MEqKMi461+kgiXt5Mr6unX+qfRvk3pe15txTFQkf5b1aVPu2omz+/qn2bQjuZu2XvJcM + s38ELUSRdZeYl938erRKGfCruYpbUY3wcTN/LaoVySD9rqg1fz8QsKIVOto80242rOqk0WCcDB+2 + 0adDfpd9zMZpNwtzb1CrQbZeLmydEU/XZl1/7UNU6496o1pz4a0fKR5/ad+knXK3swJjVMuG75Jh + b0JB3JyWpbt8tC2UhWpMhuTwbojlqDal+tvxkiogbaIWUW0KkVWjk1RwsbbEj1GFg8Ere+b/+Bgt + XPffafuvlGs73XaXtouKaGcgbY69ZZB7MrjYNncbvhLlj1FtPCInZkn/u04leCl3/pomeed6OhDV + SoL5cjlc/jQs84dfR9mwrGb0Ph2M+0mZblH+TXH2qQgyL8s0H1wWZZ4Ne49kxt8naf4QZ8PxhJI7 + T/8+yfK0W4HLU5ba44eNsbe8HoeG8lI983qcZ7ShVQHwYtG9CtRHBPe6oFlsC7EU3LTtL0f3+4Mf + QibjbrKyy9XW4vvXyi2H+fIubY8r+u0eW64lF1F//BMUrV3xa5KXv1ztSYdZQlImVItfxc3Vr3sx + YGvgPEY1cuSv04wkflq+WPgYFJWZ6Jsop2VmRfvTtDytSLdUpOsI8O9T3kS1NlUHnXwyaB/utCWe + xy3Jtgud/itNuk+w6fe9cfbh8cNyWH8/N+JdVhyOFEu2R7WsTAfE/ad+OkiH5YqV1P9jmQ7CZIqs + mgXMg/3taJBOJWzbDpat3SgNXzR1HslBXzeqQKNzjflDfb07LOjY4yotO9f16rm+3mgkN8n92jFP + ffU0YAtjpzvkN0U37We3OR+m5WFcVCpV2sqkN0iGSa8qbQ7jLvgd1UsVcTguYln3rN7rj9p07hXO + j+Js2M+GadwpinpVqtap6KSzq/r5q/ao+/Apju/GMYkv0jKOO6P+KI/jdj/pfGyy1yL8e7ORpvOQ + DON2f5IV11TWPjTZ66Tddh25mfzuOivTJnt9Ff5tphkn/TQeZ0NSfWVdN7Gb6W6z26wb52m3yV53 + rjDFdDNdfzLIhqNJMWUY5cmwV9lg/LZprfEkg3aaE0unvZ2Ftqu4l6fpMHilyV7bdrfT1rusXyEX + oiuc2uGUmbPJepd24aqzS/YytTBepnIX9XiSj/tE6tsa0vU59vKkm6XD8onsuBytCaBQS/I5xwlI + 3U17Ud5rJycmAmUjRBvBKRNfUucJaB05iBDVKQMhvjzdqnrdwwvdy27crv8EECNEEYETc/V0Susi + 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 + PwAAAP//AwArPn5nynoBAA== + headers: + CF-Cache-Status: + - DYNAMIC + CF-RAY: + - 6ff6c43e6ade0fde-MRS + Cache-Control: + - must-revalidate, public, max-age=300, stale-while-revalidate=360, stale-if-error=43200 + Connection: + - keep-alive + Content-Encoding: + - gzip + Content-Type: + - text/html; charset=UTF-8 + Date: + - Thu, 21 Apr 2022 14:21:31 GMT + Expect-CT: + - max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" + NEL: + - '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}' + Report-To: + - '{"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=2MeH8bHkxybhMAknleMMOuheRpYOD%2FJJZctTjfOuK90R4u8xeAtrAD%2BPfPnm7EX8w%2BTCi1zgoSaZQ3t4WKMXN%2BQZMT6fIqrNDPd4B8Aw2FYFcKPhHL04NNx%2FSYKesQ%3D%3D"}],"group":"cf-nel","max_age":604800}' + Server: + - cloudflare + Transfer-Encoding: + - chunked + age: + - '2564' + alt-svc: + - h3=":443"; ma=86400, h3-29=":443"; ma=86400 + link: + - ; rel="https://api.w.org/", ; + rel="alternate"; type="application/json", ; rel=shortlink + strict-transport-security: + - max-age=31536000 + vary: + - Accept-Encoding + via: + - 1.1 varnish (Varnish/6.5) + x-cache: + - HIT + x-cacheable: + - YES:Forced + x-powered-by: + - DreamPress + x-varnish: + - 5213112 4852476 + status: + code: 200 + message: OK +version: 1 diff --git a/tests/openbb_terminal/alternative/oss/csv/test_runa_model/test_get_startups.csv b/tests/openbb_terminal/alternative/oss/csv/test_runa_model/test_get_startups.csv new file mode 100644 index 00000000000..a82706a9ee5 --- /dev/null +++ b/tests/openbb_terminal/alternative/oss/csv/test_runa_model/test_get_startups.csv @@ -0,0 +1,21 @@ +,GitHub,Company,Country,City,Founded,Raised [$M],Language,Stars,Forks,Stars AGR [%],Forks AGR [%],SG,FG +0,builderio/partytown,Builder,USA,San Francisco,2018,17.3,TypeScript,6830,158,3104,16196,31.0,162.0 +1,tooljet/tooljet,ToolJet,India,Bengaluru,2021,1.6,JavaScript,8856,657,1656,1034,16.6,10.3 +2,gravitl/netmaker,Netmaker,USA,Asheville,2021,0.1,Go,3546,213,1422,1532,14.2,15.3 +3,supertokens/supertokens-core,SuperTokens,India,Mumbai,2019,1.5,Java,5343,180,1018,585,10.2,5.9 +4,safing/portmaster,Safing,Austria,Baden,2017,,Go,2429,80,1016,357,10.2,3.6 +5,medusajs/medusa,Medusa,Denmark,Copenhagen,2021,1.0,JavaScript,9833,500,863,1135,8.6,11.4 +6,amplication/amplication,Amplication,Israel,Tel Aviv,2020,6.6,TypeScript,6296,319,812,667,8.1,6.7 +7,charmbracelet/soft-serve,Charm,USA,New York,2019,3.0,Go,1831,33,729,1784,7.3,17.8 +8,withfig/autocomplete,Fig,USA,San Francisco,2020,2.4,TypeScript,14329,3425,716,486,7.2,4.9 +9,growthbook/growthbook,GrowthBook,USA,Palo Alto,2020,0.5,TypeScript,2791,109,503,824,5.0,8.2 +10,slint-ui/slint,Slint,Germany,Berlin,2020,,Rust,4115,122,470,483,4.7,4.8 +11,nhost/nhost,Nhost,Sweden,Stockholm,2019,3.1,TypeScript,2081,109,453,503,4.5,5.0 +12,mindsdb/mindsdb,MindsDB,USA,Berkeley,2017,7.9,Python,6384,670,437,104,4.4,1.0 +13,penpot/penpot,Penpot,Spain,Madrid,2019,,Clojure,9832,480,432,330,4.3,3.3 +14,remix-run/remix,Remix,USA,Salt Lake City,2020,3.0,TypeScript,14876,1112,391,1172,3.9,11.7 +15,orchest/orchest,Orchest,Netherlands,Rotterdam,2020,4.2,Python,2528,142,385,119,3.9,1.2 +16,coqui-ai/tts,Coqui,Germany,Berlin,2020,,Python,4394,439,381,763,3.8,7.6 +17,mattermost/focalboard,Mattermost,USA,Palo Alto,2015,70.0,TypeScript,10501,788,379,254,3.8,2.5 +18,prabhatsharma/zinc,Zinc,USA,San Francisco,2021,,Go,6687,290,376,421,3.8,4.2 +19,serverless-stack/serverless-stack,Serverless Stack,USA,San Francisco,2017,1.0,TypeScript,5821,454,351,1272,3.5,12.7 diff --git a/tests/openbb_terminal/alternative/oss/test_runa_model.py b/tests/openbb_terminal/alternative/oss/test_runa_model.py new file mode 100644 index 00000000000..7ff9efb6cc9 --- /dev/null +++ b/tests/openbb_terminal/alternative/oss/test_runa_model.py @@ -0,0 +1,22 @@ +# IMPORTATION STANDARD + +# IMPORTATION THIRDPARTY +import pytest + +# IMPORTATION INTERNAL +from openbb_terminal.alternative.oss import runa_model + + +@pytest.fixture(scope="module") +def vcr_config(): + return { + "filter_headers": [ + ("User-Agent", None), + ], + } + + +@pytest.mark.vcr +def test_get_startups(recorder): + df = runa_model.get_startups() + recorder.capture(df) diff --git a/tests/openbb_terminal/alternative/oss/test_runa_view.py b/tests/openbb_terminal/alternative/oss/test_runa_view.py new file mode 100644 index 00000000000..85d141c18fd --- /dev/null +++ b/tests/openbb_terminal/alternative/oss/test_runa_view.py @@ -0,0 +1,35 @@ +# IMPORTATION STANDARD + +# IMPORTATION THIRDPARTY +import pytest + +# IMPORTATION INTERNAL +from openbb_terminal.alternative.oss import runa_view + + +@pytest.fixture(scope="module") +def vcr_config(): + return { + "filter_headers": [ + ("User-Agent", None), + ], + } + + +@pytest.mark.vcr +@pytest.mark.record_stdout +def test_display_rossindex(mocker): + # MOCK EXPORT_DATA + mocker.patch(target="openbb_terminal.alternative.oss.runa_view.export_data") + + # MOCK VISUALIZE_OUTPUT + mocker.patch(target="openbb_terminal.helper_classes.TerminalStyle.visualize_output") + + runa_view.display_rossindex( + sortby="", + descend=False, + top=10, + show_chart=True, + show_growth=False, + chart_type="stars", + ) diff --git a/tests/openbb_terminal/alternative/oss/txt/test_oss_controller/test_print_help.txt b/tests/openbb_terminal/alternative/oss/txt/test_oss_controller/test_print_help.txt index b9d08c1f212..c68a131e87c 100644 --- a/tests/openbb_terminal/alternative/oss/txt/test_oss_controller/test_print_help.txt +++ b/tests/openbb_terminal/alternative/oss/txt/test_oss_controller/test_print_help.txt @@ -1,4 +1,7 @@ +[Runa] + rossidx the fastest-growing open-source startups +[GitHub] rs repo summary sh repo star history tr top starred repos diff --git a/tests/openbb_terminal/alternative/oss/txt/test_runa_view/test_display_rossindex.txt b/tests/openbb_terminal/alternative/oss/txt/test_runa_view/test_display_rossindex.txt new file mode 100644 index 00000000000..59ac51c5619 --- /dev/null +++ b/tests/openbb_terminal/alternative/oss/txt/test_runa_view/test_display_rossindex.txt @@ -0,0 +1,12 @@ + GitHub Company Country City Founded Raised [$M] Language Stars Forks Stars AGR [%] Forks AGR [%] +0 builderio/\npartytown Builder USA San Francisco 2018 17.3 TypeScript 6830 158 3104 16196 +1 tooljet/to\noljet ToolJet India Bengaluru 2021 1.6 JavaScript 8856 657 1656 1034 +2 gravitl/ne\ntmaker Netmaker USA Asheville 2021 0.1 Go 3546 213 1422 1532 +3 supertoken\ns/supertok\nens-core SuperTokens India Mumbai 2019 1.5 Java 5343 180 1018 585 +4 safing/por\ntmaster Safing Austria Baden 2017 Go 2429 80 1016 357 +5 medusajs/m\nedusa Medusa Denmark Copenhagen 2021 1.0 JavaScript 9833 500 863 1135 +6 amplicatio\nn/amplicat\nion Amplication Israel Tel Aviv 2020 6.6 TypeScript 6296 319 812 667 +7 charmbrace\nlet/soft-\nserve Charm USA New York 2019 3.0 Go 1831 33 729 1784 +8 withfig/au\ntocomplete Fig USA San Francisco 2020 2.4 TypeScript 14329 3425 716 486 +9 growthbook\n/growthboo\nk GrowthBook USA Palo Alto 2020 0.5 TypeScript 2791 109 503 824 + diff --git a/website/content/terminal/alternative/oss/rossidx/_index.md b/website/content/terminal/alternative/oss/rossidx/_index.md new file mode 100644 index 00000000000..f3655d527cd --- /dev/null +++ b/website/content/terminal/alternative/oss/rossidx/_index.md @@ -0,0 +1,19 @@ +`usage: rossidx [-s SORTBY [SORTBY {GitHub,Company,Country,City,Founded,Raised [$M],Stars,Forks,Stars AGR [%],Forks AGR [%]}]] [--descend] [--chart] [--growth] [-ct {stars,forks}] [-h] [--export EXPORT] [-l LIMIT]` + +Display list of startups from ross index [Source: https://runacap.com/] +Use --chart to display chart and -t {stars,forks} to set chart type + +``` +optional arguments: + -s SORTBY [SORTBY ...], --sortby SORTBY [SORTBY {GitHub,Company,Country,City,Founded,Raised [$M],Stars,Forks,Stars AGR [%],Forks AGR [%]}] + Sort startups by column (default: Stars AGR [%]) + --descend Flag to sort in descending order (lowest first) (default: False) + -c, --chart Flag to show chart (default: False) + -g, --growth Flag to show growth chart (default: False) + -t {stars,forks}, --chart-type {stars,forks} + Chart type: {stars, forks} (default: stars) + -h, --help show this help message (default: False) + --export EXPORT Export raw data into csv, json, xlsx (default: ) + -l LIMIT, --limit LIMIT + Number of entries to show in data. (default: 10) +``` diff --git a/website/data/menu/main.yml b/website/data/menu/main.yml index 685a459a846..71a7f96c64c 100755 --- a/website/data/menu/main.yml +++ b/website/data/menu/main.yml @@ -1218,6 +1218,8 @@ main: - name: os ref: "/terminal/alternative/oss" sub: + - name: rossidx + ref: "/terminal/alternative/oss/rossidx" - name: tr ref: "/terminal/alternative/oss/tr" - name: sh