diff --git a/.gitignore b/.gitignore
index 01c3bc92e52..11bb5f4b3f5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,7 +28,7 @@ openbb_terminal/portfolio/portfolios/*
*.swp
*.http
.coverage.*
-!openbb_terminal/custom_reports/*/.ipynb
+!openbb_terminal/reports/templates/*.ipynb
# pyinstaller artifacts
*.pyo
diff --git a/build/pyinstaller/hooks/hook-debugpy.py b/build/pyinstaller/hooks/hook-debugpy.py
new file mode 100644
index 00000000000..42438ae0300
--- /dev/null
+++ b/build/pyinstaller/hooks/hook-debugpy.py
@@ -0,0 +1,8 @@
+import os
+
+# This environment variable suppresses the warning:
+# 0.00s - Debugger warning: The os.path.realpath.__code__.co_filename (posixpath.py)
+# 0.00s - is not absolute, which may make the debugger miss breakpoints.
+# 0.00s - Note: Debugging will proceed. Set PYDEVD_DISABLE_FILE_VALIDATION=1 to disable this validation.
+
+os.environ["PYDEVD_DISABLE_FILE_VALIDATION"] = "1"
diff --git a/build/pyinstaller/terminal.spec b/build/pyinstaller/terminal.spec
index 8d2902e5e0b..1d2dc508569 100644
--- a/build/pyinstaller/terminal.spec
+++ b/build/pyinstaller/terminal.spec
@@ -62,6 +62,7 @@ added_files = [
"pymongo",
),
(os.path.join(pathex, "bson"), "bson"),
+ (os.path.join(pathex, "debugpy", "_vendored"), os.path.join("debugpy", "_vendored")),
(".env", "."),
]
@@ -89,6 +90,7 @@ hidden_imports = [
"bson",
"_sysconfigdata__darwin_darwin",
"prophet",
+ "debugpy",
]
@@ -100,7 +102,7 @@ analysis_kwargs = dict(
hiddenimports=hidden_imports,
hookspath=["build/pyinstaller/hooks"],
hooksconfig={},
- runtime_hooks=[],
+ runtime_hooks=["build/pyinstaller/hooks/hook-debugpy.py"],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
diff --git a/openbb_terminal/core/config/paths.py b/openbb_terminal/core/config/paths.py
index 09a1aef40f8..4a6d7710b3d 100644
--- a/openbb_terminal/core/config/paths.py
+++ b/openbb_terminal/core/config/paths.py
@@ -32,3 +32,5 @@ USER_PORTFOLIO_DATA_DIRECTORY = USER_DATA_DIRECTORY / "portfolio"
USER_ROUTINES_DIRECTORY = USER_DATA_DIRECTORY / "routines"
USER_DATA_SOURCES_DEFAULT_FILE = USER_DATA_DIRECTORY / "data_sources_default.json"
USER_PRESETS_DIRECTORY = USER_DATA_DIRECTORY / "presets"
+USER_REPORTS_DIRECTORY = USER_DATA_DIRECTORY / "reports"
+USER_CUSTOM_REPORTS_DIRECTORY = USER_DATA_DIRECTORY / "reports" / "custom reports"
diff --git a/openbb_terminal/core/config/paths_helper.py b/openbb_terminal/core/config/paths_helper.py
index d5a2ec1f9cd..0e780d8fca0 100644
--- a/openbb_terminal/core/config/paths_helper.py
+++ b/openbb_terminal/core/config/paths_helper.py
@@ -43,12 +43,13 @@ dirs_list = [
SETTINGS_DIRECTORY,
USER_DATA_DIRECTORY,
USER_DATA_DIRECTORY / "styles",
+ USER_DATA_DIRECTORY / "reports",
+ USER_DATA_DIRECTORY / "reports" / "custom reports",
USER_CUSTOM_IMPORTS_DIRECTORY,
USER_CUSTOM_IMPORTS_DIRECTORY / "econometrics",
USER_CUSTOM_IMPORTS_DIRECTORY / "stocks",
USER_CUSTOM_IMPORTS_DIRECTORY / "dashboards",
USER_EXPORTS_DIRECTORY,
- USER_EXPORTS_DIRECTORY / "reports",
USER_PORTFOLIO_DATA_DIRECTORY,
USER_PORTFOLIO_DATA_DIRECTORY / "views",
USER_PORTFOLIO_DATA_DIRECTORY / "holdings",
diff --git a/openbb_terminal/helper_funcs.py b/openbb_terminal/helper_funcs.py
index 30fbde8eab8..a38897bf453 100644
--- a/openbb_terminal/helper_funcs.py
+++ b/openbb_terminal/helper_funcs.py
@@ -153,7 +153,7 @@ def parse_and_split_input(an_input: str, custom_filters: List) -> List[str]:
# everything from ` -f ` to the next known extension
file_flag = r"(\ -f |\ --file )"
up_to = r".*?"
- known_extensions = r"(\.xlsx|.csv|.xls|.tsv|.json|.yaml|.ini|.openbb)"
+ known_extensions = r"(\.xlsx|.csv|.xls|.tsv|.json|.yaml|.ini|.openbb|.ipynb)"
unix_path_arg_exp = f"({file_flag}{up_to}{known_extensions})"
# Add custom expressions to handle edge cases of individual controllers
diff --git a/openbb_terminal/menu.py b/openbb_terminal/menu.py
index b7a6a30594b..9b4909ac894 100644
--- a/openbb_terminal/menu.py
+++ b/openbb_terminal/menu.py
@@ -1,3 +1,4 @@
+import sys
from typing import Optional
import logging
import os
@@ -19,6 +20,23 @@ def is_jupyter() -> bool:
return False
+def is_papermill() -> bool:
+ """Check if session is being launched with args '-m ipykernel_launcher',
+ thus coming from papermill Popen. See 'ipykernel_launcher' in reports_model
+ for more detail.
+ """
+
+ return all(
+ i in sys.argv
+ for i in [
+ "-m",
+ "ipykernel_launcher",
+ "-f",
+ "--HistoryManager.hist_file=:memory:",
+ ]
+ )
+
+
def inputhook(inputhook_context):
while not inputhook_context.input_is_ready():
try:
@@ -32,7 +50,7 @@ def inputhook(inputhook_context):
history_file = os.path.join(os.path.expanduser("~"), ".openbb_terminal.his")
try:
- if not is_jupyter():
+ if not is_jupyter() and not is_papermill():
session: Optional[PromptSession] = PromptSession(
history=FileHistory(history_file)
)
diff --git a/openbb_terminal/miscellaneous/i18n/en.yml b/openbb_terminal/miscellaneous/i18n/en.yml
index c41b77790c0..ae2b79324b7 100644
--- a/openbb_terminal/miscellaneous/i18n/en.yml
+++ b/openbb_terminal/miscellaneous/i18n/en.yml
@@ -80,15 +80,14 @@ en:
forex: foreign exchanges, quotes, forward rates for currency pairs and oanda integration
funds: mutual funds search, overview, holdings and sector weights
futures: commodities, bonds, index, bitcoin and forex
+ futures/search: search for a future based on category or exchange
+ futures/historical: get historical timeseries
+ futures/curve: get futures curves
alternative: alternative datasets, such as COVID and open source metrics
econometrics: statistical and quantitative methods for relationships between datasets
forecast: timeseries forecasting with machine learning
portfolio: perform portfolio optimization and look at portfolio performance and attribution
dashboards: interactive dashboards using voila and jupyter notebooks
- reports: customizable research reports through jupyter notebooks
- futures/search: search for a future based on category or exchange
- futures/historical: get historical timeseries
- futures/curve: get futures curves
stocks/search: search a specific stock ticker for analysis
stocks/load: load a specific stock ticker and additional info for analysis
stocks/_ticker: Stock
@@ -1018,7 +1017,11 @@ en:
dashboards/shortdata: finra shortdata analysis
dashboards/crypto: cryptocurrency exchange rates against USD
dashboards/futures: historical futures performance
- reports/_reports_: Select one of the following report
+ reports: customizable research reports through jupyter notebooks
+ reports/_reports_: Build and run your custom reports or try one of our templates
+ reports/_OpenBB_reports_: OpenBB reports
+ reports/_Custom_reports_: Custom reports
+ reports/run: Run a Jupyter notebook from OpenBBUserData/reports/custom reports
forecast/_disclaimer_: DISCLAIMER
forecast/_data_loc: Looking for data in
forecast/load: load a dataset from csv
diff --git a/openbb_terminal/miscellaneous/scripts/reports/test_reports_crypto.openbb b/openbb_terminal/miscellaneous/scripts/reports/test_reports_crypto.openbb
index 02e16b72683..827ffac17cc 100644
--- a/openbb_terminal/miscellaneous/scripts/reports/test_reports_crypto.openbb
+++ b/openbb_terminal/miscellaneous/scripts/reports/test_reports_crypto.openbb
@@ -1,12 +1,15 @@
reports
+## defaults
+crypto
+
## simple coin
-crypto BTC
+crypto --symbol BTC
## small-cap coin
-crypto STEPN
+crypto --symbol STEPN
## shitcoins
-crypto LUCKY
+crypto --symbol LUCKY
exit
diff --git a/openbb_terminal/miscellaneous/scripts/reports/test_reports_economy.openbb b/openbb_terminal/miscellaneous/scripts/reports/test_reports_economy.openbb
index f6d1357ce16..1c708833d20 100644
--- a/openbb_terminal/miscellaneous/scripts/reports/test_reports_economy.openbb
+++ b/openbb_terminal/miscellaneous/scripts/reports/test_reports_economy.openbb
@@ -2,7 +2,8 @@ reports
economy
-# Test with random tickers
+# Test with random tickers, that should be ignored by the report.
economy AAPL
+economy --symbol MSFT
exit
diff --git a/openbb_terminal/miscellaneous/scripts/reports/test_reports_equity.openbb b/openbb_terminal/miscellaneous/scripts/reports/test_reports_equity.openbb
index 283defa4909..f157efaee40 100644
--- a/openbb_terminal/miscellaneous/scripts/reports/test_reports_equity.openbb
+++ b/openbb_terminal/miscellaneous/scripts/reports/test_reports_equity.openbb
@@ -1,12 +1,15 @@
reports
+## defaults
+equity
+
## simple ticker
-equity AAPL
+equity --symbol AAPL
## Non-US ticker
-equity NXPI
+equity --symbol NXPI
## Non-US ticker with suffix
-equity PETR3.SA
+equity --symbol PETR3.SA
exit
diff --git a/openbb_terminal/miscellaneous/scripts/reports/test_reports_etf.openbb b/openbb_terminal/miscellaneous/scripts/reports/test_reports_etf.openbb
index 8c38e3a1da8..b806f239996 100644
--- a/openbb_terminal/miscellaneous/scripts/reports/test_reports_etf.openbb
+++ b/openbb_terminal/miscellaneous/scripts/reports/test_reports_etf.openbb
@@ -1,10 +1,13 @@
reports
-etf VEA
+## defaults
+etf
-etf VWCE
+etf --symbol VEA
+
+etf --symbol VWCE
# test with random pairs
-etf ABCEF
+etf --symbol ABCEF
exit
diff --git a/openbb_terminal/miscellaneous/scripts/reports/test_reports_forex.openbb b/openbb_terminal/miscellaneous/scripts/reports/test_reports_forex.openbb
index c8405e64ec7..9e36b414ba0 100644
--- a/openbb_terminal/miscellaneous/scripts/reports/test_reports_forex.openbb
+++ b/openbb_terminal/miscellaneous/scripts/reports/test_reports_forex.openbb
@@ -1,11 +1,14 @@
reports
-forex USDEUR
+## defaults
+forex
+
+forex --symbol USDEUR
# Test with emerging pairs
-forex USDVND
+forex --symbol USDVND
# Test with invalid pairs
-forex USDABCXYZ
+forex --symbol USDABCXYZ
exit
diff --git a/openbb_terminal/miscellaneous/scripts/test_reports_run.openbb b/openbb_terminal/miscellaneous/scripts/test_reports_run.openbb
new file mode 100644
index 00000000000..3e9b965cab6
--- /dev/null
+++ b/openbb_terminal/miscellaneous/scripts/test_reports_run.openbb
@@ -0,0 +1,10 @@
+reports
+
+## defaults
+run
+
+## Invalid inputs
+run --file dummyfile.csv
+run --file dummyfile.ipynb
+
+exit
diff --git a/openbb_terminal/portfolio/portfolio_helper.py b/openbb_terminal/portfolio/portfolio_helper.py
index 23cc45ee85b..fc5e9cc1921 100644
--- a/openbb_terminal/portfolio/portfolio_helper.py
+++ b/openbb_terminal/portfolio/portfolio_helper.py
@@ -223,7 +223,7 @@ def get_info_from_ticker(ticker: str) -> list:
filename = "tickers_info.csv"
- file_path = Path(str(DEFAULT_HOLDINGS_PATH), filename)
+ file_path = Path(str(USER_PORTFOLIO_DATA_DIRECTORY), filename)
if file_path.is_file() and os.stat(file_path).st_size > 0:
# file exists and is not empty, so append if necessary
diff --git a/openbb_terminal/portfolio/portfolio_model.py b/openbb_terminal/portfolio/portfolio_model.py
index a7dae3eeac0..0f3689c6f2e 100644
--- a/openbb_terminal/portfolio/portfolio_model.py
+++ b/openbb_terminal/portfolio/portfolio_model.py
@@ -56,7 +56,6 @@ class PortfolioModel:
"""
- @log_start_end(log=logger)
def __init__(self, orderbook: pd.DataFrame = pd.DataFrame()):
"""Initialize PortfolioModel class"""
@@ -129,7 +128,6 @@ class PortfolioModel:
return df
@staticmethod
- @log_start_end(log=logger)
def read_orderbook(path: str) -> pd.DataFrame:
"""Static method to read orderbook from file
@@ -148,23 +146,24 @@ class PortfolioModel:
@log_start_end(log=logger)
def preprocess_orderbook(self):
- """Method to preprocess, format and compute auxiliary fields"""
+ """Method to preprocess, format and compute auxiliary fields
- # Preprocessing steps:
- # 0. If optional fields not in the orderbook add missing
- # 1. Convert Date to datetime
- # 2. Sort orderbook by date
- # 3. Capitalize Ticker and Type [of instrument...]
- # 4. Translate side: ["deposit", "buy"] -> 1 and ["withdrawal", "sell"] -> -1
- # 5. Convert quantity to signed integer
- # 6. Determining the investment/divestment value
- # 7. Reformat crypto tickers to yfinance format (e.g. BTC -> BTC-USD)
- # 8. Reformat STOCK/ETF tickers to yfinance format if ISIN provided
- # 9. Remove unsupported ISINs that came out empty
- # 10. Create tickers dictionary with structure {'Type': [Ticker]}
- # 11. Create list with tickers except cash
- # 12. Save orderbook inception date
- # 13. Populate fields Sector, Industry and Country
+ Preprocessing steps:
+ 0. If optional fields not in the orderbook add missing
+ 1. Convert Date to datetime
+ 2. Sort orderbook by date
+ 3. Capitalize Ticker and Type [of instrument...]
+ 4. Translate side: ["deposit", "buy"] -> 1 and ["withdrawal", "sell"] -> -1
+ 5. Convert quantity to signed integer
+ 6. Determining the investment/divestment value
+ 7. Reformat crypto tickers to yfinance format (e.g. BTC -> BTC-USD)
+ 8. Reformat STOCK/ETF tickers to yfinance format if ISIN provided
+ 9. Remove unsupported ISINs that came out empty
+ 10. Create tickers dictionary with structure {'Type': [Ticker]}
+ 11. Create list with tickers except cash
+ 12. Save orderbook inception date
+ 13. Populate fields Sector, Industry and Country
+ """
try:
console.print(" Preprocessing orderbook: ", end="")
@@ -412,7 +411,6 @@ class PortfolioModel:
full_shares: bool
whether to mimic the portfolio trades exactly (partial shares) or round down the
quantity to the nearest number.
-
"""
console.print("\n Loading benchmark: ", end="")
diff --git a/openbb_terminal/reports/crypto.ipynb b/openbb_terminal/reports/crypto.ipynb
deleted file mode 100644
index 96a077ad35e..00000000000
--- a/openbb_terminal/reports/crypto.ipynb
+++ /dev/null
@@ -1,1245 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "id": "70ba2c8a",
- "metadata": {},
- "source": [
- "## Notebook setup"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "driven-billion",
- "metadata": {},
- "outputs": [],
- "source": [
- "import os\n",
- "import io\n",
- "import warnings\n",
- "import datetime\n",
- "import numpy as np\n",
- "import base64\n",
- "import pandas as pd\n",
- "\n",
- "import matplotlib.pyplot as plt\n",
- "import matplotlib_inline.backend_inline\n",
- "\n",
- "from IPython.display import HTML\n",
- "\n",
- "# import sys\n",
- "# sys.path.append('../../')\n",
- "\n",
- "from openbb_terminal.sdk import widgets\n",
- "from openbb_terminal.sdk import openbb\n",
- "from openbb_terminal.helper_classes import TerminalStyle\n",
- "\n",
- "%matplotlib inline\n",
- "matplotlib_inline.backend_inline.set_matplotlib_formats(\"svg\")\n",
- "warnings.filterwarnings(\"ignore\")\n",
- "\n",
- "pd.set_option(\"display.float_format\", lambda x: \"%.5f\" % x)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "c3fe7db5-ec6a-42cf-9e66-52dc1de22370",
- "metadata": {},
- "outputs": [],
- "source": [
- "try:\n",
- " theme = TerminalStyle(\"light\", \"light\", \"light\")\n",
- "except:\n",
- " pass\n",
- "stylesheet = widgets.html_report_stylesheet()\n",
- "try:\n",
- " with open(\"./openbb_terminal/reports/OpenBB_reports_logo.png\", \"rb\") as image_file:\n",
- " openbb_image_encoded = base64.b64encode(image_file.read())\n",
- "except FileNotFoundError:\n",
- " openbb_image_encoded = None"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "807fda4e",
- "metadata": {},
- "source": [
- "## Select Ticker"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "intended-sherman",
- "metadata": {
- "tags": [
- "parameters"
- ]
- },
- "outputs": [],
- "source": [
- "# Parameters that will be replaced when calling this notebook\n",
- "# Do not leave parameters blank as notebook will not run otherwise\n",
- "symbol = \"ATOM\"\n",
- "report_name = \"Crypto Report for ATOM\""
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "2c46efb8",
- "metadata": {},
- "outputs": [],
- "source": [
- "ticker = symbol"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "d4897334",
- "metadata": {},
- "outputs": [],
- "source": [
- "author = \"\"\n",
- "report_title = f\"INVESTMENT RESEARCH REPORT ON {ticker.upper()}\"\n",
- "report_date = datetime.datetime.now().strftime(\"%d %B, %Y\")\n",
- "report_time = datetime.datetime.now().strftime(\"%H:%M\")\n",
- "report_timezone = datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo\n",
- "report_title, report_date, report_time, report_timezone"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "35d9a943",
- "metadata": {},
- "outputs": [],
- "source": [
- "# basic info\n",
- "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import get_coinpaprika_id\n",
- "\n",
- "cp_id = get_coinpaprika_id(ticker)\n",
- "basic_info = openbb.crypto.dd.basic(cp_id)\n",
- "if not basic_info.empty:\n",
- " basic_info = basic_info.set_index(\"Metric\")\n",
- " basic_info"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "091d305e",
- "metadata": {},
- "outputs": [],
- "source": [
- "news = openbb.common.news(term=ticker).head(10)\n",
- "news = news.set_index(\"published\")\n",
- "news.sort_index()\n",
- "news[\"link\"] = news[\"link\"].apply(lambda x: f'{x} ')\n",
- "news"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "bd281ab8",
- "metadata": {},
- "outputs": [],
- "source": [
- "links = openbb.crypto.dd.links(ticker)\n",
- "\n",
- "if not links.empty:\n",
- " links = links.set_index(\"Name\")\n",
- "\n",
- " links[\"Link\"] = links[\"Link\"].apply(lambda x: f'{x} ')\n",
- "\n",
- " links"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "9b73e41f",
- "metadata": {},
- "outputs": [],
- "source": [
- "# alt index\n",
- "\n",
- "# fig, ax = plt.subplots(figsize=(11, 5), dpi=150)\n",
- "# openbb.crypto.ov.altindex(external_axes=[ax], chart=True)\n",
- "# fig.tight_layout()\n",
- "# f = io.BytesIO()\n",
- "# fig.savefig(f, format=\"svg\")\n",
- "# altindex = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "07d09ce8",
- "metadata": {},
- "outputs": [],
- "source": [
- "five_year = datetime.datetime.now() - datetime.timedelta(days=1825)\n",
- "three_year = datetime.datetime.now() - datetime.timedelta(days=1095)\n",
- "one_year = datetime.datetime.now() - datetime.timedelta(days=365)\n",
- "three_months = datetime.datetime.now() - datetime.timedelta(days=90)\n",
- "\n",
- "dates = {\n",
- " \"three_months\": three_months,\n",
- " \"one_year\": one_year,\n",
- " \"three_year\": three_year,\n",
- " \"five_year\": five_year,\n",
- "}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "e6d6d43d",
- "metadata": {},
- "outputs": [],
- "source": [
- "def get_historical_data(ticker, dict_of_dates, is_plot=True):\n",
- "\n",
- " list_of_historical_data = []\n",
- "\n",
- " for date in dict_of_dates:\n",
- " data = openbb.crypto.load(\n",
- " symbol=ticker,\n",
- " start_date=dict_of_dates[date],\n",
- " )\n",
- "\n",
- " # we'll be using the adjusted close price as same as close price\n",
- " data[\"Adj Close\"] = data[\"Close\"]\n",
- "\n",
- " if is_plot:\n",
- " fig, ax = plt.subplots(figsize=(11, 3), dpi=150)\n",
- " plt.suptitle(\n",
- " f\"{date} historical data for {ticker.upper()}\",\n",
- " fontsize=14,\n",
- " color=\"black\",\n",
- " )\n",
- " data.plot(y=\"Close\", ax=ax)\n",
- " plt.ylabel(\"USDT\")\n",
- "\n",
- " fig.tight_layout()\n",
- " f = io.BytesIO()\n",
- " fig.savefig(f, format=\"svg\")\n",
- " plot_data = f.getvalue().decode(\"utf-8\")\n",
- "\n",
- " list_of_historical_data.append(plot_data)\n",
- " else:\n",
- " list_of_historical_data.append(data)\n",
- "\n",
- " return list_of_historical_data"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "ed19a708",
- "metadata": {},
- "outputs": [],
- "source": [
- "historical_data = get_historical_data(ticker, dates)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "8f815dbc",
- "metadata": {},
- "outputs": [],
- "source": [
- "historical_data_one_year = get_historical_data(ticker, {\"one_year\": one_year}, False)[0]\n",
- "historical_data_one_year"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "081a4bb3",
- "metadata": {},
- "outputs": [],
- "source": [
- "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import show_quick_performance\n",
- "\n",
- "show_quick_performance(\n",
- " crypto_df=historical_data_one_year,\n",
- " symbol=ticker,\n",
- " current_currency=\"USDT\",\n",
- " source=\"cctx\",\n",
- " exchange=\"binance\",\n",
- " interval=\"1440\",\n",
- ")\n",
- "\n",
- "fig = plt.figure(figsize=(11, 3), dpi=150)\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "quick_performance = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "88af0fbe",
- "metadata": {},
- "outputs": [],
- "source": [
- "fig, ax = plt.subplots(figsize=(11, 3), dpi=150)\n",
- "openbb.crypto.dd.headlines(ticker, external_axes=[ax], chart=True)\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "headlines = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "3b23868d",
- "metadata": {},
- "outputs": [],
- "source": [
- "# fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(11, 5), dpi=150)\n",
- "# openbb.crypto.chart(\n",
- "# historical_data_one_year,\n",
- "# symbol=ticker,\n",
- "# currency=\"USDT\",\n",
- "# source=\"cctx\",\n",
- "# exchange=\"binance\",\n",
- "# interval=\"1440\",\n",
- "# external_axes=[ax1, ax2],\n",
- "# )\n",
- "# fig.tight_layout()\n",
- "# f = io.BytesIO()\n",
- "# fig.savefig(f, format=\"svg\")\n",
- "# one_year_candle = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "e4509c6e",
- "metadata": {},
- "outputs": [],
- "source": [
- "fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(11, 5), dpi=150)\n",
- "openbb.crypto.chart(\n",
- " historical_data_one_year,\n",
- " to_symbol=ticker,\n",
- " from_symbol=\"USDT\",\n",
- " source=\"cctx\",\n",
- " exchange=\"binance\",\n",
- " interval=\"1440\",\n",
- " external_axes=[ax1, ax2],\n",
- " chart=True,\n",
- ")\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "candle_one_year = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "7f83daae",
- "metadata": {},
- "source": [
- "## Due Diligence"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "93d66cf1",
- "metadata": {},
- "outputs": [],
- "source": [
- "# market cap dominance\n",
- "\n",
- "fig, ax = plt.subplots(figsize=(11, 5), dpi=150)\n",
- "openbb.crypto.dd.mcapdom(symbol=ticker, external_axes=[ax], chart=True)\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "mcapdom = f.getvalue().decode(\"utf-8\")\n",
- "mcapdom_df = openbb.crypto.dd.mcapdom(symbol=ticker)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "284b0586",
- "metadata": {},
- "outputs": [],
- "source": [
- "# roadmap\n",
- "\n",
- "fig, ax = plt.subplots(figsize=(11, 5), dpi=150)\n",
- "openbb.crypto.dd.rm(symbol=ticker, external_axes=[ax], chart=True)\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "roadmap_view = f.getvalue().decode(\"utf-8\")\n",
- "\n",
- "roadmap_model = openbb.crypto.dd.rm(symbol=ticker)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "f496d047",
- "metadata": {},
- "outputs": [],
- "source": [
- "if not roadmap_model.empty:\n",
- " roadmap_model = roadmap_model.set_index(\"Date\")\n",
- " roadmap_model.sort_index()\n",
- " roadmap_model"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "9ddbc654",
- "metadata": {},
- "outputs": [],
- "source": [
- "fig, ax1 = plt.subplots(figsize=(11, 5), dpi=150)\n",
- "ax2 = ax1.twinx()\n",
- "openbb.crypto.dd.tk(symbol=ticker, external_axes=[ax1, ax2], chart=True)\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "tokenomics_view = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "aecd816f",
- "metadata": {},
- "outputs": [],
- "source": [
- "tokenomics_model = openbb.crypto.dd.rm(symbol=ticker)\n",
- "if not tokenomics_model.empty:\n",
- " tokenomics_model = tokenomics_model.set_index(\"Date\")\n",
- " tokenomics_model.sort_index()\n",
- " tokenomics_model"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "7d02fcc4",
- "metadata": {},
- "outputs": [],
- "source": [
- "# fundraise\n",
- "\n",
- "fundraise = openbb.crypto.dd.fr(symbol=ticker)\n",
- "fundraise_info = fundraise[0]\n",
- "fundraise_df = fundraise[1]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "5e625a2e",
- "metadata": {},
- "outputs": [],
- "source": [
- "trading_pair_info = openbb.crypto.dd.trading_pair_info(f\"{ticker}-USDT\")\n",
- "if not trading_pair_info.empty:\n",
- " trading_pair_info = trading_pair_info.set_index(\"Metric\")\n",
- " trading_pair_info"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "8f33b4d8",
- "metadata": {},
- "outputs": [],
- "source": [
- "import openbb_terminal.cryptocurrency.due_diligence.pycoingecko_model as gecko\n",
- "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import get_coingecko_id\n",
- "\n",
- "ath = pd.DataFrame()\n",
- "try:\n",
- " cg_id = get_coingecko_id(symbol=ticker)\n",
- " coin = gecko.Coin(ticker)\n",
- " ath = coin.get_all_time_high(currency=cg_id)\n",
- "\n",
- "except Exception as e:\n",
- " # ath = str(\"Reached coingecko API limit\")\n",
- " pass"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "2a82e990",
- "metadata": {},
- "outputs": [],
- "source": [
- "import openbb_terminal.cryptocurrency.due_diligence.pycoingecko_model as gecko\n",
- "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import get_coingecko_id\n",
- "\n",
- "atl = pd.DataFrame()\n",
- "try:\n",
- " cg_id = get_coingecko_id(symbol=ticker)\n",
- " coin = gecko.Coin(ticker)\n",
- " atl = coin.get_all_time_low(currency=cg_id)\n",
- "\n",
- "except Exception as e:\n",
- " # atl = str(\"Reached coingecko API limit\")\n",
- " pass"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "e9e512e9",
- "metadata": {},
- "outputs": [],
- "source": [
- "# market stats about loaded coin\n",
- "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import get_coinpaprika_id\n",
- "\n",
- "cp_id = get_coinpaprika_id(ticker)\n",
- "market = openbb.crypto.dd.mkt(cp_id)\n",
- "\n",
- "if not market.empty:\n",
- " market = market.set_index(\"exchange\")\n",
- "\n",
- " market[\"market_url\"] = market[\"market_url\"].apply(\n",
- " lambda x: f'{x} '\n",
- " )\n",
- "\n",
- " market"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "1d6e76cb",
- "metadata": {},
- "outputs": [],
- "source": [
- "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import get_coinpaprika_id\n",
- "\n",
- "# all exchanges where loaded coin is listed\n",
- "cp_id = get_coinpaprika_id(ticker)\n",
- "ex = openbb.crypto.dd.ex(cp_id)\n",
- "if not ex.empty:\n",
- " ex = ex.set_index(\"id\")\n",
- " ex"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "1fcdbc67",
- "metadata": {},
- "outputs": [],
- "source": [
- "# last trades\n",
- "trades = openbb.crypto.dd.trades(symbol=f\"{ticker}-USDT\")\n",
- "if not trades.empty:\n",
- " trades = trades.set_index(\"time\")\n",
- " trades"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "262d190a",
- "metadata": {},
- "outputs": [],
- "source": [
- "# order book\n",
- "\n",
- "fig, ax = plt.subplots(figsize=(11, 5), dpi=150)\n",
- "openbb.crypto.dd.cbbook(symbol=f\"{ticker}-USDT\", external_axes=[ax], chart=True)\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "order_book = f.getvalue().decode(\"utf-8\")\n",
- "order_book_raw = openbb.crypto.dd.cbbook(symbol=f\"{ticker}-USDT\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "95cdc32e",
- "metadata": {},
- "outputs": [],
- "source": [
- "order_book_raw"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "679d0d79",
- "metadata": {},
- "outputs": [],
- "source": [
- "# price and supply related metrics for loaded coin\n",
- "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import get_coinpaprika_id\n",
- "\n",
- "cp_id = get_coinpaprika_id(ticker)\n",
- "ps = openbb.crypto.dd.ps(cp_id)\n",
- "if not ps.empty:\n",
- " ps = ps.set_index(\"Metric\")\n",
- " ps"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "92e76d79",
- "metadata": {},
- "outputs": [],
- "source": [
- "# events\n",
- "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import get_coinpaprika_id\n",
- "\n",
- "cp_id = get_coinpaprika_id(ticker)\n",
- "events = openbb.crypto.dd.events(cp_id)\n",
- "\n",
- "if not events.empty:\n",
- " events = events.set_index(\"date\")\n",
- "\n",
- " events[\"link\"] = events[\"link\"].apply(lambda x: f'{x} ')\n",
- "\n",
- "events"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "a14130db",
- "metadata": {},
- "outputs": [],
- "source": [
- "# social media\n",
- "\n",
- "from openbb_terminal.cryptocurrency.due_diligence.pycoingecko_view import display_social\n",
- "\n",
- "display_social(ticker)\n",
- "fig = plt.figure()\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "social = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "8f89627f",
- "metadata": {},
- "outputs": [],
- "source": [
- "# tweets for loaded coin\n",
- "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import get_coinpaprika_id\n",
- "\n",
- "cp_id = get_coinpaprika_id(ticker)\n",
- "tweets = openbb.crypto.dd.twitter(cp_id)\n",
- "tweets"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "9bb75443",
- "metadata": {},
- "outputs": [],
- "source": [
- "# github activity over time\n",
- "\n",
- "gh_data = openbb.crypto.dd.gh(symbol=ticker)\n",
- "\n",
- "if not gh_data.empty:\n",
- " fig, ax = plt.subplots(figsize=(11, 5), dpi=150)\n",
- " openbb.crypto.dd.gh(symbol=ticker, external_axes=[ax], chart=True)\n",
- " fig.tight_layout()\n",
- " f = io.BytesIO()\n",
- " fig.savefig(f, format=\"svg\")\n",
- " gh = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "fcaa973d",
- "metadata": {},
- "source": [
- "## TA\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "477317b4",
- "metadata": {},
- "outputs": [],
- "source": [
- "ticker_data = historical_data_one_year.copy()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "7af3695c",
- "metadata": {},
- "outputs": [],
- "source": [
- "# simple moving average\n",
- "ticker_data.index.names = [\"date\"]\n",
- "\n",
- "fig, ax = plt.subplots(figsize=(11, 3), dpi=150)\n",
- "openbb.common.ta.ma(\n",
- " data=ticker_data[\"Close\"],\n",
- " ma_type=\"SMA\",\n",
- " symbol=ticker,\n",
- " external_axes=[ax],\n",
- " chart=True,\n",
- ")\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "sma = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "5d5089fa",
- "metadata": {},
- "outputs": [],
- "source": [
- "# exponential moving average\n",
- "fig, ax = plt.subplots(figsize=(11, 3), dpi=150)\n",
- "openbb.common.ta.ma(\n",
- " data=ticker_data[\"Close\"],\n",
- " ma_type=\"EMA\",\n",
- " symbol=ticker,\n",
- " external_axes=[ax],\n",
- " chart=True,\n",
- ")\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "ema = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "5facfbf4",
- "metadata": {},
- "outputs": [],
- "source": [
- "# zero lag exponential moving average\n",
- "\n",
- "fig, ax = plt.subplots(figsize=(11, 3), dpi=150)\n",
- "openbb.common.ta.ma(\n",
- " data=ticker_data[\"Close\"],\n",
- " ma_type=\"ZLMA\",\n",
- " symbol=ticker,\n",
- " external_axes=[ax],\n",
- " chart=True,\n",
- ")\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "zlma = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "df54f7ad",
- "metadata": {},
- "outputs": [],
- "source": [
- "# commodity channel index\n",
- "\n",
- "fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(11, 5), dpi=150)\n",
- "openbb.common.ta.cci(\n",
- " data=ticker_data,\n",
- " symbol=ticker,\n",
- " external_axes=[ax1, ax2],\n",
- " chart=True,\n",
- ")\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "cci = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "f53469eb",
- "metadata": {},
- "outputs": [],
- "source": [
- "# moving average convergence/divergence\n",
- "\n",
- "fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(11, 5), dpi=150)\n",
- "openbb.common.ta.macd(\n",
- " data=ticker_data[\"Adj Close\"],\n",
- " symbol=ticker,\n",
- " external_axes=[ax1, ax2],\n",
- " chart=True,\n",
- ")\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "macd = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "dd79e6b6",
- "metadata": {},
- "outputs": [],
- "source": [
- "# fisher transform\n",
- "\n",
- "fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(11, 11), dpi=150)\n",
- "ax3 = ax2.twinx()\n",
- "openbb.common.ta.fisher(\n",
- " data=ticker_data,\n",
- " symbol=ticker,\n",
- " external_axes=[ax1, ax2, ax3],\n",
- " chart=True,\n",
- ")\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "fisher = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "b699e61f",
- "metadata": {},
- "outputs": [],
- "source": [
- "# aroon indicator\n",
- "\n",
- "fig, (ax1, ax2, ax3) = plt.subplots(nrows=3, ncols=1, figsize=(11, 11), dpi=150)\n",
- "openbb.common.ta.aroon(\n",
- " data=ticker_data,\n",
- " symbol=ticker,\n",
- " external_axes=[ax1, ax2, ax3],\n",
- " chart=True,\n",
- ")\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "aroon = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "79401027",
- "metadata": {},
- "outputs": [],
- "source": [
- "# bollinger bands\n",
- "\n",
- "fig, ax = plt.subplots(figsize=(11, 3), dpi=150)\n",
- "openbb.common.ta.bbands(\n",
- " data=ticker_data,\n",
- " symbol=ticker,\n",
- " external_axes=[ax],\n",
- " chart=True,\n",
- ")\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "bbands = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "0b5e2949",
- "metadata": {},
- "outputs": [],
- "source": [
- "# fibonacci retracement\n",
- "\n",
- "fig, ax1 = plt.subplots(figsize=(11, 5), dpi=150)\n",
- "ax2 = ax1.twinx()\n",
- "openbb.common.ta.fib(\n",
- " data=ticker_data,\n",
- " symbol=ticker,\n",
- " external_axes=[ax1, ax2],\n",
- " chart=True,\n",
- ")\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "fib = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "48847a7f",
- "metadata": {},
- "source": [
- "## QA"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "e77b373b",
- "metadata": {},
- "outputs": [],
- "source": [
- "# summary\n",
- "\n",
- "summary = openbb.common.qa.summary(data=ticker_data)\n",
- "summary"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "3ecfc93e",
- "metadata": {},
- "outputs": [],
- "source": [
- "# normality statistics and tests\n",
- "\n",
- "# fig, _ = plt.subplots(figsize=(11, 3), dpi=150)\n",
- "# openbb.common.qa.normality(\n",
- "# data=ticker_data,\n",
- "# target=\"Close\",\n",
- "# chart=True,\n",
- "# )\n",
- "# fig.tight_layout()\n",
- "# f = io.BytesIO()\n",
- "# fig.savefig(f, format=\"svg\")\n",
- "\n",
- "normality = openbb.common.qa.normality(\n",
- " data=ticker_data[\"Close\"],\n",
- ")\n",
- "normality"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "8abe96b0",
- "metadata": {},
- "outputs": [],
- "source": [
- "# box and whisker plot\n",
- "\n",
- "fig, ax = plt.subplots(figsize=(11, 3), dpi=150)\n",
- "openbb.common.qa.bw(\n",
- " symbol=ticker,\n",
- " data=ticker_data,\n",
- " target=\"Close\",\n",
- " yearly=False,\n",
- " external_axes=[ax],\n",
- " chart=True,\n",
- ")\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "bw = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "66a7dccc",
- "metadata": {},
- "outputs": [],
- "source": [
- "# rolling mean and std deviation of prices\n",
- "\n",
- "fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(11, 5), dpi=150)\n",
- "openbb.common.qa.rolling(\n",
- " symbol=ticker,\n",
- " data=ticker_data,\n",
- " target=\"Close\",\n",
- " external_axes=[ax1, ax2],\n",
- " chart=True,\n",
- ")\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "rolling = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "d6b43dd7",
- "metadata": {},
- "outputs": [],
- "source": [
- "# rolling kurtosis of distribution of prices\n",
- "\n",
- "fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(11, 5), dpi=150)\n",
- "openbb.common.qa.kurtosis(\n",
- " symbol=ticker,\n",
- " data=ticker_data,\n",
- " target=\"Close\",\n",
- " external_axes=[ax1, ax2],\n",
- " chart=True,\n",
- ")\n",
- "fig.tight_layout()\n",
- "f = io.BytesIO()\n",
- "fig.savefig(f, format=\"svg\")\n",
- "kurtosis = f.getvalue().decode(\"utf-8\")"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "ebdbebf5",
- "metadata": {},
- "source": [
- "## PRED"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "fd5136de",
- "metadata": {},
- "outputs": [],
- "source": [
- "# TODO: add prediction"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "ac501a32-124d-4d21-aae1-a8d147bb1071",
- "metadata": {},
- "source": [
- "## Render the report template to a file"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "abfe37e4-ea38-42c3-8fb5-7cceb233fb12",
- "metadata": {},
- "outputs": [],
- "source": [
- "body = \"\"\n",
- "\n",
- "if openbb_image_encoded:\n",
- " img = f' '\n",
- "else:\n",
- " img = None\n",
- "floppy_disk_img = \"openbb_terminal/reports/floppy-disc.png\"\n",
- "body += widgets.header(\n",
- " img,\n",
- " floppy_disk_img,\n",
- " author,\n",
- " report_date,\n",
- " report_time,\n",
- " report_timezone,\n",
- " f\"INVESTMENT RESEARCH REPORT: {ticker}\",\n",
- ")\n",
- "\n",
- "body += widgets.tablinks(\n",
- " [\n",
- " \"SUMMARY\",\n",
- " \"Due Diligence\",\n",
- " \"Technical Analysis\",\n",
- " \"Quantitative Analysis\",\n",
- " ]\n",
- ")\n",
- "\n",
- "comment = \"\"\n",
- "\n",
- "# Summary tab\n",
- "htmlcode = \"\"\n",
- "htmlcode += widgets.row(\n",
- " [widgets.h(3, \"Basic information about loaded coin\") + basic_info.to_html()]\n",
- ")\n",
- "if not links.empty:\n",
- " htmlcode += widgets.row([widgets.h(3, \"Links\") + links.to_html(escape=False)])\n",
- "\n",
- "htmlcode += widgets.row([widgets.h(3, \"Published news\") + news.to_html(escape=False)])\n",
- "# htmlcode += widgets.row([widgets.h(3, \"Altindex\")])\n",
- "# htmlcode += widgets.row([altindex])\n",
- "\n",
- "htmlcode += widgets.row([widgets.h(3, \"Historical data\")])\n",
- "for data in historical_data:\n",
- " htmlcode += widgets.row([data])\n",
- "\n",
- "htmlcode += widgets.row([widgets.h(3, \"1-year historical data candlestick chart\")])\n",
- "htmlcode += widgets.row([candle_one_year])\n",
- "htmlcode += widgets.row([widgets.h(3, \"Sentiment analysis\")])\n",
- "htmlcode += widgets.row([headlines])\n",
- "# TODO: print rich table\n",
- "# htmlcode += widgets.row([widgets.h(3, \"Quick performance\")])\n",
- "# htmlcode += widgets.row([quick_performance])\n",
- "body += widgets.add_tab(\"SUMMARY\", htmlcode)\n",
- "\n",
- "# # Due diligence tab\n",
- "htmlcode = \"\"\n",
- "htmlcode += widgets.row(\n",
- " [widgets.h(3, f\"Trading pair info {ticker}/USDT\") + trading_pair_info.to_html()]\n",
- ")\n",
- "if not mcapdom_df.empty:\n",
- " htmlcode += widgets.row([widgets.h(3, \"Market cap dominance\")])\n",
- " htmlcode += widgets.row([mcapdom])\n",
- "\n",
- "if not roadmap_model.empty:\n",
- " htmlcode += widgets.row([widgets.h(3, \"Roadmap\") + roadmap_model.to_html()])\n",
- " htmlcode += widgets.row([roadmap_view])\n",
- "\n",
- "if not tokenomics_model.empty:\n",
- " htmlcode += widgets.row([widgets.h(3, \"Tokenomics\") + tokenomics_model.to_html()])\n",
- " htmlcode += widgets.row([tokenomics_view])\n",
- "\n",
- "if not fundraise_df.empty:\n",
- " htmlcode += widgets.row([widgets.h(3, \"Fundraising Details\")])\n",
- " htmlcode += widgets.row([widgets.p(fundraise_info)])\n",
- " htmlcode += widgets.row([fundraise_df.to_html()])\n",
- "\n",
- "if not ath.empty:\n",
- " htmlcode += widgets.row([widgets.h(3, \"All time high\")])\n",
- " htmlcode += widgets.row([ath.to_html()])\n",
- "\n",
- "if not atl.empty:\n",
- " htmlcode += widgets.row([widgets.h(3, \"All time low\")])\n",
- " htmlcode += widgets.row([atl.to_html()])\n",
- "\n",
- "htmlcode += widgets.row([widgets.h(3, \"All markets\")])\n",
- "htmlcode += widgets.row([market.sample(n=20).sort_index().to_html(escape=False)])\n",
- "htmlcode += widgets.row([widgets.h(3, \"Exchanges where loaded coin is listed\")])\n",
- "htmlcode += widgets.row([ex.sample(n=20).sort_index().to_html()])\n",
- "htmlcode += widgets.row([widgets.h(3, \"Last trades\")])\n",
- "htmlcode += widgets.row([trades.tail(20).to_html()])\n",
- "\n",
- "if order_book_raw:\n",
- " htmlcode += widgets.row([widgets.h(3, \"Order book\")])\n",
- " htmlcode += widgets.row([order_book])\n",
- "\n",
- "htmlcode += widgets.row(\n",
- " [widgets.h(3, \"Price and supply related metrics for loaded coin\")]\n",
- ")\n",
- "htmlcode += widgets.row([ps.to_html()])\n",
- "if not events.empty:\n",
- " htmlcode += widgets.row([widgets.h(3, \"Events\")])\n",
- " htmlcode += widgets.row([events.to_html(escape=False)])\n",
- "# TODO: print rich table\n",
- "# htmlcode += widgets.row([widgets.h(3, \"Tweets for loaded coin\")])\n",
- "# htmlcode += widgets.row([tweets])\n",
- "# htmlcode += widgets.row([widgets.h(3, \"Social media\")])\n",
- "# htmlcode += widgets.row([social.to_html()])\n",
- "if not gh_data.empty:\n",
- " htmlcode += widgets.row([widgets.h(3, \"Github activity over time\")])\n",
- " htmlcode += widgets.row([gh])\n",
- "else:\n",
- " htmlcode += widgets.row([widgets.h(3, \"Github activity over time\")])\n",
- " htmlcode += widgets.row([widgets.p(\"No data available.\")])\n",
- "\n",
- "body += widgets.add_tab(\"Due Diligence\", htmlcode)\n",
- "\n",
- "# Technical Analysis tab\n",
- "htmlcode = \"\"\n",
- "htmlcode = widgets.row([widgets.h(3, \"Simple moving average\")])\n",
- "htmlcode += widgets.row([sma])\n",
- "htmlcode += widgets.row([widgets.h(3, \"Exponential moving average\")])\n",
- "htmlcode += widgets.row([ema])\n",
- "htmlcode += widgets.row([widgets.h(3, \"Zero lag exponential moving average\")])\n",
- "htmlcode += widgets.row([zlma])\n",
- "htmlcode += widgets.row([widgets.h(3, \"Commodity channel index\")])\n",
- "htmlcode += widgets.row([cci])\n",
- "htmlcode += widgets.row([widgets.h(3, \"Moving average convergence/divergence\")])\n",
- "htmlcode += widgets.row([macd])\n",
- "htmlcode += widgets.row([widgets.h(3, \"Fisher transform\")])\n",
- "htmlcode += widgets.row([fisher])\n",
- "htmlcode += widgets.row([widgets.h(3, \"Aroon indicator\")])\n",
- "htmlcode += widgets.row([aroon])\n",
- "htmlcode += widgets.row([widgets.h(3, \"Bollinger bands\")])\n",
- "htmlcode += widgets.row([bbands])\n",
- "htmlcode += widgets.row([widgets.h(3, \"Fibonacci retracement\")])\n",
- "htmlcode += widgets.row([fib])\n",
- "body += widgets.add_tab(\"Technical Analysis\", htmlcode)\n",
- "\n",
- "# Quantitative Analysis tab\n",
- "htmlcode = \"\"\n",
- "htmlcode = widgets.row([widgets.h(3, \"Summary\") + summary.to_html()])\n",
- "htmlcode += widgets.row(\n",
- " [widgets.h(3, \"Normality statistics and tests\") + normality.to_html()]\n",
- ")\n",
- "htmlcode += widgets.row([widgets.h(3, \"Box and whisker plot\")])\n",
- "htmlcode += widgets.row([bw])\n",
- "htmlcode += widgets.row([widgets.h(3, \"Rolling mean and std deviation of prices\")])\n",
- "htmlcode += widgets.row([rolling])\n",
- "htmlcode += widgets.row([widgets.h(3, \"Rolling kurtosis of distribution of prices\")])\n",
- "htmlcode += widgets.row([kurtosis])\n",
- "body += widgets.add_tab(\"Quantitative Analysis\", htmlcode)\n",
- "\n",
- "body += widgets.tab_clickable_and_save_evt()\n",
- "report = widgets.html_report(title=report_name, stylesheet=stylesheet, body=body)\n",
- "\n",
- "# # to save the results\n",
- "with open(report_name + \".html\", \"w\", encoding=\"utf-8\") as fh:\n",
- " fh.write(report)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "746a3e56",
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "celltoolbar": "Tags",
- "kernelspec": {
- "display_name": "Python 3.10.4 ('obb')",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.10.4"
- },
- "vscode": {
- "interpreter": {
- "hash": "1a8cc6b6e60740679b24fc1ea93bdeb94d949a22102a80c99b7fd3f0d572afd6"
- }
- }
- },
- "nbformat": 4,
- "nbformat_minor": 5
-}
diff --git a/openbb_terminal/reports/data/crypto_tickers.csv b/openbb_terminal/reports/data/crypto_tickers.csv
new file mode 100644
index 00000000000..8e08688fb64
--- /dev/null
+++ b/openbb_terminal/reports/data/crypto_tickers.csv
@@ -0,0 +1,100 @@
+Symbol
+BTC
+ETH
+BNB
+ADA
+DOT
+XRP
+UNI
+LTC
+LINK
+THETA
+USDC
+BCH
+XLM
+LUNA
+WBTC
+DOGE
+VET
+CRO
+FIL
+AAVE
+TRX
+MIOTA
+ATOM
+SOL
+EOS
+AVAX
+XMR
+BSV
+KSM
+FTT
+XTZ
+XEM
+BTT
+ALGO
+NEO
+CHZ
+DAI
+HT
+HBAR
+EGLD
+SUSHI
+SNX
+DASH
+TFUEL
+LEO
+GRT
+DCR
+MKR
+ZIL
+COMP
+MATIC
+NEAR
+ENJ
+RVN
+BAT
+NPXS
+ZEC
+CAKE
+ONE
+MANA
+NEXO
+UMA
+ETC
+BNT
+CHSB
+RUNE
+YFI
+HOT
+RSR
+ICX
+CEL
+ZRX
+WAVES
+FTM
+REN
+SC
+REV
+VGX
+ONT
+DGB
+DENT
+OKB
+IOST
+OMG
+PAX
+CELO
+1INCH
+NANO
+NANO
+QTUM
+LRC
+OCEAN
+CRV
+KNC
+ZEN
+MVL
+BTG
+LSK
+XVG
diff --git a/openbb_terminal/reports/data/etf_tickers.csv b/openbb_terminal/reports/data/etf_tickers.csv
new file mode 100644
index 00000000000..22de7024835
--- /dev/null
+++ b/openbb_terminal/reports/data/etf_tickers.csv
@@ -0,0 +1,101 @@
+Symbol
+SPY
+IVV
+VOO
+VTI
+QQQ
+VTV
+VEA
+BND
+AGG
+IEFA
+VUG
+VWO
+IJR
+VIG
+IJH
+IEMG
+IWF
+GLD
+IWM
+IWD
+VO
+BNDX
+VYM
+VXUS
+VCSH
+EFA
+VB
+BSV
+XLE
+ITOT
+VGT
+VCIT
+XLV
+SCHD
+XLK
+LQD
+VNQ
+MUB
+SHY
+VEU
+RSP
+SCHX
+USMV
+XLF
+IVW
+TIP
+BIL
+DIA
+IAU
+IWB
+IWR
+GOVT
+TLT
+IXUS
+SHV
+SCHF
+VV
+JPST
+IVE
+VBR
+IEF
+DGRO
+IGSB
+VT
+SDY
+EEM
+ESGU
+DVY
+VTEB
+MBB
+SCHB
+VTIP
+IUSB
+VGSH
+MDY
+QUAL
+VHT
+XLU
+XLP
+ACWI
+VOE
+SCHP
+DFAC
+VMBS
+XLY
+PFF
+EMB
+SPLG
+SCHG
+JEPI
+EFV
+SCHA
+VXF
+HYG
+BIV
+VGK
+STIP
+IWS
+SPYG
+VGIT
diff --git a/openbb_terminal/reports/data/stocks_tickers.csv b/openbb_terminal/reports/data/stocks_tickers.csv
new file mode 100644
index 00000000000..1d355c5a570
--- /dev/null
+++ b/openbb_terminal/reports/data/stocks_tickers.csv
@@ -0,0 +1,52 @@
+Symbol
+AAPL
+ABBV
+ABT
+ACN
+AMZN
+ASML
+AVGO
+AZN
+BABA
+BAC
+BMY
+BRK-A
+COP
+COST
+CRM
+CSCO
+CVX
+DHR
+DIS
+GOOGL
+HD
+JNJ
+JPM
+KO
+LLY
+MA
+MCD
+META
+MRK
+MSFT
+NEE
+NVDA
+NVO
+NVS
+ORCL
+PEP
+PFE
+PG
+TM
+TMO
+TMUS
+TSLA
+TSM
+UNH
+UPS
+V
+VZ
+WFC
+WMT
+XOM
+Summ
diff --git a/openbb_terminal/reports/reports_controller.py b/openbb_terminal/reports/reports_controller.py
index 9d1365cc482..be83c726794 100644
--- a/openbb_terminal/reports/reports_controller.py
+++ b/openbb_terminal/reports/reports_controller.py
@@ -1,28 +1,19 @@
"""Reports Controller Module."""
__docformat__ = "numpy"
+import argparse
import logging
+import os
# pylint: disable=R1732, R0912
-import os
-from pathlib import Path
-import re
-import webbrowser
-from ast import literal_eval
-from datetime import datetime
-from typing import List
-import importlib
-import contextlib
-import io
-
-from nbconvert.nbconvertapp import NbConvertApp
-from nbconvert.exporters import ScriptExporter
-from nbconvert.writers import FilesWriter
-from matplotlib import pyplot as plt
-
+from typing import Any, Dict, List
from openbb_terminal import feature_flags as obbff
-from openbb_terminal.core.config.paths import USER_EXPORTS_DIRECTORY
+from openbb_terminal.core.config.paths import (
+ USER_CUSTOM_REPORTS_DIRECTORY,
+)
+from openbb_terminal.helper_funcs import parse_simple_args
+from openbb_terminal.reports import reports_model
from openbb_terminal.custom_prompt_toolkit import NestedCompleter
from openbb_terminal.decorators import log_start_end
from openbb_terminal.menu import session
@@ -35,283 +26,239 @@ logger = logging.getLogger(__name__)
class ReportController(BaseController):
"""Report Controller class."""
- reports_folder = Path(__file__).parent
-
- report_names = [
- notebooks[:-6]
- for notebooks in os.listdir(reports_folder)
- if notebooks.endswith(".ipynb")
+ CHOICES_COMMANDS: List[str] = [
+ "crypto",
+ "economy",
+ "equity",
+ "etf",
+ "forecast",
+ "forex",
+ "portfolio",
+ "run",
+ "load",
]
-
- ids_reports = [str(val + 1) for val in range(len(report_names))]
-
- d_id_to_report_name = {}
- for id_report, report_name in enumerate(report_names):
- d_id_to_report_name[str(id_report + 1)] = report_name
-
- d_params = {}
-
- max_len_name = max(len(name) for name in report_names) + 2
- reports_opts = ""
- for k, report_to_run in d_id_to_report_name.items():
- # Crawl data to look into what
- notebook_file = Path(__file__).parent / report_to_run
-
- # Open notebook with report template
- with open(str(notebook_file) + ".ipynb") as n_file:
- notebook_content = n_file.read()
-
- # Look for the metadata cell to understand if there are parameters required by the report
- metadata_cell = """"metadata": {\n "tags": [\n "parameters"\n ]\n },\n "outputs":"""
-
- # Locate position of the data of interest and get parameters
- notebook_metadata_content = notebook_content[
- notebook_content.find(metadata_cell) : # noqa: E203
- ]
- cell_start = 'source": '
- cell_end = "]"
- params = notebook_metadata_content[
- notebook_metadata_content.find(
- cell_start
- ) : notebook_metadata_content.find( # noqa: E203
- cell_end, notebook_metadata_content.find(cell_start)
- )
- + 1
- ]
- # Make sure that the parameters provided are relevant
- if "parameters" in notebook_content:
- l_params = [
- param.split("=")[0][:-1]
- for param in literal_eval(params.strip('source": '))
- if param[0] not in ["#", "\n"]
- ]
- def_params = [
- param.split("=")[1][2:-1]
- for param in literal_eval(params.strip('source": '))
- if param[0] not in ["#", "\n"]
- ]
- # to ensure default value is correctly selected
- for param in range(len(def_params) - 1):
- def_params[param] = def_params[param][:-1]
-
- if "report_name" in l_params:
- l_params.remove("report_name")
- d_params[report_to_run] = [l_params, def_params]
-
- # On the menu of choices add the parameters necessary for each template report
- if len(l_params) > 1 or not l_params:
- args = f"<{'> <'.join(l_params)}>"
- else:
- args = f"<{l_params[0]}>"
-
- reports_opts += (
- f" {k}. {report_to_run}"
- + f"{(max_len_name-len(report_to_run))*' '} "
- + f"{args if args != '<>' else ''}\n"
- )
- CHOICES_MENUS = report_names + ids_reports + ["r", "reset"]
PATH = "/reports/"
+ REPORTS: List[str] = reports_model.get_reports_available()
+ REPORTS = sorted(list(set(CHOICES_COMMANDS).intersection(REPORTS)))
+ PARAMETERS_DICT: Dict[str, Any] = {}
+
def __init__(self, queue: List[str] = None):
"""Constructor"""
+
super().__init__(queue)
+ self.update_choices()
+
+ def update_choices(self):
+ """Update controller choices with reports available under templates folder."""
+
+ for report_name in self.REPORTS:
+ # Extract report parameters do display on menu
+ self.PARAMETERS_DICT[report_name] = reports_model.extract_parameters(
+ str(reports_model.REPORTS_FOLDER / report_name)
+ )
if session and obbff.USE_PROMPT_TOOLKIT:
- choices: dict = {c: {} for c in self.controller_choices}
- choices["support"] = self.SUPPORT_CHOICES
- choices["about"] = self.ABOUT_CHOICES
+ self.choices: dict = {c: {} for c in self.controller_choices}
+ self.choices["run"] = {
+ "--file": {c: None for c in reports_model.USER_REPORTS},
+ "-f": "--file",
+ "--parameters": {},
+ "-p": "--parameters",
+ }
+ for report_name in self.REPORTS:
- self.completer = NestedCompleter.from_nested_dict(choices)
+ # Completer with limited user choices to avoid unforeseen problems
+ self.choices[report_name] = {}
+ for arg in self.PARAMETERS_DICT[report_name]:
+ if report_name in reports_model.REPORT_CHOICES:
+ self.choices[report_name][
+ "--" + arg
+ ] = reports_model.REPORT_CHOICES[report_name]["--" + arg]
+
+ self.choices["support"] = self.SUPPORT_CHOICES
+ self.choices["about"] = self.ABOUT_CHOICES
+
+ self.completer = NestedCompleter.from_nested_dict(self.choices)
def print_help(self):
"""Print help."""
+
+ self.REPORTS = reports_model.get_reports_available()
+ self.REPORTS = sorted(
+ list(set(self.CHOICES_COMMANDS).intersection(self.REPORTS))
+ )
+ self.update_choices()
+
mt = MenuText("reports/")
mt.add_info("_reports_")
- mt.add_raw(f"[cmds]{self.reports_opts}[/cmds]")
+ mt.add_raw("\n")
+ mt.add_info("_OpenBB_reports_")
+ MAX_LEN_NAME = max(len(name) for name in self.REPORTS) + 2
+ templates_string = ""
+ for report_name in self.REPORTS:
+
+ parameters_names = list(self.PARAMETERS_DICT[report_name].keys())
+
+ if len(parameters_names) > 1 or not parameters_names:
+ args = f"<{'> <'.join(parameters_names)}>"
+ else:
+ args = f"<{parameters_names[0]}>"
+
+ templates_string += (
+ f" [cmds]{report_name}[/cmds]"
+ + f"{(MAX_LEN_NAME-len(report_name))*' '} "
+ + f"[param]{args if args != '<>' else ''}[/param]\n"
+ )
+ mt.add_raw(f"{templates_string}")
+ mt.add_raw("\n")
+ mt.add_info("_Custom_reports_")
+ mt.add_cmd("run")
console.print(text=mt.menu_text, menu="Reports - WORK IN PROGRESS")
@log_start_end(log=logger)
- def switch(self, an_input: str):
- """Process and dispatch input.
+ def call_etf(self, other_args: List[str]):
+ self.run_report("etf", other_args)
- Parameters
- ----------
- an_input : str
- string with input arguments
+ @log_start_end(log=logger)
+ def call_forex(self, other_args: List[str]):
+ self.run_report("forex", other_args)
- Returns
- -------
- List[str]
- List of commands in the queue to execute
- """
- # Empty command
- if not an_input:
- console.print("")
- return self.queue
+ @log_start_end(log=logger)
+ def call_portfolio(self, other_args: List[str]):
+ self.run_report("portfolio", other_args)
- # Navigation slash is being used
- if "/" in an_input:
- actions = an_input.split("/")
+ @log_start_end(log=logger)
+ def call_economy(self, other_args: List[str]):
+ self.run_report("economy", other_args)
- # Absolute path is specified
- if not actions[0]:
- an_input = "home"
- # Relative path so execute first instruction
- else:
- an_input = actions[0]
+ @log_start_end(log=logger)
+ def call_equity(self, other_args: List[str]):
+ self.run_report("equity", other_args)
- # Add all instructions to the queue
- for cmd in actions[1:][::-1]:
- if cmd:
- self.queue.insert(0, cmd)
+ @log_start_end(log=logger)
+ def call_crypto(self, other_args: List[str]):
+ self.run_report("crypto", other_args)
- (known_args, other_args) = self.parser.parse_known_args(an_input.split())
-
- # Redirect commands to their correct functions
- if known_args.cmd:
- if known_args.cmd in ("..", "q"):
- known_args.cmd = "quit"
- elif known_args.cmd in ("?", "h"):
- known_args.cmd = "help"
- elif known_args.cmd == "r":
- known_args.cmd = "reset"
-
- if known_args.cmd in ["quit", "help", "reset", "home", "exit", "cls"]:
- getattr(
- self,
- "call_" + known_args.cmd,
- lambda _: "Command not recognized!",
- )(other_args)
-
- return self.queue
-
- # Execute the requested report
- if known_args.cmd in self.d_id_to_report_name:
- report_to_run = self.d_id_to_report_name[known_args.cmd]
- else:
- report_to_run = known_args.cmd
-
- params = self.d_params[report_to_run][0]
-
- # Check that the number of arguments match. We can't check validity of the
- # argument used because this depends on what the user will use it for in
- # the notebook. This is a downside of allowing the user to have this much
- # flexibility.
- if len(other_args) != len(params):
- console.print("Wrong number of arguments provided!")
- if len(params):
- console.print("Provide, in order:")
- for k, v in enumerate(params):
- console.print(f"{k+1}. {v}")
- else:
- console.print("No argument required.")
- console.print("")
- return []
-
- args_to_output = f"_{'_'.join(other_args)}" if "_".join(other_args) else ""
- report_output_name = (
- f"{datetime.now().strftime('%Y%m%d_%H%M%S')}"
- + "_"
- + f"{report_to_run}{args_to_output}"
- )
- notebook_output = str(
- USER_EXPORTS_DIRECTORY / "reports" / report_output_name
+ @log_start_end(log=logger)
+ def call_forecast(self, other_args: List[str]):
+ try:
+ import darts # pyright: reportMissingImports=false # noqa: F401, E501 #pylint: disable=import-outside-toplevel, unused-import
+ from darts import ( # pyright: reportMissingImports=false # noqa: F401, E501 #pylint: disable=import-outside-toplevel, unused-import
+ utils,
)
- # only a single backslash appears in the .py file otherwise
- notebook_output = notebook_output.replace("\\", "\\\\")
- notebook_output = notebook_output.replace("\\", "\\\\")
+ forecast = True
+ except ImportError:
+ forecast = False
+ console.print(
+ "\n'forecast' menu dependencies are not installed."
+ " This part of the SDK will not be usable.\n\n"
+ "For more information see the official documentation at: "
+ "[blue]https://openbb-finance.github.io/OpenBBTerminal/sdk/[/blue]\n"
+ )
+ if forecast:
+ self.run_report("forecast", other_args)
- # gather params from user
- d_report_params = {}
- for idx, param in enumerate(params):
- d_report_params[param] = other_args[idx]
+ @log_start_end(log=logger)
+ def run_report(self, report_name: str, other_args: List[str]):
+ parser = argparse.ArgumentParser(
+ add_help=False,
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
+ prog=report_name,
+ description=f"Run {report_name} report.",
+ )
- d_report_params["report_name"] = notebook_output
+ if report_name in self.PARAMETERS_DICT:
- notebook_file = str(Path(__file__).parent / report_to_run)
+ # Assign respective parameters as arguments
+ for arg_name, arg_default in self.PARAMETERS_DICT[report_name].items():
- with open(notebook_file + ".ipynb") as n_file:
- notebook_content = n_file.read()
+ choices = reports_model.get_arg_choices(report_name, arg_name)
- params.append("report_name") # re-add report_name
-
- # replace params in notebook
- if "parameters" in notebook_content:
- params_to_change = self.d_params[report_to_run][1]
- for idx, param in enumerate(params_to_change):
- notebook_content = notebook_content.replace(
- param, d_report_params[params[idx]], 1
- )
-
- notebook_file_copy = notebook_file + "copy"
-
- with open(notebook_file_copy + ".ipynb", "w") as file:
- file.write(notebook_content)
-
- # use nbconvert to switch to .py
- converter = NbConvertApp()
- converter.log_level = 40
- converter.export_format = "script"
- converter.exporter = ScriptExporter()
- converter.writer = FilesWriter()
-
- converter.convert_single_notebook(notebook_file_copy + ".ipynb")
-
- python_file = Path(notebook_file_copy + ".py")
- python_text = python_file.read_text().split("\n")
-
- # remove lines with get_ipython
- lines = [
- line
- for line in python_text
- if len(line) == 0 or "get_ipython()" not in line
- ]
- clean_code = "\n".join(lines)
- clean_code = re.sub(r"\n{2,}", "\n\n", clean_code)
- python_file.write_text(clean_code.strip())
-
- # Check for existing matplotlib figures
- _figures_before = plt.get_fignums()
-
- # Run the report
- try:
- notebook_execution_output = io.StringIO()
- with contextlib.redirect_stdout(notebook_execution_output):
- importlib.import_module(
- f"openbb_terminal.reports.{report_to_run}copy"
- )
- except Exception as error:
- console.print("[red]\nReport wasn't executed correctly.\n[/red]")
- console.print(f"[red]\nError : {error}\n[/red]")
-
- # Close the figures that were created during report execution
- _figures_after = plt.get_fignums()
- for fig_number in _figures_after:
- if fig_number not in _figures_before:
- plt.close(fig_number)
-
- notebook_output = notebook_output.replace("\\\\", "\\")
- notebook_output = notebook_output.replace("\\\\", "\\")
- report_output_path = notebook_output + ".html"
-
- params.remove("report_name") # remove report_name
-
- os.remove(notebook_file_copy + ".ipynb")
- os.remove(notebook_file_copy + ".py")
-
- if Path(report_output_path).is_file():
- if obbff.OPEN_REPORT_AS_HTML:
- console.print(report_output_path)
- webbrowser.open(f"file://{report_output_path}")
-
- console.print("")
- console.print(
- f"Exported: {report_output_path}",
- "\n",
+ getattr(parser, "add_argument")(
+ "--" + arg_name,
+ type=str,
+ default=arg_default,
+ choices=choices,
+ dest=arg_name,
+ help=arg_name,
)
- else:
- console.print("[red]\nReport couldn't be created.\n[/red]")
- return self.queue
+ if (
+ other_args
+ and "-" not in other_args[0][0]
+ and len(self.PARAMETERS_DICT[report_name]) == 1
+ ):
+ other_args.insert(
+ 0, "--" + list(self.PARAMETERS_DICT[report_name].keys())[0]
+ )
+ ns_parser = parse_simple_args(parser, other_args)
+
+ if ns_parser:
+ parameters = vars(ns_parser)
+ parameters.pop("help")
+ reports_model.render_report(
+ input_path=str(reports_model.REPORTS_FOLDER / report_name),
+ args_dict=parameters,
+ )
+
+ else:
+ console.print("[red]Notebook not found![/red]\n")
+
+ @log_start_end(log=logger)
+ def call_run(self, other_args: List[str]):
+ """Process run command"""
+ parser = argparse.ArgumentParser(
+ add_help=False,
+ formatter_class=argparse.ArgumentDefaultsHelpFormatter,
+ prog="run",
+ description=f"Run a notebook from this folder: '{str(USER_CUSTOM_REPORTS_DIRECTORY)}'.",
+ )
+ parser.add_argument(
+ "-f",
+ "--file",
+ dest="file",
+ choices=reports_model.USER_REPORTS,
+ required="-h" not in other_args,
+ help="The file to be loaded",
+ )
+ parser.add_argument(
+ "-p",
+ "--parameters",
+ nargs="+",
+ dest="parameters",
+ help="Report parameters with format 'name:value'.",
+ )
+
+ ns_parser = self.parse_known_args_and_warn(parser, other_args)
+
+ if ns_parser:
+ # Validate parameter inputs
+ parameters_dict = {}
+ if ns_parser.parameters:
+ for p in ns_parser.parameters:
+ if ":" in p:
+ item = p.split(":")
+ if item[1]:
+ parameters_dict[item[0]] = item[1]
+ else:
+ console.print(
+ f"[red]Bad format '{p}': empty value.[/red]\nExecuting with defaults.\n"
+ )
+ else:
+ console.print(
+ f"[red]Bad format '{p}': use format 'name:value'.[/red]\nExecuting with defaults.\n"
+ )
+
+ if ns_parser.file:
+ complete_file_path = str(USER_CUSTOM_REPORTS_DIRECTORY / ns_parser.file)
+ if os.path.exists(complete_file_path):
+ reports_model.render_report(
+ input_path=complete_file_path, args_dict=parameters_dict
+ )
+ else:
+ console.print(
+ f"[red]Notebook '{ns_parser.file}' not found![/red]\n"
+ )
diff --git a/openbb_terminal/reports/reports_model.py b/openbb_terminal/reports/reports_model.py
new file mode 100644
index 00000000000..a19f2385e05
--- /dev/null
+++ b/openbb_terminal/reports/reports_model.py
@@ -0,0 +1,420 @@
+"""Reports Model Module."""
+__docformat__ = "numpy"
+
+import logging
+
+# pylint: disable=R1732, R0912
+import os
+from pathlib import Path
+from threading import Thread
+import webbrowser
+from ast import literal_eval
+from datetime import datetime
+from typing import Any, Dict, List, Union
+from ipykernel.kernelapp import IPKernelApp
+import papermill as pm
+import pandas as pd
+
+from openbb_terminal import feature_flags as obbff
+from openbb_terminal.core.config.paths import (
+ MISCELLANEOUS_DIRECTORY,
+ USER_PORTFOLIO_DATA_DIRECTORY,
+ USER_REPORTS_DIRECTORY,
+ USER_CUSTOM_REPORTS_DIRECTORY,
+)
+from openbb_terminal.decorators import log_start_end
+from openbb_terminal.rich_config import console
+from openbb_terminal.forex.forex_controller import FX_TICKERS
+
+logger = logging.getLogger(__name__)
+
+CURRENT_LOCATION = Path(__file__)
+REPORTS_FOLDER = CURRENT_LOCATION.parent / "templates"
+
+USER_REPORTS = {
+ filepath.name: filepath
+ for file_type in ["ipynb"]
+ for filepath in USER_CUSTOM_REPORTS_DIRECTORY.rglob(f"*.{file_type}")
+}
+
+# TODO: Trim available choices to avoid errors in notebooks.
+
+etf_data_path = CURRENT_LOCATION.parent / "data" / "etf_tickers.csv"
+ETF_TICKERS = pd.read_csv(etf_data_path).iloc[:, 0].to_list()
+
+crypto_data_path = CURRENT_LOCATION.parent / "data" / "crypto_tickers.csv"
+CRYPTO_TICKERS = pd.read_csv(crypto_data_path).iloc[:, 0].to_list()
+
+stocks_data_path = CURRENT_LOCATION.parent / "data" / "stocks_tickers.csv"
+STOCKS_TICKERS = pd.read_csv(stocks_data_path).iloc[:, 0].to_list()
+
+PORTFOLIO_HOLDINGS_FILES = {
+ filepath.name: filepath
+ for file_type in ["xlsx", "csv"]
+ for filepath in (USER_PORTFOLIO_DATA_DIRECTORY / "holdings").rglob(f"*.{file_type}")
+}
+
+PORTFOLIO_HOLDINGS_FILES.update(
+ {
+ filepath.name: filepath
+ for file_type in ["xlsx", "csv"]
+ for filepath in (
+ MISCELLANEOUS_DIRECTORY / "portfolio_examples" / "holdings"
+ ).rglob(f"*.{file_type}")
+ }
+)
+
+REPORT_CHOICES = {
+ "etf": {
+ "--symbol": {c: None for c in ETF_TICKERS},
+ },
+ "forex": {
+ "--symbol": {c: None for c in FX_TICKERS},
+ },
+ "portfolio": {
+ "--orderbook": {c: None for c in PORTFOLIO_HOLDINGS_FILES},
+ },
+ "economy": None,
+ "equity": {
+ "--symbol": {c: None for c in STOCKS_TICKERS},
+ },
+ "crypto": {
+ "--symbol": {c: None for c in CRYPTO_TICKERS},
+ },
+ "forecast": {
+ "--symbol": {c: None for c in STOCKS_TICKERS + ETF_TICKERS},
+ },
+}
+
+
+@log_start_end(log=logger)
+def get_arg_choices(report_name: str, arg_name: str) -> Union[List[str], None]:
+ """Get argument choices from autocompletion for crypto, forex and portfolio.
+
+ Parameters
+ ----------
+ report_name: str
+ Name of report chosen.
+ arg_name: str
+ Argument to limit choices.
+
+ Returns:
+ List[str]: List with argument choices from autocompletion.
+ """
+
+ choices = None
+ if report_name in ("forex", "portfolio"):
+ if "--" + arg_name in REPORT_CHOICES[report_name]: # type: ignore
+ choices = list(REPORT_CHOICES[report_name]["--" + arg_name].keys()) # type: ignore
+ return choices
+
+
+@log_start_end(log=logger)
+def get_reports_available(
+ folder: Path = REPORTS_FOLDER, warn: bool = True
+) -> List[str]:
+ """Get Jupyter notebook available in folder.
+
+ Parameters
+ ----------
+ folder: Path
+ Path to folder.
+
+ Returns:
+ List[str]: List with names of notebooks available.
+ """
+
+ bad_format = []
+ available = []
+
+ for notebook in os.listdir(folder):
+ if notebook.endswith(".ipynb"):
+ if " " in notebook:
+ bad_format.append(notebook)
+ else:
+ available.append(notebook[:-6])
+
+ if bad_format and warn:
+ s = ", ".join(bad_format)
+ console.print(
+ f"[red]Character '_' not allowed in the following names: {s}.[/red]"
+ )
+
+ return available
+
+
+@log_start_end(log=logger)
+def extract_parameters(input_path: str) -> Dict[str, str]:
+ """Extract required parameters from notebook content.
+
+ Parameters
+ ----------
+ input_path: str
+ Path of report to be rendered.
+
+ Returns:
+ Dict[str, str]: Dictionary with parameters names and values.
+ """
+
+ input_path = add_ipynb_extension(input_path)
+
+ with open(input_path, encoding="utf-8") as file:
+ notebook_content = file.read()
+
+ # Look for the metadata cell to understand if there are parameters required by the report
+ metadata_cell = """"metadata": {\n "tags": [\n "parameters"\n ]\n },\n "outputs":"""
+
+ # Locate position of the data of interest and get parameters
+ if notebook_content.find(metadata_cell) >= 0:
+ position = notebook_content.find(metadata_cell)
+ else:
+ return {}
+
+ metadata = notebook_content[position:] # noqa: E203
+ cell_start = 'source": '
+ cell_end = "]"
+ start_position = metadata.find(cell_start)
+ params = metadata[
+ start_position : metadata.find(cell_end, start_position) + 1 # noqa: E203
+ ]
+
+ # Make sure that the parameters provided are relevant
+ if "parameters" in notebook_content:
+ parameters_names = [
+ param.split("=")[0][:-1]
+ for param in literal_eval(params.strip('source": '))
+ if param[0] not in ["#", "\n"]
+ ]
+ parameters_values = [
+ param.split("=")[1][2:-2]
+ for param in literal_eval(params.strip('source": '))
+ if param[0] not in ["#", "\n"]
+ ]
+
+ if "report_name" in parameters_names:
+ parameters_names.remove("report_name")
+
+ parameters_dict = dict(zip(parameters_names, parameters_values))
+
+ return parameters_dict
+
+
+@log_start_end(log=logger)
+def render_report(input_path: str, args_dict: Dict[str, str]):
+ """Report rendering end to end.
+
+ Workflow:
+ 1. Update parameters to use in notebook with received arguments
+ 2. Create output path
+ 3. Update parameters with output_path
+ 4. Validate and execute notebook in a new thread.
+
+ Parameters
+ ----------
+ input_path: str
+ Path of report to be rendered.
+ args_dict: Dict[str, str]
+ Dictionary with received arguments dictionary.
+ """
+
+ try:
+ parameters_dict = update_parameters(input_path, args_dict)
+ output_path = create_output_path(input_path, parameters_dict)
+ parameters_dict["report_name"] = output_path
+ if parameters_dict:
+ t = Thread(
+ target=execute_notebook, args=(input_path, parameters_dict, output_path)
+ )
+ t.start()
+ t.join()
+ except Exception as e:
+ console.print(f"[red]Cannot execute notebook - {e}")
+
+
+@log_start_end(log=logger)
+def update_parameters(input_path: str, args_dict: Dict[str, str]) -> Dict[str, Any]:
+ """Update dictionary of parameters to be used in report with received arguments.
+
+ Parameters
+ ----------
+ input_path: str
+ Path of report to be rendered.
+ args_dict: Dict[str, str]
+ Dictionary with received arguments dictionary.
+
+ Returns
+ -------
+ Dict[str, Any]
+ Dictionary with report parameters.
+ """
+
+ parameters_dict = extract_parameters(input_path)
+ for key, val in args_dict.items():
+ if key in parameters_dict:
+ parameters_dict[key] = val
+ else:
+ console.print(f"[red]'{key}' not found in notebook parameters.[/red]")
+
+ return parameters_dict
+
+
+@log_start_end(log=logger)
+def create_output_path(input_path: str, parameters_dict: Dict[str, Any]) -> str:
+ """Create path to save rendered report, thus the output path.
+
+ Parameters
+ ----------
+ input_path: str
+ Path of report to be rendered.
+ parameters_dict: Dict[str, Any]
+ Dictionary with report parameters.
+
+ Returns
+ -------
+ str
+ Path of rendered report.
+ """
+
+ report_name = os.path.split(input_path)[-1]
+ param_values = list(parameters_dict.values())
+ args_to_output = f"_{'_'.join(param_values)}" if "_".join(param_values) else ""
+ report_output_name = (
+ f"{datetime.now().strftime('%Y%m%d_%H%M%S')}"
+ + "_"
+ + f"{report_name}{args_to_output}"
+ )
+ output_path = str(USER_REPORTS_DIRECTORY / report_output_name)
+ output_path = output_path.replace(".", "_")
+
+ return output_path
+
+
+@log_start_end(log=logger)
+def execute_notebook(input_path, parameters, output_path):
+ """Execute the input path's notebook with the parameters provided.
+ Then, save it in the output path.
+
+ Parameters
+ ----------
+ input_path: str
+ Path of report to be rendered.
+ parameters: Dict[str, Any]
+ Dictionary with report parameters.
+ output_path: str
+ Path of rendered report.
+ """
+
+ input_path = add_ipynb_extension(input_path)
+
+ try:
+ result = pm.execute_notebook(
+ input_path=input_path,
+ output_path=output_path + ".ipynb",
+ parameters=parameters,
+ )
+
+ if not result["metadata"]["papermill"]["exception"]:
+ console.print(f"\n[green]Notebook:[/green] {output_path}.ipynb")
+ if obbff.OPEN_REPORT_AS_HTML:
+ report_output_path = os.path.join(
+ os.path.abspath(os.path.join(".")), output_path + ".html"
+ )
+ webbrowser.open(f"file://{report_output_path}")
+ console.print(f"\n[green]Report:[/green] {report_output_path}\n")
+ else:
+ console.print("\n")
+ else:
+ console.print("[red]\nReport .html couldn't be created.\n[/red]")
+
+ except pm.PapermillExecutionError as e:
+ console.print(
+ f"[red]An error was encountered in cell [{e.cell_index}], check the notebook:[/red]\n"
+ f"{output_path}\n"
+ )
+
+
+@log_start_end(log=logger)
+def add_ipynb_extension(path: str) -> str:
+ """Add .ipynb extension to path.
+ Parameters
+ ----------
+ path: str
+ Path to notebook file.
+
+ Returns
+ -------
+ str
+ Path to .ipynb file.
+ """
+
+ if not path.endswith(".ipynb"):
+ return path + ".ipynb"
+ return path
+
+
+@log_start_end(log=logger)
+def check_ipynb(path: str) -> str:
+ """Check if there is .ipynb extension in path.
+ This is useful to the controller type check.
+
+ Parameters
+ ----------
+ path: str
+ Path to notebook file.
+
+ Returns
+ -------
+ bool
+ Path if paths endswith .ipynb, else empty string.
+ """
+
+ if not path.endswith(".ipynb"):
+ console.print("[red]Please provide a .ipynb file.[/red]\n")
+ return ""
+ return path
+
+
+def ipykernel_launcher(module_file: str, module_hist_file: str):
+ """This function mocks 'ipykernel_launcher.py' launching a Jupyter notebook kernel.
+
+ It is useful when running python commands inside a frozen application like our
+ installer distribution, where sys.executable[0] is not the path to python
+ interpreter, rather it is the path to the application executable.
+
+ Problem:
+ 'papermill' was trying to execute the following command on a subprocess:
+ $ .../bin/python -m ipykernel_launcher -f ... --HistoryManager.hist_file ...
+
+ 'papermill' was using '.../bin/python' because it is looks for the sys.executable[0],
+ which most of the time leads to the python interpreter. In our frozen app,
+ sys.executable[0] leads to 'OpenBB Terminal/.OpenBB/OpenBBTerminal', which in turn
+ executes 'terminal.py.
+
+ This means that the command was being executed in 'terminal.py'. Consequently,
+ one gets the following error message:
+ $ terminal: error: unrecognized arguments: -m ipykernel_launcher -f ... --HistoryManager.hist_file ...
+
+ Solution:
+ Parse 'papermill' command in the 'terminal_controller', which is what follows
+ 'terminal.py' and here receive the parsed 'papermill' command arguments and
+ route them to IPKernelApp as if this is 'ipykernel_launcher' module
+ - the kernel is launched.
+
+ Source: https://pyinstaller.org/en/stable/runtime-information.html#using-sys-executable-and-sys-argv-0
+
+ Parameters
+ ----------
+ module_file: str
+ Specified connection file.
+ module_hist_file: str
+ History manager file.
+ """
+
+ IPKernelApp.launch_instance(
+ argv=[
+ "-f",
+ module_file,
+ "--HistoryManager.hist_file",
+ module_hist_file,
+ ]
+ )
diff --git a/openbb_terminal/reports/OpenBB_reports_logo.png b/openbb_terminal/reports/templates/OpenBB_reports_logo.png
similarity index 100%
rename from openbb_terminal/reports/OpenBB_reports_logo.png
rename to openbb_terminal/reports/templates/OpenBB_reports_logo.png
diff --git a/openbb_terminal/reports/templates/crypto.ipynb b/openbb_terminal/reports/templates/crypto.ipynb
new file mode 100644
index 00000000000..b2c07846499
--- /dev/null
+++ b/openbb_terminal/reports/templates/crypto.ipynb
@@ -0,0 +1,4231 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "70ba2c8a",
+ "metadata": {},
+ "source": [
+ "## Notebook setup"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "driven-billion",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import os\n",
+ "import io\n",
+ "import warnings\n",
+ "import datetime\n",
+ "import numpy as np\n",
+ "import base64\n",
+ "import pandas as pd\n",
+ "\n",
+ "import matplotlib.pyplot as plt\n",
+ "import matplotlib_inline.backend_inline\n",
+ "\n",
+ "from IPython.display import HTML\n",
+ "\n",
+ "# import sys\n",
+ "# sys.path.append('../../')\n",
+ "\n",
+ "from openbb_terminal.sdk import widgets\n",
+ "from openbb_terminal.sdk import openbb\n",
+ "from openbb_terminal.helper_classes import TerminalStyle\n",
+ "from openbb_terminal.core.config.paths import REPOSITORY_DIRECTORY\n",
+ "\n",
+ "%matplotlib inline\n",
+ "matplotlib_inline.backend_inline.set_matplotlib_formats(\"svg\")\n",
+ "warnings.filterwarnings(\"ignore\")\n",
+ "\n",
+ "pd.set_option(\"display.float_format\", lambda x: \"%.5f\" % x)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "c3fe7db5-ec6a-42cf-9e66-52dc1de22370",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "try:\n",
+ " theme = TerminalStyle(\"light\", \"light\", \"light\")\n",
+ "except:\n",
+ " pass\n",
+ "stylesheet = widgets.html_report_stylesheet()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "807fda4e",
+ "metadata": {},
+ "source": [
+ "## Select Ticker"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "intended-sherman",
+ "metadata": {
+ "tags": [
+ "parameters"
+ ]
+ },
+ "outputs": [],
+ "source": [
+ "# Parameters that will be replaced when calling this notebook\n",
+ "# Do not leave parameters blank as notebook will not run otherwise\n",
+ "symbol = \"BTC\"\n",
+ "report_name = f\"Crypto Report for {symbol}\""
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "2c46efb8",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ticker = symbol"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "d4897334",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "('INVESTMENT RESEARCH REPORT ON BTC',\n",
+ " '21 October, 2022',\n",
+ " '19:28',\n",
+ " datetime.timezone(datetime.timedelta(seconds=3600), 'WEST'))"
+ ]
+ },
+ "execution_count": 17,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "author = \"\"\n",
+ "report_title = f\"INVESTMENT RESEARCH REPORT ON {ticker.upper()}\"\n",
+ "report_date = datetime.datetime.now().strftime(\"%d %B, %Y\")\n",
+ "report_time = datetime.datetime.now().strftime(\"%H:%M\")\n",
+ "report_timezone = datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo\n",
+ "report_title, report_date, report_time, report_timezone"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "35d9a943",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# basic info\n",
+ "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import get_coinpaprika_id\n",
+ "\n",
+ "cp_id = get_coinpaprika_id(ticker)\n",
+ "basic_info = openbb.crypto.dd.basic(cp_id)\n",
+ "if not basic_info.empty:\n",
+ " basic_info = basic_info.set_index(\"Metric\")\n",
+ " basic_info"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "091d305e",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
Fetching data. Please be patient \n",
+ "\n",
+ " \n"
+ ],
+ "text/plain": [
+ "\u001b[33mFetching data. Please be patient\u001b[0m\n",
+ "\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " title \n",
+ " link \n",
+ " \n",
+ " \n",
+ " published \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2022-10-21 18:01:55+00:00 \n",
+ " Free BTC Faucet: What Is It And What Are Its B... \n",
+ " <a href=\"https://news.google.com/__i/rss/rd/ar... \n",
+ " \n",
+ " \n",
+ " 2022-10-21 17:37:15+00:00 \n",
+ " Bitcoin Predictions: Why 55 Crypto Pros See BT... \n",
+ " <a href=\"https://news.google.com/__i/rss/rd/ar... \n",
+ " \n",
+ " \n",
+ " 2022-10-21 17:30:47+00:00 \n",
+ " These Bitcoin [BTC] liquidation stats can help... \n",
+ " <a href=\"https://news.google.com/__i/rss/rd/ar... \n",
+ " \n",
+ " \n",
+ " 2022-10-21 17:01:50+00:00 \n",
+ " Bitcoin Adoption: Relai Builds With Checkout.c... \n",
+ " <a href=\"https://news.google.com/__i/rss/rd/ar... \n",
+ " \n",
+ " \n",
+ " 2022-10-21 16:55:41+00:00 \n",
+ " Tesla Holds On to $218,000,000 Bitcoin (BTC) P... \n",
+ " <a href=\"https://news.google.com/__i/rss/rd/ar... \n",
+ " \n",
+ " \n",
+ " 2022-10-21 16:08:17+00:00 \n",
+ " Will ETH Continue in Its Five-Year Downtrend V... \n",
+ " <a href=\"https://news.google.com/__i/rss/rd/ar... \n",
+ " \n",
+ " \n",
+ " 2022-10-21 15:10:00+00:00 \n",
+ " 3 historically accurate Bitcoin on-chain metri... \n",
+ " <a href=\"https://news.google.com/__i/rss/rd/ar... \n",
+ " \n",
+ " \n",
+ " 2022-10-21 15:04:11+00:00 \n",
+ " SUSHI to BTC prediction | SushiSwap Showing Si... \n",
+ " <a href=\"https://news.google.com/__i/rss/rd/ar... \n",
+ " \n",
+ " \n",
+ " 2022-10-21 14:44:31+00:00 \n",
+ " Investment Giant Fidelity Plans Crypto Expansi... \n",
+ " <a href=\"https://news.google.com/__i/rss/rd/ar... \n",
+ " \n",
+ " \n",
+ " 2022-10-21 14:34:00+00:00 \n",
+ " Bitcoin, ether slipping even with stock market... \n",
+ " <a href=\"https://news.google.com/__i/rss/rd/ar... \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " title \\\n",
+ "published \n",
+ "2022-10-21 18:01:55+00:00 Free BTC Faucet: What Is It And What Are Its B... \n",
+ "2022-10-21 17:37:15+00:00 Bitcoin Predictions: Why 55 Crypto Pros See BT... \n",
+ "2022-10-21 17:30:47+00:00 These Bitcoin [BTC] liquidation stats can help... \n",
+ "2022-10-21 17:01:50+00:00 Bitcoin Adoption: Relai Builds With Checkout.c... \n",
+ "2022-10-21 16:55:41+00:00 Tesla Holds On to $218,000,000 Bitcoin (BTC) P... \n",
+ "2022-10-21 16:08:17+00:00 Will ETH Continue in Its Five-Year Downtrend V... \n",
+ "2022-10-21 15:10:00+00:00 3 historically accurate Bitcoin on-chain metri... \n",
+ "2022-10-21 15:04:11+00:00 SUSHI to BTC prediction | SushiSwap Showing Si... \n",
+ "2022-10-21 14:44:31+00:00 Investment Giant Fidelity Plans Crypto Expansi... \n",
+ "2022-10-21 14:34:00+00:00 Bitcoin, ether slipping even with stock market... \n",
+ "\n",
+ " link \n",
+ "published \n",
+ "2022-10-21 18:01:55+00:00 {x} ')\n",
+ "news"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "bd281ab8",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "links = openbb.crypto.dd.links(ticker)\n",
+ "\n",
+ "if not links.empty:\n",
+ " links = links.set_index(\"Name\")\n",
+ "\n",
+ " links[\"Link\"] = links[\"Link\"].apply(lambda x: f'{x} ')\n",
+ "\n",
+ " links"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "9b73e41f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# alt index\n",
+ "\n",
+ "# fig, ax = plt.subplots(figsize=(11, 5), dpi=150)\n",
+ "# openbb.crypto.ov.altindex(external_axes=[ax], chart=True)\n",
+ "# fig.tight_layout()\n",
+ "# f = io.BytesIO()\n",
+ "# fig.savefig(f, format=\"svg\")\n",
+ "# altindex = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "07d09ce8",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "five_year = datetime.datetime.now() - datetime.timedelta(days=1825)\n",
+ "three_year = datetime.datetime.now() - datetime.timedelta(days=1095)\n",
+ "one_year = datetime.datetime.now() - datetime.timedelta(days=365)\n",
+ "three_months = datetime.datetime.now() - datetime.timedelta(days=90)\n",
+ "\n",
+ "dates = {\n",
+ " \"three_months\": three_months,\n",
+ " \"one_year\": one_year,\n",
+ " \"three_year\": three_year,\n",
+ " \"five_year\": five_year,\n",
+ "}"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "e6d6d43d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def get_historical_data(ticker, dict_of_dates, is_plot=True):\n",
+ "\n",
+ " list_of_historical_data = []\n",
+ "\n",
+ " for date in dict_of_dates:\n",
+ " data = openbb.crypto.load(\n",
+ " symbol=ticker,\n",
+ " start_date=dict_of_dates[date],\n",
+ " )\n",
+ "\n",
+ " # we'll be using the adjusted close price as same as close price\n",
+ " data[\"Adj Close\"] = data[\"Close\"]\n",
+ "\n",
+ " if is_plot:\n",
+ " fig, ax = plt.subplots(figsize=(11, 3), dpi=150)\n",
+ " plt.suptitle(\n",
+ " f\"{date} historical data for {ticker.upper()}\",\n",
+ " fontsize=14,\n",
+ " color=\"black\",\n",
+ " )\n",
+ " data.plot(y=\"Close\", ax=ax)\n",
+ " plt.ylabel(\"USDT\")\n",
+ "\n",
+ " fig.tight_layout()\n",
+ " f = io.BytesIO()\n",
+ " fig.savefig(f, format=\"svg\")\n",
+ " plot_data = f.getvalue().decode(\"utf-8\")\n",
+ "\n",
+ " list_of_historical_data.append(plot_data)\n",
+ " else:\n",
+ " list_of_historical_data.append(data)\n",
+ "\n",
+ " return list_of_historical_data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "ed19a708",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": "\n\n\n \n \n \n \n 2022-10-21T19:28:48.268944 \n image/svg+xml \n \n \n Matplotlib v3.5.3, https://matplotlib.org/ \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/svg+xml": "\n\n\n \n \n \n \n 2022-10-21T19:28:48.389156 \n image/svg+xml \n \n \n Matplotlib v3.5.3, https://matplotlib.org/ \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/svg+xml": "\n\n\n \n \n \n \n 2022-10-21T19:28:48.482369 \n image/svg+xml \n \n \n Matplotlib v3.5.3, https://matplotlib.org/ \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/svg+xml": "\n\n\n \n \n \n \n 2022-10-21T19:28:48.552492 \n image/svg+xml \n \n \n Matplotlib v3.5.3, https://matplotlib.org/ \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "try:\n",
+ " historical_data = get_historical_data(ticker, dates)\n",
+ "except Exception as e:\n",
+ " raise KeyboardInterrupt"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "id": "8f815dbc",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " Open \n",
+ " High \n",
+ " Low \n",
+ " Close \n",
+ " Volume \n",
+ " Adj Close \n",
+ " \n",
+ " \n",
+ " date \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2021-10-22 \n",
+ " 62193.15000 \n",
+ " 63732.39000 \n",
+ " 60000.00000 \n",
+ " 60688.22000 \n",
+ " 52119.35886 \n",
+ " 60688.22000 \n",
+ " \n",
+ " \n",
+ " 2021-10-23 \n",
+ " 60688.23000 \n",
+ " 61747.64000 \n",
+ " 59562.15000 \n",
+ " 61286.75000 \n",
+ " 27626.93678 \n",
+ " 61286.75000 \n",
+ " \n",
+ " \n",
+ " 2021-10-24 \n",
+ " 61286.75000 \n",
+ " 61500.00000 \n",
+ " 59510.63000 \n",
+ " 60852.22000 \n",
+ " 31226.57676 \n",
+ " 60852.22000 \n",
+ " \n",
+ " \n",
+ " 2021-10-25 \n",
+ " 60852.22000 \n",
+ " 63710.63000 \n",
+ " 60650.00000 \n",
+ " 63078.78000 \n",
+ " 36853.83806 \n",
+ " 63078.78000 \n",
+ " \n",
+ " \n",
+ " 2021-10-26 \n",
+ " 63078.78000 \n",
+ " 63293.48000 \n",
+ " 59817.55000 \n",
+ " 60328.81000 \n",
+ " 40217.50083 \n",
+ " 60328.81000 \n",
+ " \n",
+ " \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " ... \n",
+ " \n",
+ " \n",
+ " 2022-10-17 \n",
+ " 19262.98000 \n",
+ " 19676.96000 \n",
+ " 19152.03000 \n",
+ " 19549.86000 \n",
+ " 222813.87634 \n",
+ " 19549.86000 \n",
+ " \n",
+ " \n",
+ " 2022-10-18 \n",
+ " 19548.48000 \n",
+ " 19706.66000 \n",
+ " 19091.00000 \n",
+ " 19327.44000 \n",
+ " 260313.07848 \n",
+ " 19327.44000 \n",
+ " \n",
+ " \n",
+ " 2022-10-19 \n",
+ " 19327.44000 \n",
+ " 19360.16000 \n",
+ " 19065.97000 \n",
+ " 19123.97000 \n",
+ " 186137.29538 \n",
+ " 19123.97000 \n",
+ " \n",
+ " \n",
+ " 2022-10-20 \n",
+ " 19123.35000 \n",
+ " 19347.82000 \n",
+ " 18900.00000 \n",
+ " 19041.92000 \n",
+ " 223530.13068 \n",
+ " 19041.92000 \n",
+ " \n",
+ " \n",
+ " 2022-10-21 \n",
+ " 19041.92000 \n",
+ " 19229.00000 \n",
+ " 18650.00000 \n",
+ " 19139.03000 \n",
+ " 231923.82898 \n",
+ " 19139.03000 \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
365 rows × 6 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Open High Low Close Volume \\\n",
+ "date \n",
+ "2021-10-22 62193.15000 63732.39000 60000.00000 60688.22000 52119.35886 \n",
+ "2021-10-23 60688.23000 61747.64000 59562.15000 61286.75000 27626.93678 \n",
+ "2021-10-24 61286.75000 61500.00000 59510.63000 60852.22000 31226.57676 \n",
+ "2021-10-25 60852.22000 63710.63000 60650.00000 63078.78000 36853.83806 \n",
+ "2021-10-26 63078.78000 63293.48000 59817.55000 60328.81000 40217.50083 \n",
+ "... ... ... ... ... ... \n",
+ "2022-10-17 19262.98000 19676.96000 19152.03000 19549.86000 222813.87634 \n",
+ "2022-10-18 19548.48000 19706.66000 19091.00000 19327.44000 260313.07848 \n",
+ "2022-10-19 19327.44000 19360.16000 19065.97000 19123.97000 186137.29538 \n",
+ "2022-10-20 19123.35000 19347.82000 18900.00000 19041.92000 223530.13068 \n",
+ "2022-10-21 19041.92000 19229.00000 18650.00000 19139.03000 231923.82898 \n",
+ "\n",
+ " Adj Close \n",
+ "date \n",
+ "2021-10-22 60688.22000 \n",
+ "2021-10-23 61286.75000 \n",
+ "2021-10-24 60852.22000 \n",
+ "2021-10-25 63078.78000 \n",
+ "2021-10-26 60328.81000 \n",
+ "... ... \n",
+ "2022-10-17 19549.86000 \n",
+ "2022-10-18 19327.44000 \n",
+ "2022-10-19 19123.97000 \n",
+ "2022-10-20 19041.92000 \n",
+ "2022-10-21 19139.03000 \n",
+ "\n",
+ "[365 rows x 6 columns]"
+ ]
+ },
+ "execution_count": 25,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "historical_data_one_year = get_historical_data(ticker, {\"one_year\": one_year}, False)[0]\n",
+ "historical_data_one_year"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "id": "081a4bb3",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n"
+ ],
+ "text/plain": [
+ "\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n"
+ ],
+ "text/plain": [
+ "\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " BTC/USDT Performance \n",
+ "┏━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┓\n",
+ "┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃\n",
+ "┃ Price (USDT) ┃ 1D ┃ 7D ┃ 1M ┃ YTD ┃ Volatility (Ann) ┃ Volume (7D avg) ┃ Circulating Supply ┃\n",
+ "┡━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━┩\n",
+ "│ 19139.03 │ 0.08 % │ -0.2 % │ 3.67 % │ -59.53 % │ 64.45 % │ 238.06 K │ 19.186 M │\n",
+ "└──────────────┴────────┴────────┴────────┴──────────┴──────────────────┴─────────────────┴────────────────────┘\n",
+ " \n"
+ ],
+ "text/plain": [
+ "\u001b[3m BTC/USDT Performance \u001b[0m\n",
+ "┏━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━┓\n",
+ "┃\u001b[1m \u001b[0m\u001b[1m \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m┃\n",
+ "┃\u001b[1m \u001b[0m\u001b[1mPrice (USDT)\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m1D \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m7D \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m1M \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mYTD \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mVolatility (Ann)\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mVolume (7D avg)\u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mCirculating Supply\u001b[0m\u001b[1m \u001b[0m┃\n",
+ "┡━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━┩\n",
+ "│ 19139.03 │ \u001b[32m0.08 %\u001b[0m │ \u001b[31m-0.2 %\u001b[0m │ \u001b[32m3.67 %\u001b[0m │ \u001b[31m-59.53 %\u001b[0m │ 64.45 % │ 238.06 K │ 19.186 M │\n",
+ "└──────────────┴────────┴────────┴────────┴──────────┴──────────────────┴─────────────────┴────────────────────┘\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n"
+ ],
+ "text/plain": [
+ "\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import show_quick_performance\n",
+ "\n",
+ "show_quick_performance(\n",
+ " crypto_df=historical_data_one_year,\n",
+ " symbol=ticker,\n",
+ " current_currency=\"USDT\",\n",
+ " source=\"cctx\",\n",
+ " exchange=\"binance\",\n",
+ " interval=\"1440\",\n",
+ ")\n",
+ "\n",
+ "fig = plt.figure(figsize=(11, 3), dpi=150)\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "quick_performance = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "id": "88af0fbe",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": "\n\n\n \n \n \n \n 2022-10-21T19:28:52.059193 \n image/svg+xml \n \n \n Matplotlib v3.5.3, https://matplotlib.org/ \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, ax = plt.subplots(figsize=(11, 3), dpi=150)\n",
+ "openbb.crypto.dd.headlines(ticker, external_axes=[ax], chart=True)\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "headlines = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "id": "3b23868d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(11, 5), dpi=150)\n",
+ "# openbb.crypto.chart(\n",
+ "# historical_data_one_year,\n",
+ "# symbol=ticker,\n",
+ "# currency=\"USDT\",\n",
+ "# source=\"cctx\",\n",
+ "# exchange=\"binance\",\n",
+ "# interval=\"1440\",\n",
+ "# external_axes=[ax1, ax2],\n",
+ "# )\n",
+ "# fig.tight_layout()\n",
+ "# f = io.BytesIO()\n",
+ "# fig.savefig(f, format=\"svg\")\n",
+ "# one_year_candle = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "id": "e4509c6e",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n"
+ ],
+ "text/plain": [
+ "\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/svg+xml": "\n\n\n \n \n \n \n 2022-10-21T19:28:52.811490 \n image/svg+xml \n \n \n Matplotlib v3.5.3, https://matplotlib.org/ \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(11, 5), dpi=150)\n",
+ "openbb.crypto.chart(\n",
+ " historical_data_one_year,\n",
+ " to_symbol=ticker,\n",
+ " from_symbol=\"USDT\",\n",
+ " source=\"cctx\",\n",
+ " exchange=\"binance\",\n",
+ " interval=\"1440\",\n",
+ " external_axes=[ax1, ax2],\n",
+ " chart=True,\n",
+ ")\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "candle_one_year = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "7f83daae",
+ "metadata": {},
+ "source": [
+ "## Due Diligence"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "id": "93d66cf1",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": "\n\n\n \n \n \n \n 2022-10-21T19:28:55.147348 \n image/svg+xml \n \n \n Matplotlib v3.5.3, https://matplotlib.org/ \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# market cap dominance\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(11, 5), dpi=150)\n",
+ "openbb.crypto.dd.mcapdom(symbol=ticker, external_axes=[ax], chart=True)\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "mcapdom = f.getvalue().decode(\"utf-8\")\n",
+ "mcapdom_df = openbb.crypto.dd.mcapdom(symbol=ticker)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "id": "284b0586",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n"
+ ],
+ "text/plain": [
+ "\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " BTC Roadmap \n",
+ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n",
+ "┃ Title ┃ Date ┃ Details ┃\n",
+ "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n",
+ "│ Whitepaper │ 2008-10-31 │ Satoshi Nakamoto published the Bitcoin whitepaper │\n",
+ "├────────────────────────────────────┼────────────┼───────────────────────────────────────────────────────────────┤\n",
+ "│ Genesis Block │ 2009-01-03 │ Bitcoin's genesis block is mined │\n",
+ "├────────────────────────────────────┼────────────┼───────────────────────────────────────────────────────────────┤\n",
+ "│ M-of-N Standard Transactions │ 2011-10-02 │ BIP 011 implemented M-of-N-signatures required transactions │\n",
+ "│ │ │ as a new 'standard' transaction type. This BIP enabled │\n",
+ "│ │ │ secured wallets, escrow transactions, and other use cases │\n",
+ "│ │ │ where redeeming funds requires more than a single signature. │\n",
+ "│ │ │ │\n",
+ "├────────────────────────────────────┼────────────┼───────────────────────────────────────────────────────────────┤\n",
+ "│ Pay to Script Hash │ 2012-01-03 │ BIP 016, building off of BIP 013, which introduced Pay to │\n",
+ "│ │ │ Script Hash address types, implemented a new \"standard\" │\n",
+ "│ │ │ transaction type for the Bitcoin scripting system and defined │\n",
+ "│ │ │ additional validation rules that apply only to the new │\n",
+ "│ │ │ transactions. │\n",
+ "│ │ │ │\n",
+ "│ │ │ The BIP moved the responsibility for supplying the conditions │\n",
+ "│ │ │ to redeem a transaction from the sender of the funds to the │\n",
+ "│ │ │ redeemer. Furthermore, it allowed a sender to fund any │\n",
+ "│ │ │ arbitrary transaction, no matter how complicated, using a │\n",
+ "│ │ │ fixed-length 20-byte hash that is short enough to scan from a │\n",
+ "│ │ │ QR code or easily copied and pasted │\n",
+ "├────────────────────────────────────┼────────────┼───────────────────────────────────────────────────────────────┤\n",
+ "│ Hierarchical Deterministic Wallets │ 2012-02-11 │ BIP 032 introduced Hierarchical Deterministic Wallets (\"HD │\n",
+ "│ │ │ Wallets\"), wallets that can be shared partially or entirely │\n",
+ "│ │ │ with different systems, each with or without the ability to │\n",
+ "│ │ │ spend coins. HD wallets allow for numerous cryptocurrency │\n",
+ "│ │ │ wallets (public-private key pairs) to be generated from a │\n",
+ "│ │ │ single seed phrase. │\n",
+ "└────────────────────────────────────┴────────────┴───────────────────────────────────────────────────────────────┘\n",
+ " \n"
+ ],
+ "text/plain": [
+ "\u001b[3m BTC Roadmap \u001b[0m\n",
+ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n",
+ "┃\u001b[1m \u001b[0m\u001b[1mTitle \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mDate \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mDetails \u001b[0m\u001b[1m \u001b[0m┃\n",
+ "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n",
+ "│ Whitepaper │ 2008-10-31 │ Satoshi Nakamoto published the Bitcoin whitepaper │\n",
+ "├────────────────────────────────────┼────────────┼───────────────────────────────────────────────────────────────┤\n",
+ "│ Genesis Block │ 2009-01-03 │ Bitcoin's genesis block is mined │\n",
+ "├────────────────────────────────────┼────────────┼───────────────────────────────────────────────────────────────┤\n",
+ "│ M-of-N Standard Transactions │ 2011-10-02 │ BIP 011 implemented M-of-N-signatures required transactions │\n",
+ "│ │ │ as a new 'standard' transaction type. This BIP enabled │\n",
+ "│ │ │ secured wallets, escrow transactions, and other use cases │\n",
+ "│ │ │ where redeeming funds requires more than a single signature. │\n",
+ "│ │ │ │\n",
+ "├────────────────────────────────────┼────────────┼───────────────────────────────────────────────────────────────┤\n",
+ "│ Pay to Script Hash │ 2012-01-03 │ BIP 016, building off of BIP 013, which introduced Pay to │\n",
+ "│ │ │ Script Hash address types, implemented a new \"standard\" │\n",
+ "│ │ │ transaction type for the Bitcoin scripting system and defined │\n",
+ "│ │ │ additional validation rules that apply only to the new │\n",
+ "│ │ │ transactions. │\n",
+ "│ │ │ │\n",
+ "│ │ │ The BIP moved the responsibility for supplying the conditions │\n",
+ "│ │ │ to redeem a transaction from the sender of the funds to the │\n",
+ "│ │ │ redeemer. Furthermore, it allowed a sender to fund any │\n",
+ "│ │ │ arbitrary transaction, no matter how complicated, using a │\n",
+ "│ │ │ fixed-length 20-byte hash that is short enough to scan from a │\n",
+ "│ │ │ QR code or easily copied and pasted │\n",
+ "├────────────────────────────────────┼────────────┼───────────────────────────────────────────────────────────────┤\n",
+ "│ Hierarchical Deterministic Wallets │ 2012-02-11 │ BIP 032 introduced Hierarchical Deterministic Wallets (\"HD │\n",
+ "│ │ │ Wallets\"), wallets that can be shared partially or entirely │\n",
+ "│ │ │ with different systems, each with or without the ability to │\n",
+ "│ │ │ spend coins. HD wallets allow for numerous cryptocurrency │\n",
+ "│ │ │ wallets (public-private key pairs) to be generated from a │\n",
+ "│ │ │ single seed phrase. │\n",
+ "└────────────────────────────────────┴────────────┴───────────────────────────────────────────────────────────────┘\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/svg+xml": "\n\n\n \n \n \n \n 2022-10-21T19:28:57.250132 \n image/svg+xml \n \n \n Matplotlib v3.5.3, https://matplotlib.org/ \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# roadmap\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(11, 5), dpi=150)\n",
+ "openbb.crypto.dd.rm(symbol=ticker, external_axes=[ax], chart=True)\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "roadmap_view = f.getvalue().decode(\"utf-8\")\n",
+ "\n",
+ "roadmap_model = openbb.crypto.dd.rm(symbol=ticker)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "id": "f496d047",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "if not roadmap_model.empty:\n",
+ " roadmap_model = roadmap_model.set_index(\"Date\")\n",
+ " roadmap_model.sort_index()\n",
+ " roadmap_model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "id": "9ddbc654",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ " \n"
+ ],
+ "text/plain": [
+ "\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ " BTC Tokenomics \n",
+ "┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n",
+ "┃ Metric ┃ Value ┃\n",
+ "┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n",
+ "│ Emission Type │ Inflationary │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Consensus Mechanism │ Proof-of-Work │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Consensus Details │ Consensus │\n",
+ "│ │ Bitcoin pioneered and currently uses <a │\n",
+ "│ │ href=\"https://messari.io/article/nakamoto-consensus\">Nakamoto Consensus</a> whereby the │\n",
+ "│ │ valid chain is the longest chain with the most accumulated <a │\n",
+ "│ │ href=\"https://messari.io/resource/proof-of-work\">proof-of-work</a>. Consensus in Bitcoin, │\n",
+ "│ │ and other systems using Nakamoto Conensus, is probabilistic because there is always a │\n",
+ "│ │ chance that a new, longer competing chain could emerge with more accumulated │\n",
+ "│ │ proof-of-work, that would invalidate the current chain. │\n",
+ "│ │ │\n",
+ "│ │ Learn More: │\n",
+ "│ │ How Does Distributed Consensus Work Anyways? │\n",
+ "│ │ <a href=\"https://messari.io/article/nakamoto-consensus\">Nakamoto Consensus</a> │\n",
+ "│ │ │\n",
+ "│ │ Mining │\n",
+ "│ │ Miners solve computational puzzles to generate new blocks using a <a │\n",
+ "│ │ href=\"https://messari.io/resource/sha-256\">SHA-256</a> algorithm. In this process, miners │\n",
+ "│ │ compete to generate a <a href=\"https://messari.io/blog/hash-function\">hash</a> less than │\n",
+ "│ │ the target number set by Bitcoin's <a │\n",
+ "│ │ href=\"https://messari.io/resource/difficulty-level\">difficulty adjustment algorithm</a>. │\n",
+ "│ │ The target difficulty level is adjusted every 2016 blocks. │\n",
+ "│ │ │\n",
+ "│ │ Although open to anyone with a CPU, Bitcoin mining is now dominated by <a │\n",
+ "│ │ href=\"https://messari.io/resource/application-specific-integrated-circuits-asics\">ASICs<… │\n",
+ "│ │ situated in enterprise-scale data centers. In order to smooth individual miner revenue as │\n",
+ "│ │ mining has become more competitive, mining is now done in pools where participants │\n",
+ "│ │ contribute <a href=\"https://messari.io/resource/hash-power\">hash power</a> to the pool │\n",
+ "│ │ and receive a proportional share of the profits if the pool finds a valid block. │\n",
+ "│ │ │\n",
+ "│ │ Learn More: │\n",
+ "│ │ <a href=\"https://messari.io/resource/mining\">Cryptocurrency Mining</a> │\n",
+ "│ │ State of Cryptocurrency Mining │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Mining Algorithm │ SHA-256 │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Block Reward │ - │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Block time │ 10 │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Total Supply │ 21 M │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Max Supply │ 21 M │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Circulating Supply │ 19.19 M │\n",
+ "└─────────────────────┴───────────────────────────────────────────────────────────────────────────────────────────┘\n",
+ " \n"
+ ],
+ "text/plain": [
+ "\u001b[3m BTC Tokenomics \u001b[0m\n",
+ "┏━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n",
+ "┃\u001b[1m \u001b[0m\u001b[1mMetric \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mValue \u001b[0m\u001b[1m \u001b[0m┃\n",
+ "┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩\n",
+ "│ Emission Type │ Inflationary │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Consensus Mechanism │ Proof-of-Work │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Consensus Details │ Consensus │\n",
+ "│ │ Bitcoin pioneered and currently uses Nakamoto Consensus whereby the │\n",
+ "│ │ valid chain is the longest chain with the most accumulated proof-of-work . Consensus in Bitcoin, │\n",
+ "│ │ and other systems using Nakamoto Conensus, is probabilistic because there is always a │\n",
+ "│ │ chance that a new, longer competing chain could emerge with more accumulated │\n",
+ "│ │ proof-of-work, that would invalidate the current chain. │\n",
+ "│ │ │\n",
+ "│ │ Learn More: │\n",
+ "│ │ How Does Distributed Consensus Work Anyways? │\n",
+ "│ │ Nakamoto Consensus │\n",
+ "│ │ │\n",
+ "│ │ Mining │\n",
+ "│ │ Miners solve computational puzzles to generate new blocks using a SHA-256 algorithm. In this process, miners │\n",
+ "│ │ compete to generate a hash less than │\n",
+ "│ │ the target number set by Bitcoin's difficulty adjustment algorithm . │\n",
+ "│ │ The target difficulty level is adjusted every 2016 blocks. │\n",
+ "│ │ │\n",
+ "│ │ Although open to anyone with a CPU, Bitcoin mining is now dominated by ASICs<… │\n",
+ "│ │ situated in enterprise-scale data centers. In order to smooth individual miner revenue as │\n",
+ "│ │ mining has become more competitive, mining is now done in pools where participants │\n",
+ "│ │ contribute hash power to the pool │\n",
+ "│ │ and receive a proportional share of the profits if the pool finds a valid block. │\n",
+ "│ │ │\n",
+ "│ │ Learn More: │\n",
+ "│ │ Cryptocurrency Mining │\n",
+ "│ │ State of Cryptocurrency Mining │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Mining Algorithm │ SHA-256 │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Block Reward │ - │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Block time │ 10 │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Total Supply │ 21 M │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Max Supply │ 21 M │\n",
+ "├─────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────┤\n",
+ "│ Circulating Supply │ 19.19 M │\n",
+ "└─────────────────────┴───────────────────────────────────────────────────────────────────────────────────────────┘\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/svg+xml": "\n\n\n \n \n \n \n 2022-10-21T19:29:00.221547 \n image/svg+xml \n \n \n Matplotlib v3.5.3, https://matplotlib.org/ \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "fig, ax1 = plt.subplots(figsize=(11, 5), dpi=150)\n",
+ "ax2 = ax1.twinx()\n",
+ "openbb.crypto.dd.tk(symbol=ticker, external_axes=[ax1, ax2], chart=True)\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "tokenomics_view = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "id": "aecd816f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "tokenomics_model = openbb.crypto.dd.rm(symbol=ticker)\n",
+ "if not tokenomics_model.empty:\n",
+ " tokenomics_model = tokenomics_model.set_index(\"Date\")\n",
+ " tokenomics_model.sort_index()\n",
+ " tokenomics_model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "id": "7d02fcc4",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# fundraise\n",
+ "\n",
+ "fundraise = openbb.crypto.dd.fr(symbol=ticker)\n",
+ "fundraise_info = fundraise[0]\n",
+ "fundraise_df = fundraise[1]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 36,
+ "id": "5e625a2e",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ " Metric Value\n",
+ "0 id BTC-USDT\n",
+ "1 base_currency BTC\n",
+ "2 quote_currency USDT\n",
+ "3 quote_increment 0.01\n",
+ "4 base_increment 0.00000001\n",
+ "5 display_name BTC/USDT\n",
+ "6 min_market_funds 1\n",
+ "7 margin_enabled False\n",
+ "8 fx_stablecoin False\n",
+ "9 max_slippage_percentage 0.03000000\n",
+ "10 post_only False\n",
+ "11 limit_only False\n",
+ "12 cancel_only False\n",
+ "13 trading_disabled False\n",
+ "14 status online\n",
+ "15 status_message \n",
+ "16 auction_mode False\n",
+ " \n"
+ ],
+ "text/plain": [
+ " Metric Value\n",
+ "0 id BTC-USDT\n",
+ "1 base_currency BTC\n",
+ "2 quote_currency USDT\n",
+ "3 quote_increment 0.01\n",
+ "4 base_increment 0.00000001\n",
+ "5 display_name BTC/USDT\n",
+ "6 min_market_funds 1\n",
+ "7 margin_enabled False\n",
+ "8 fx_stablecoin False\n",
+ "9 max_slippage_percentage 0.03000000\n",
+ "10 post_only False\n",
+ "11 limit_only False\n",
+ "12 cancel_only False\n",
+ "13 trading_disabled False\n",
+ "14 status online\n",
+ "15 status_message \n",
+ "16 auction_mode False\n"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "trading_pair_info = openbb.crypto.dd.trading_pair_info(f\"{ticker}-USDT\")\n",
+ "if not trading_pair_info.empty:\n",
+ " trading_pair_info = trading_pair_info.set_index(\"Metric\")\n",
+ " trading_pair_info"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 37,
+ "id": "8f33b4d8",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import openbb_terminal.cryptocurrency.due_diligence.pycoingecko_model as gecko\n",
+ "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import get_coingecko_id\n",
+ "\n",
+ "ath = pd.DataFrame()\n",
+ "try:\n",
+ " cg_id = get_coingecko_id(symbol=ticker)\n",
+ " coin = gecko.Coin(ticker)\n",
+ " ath = coin.get_all_time_high(currency=cg_id)\n",
+ "\n",
+ "except Exception as e:\n",
+ " # ath = str(\"Reached coingecko API limit\")\n",
+ " pass"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "id": "2a82e990",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import openbb_terminal.cryptocurrency.due_diligence.pycoingecko_model as gecko\n",
+ "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import get_coingecko_id\n",
+ "\n",
+ "atl = pd.DataFrame()\n",
+ "try:\n",
+ " cg_id = get_coingecko_id(symbol=ticker)\n",
+ " coin = gecko.Coin(ticker)\n",
+ " atl = coin.get_all_time_low(currency=cg_id)\n",
+ "\n",
+ "except Exception as e:\n",
+ " # atl = str(\"Reached coingecko API limit\")\n",
+ " pass"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 39,
+ "id": "e9e512e9",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# market stats about loaded coin\n",
+ "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import get_coinpaprika_id\n",
+ "\n",
+ "cp_id = get_coinpaprika_id(ticker)\n",
+ "market = openbb.crypto.dd.mkt(cp_id)\n",
+ "\n",
+ "if not market.empty:\n",
+ " market = market.set_index(\"exchange\")\n",
+ "\n",
+ " market[\"market_url\"] = market[\"market_url\"].apply(\n",
+ " lambda x: f'{x} '\n",
+ " )\n",
+ "\n",
+ " market"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "id": "1d6e76cb",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import get_coinpaprika_id\n",
+ "\n",
+ "# all exchanges where loaded coin is listed\n",
+ "cp_id = get_coinpaprika_id(ticker)\n",
+ "ex = openbb.crypto.dd.ex(cp_id)\n",
+ "if not ex.empty:\n",
+ " ex = ex.set_index(\"id\")\n",
+ " ex"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "id": "1fcdbc67",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# last trades\n",
+ "trades = openbb.crypto.dd.trades(symbol=f\"{ticker}-USDT\")\n",
+ "if not trades.empty:\n",
+ " trades = trades.set_index(\"time\")\n",
+ " trades"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "id": "262d190a",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/svg+xml": "\n\n\n \n \n \n \n 2022-10-21T19:29:06.198282 \n image/svg+xml \n \n \n Matplotlib v3.5.3, https://matplotlib.org/ \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# order book\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(11, 5), dpi=150)\n",
+ "openbb.crypto.dd.cbbook(symbol=f\"{ticker}-USDT\", external_axes=[ax], chart=True)\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "order_book = f.getvalue().decode(\"utf-8\")\n",
+ "order_book_raw = openbb.crypto.dd.cbbook(symbol=f\"{ticker}-USDT\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "id": "95cdc32e",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(array([[1.91355400e+04, 2.35000000e-01, 2.35000000e-01],\n",
+ " [1.91347400e+04, 1.90000000e-01, 4.25000000e-01],\n",
+ " [1.91342200e+04, 1.00000000e-01, 5.25000000e-01],\n",
+ " ...,\n",
+ " [3.00000000e-02, 4.20456589e+04, 4.46855221e+08],\n",
+ " [2.00000000e-02, 3.76487830e+04, 4.55025006e+08],\n",
+ " [1.00000000e-02, 2.95478172e+05, 9.10947826e+08]]),\n",
+ " array([[1.91392400e+04, 1.00000000e-01, 4.55500000e-05],\n",
+ " [1.91393900e+04, 3.99509700e-02, 4.04555000e-03],\n",
+ " [1.91400400e+04, 5.00000000e-01, 4.48839000e-03],\n",
+ " ...,\n",
+ " [3.63743500e+04, 4.42840000e-04, 4.88339153e+02],\n",
+ " [3.63797400e+04, 4.00000000e-03, 4.88379104e+02],\n",
+ " [3.63990000e+04, 4.55500000e-05, 4.88479104e+02]]),\n",
+ " 'BTC-USDT',\n",
+ " {'bids': [['19135.54', '0.235', 1],\n",
+ " ['19134.74', '0.19', 1],\n",
+ " ['19134.22', '0.1', 1],\n",
+ " ['19134.21', '0.03976678', 1],\n",
+ " ['19133.53', '0.24329387', 1],\n",
+ " ['19133.34', '0.27323451', 1],\n",
+ " ['19132.3', '0.01024077', 1],\n",
+ " ['19131.65', '0.19443834', 1],\n",
+ " ['19131.6', '0.44000009', 1],\n",
+ " ['19131.32', '0.13068285', 1],\n",
+ " ['19130.91', '0.26137133', 1],\n",
+ " ['19130.14', '0.10455278', 1],\n",
+ " ['19130.13', '0.26138192', 1],\n",
+ " ['19129.28', '0.15683632', 1],\n",
+ " ['19129.27', '0.39209062', 1],\n",
+ " ['19129.14', '0.03905659', 1],\n",
+ " ['19128.86', '0.20911962', 1],\n",
+ " ['19128.85', '0.52279891', 1],\n",
+ " ['19128.41', '0.13639345', 1],\n",
+ " ['19127.77', '0.20913507', 1],\n",
+ " ['19127.76', '0.05262666', 1],\n",
+ " ['19127.44', '0.52283759', 1],\n",
+ " ['19127.25', '0.0106942', 1],\n",
+ " ['19125.81', '0.30470335', 1],\n",
+ " ['19125.8', '0.76175825', 1],\n",
+ " ['19125.68', '0.234', 1],\n",
+ " ['19123.85', '0.03853168', 1],\n",
+ " ['19121.88', '0.10890652', 1],\n",
+ " ['19121.32', '0.20920207', 1],\n",
+ " ['19121.31', '0.52300518', 1],\n",
+ " ['19121.3', '0.05359251', 1],\n",
+ " ['19121.26', '0.1089761', 1],\n",
+ " ['19121.23', '0.50335306', 1],\n",
+ " ['19121.19', '1.00670613', 1],\n",
+ " ['19120.45', '0.10718501', 1],\n",
+ " ['19120.4', '0.77601531', 1],\n",
+ " ['19119.94', '0.235', 1],\n",
+ " ['19119.88', '5.23044171', 1],\n",
+ " ['19118.89', '0.29968428', 1],\n",
+ " ['19118.1', '1.52026641', 1],\n",
+ " ['19115.18', '1.30786108', 1],\n",
+ " ['19115.11', '0.78476214', 1],\n",
+ " ['19114.2', '0.235', 1],\n",
+ " ['19111.3', '2.30059659', 1],\n",
+ " ['19108.94', '0.039', 1],\n",
+ " ['19108.46', '0.234', 1],\n",
+ " ['19105.82', '5.23429', 1],\n",
+ " ['19105.76', '0.07614904', 1],\n",
+ " ['19104.78', '0.1', 1],\n",
+ " ['19103.78', '0.05287843', 1],\n",
+ " ['19102.72', '0.235', 1],\n",
+ " ['19102.7', '3.85460199', 1],\n",
+ " ['19101.77', '0.1', 1],\n",
+ " ['19100.96', '0.1', 1],\n",
+ " ['19100', '0.00221134', 1],\n",
+ " ['19098.57', '0.50408232', 1],\n",
+ " ['19096.98', '0.233', 1],\n",
+ " ['19091.24', '1.407', 2],\n",
+ " ['19090.91', '0.00001168', 1],\n",
+ " ['19085.5', '1.41', 2],\n",
+ " ['19081.2', '2.6205229', 1],\n",
+ " ['19080.79', '6.62551127', 1],\n",
+ " ['19079.76', '1.41', 2],\n",
+ " ['19077.89', '1.897', 1],\n",
+ " ['19073.95', '12.16491713', 1],\n",
+ " ['19051.93', '0.01856098', 1],\n",
+ " ['19050.64', '6.126', 1],\n",
+ " ['19045.25', '7.63754733', 1],\n",
+ " ['19043.96', '0.00010613', 1],\n",
+ " ['19025', '0.00221134', 1],\n",
+ " ['19021', '0.05', 1],\n",
+ " ['19016.55', '4.56358504', 1],\n",
+ " ['19008.97', '1.7057476', 1],\n",
+ " ['19008.96', '0.00010633', 1],\n",
+ " ['19000', '0.125', 3],\n",
+ " ['18995.01', '0.12643623', 1],\n",
+ " ['18992.16', '0.12643623', 1],\n",
+ " ['18989.31', '0.12643623', 1],\n",
+ " ['18983.17', '3.08077199', 1],\n",
+ " ['18974.03', '0.00010653', 1],\n",
+ " ['18964.77', '0.00223541', 1],\n",
+ " ['18959.05', '0.00930795', 1],\n",
+ " ['18954.55', '0.00852883', 1],\n",
+ " ['18950', '0.00221134', 1],\n",
+ " ['18940', '0.01630095', 1],\n",
+ " ['18939.17', '0.00010672', 1],\n",
+ " ['18938.91', '0.00256503', 1],\n",
+ " ['18911', '0.1', 1],\n",
+ " ['18910.97', '0.00219191', 1],\n",
+ " ['18909.38', '0.00211536', 1],\n",
+ " ['18904.36', '0.00010692', 1],\n",
+ " ['18900.52', '0.00052909', 1],\n",
+ " ['18900', '0.0444346', 3],\n",
+ " ['18891.47', '0.00020944', 1],\n",
+ " ['18890', '2.0517088', 1],\n",
+ " ['18888', '0.0026313', 1],\n",
+ " ['18883.39', '0.00142454', 1],\n",
+ " ['18880.51', '0.00052965', 1],\n",
+ " ['18878.48', '0.00053914', 1],\n",
+ " ['18875.49', '0.01856098', 1],\n",
+ " ['18875', '0.00221134', 1],\n",
+ " ['18870.19', '0.00224661', 1],\n",
+ " ['18869.63', '0.00010711', 1],\n",
+ " ['18866.17', '0.00935377', 1],\n",
+ " ['18855.05', '0.00021612', 1],\n",
+ " ['18851.7', '1.5089685', 1],\n",
+ " ['18848.45', '0.00159164', 1],\n",
+ " ['18845.4', '0.00129058', 1],\n",
+ " ['18844.4', '0.00256503', 1],\n",
+ " ['18835.44', '0.004', 1],\n",
+ " ['18834.95', '0.00082599', 2],\n",
+ " ['18834', '0.00061116', 1],\n",
+ " ['18827.15', '0.00014129', 1],\n",
+ " ['18818.18', '0.00859063', 1],\n",
+ " ['18800.34', '0.00010751', 1],\n",
+ " ['18800', '0.7003032', 5],\n",
+ " ['18785.62', '0.00053232', 1],\n",
+ " ['18780.35', '0.00244311', 1],\n",
+ " ['18776.07', '0.00225787', 1],\n",
+ " ['18774.65', '0.00184698', 1],\n",
+ " ['18773.75', '0.00939982', 1],\n",
+ " ['18765.79', '0.00010771', 1],\n",
+ " ['18761.87', '0.00547261', 1],\n",
+ " ['18750.37', '0.00256503', 1],\n",
+ " ['18739.15', '0.01840657', 1],\n",
+ " ['18731.31', '0.00010791', 1],\n",
+ " ['18725', '0.00221134', 1],\n",
+ " ['18722.08', '0.00546072', 1],\n",
+ " ['18720.37', '0.00019694', 1],\n",
+ " ['18718.15', '0.00139973', 1],\n",
+ " ['18716.86', '0.00653312', 1],\n",
+ " ['18715.52', '0.00129953', 1],\n",
+ " ['18706.85', '0.00053914', 1],\n",
+ " ['18700.91', '0.001495', 1],\n",
+ " ['18700.51', '0.01', 1],\n",
+ " ['18700', '0.1', 1],\n",
+ " ['18699.04', '0.01856098', 1],\n",
+ " ['18696.89', '0.0001081', 1],\n",
+ " ['18682.43', '0.00226919', 1],\n",
+ " ['18681.77', '0.0094461', 1],\n",
+ " ['18681.51', '0.00140824', 1],\n",
+ " ['18680.96', '0.00072945', 1],\n",
+ " ['18679.68', '0.00011724', 1],\n",
+ " ['18678.58', '0.00135949', 1],\n",
+ " ['18667.83', '0.00138805', 1],\n",
+ " ['18662.53', '0.0001083', 1],\n",
+ " ['18660.87', '0.00160551', 1],\n",
+ " ['18660', '0.00266345', 1],\n",
+ " ['18656.8', '0.00256503', 1],\n",
+ " ['18650.23', '0.0030919', 1],\n",
+ " ['18650', '0.02891375', 2],\n",
+ " ['18644.37', '0.00146297', 1],\n",
+ " ['18642.04', '0.00021859', 1],\n",
+ " ['18641.64', '0.00195054', 1],\n",
+ " ['18640.2', '0.00107295', 1],\n",
+ " ['18636.7', '0.00131604', 1],\n",
+ " ['18633.98', '0.02138059', 1],\n",
+ " ['18633.87', '0.00160997', 1],\n",
+ " ['18628.24', '0.0001085', 1],\n",
+ " ['18627.74', '0.00075314', 1],\n",
+ " ['18624', '0.02024676', 1],\n",
+ " ['18619.32', '0.000727', 1],\n",
+ " ['18618.32', '0.001', 1],\n",
+ " ['18617.59', '0.001', 1],\n",
+ " ['18616.87', '0.00107429', 1],\n",
+ " ['18616.54', '0.00195232', 1],\n",
+ " ['18612.89', '0.00537262', 1],\n",
+ " ['18611.97', '0.00700987', 1],\n",
+ " ['18609.96', '0.00053735', 1],\n",
+ " ['18605.72', '0.00068116', 1],\n",
+ " ['18600.82', '0.00104951', 1],\n",
+ " ['18600', '0.01105327', 3],\n",
+ " ['18596.47', '0.01204292', 1],\n",
+ " ['18594.01', '0.0001087', 1],\n",
+ " ['18593.55', '0.00107564', 1],\n",
+ " ['18590.25', '0.0094926', 1],\n",
+ " ['18589.25', '0.00228057', 1],\n",
+ " ['18588.69', '0.0002', 1],\n",
+ " ['18586.53', '0.00130855', 1],\n",
+ " ['18585.78', '0.00246869', 1],\n",
+ " ['18580.67', '0.00103449', 1],\n",
+ " ['18575.65', '0.00139196', 1],\n",
+ " ['18575', '0.00221134', 1],\n",
+ " ['18570.22', '0.00107699', 1],\n",
+ " ['18567.15', '0.00091034', 1],\n",
+ " ['18566', '0.25', 1],\n",
+ " ['18563.71', '0.00256503', 1],\n",
+ " ['18559.84', '0.0001089', 1],\n",
+ " ['18558.6', '0.00053883', 1],\n",
+ " ['18556.96', '0.004', 1],\n",
+ " ['18550', '0.8318307', 2],\n",
+ " ['18546.89', '0.00107835', 1],\n",
+ " ['18543.54', '0.00165146', 1],\n",
+ " ['18542.35', '0.0055374', 1],\n",
+ " ['18542.02', '0.00145076', 1],\n",
+ " ['18536.79', '0.00053914', 1],\n",
+ " ['18535.13', '0.00265751', 1],\n",
+ " ['18527', '0.00804771', 1],\n",
+ " ['18525.74', '0.0001091', 1],\n",
+ " ['18523.57', '0.00107971', 1],\n",
+ " ['18522.59', '0.01856098', 1],\n",
+ " ['18520.73', '0.00546072', 1],\n",
+ " ['18520', '0.156', 2],\n",
+ " ['18515.07', '0.00020944', 1],\n",
+ " ['18513', '0.01', 1],\n",
+ " ['18510', '1.19319817', 3],\n",
+ " ['18507.24', '0.00054033', 1],\n",
+ " ['18506.25', '0.00164809', 1],\n",
+ " ['18505', '0.03', 1],\n",
+ " ['18500.24', '0.00108107', 1],\n",
+ " ['18500', '0.69385066', 25],\n",
+ " ['18499.29', '0.00187447', 1],\n",
+ " ['18499.18', '0.00953933', 1],\n",
+ " ['18496.54', '0.002292', 1],\n",
+ " ['18491.7', '0.0001093', 1],\n",
+ " ['18489.75', '0.00185285', 1],\n",
+ " ['18486.81', '0.00014389', 1],\n",
+ " ['18481.8', '0.5', 1],\n",
+ " ['18476.91', '0.00108243', 1],\n",
+ " ['18471.07', '0.00256503', 1],\n",
+ " ['18465.96', '0.00073794', 1],\n",
+ " ['18463', '0.00658461', 1],\n",
+ " ['18462.48', '0.01661576', 1],\n",
+ " ['18460', '0.08840051', 1],\n",
+ " ['18456.95', '0.03063473', 2],\n",
+ " ['18455.37', '0.27024654', 1],\n",
+ " ['18453.58', '0.0010838', 1],\n",
+ " ['18452', '0.0376402', 1],\n",
+ " ['18450', '0.0057582', 1],\n",
+ " ['18446', '0.0177821', 1],\n",
+ " ['18441.57', '0.00663065', 1],\n",
+ " ['18441.32', '0.00142074', 1],\n",
+ " ['18431.45', '0.00022109', 1],\n",
+ " ['18430.26', '0.00108517', 1],\n",
+ " ['18429.14', '0.00081443', 1],\n",
+ " ['18426.07', '0.0015173', 1],\n",
+ " ['18425', '0.00221134', 1],\n",
+ " ['18421.73', '0.00162851', 1],\n",
+ " ['18409.57', '0.00142904', 1],\n",
+ " ['18409.44', '0.76222255', 1],\n",
+ " ['18408.55', '0.0095863', 1],\n",
+ " ['18406.93', '0.00108655', 1],\n",
+ " ['18406.15', '0.00073542', 1],\n",
+ " ['18404.29', '0.00230349', 1],\n",
+ " ['18403.16', '0.00137983', 1],\n",
+ " ['18400', '0.02426189', 5],\n",
+ " ['18394.78', '0.00140865', 1],\n",
+ " ['18393.22', '0.00249453', 1],\n",
+ " ['18388', '0.4385642', 1],\n",
+ " ['18385.28', '0.02844305', 1],\n",
+ " ['18383.6', '0.00108793', 1],\n",
+ " ['18382', '0.017604', 1],\n",
+ " ['18379.75', '0.00025857', 1],\n",
+ " ['18378.9', '0.00256503', 1],\n",
+ " ['18376.44', '0.00263321', 1],\n",
+ " ['18373.44', '0.00313848', 1],\n",
+ " ['18370.46', '0.00197933', 1],\n",
+ " ['18370.34', '0.00148479', 1],\n",
+ " ['18368.27', '0.00053914', 1],\n",
+ " ['18360.28', '0.00108931', 1],\n",
+ " ['18355', '0.025', 1],\n",
+ " ['18350', '0.18833069', 3],\n",
+ " ['18345', '0.21278673', 1],\n",
+ " ['18343.43', '0.00011777', 1],\n",
+ " ['18342.77', '0.00198146', 1],\n",
+ " ['18342', '0.0001194', 1],\n",
+ " ['18340.03', '0.00076495', 1],\n",
+ " ['18337', '0.00108415', 1],\n",
+ " ['18336.95', '0.00109069', 1],\n",
+ " ['18334.22', '0.0001989', 1],\n",
+ " ['18333', '0.01358206', 1],\n",
+ " ['18329.69', '0.00020944', 1],\n",
+ " ['18329.1', '0.0008', 1],\n",
+ " ['18325.41', '0.00560295', 1],\n",
+ " ['18321.56', '0.00546072', 1],\n",
+ " ['18318.37', '0.00963349', 1],\n",
+ " ['18313.62', '0.00109208', 1],\n",
+ " ['18312.51', '0.00231503', 1],\n",
+ " ['18310.94', '0.00542863', 1],\n",
+ " ['18303.92', '0.00105013', 1],\n",
+ " ['18301.85', '0.00141279', 1],\n",
+ " ['18300', '0.55934436', 2],\n",
+ " ['18298.67', '0.00162968', 1],\n",
+ " ['18295.01', '0.00092388', 1],\n",
+ " ['18294.39', '0.0010916', 1],\n",
+ " ['18291.04', '0.75912723', 1],\n",
+ " ['18290.3', '0.00109348', 1],\n",
+ " ['18287.19', '0.00256503', 1],\n",
+ " ['18285.52', '0.00095999', 1],\n",
+ " ['18278.48', '0.004', 1],\n",
+ " ['18278', '0.00005656', 1],\n",
+ " ['18277.96', '0.0002', 1],\n",
+ " ['18275', '0.00766846', 3],\n",
+ " ['18269.15', '0.00167626', 1],\n",
+ " ['18266.97', '0.00109487', 1],\n",
+ " ['18264', '1.52178628', 1],\n",
+ " ['18261.87', '0.00269728', 1],\n",
+ " ['18258', '0.06029657', 1],\n",
+ " ['18253.43', '0.00074653', 1],\n",
+ " ['18250.47', '0.00996304', 1],\n",
+ " ['18250', '0.4475205', 3],\n",
+ " ['18244', '0.015', 1],\n",
+ " ['18243.64', '0.00109627', 1],\n",
+ " ['18240.22', '0.00458684', 1],\n",
+ " ['18240', '0.02024675', 1],\n",
+ " ['18234.27', '0.00008', 1],\n",
+ " ['18228.63', '0.00968092', 1],\n",
+ " ['18227.98', '0.00190237', 1],\n",
+ " ['18224.51', '0.00860022', 1],\n",
+ " ['18223.23', '0.00022361', 1],\n",
+ " ['18221.17', '0.00232663', 1],\n",
+ " ['18220.32', '0.00109768', 1],\n",
+ " ['18213', '0.01', 1],\n",
+ " ['18210', '0.00821456', 1],\n",
+ " ['18206.83', '0.00147747', 1],\n",
+ " ['18202.66', '0.00252065', 1],\n",
+ " ['18200', '1.90555765', 8],\n",
+ " ['18196.99', '0.00109908', 1],\n",
+ " ['18195.94', '0.00256503', 1],\n",
+ " ['18195.42', '0.00074394', 1],\n",
+ " ['18193', '0.00142054', 1],\n",
+ " ['18185.19', '0.02871939', 1],\n",
+ " ['18180', '0.0033', 1],\n",
+ " ['18179', '0.01897374', 1],\n",
+ " ['18172.46', '0.00010557', 1],\n",
+ " ['18170.55', '0.00015864', 1],\n",
+ " ['18170.33', '0.00672962', 1],\n",
+ " ['18168.57', '0.00144207', 1],\n",
+ " ['18164.48', '0.00014939', 1],\n",
+ " ['18160', '0.05484581', 1],\n",
+ " ['18157.66', '0.00441613', 1],\n",
+ " ['18156', '0.025', 1],\n",
+ " ['18155.27', '0.00153993', 1],\n",
+ " ['18153.35', '0.00547557', 1],\n",
+ " ['18152.61', '0.00014654', 1],\n",
+ " ['18149.05', '0.00055099', 1],\n",
+ " ['18148.12', '0.00055102', 1],\n",
+ " ['18146.16', '0.00021847', 1],\n",
+ " ['18145.35', '0.00054779', 1],\n",
+ " ['18143.26', '0.00159866', 1],\n",
+ " ['18141.6', '0.00145015', 1],\n",
+ " ['18139.86', '0.00551272', 1],\n",
+ " ['18135.25', '0.00053933', 1],\n",
+ " ['18133', '0.0032', 1],\n",
+ " ['18131.79', '0.00140048', 1],\n",
+ " ['18130.3', '0.00234718', 1],\n",
+ " ['18125.72', '0.00142956', 1],\n",
+ " ['18125.45', '0.00021387', 1],\n",
+ " ['18125.25', '0.00220021', 1],\n",
+ " ['18124.52', '0.00546072', 1],\n",
+ " ['18120.26', '0.00055187', 1],\n",
+ " ['18120', '0.003', 1],\n",
+ " ['18116.38', '0.00055199', 1],\n",
+ " ['18115', '0.00054982', 1],\n",
+ " ['18112.31', '0.00041409', 1],\n",
+ " ['18111', '0.00576203', 2],\n",
+ " ['18110.1', '0.00055218', 1],\n",
+ " ['18106.73', '0.00601393', 1],\n",
+ " ['18105.14', '0.00256503', 1],\n",
+ " ['18103.23', '0.00200855', 1],\n",
+ " ['18103.12', '0.00552391', 1],\n",
+ " ['18101.04', '0.00001647', 1],\n",
+ " ['18101', '0.16442321', 1],\n",
+ " ['18100.76', '0.00318576', 1],\n",
+ " ['18100.5', '0.0274578', 1],\n",
+ " ['18100.35', '0.00150694', 1],\n",
+ " ['18100', '0.4004037', 5],\n",
+ " ['18098', '0.00552547', 1],\n",
+ " ['18095', '0.2457883', 1],\n",
+ " ['18094', '0.00549353', 1],\n",
+ " ['18090', '0.00054783', 1],\n",
+ " ['18089.97', '0.00055279', 1],\n",
+ " ['18084.64', '0.00055296', 1],\n",
+ " ['18084.42', '0.00330297', 1],\n",
+ " ['18079.35', '0.06504117', 1],\n",
+ " ['18078.99', '0.00553128', 1],\n",
+ " ['18073.03', '0.00201103', 1],\n",
+ " ['18061.23', '0.01239981', 1],\n",
+ " ['18059.68', '0.00055372', 1],\n",
+ " ['18057.19', '0.00006', 1],\n",
+ " ['18056.75', '0.00077696', 1],\n",
+ " ['18055', '0.02747426', 1],\n",
+ " ['18053', '0.002753', 1],\n",
+ " ['18052.91', '0.00055393', 1],\n",
+ " ['18051', '0.02216', 1],\n",
+ " ['18050', '0.00354', 1],\n",
+ " ['18043.36', '0.00075522', 1],\n",
+ " ['18041.71', '0.00020385', 1],\n",
+ " ['18041.35', '0.01237504', 1],\n",
+ " ['18039.88', '0.00235895', 1],\n",
+ " ['18032.08', '0.00143392', 1],\n",
+ " ['18031.29', '0.00106601', 1],\n",
+ " ['18030.29', '0.00055462', 1],\n",
+ " ['18029.39', '0.00055465', 1],\n",
+ " ['18028.24', '0.01102714', 1],\n",
+ " ['18026.86', '0.00093762', 1],\n",
+ " ['18025.6', '0.04006086', 1],\n",
+ " ['18025', '0.18455158', 2],\n",
+ " ['18021.17', '0.0005549', 1],\n",
+ " ['18019', '0.00222531', 1],\n",
+ " ['18017.37', '0.00022617', 1],\n",
+ " ['18016', '0.06546809', 1],\n",
+ " ['18014.8', '0.00256503', 1],\n",
+ " ['18014.07', '0.00254704', 1],\n",
+ " ['18012.02', '0.00017715', 1],\n",
+ " ['18010.42', '0.0001216', 1],\n",
+ " ['18010', '0.15', 2],\n",
+ " ['18006.52', '0.00066242', 1],\n",
+ " ['18006', '0.25', 1],\n",
+ " ['18003.66', '0.01171024', 1],\n",
+ " ['18003.25', '0.15518039', 1],\n",
+ " ['18003', '0.0055213', 1],\n",
+ " ['18001', '0.10135377', 4],\n",
+ " ['18000', '5.81026426', 77],\n",
+ " ['17999.09', '0.00055558', 1],\n",
+ " ['17999', '0.00123252', 1],\n",
+ " ['17998.83', '0.00170144', 1],\n",
+ " ['17992.63', '0.00273764', 1],\n",
+ " ['17989.66', '0.00001989', 1],\n",
+ " ['17987.11', '0.00077644', 1],\n",
+ " ['17985', '0.00553', 1],\n",
+ " ['17976.15', '0.00238395', 1],\n",
+ " ['17973', '0.00055526', 1],\n",
+ " ['17972.43', '0.0002', 1],\n",
+ " ['17968.8', '0.00055652', 1],\n",
+ " ['17968.64', '0.00055319', 1],\n",
+ " ['17964.47', '0.00022068', 1],\n",
+ " ['17963', '0.00845043', 2],\n",
+ " ['17961.39', '0.0012', 1],\n",
+ " ['17960.65', '0.00193069', 1],\n",
+ " ['17958.4', '0.00054188', 1],\n",
+ " ['17956.15', '0.00606603', 1],\n",
+ " ['17954', '0.00148673', 1],\n",
+ " ['17953.78', '0.00164543', 1],\n",
+ " ['17950', '0.00422298', 2],\n",
+ " ['17949.9', '0.00237077', 1],\n",
+ " ['17946.76', '0.00391025', 1],\n",
+ " ['17938.51', '0.00055746', 1],\n",
+ " ['17934.2', '0.10000153', 1],\n",
+ " ['17929.6', '0.00546072', 1],\n",
+ " ['17924.9', '0.00256503', 1],\n",
+ " ['17917.4', '0.00558117', 1],\n",
+ " ['17913.04', '0.000837', 1],\n",
+ " ['17910', '0.23309883', 1],\n",
+ " ['17908.22', '0.0005584', 1],\n",
+ " ['17905.24', '0.01926384', 1],\n",
+ " ['17903.08', '0.00683008', 1],\n",
+ " ['17900', '0.02035296', 5],\n",
+ " ['17899.87', '0.00146372', 1],\n",
+ " ['17898.59', '0.00161296', 1],\n",
+ " ['17891.04', '0.00484026', 1],\n",
+ " ['17890.5', '0.000025', 1],\n",
+ " ['17890', '0.1', 1],\n",
+ " ['17888.44', '0.0015629', 1],\n",
+ " ['17888', '0.00555679', 1],\n",
+ " ['17884.25', '0.5', 1],\n",
+ " ['17877.93', '0.00055935', 1],\n",
+ " ['17877.7', '0.00150467', 1],\n",
+ " ['17877.53', '0.00147157', 1],\n",
+ " ['17872.29', '0.00025249', 1],\n",
+ " ['17868', '0.003', 1],\n",
+ " ['17864.94', '0.0215882', 1],\n",
+ " ['17864.42', '0.00142144', 1],\n",
+ " ['17860.6', '0.00145078', 1],\n",
+ " ['17860.38', '0.00238265', 1],\n",
+ " ['17856', '0.00557', 1],\n",
+ " ['17852', '0.00776458', 1],\n",
+ " ['17851', '0.05', 1],\n",
+ " ['17850', '0.01113725', 1],\n",
+ " ['17847.63', '0.0005603', 1],\n",
+ " ['17846.64', '0.01670902', 1],\n",
+ " ['17840.94', '0.00033317', 1],\n",
+ " ['17839.88', '0.0020382', 1],\n",
+ " ['17839.05', '0.00005572', 1],\n",
+ " ['17838', '0.1', 1],\n",
+ " ['17835.46', '0.00256503', 1],\n",
+ " ['17834.32', '0.00152942', 1],\n",
+ " ['17832.13', '0.00323375', 1],\n",
+ " ['17827.44', '0.0025737', 1],\n",
+ " ['17821', '0.00558772', 1],\n",
+ " ['17820.75', '0.00055778', 1],\n",
+ " ['17817.34', '0.00056125', 1],\n",
+ " ['17815', '0.16001244', 1],\n",
+ " ['17812.03', '0.00060565', 1],\n",
+ " ['17811', '0.022458', 1],\n",
+ " ['17810', '0.0056', 1],\n",
+ " ['17807.25', '0.00204105', 1],\n",
+ " ['17802.9', '0.18811736', 1],\n",
+ " ['17800', '0.35536712', 11],\n",
+ " ['17797.6', '0.00016867', 1],\n",
+ " ['17797.49', '0.00339515', 1],\n",
+ " ['17793.06', '0.00012141', 1],\n",
+ " ['17793', '0.00872307', 3],\n",
+ " ['17787.05', '0.00056221', 1],\n",
+ " ['17784.6', '0.00022291', 1],\n",
+ " ['17781.18', '0.00078544', 1],\n",
+ " ['17780', '0.00559055', 1],\n",
+ " ['17777', '1.09114279', 5],\n",
+ " ['17774.41', '0.04448869', 1],\n",
+ " ['17771.31', '0.0023946', 1],\n",
+ " ['17768', '0.00435183', 1],\n",
+ " ['17766.28', '0.00145538', 1],\n",
+ " ['17762.72', '0.00108213', 1],\n",
+ " ['17762.64', '0.00095157', 1],\n",
+ " ['17760', '0.00307826', 1],\n",
+ " ['17759', '0.00056084', 1],\n",
+ " ['17756.76', '0.00056317', 1],\n",
+ " ['17755.48', '0.00011196', 1],\n",
+ " ['17750', '0.06228163', 3],\n",
+ " ['17746.46', '0.00256503', 1],\n",
+ " ['17743', '0.0085', 1],\n",
+ " ['17736.78', '0.00546072', 1],\n",
+ " ['17732.5', '0.00172699', 1],\n",
+ " ['17732.27', '0.00034474', 1],\n",
+ " ['17731.67', '0.00563963', 1],\n",
+ " ['17727.36', '0.00277861', 1],\n",
+ " ['17726.46', '0.00056413', 1],\n",
+ " ['17726.01', '0.00037801', 1],\n",
+ " ['17718.36', '0.00032668', 1],\n",
+ " ['17717', '0.02061909', 1],\n",
+ " ['17701.07', '0.00233037', 1],\n",
+ " ['17700', '0.26116132', 6],\n",
+ " ['17697.23', '0.00195942', 1],\n",
+ " ['17696.17', '0.00056509', 1],\n",
+ " ['17688.96', '0.00696459', 1],\n",
+ " ['17687.56', '0.00166553', 1],\n",
+ " ['17684.84', '0.00012384', 1],\n",
+ " ['17682.67', '0.0024066', 1],\n",
+ " ['17672.01', '0.0002', 1],\n",
+ " ['17665.88', '0.00097906', 2],\n",
+ " ['17663.09', '0.00254769', 1],\n",
+ " ['17662.55', '0.56277264', 1],\n",
+ " ['17657.91', '0.00256503', 1],\n",
+ " ['17656', '0.00760025', 1],\n",
+ " ['17655', '0.5', 1],\n",
+ " ['17651.03', '0.26655166', 1],\n",
+ " ['17650', '1.63384612', 8],\n",
+ " ['17642.74', '0.00260065', 1],\n",
+ " ['17639.76', '0.00693204', 1],\n",
+ " ['17635.6', '0.02070854', 1],\n",
+ " ['17635.59', '0.00056704', 1],\n",
+ " ['17635.13', '0.00148569', 1],\n",
+ " ['17633', '0.02937219', 1],\n",
+ " ['17625.54', '0.00158621', 1],\n",
+ " ['17622', '0.01946033', 1],\n",
+ " ['17620', '0.00408093', 1],\n",
+ " ['17617.3', '0.00149331', 1],\n",
+ " ['17616.99', '0.00008', 1],\n",
+ " ['17610', '0.07645', 2],\n",
+ " ['17607.03', '0.000016', 1],\n",
+ " ['17606.54', '0.00022516', 1],\n",
+ " ['17605.3', '0.00056801', 1],\n",
+ " ['17605', '0.00564612', 1],\n",
+ " ['17601', '0.0412122', 3],\n",
+ " ['17600.06', '0.00021969', 1],\n",
+ " ['17600', '1.51428747', 11],\n",
+ " ['17599.35', '0.00147232', 1],\n",
+ " ['17594.48', '0.00241866', 1],\n",
+ " ['17590', '0.01977828', 1],\n",
+ " ['17586.63', '0.1', 1],\n",
+ " ['17583.78', '0.01', 1],\n",
+ " ['17580.37', '0.00206829', 1],\n",
+ " ['17580', '0.03226033', 2],\n",
+ " ['17578.16', '0.00570214', 1],\n",
+ " ['17577.61', '0.00079453', 1],\n",
+ " ['17575', '0.00113457', 2],\n",
+ " ['17572.2', '0.00155223', 1],\n",
+ " ['17569.79', '0.00256503', 1],\n",
+ " ['17569', '0.02361011', 2],\n",
+ " ['17567.49', '0.00328247', 1],\n",
+ " ['17560.7', '0.0096396', 1],\n",
+ " ['17559', '0.00096236', 1],\n",
+ " ['17554.52', '0.00153237', 1],\n",
+ " ['17550', '0.00028319', 1],\n",
+ " ['17547.69', '0.01424689', 1],\n",
+ " ['17546.04', '0.00546072', 1],\n",
+ " ['17545.39', '0.00207151', 1],\n",
+ " ['17544.71', '0.00056997', 1],\n",
+ " ['17541.39', '0.01276728', 1],\n",
+ " ['17535', '0.6725', 1],\n",
+ " ['17527.34', '0.00567114', 1],\n",
+ " ['17527', '0.01570935', 2],\n",
+ " ['17520', '0.01685885', 1],\n",
+ " ['17514.42', '0.00057096', 1],\n",
+ " ['17509', '0.00942408', 1],\n",
+ " ['17506.73', '0.00243079', 1],\n",
+ " ['17504.41', '0.00147715', 1],\n",
+ " ['17502.29', '0.00096572', 1],\n",
+ " ['17500.83', '0.00069633', 1],\n",
+ " ['17500', '0.89088888', 30],\n",
+ " ['17499', '0.00011394', 1],\n",
+ " ['17498.15', '0.00109848', 1],\n",
+ " ['17495', '0.005', 1],\n",
+ " ['17487', '0.08526333', 1],\n",
+ " ['17484.13', '0.00057195', 1],\n",
+ " ['17482.42', '0.01137142', 1],\n",
+ " ['17482.12', '0.00256503', 1],\n",
+ " ['17481.74', '0.00017092', 1],\n",
+ " ['17477.83', '0.00023364', 1],\n",
+ " ['17477.26', '0.00284369', 1],\n",
+ " ['17477.08', '0.0113749', 1],\n",
+ " ['17470.12', '0.00175293', 1],\n",
+ " ['17466.01', '0.00282019', 1],\n",
+ " ['17460', '0.00569301', 1],\n",
+ " ['17459.95', '0.00262787', 1],\n",
+ " ['17453.83', '0.00057294', 1],\n",
+ " ['17451.07', '0.2', 1],\n",
+ " ['17450', '0.02289255', 2],\n",
+ " ['17444', '0.0057', 1],\n",
+ " ['17437.68', '0.00198859', 1],\n",
+ " ['17432.26', '0.00262523', 1],\n",
+ " ['17430.25', '0.00022744', 1],\n",
+ " ['17427.8', '0.02837279', 1],\n",
+ " ['17423.54', '0.00057394', 1],\n",
+ " ['17419.42', '0.00244297', 1],\n",
+ " ['17418.59', '0.003', 1],\n",
+ " ['17411', '0.00057205', 1],\n",
+ " ['17405.62', '0.0450662', 1],\n",
+ " ['17400', '0.02096653', 4],\n",
+ " ['17396', '0.1', 1],\n",
+ " ['17394.88', '0.00256503', 1],\n",
+ " ['17394', '2', 1],\n",
+ " ['17393.25', '0.00057494', 1],\n",
+ " ['17391.06', '1.01', 1],\n",
+ " ['17380.32', '0.00703552', 1],\n",
+ " ['17376.6', '0.0002', 1],\n",
+ " ['17374.32', '0.00150799', 1],\n",
+ " ['17373', '0.05732862', 1],\n",
+ " ['17370.92', '0.00031644', 1],\n",
+ " ['17370.03', '0.02102516', 1],\n",
+ " ['17366.51', '0.00160987', 1],\n",
+ " ['17365.15', '0.00012612', 1],\n",
+ " ['17362.96', '0.00057594', 1],\n",
+ " ['17360.86', '0.00151537', 1],\n",
+ " ['17357.34', '0.00546072', 1],\n",
+ " ['17355.5', '0.01425586', 1],\n",
+ " ['17352.16', '0.00014321', 1],\n",
+ " ['17350', '0.32033048', 3],\n",
+ " ['17341.93', '0.00149417', 1],\n",
+ " ['17341.46', '0.00146431', 1],\n",
+ " ['17332.67', '0.00057695', 1],\n",
+ " ['17332.54', '0.00245521', 1],\n",
+ " ['17330.81', '0.04448869', 1],\n",
+ " ['17324.63', '0.00209882', 1],\n",
+ " ['17313.93', '0.00157539', 1],\n",
+ " ['17308.08', '0.00256503', 1],\n",
+ " ['17306.77', '0.00333192', 1],\n",
+ " ['17302.37', '0.00057796', 1],\n",
+ " ['17299.84', '0.11793492', 1],\n",
+ " ['17299.47', '0.0006', 1],\n",
+ " ['17289.96', '0.01', 1],\n",
+ " ['17287.37', '0.00210243', 1],\n",
+ " ['17284.82', '0.00314506', 1],\n",
+ " ['17281.85', '0.00013114', 1],\n",
+ " ['17280', '0.02024675', 1],\n",
+ " ['17279.06', '0.00265538', 1],\n",
+ " ['17278.12', '0.00023069', 1],\n",
+ " ['17272.08', '0.00057897', 1],\n",
+ " ['17269.14', '0.0183879', 1],\n",
+ " ['17260', '0.0015', 1],\n",
+ " ['17259.21', '0.00012517', 1],\n",
+ " ['17255.73', '0.00022974', 1],\n",
+ " ['17252.25', '0.1', 1],\n",
+ " ['17251.18', '0.00057619', 1],\n",
+ " ['17251', '0.02862845', 1],\n",
+ " ['17246.39', '0.00149925', 1],\n",
+ " ['17246.1', '0.00246752', 1],\n",
+ " ['17245.76', '0.00098009', 1],\n",
+ " ['17241.79', '0.00057999', 1],\n",
+ " ['17240', '0.74147816', 1],\n",
+ " ['17237.52', '0.0011151', 1],\n",
+ " ['17237.18', '0.00156059', 1],\n",
+ " ['17234.61', '0.00434925', 1],\n",
+ " ['17229', '0.08815991', 1],\n",
+ " ['17221.72', '0.00256503', 1],\n",
+ " ['17213', '0.00433102', 1],\n",
+ " ['17211.62', '0.00177926', 1],\n",
+ " ['17211.5', '0.00058101', 1],\n",
+ " ['17208.51', '0.00286239', 1],\n",
+ " ['17205.77', '0.00014443', 1],\n",
+ " ['17205.44', '0.06064198', 1],\n",
+ " ['17200.91', '0.00104227', 1],\n",
+ " ['17200', '0.5571644', 4],\n",
+ " ['17199', '0.00130161', 1],\n",
+ " ['17198', '0.00668961', 1],\n",
+ " ['17193', '0.01', 1],\n",
+ " ['17190', '0.00765767', 1],\n",
+ " ['17188.86', '0.08674223', 1],\n",
+ " ['17185', '0.01', 1],\n",
+ " ['17181.94', '0.00201819', 1],\n",
+ " ['17181.2', '0.00058203', 1],\n",
+ " ['17179.74', '0.00070183', 1],\n",
+ " ['17177', '0.1', 1],\n",
+ " ['17173', '0.005', 1],\n",
+ " ['17170.68', '0.00546072', 1],\n",
+ " ['17169.89', '0.00017541', 1],\n",
+ " ['17166', '0.29', 1],\n",
+ " ['17160.09', '0.00247989', 1],\n",
+ " ['17155', '0.01291302', 1],\n",
+ " ['17150.91', '0.00058306', 1],\n",
+ " ['17150', '0.48235226', 4],\n",
+ " ['17135.78', '0.00256503', 1],\n",
+ " ['17135.24', '0.29062914', 1],\n",
+ " ['17133.4', '0.00879831', 1],\n",
+ " ['17125.19', '0.00022636', 1],\n",
+ " ['17125', '0.561083', 1],\n",
+ " ['17124.69', '0.00714054', 1],\n",
+ " ['17120.62', '0.00058409', 1],\n",
+ " ['17117.35', '0.00153063', 1],\n",
+ " ['17117', '0.05000258', 1],\n",
+ " ['17115', '0.07', 1],\n",
+ " ['17114.74', '0.00435332', 1],\n",
+ " ['17111.28', '0.00163388', 1],\n",
+ " ['17108.15', '0.00153775', 1],\n",
+ " ['17102.2', '0.00008893', 1],\n",
+ " ['17102', '0.003', 1],\n",
+ " ['17101', '0.23592987', 2],\n",
+ " ['17100.04', '0.00268318', 1],\n",
+ " ['17100', '3.26501584', 9],\n",
+ " ['17099', '0.0355181', 1],\n",
+ " ['17090.33', '0.00058513', 1],\n",
+ " ['17089.34', '0.00224796', 1],\n",
+ " ['17088.27', '0.00151635', 1],\n",
+ " ['17086.14', '0.0002', 1],\n",
+ " ['17085.75', '0.00148623', 1],\n",
+ " ['17082.96', '0.00023207', 1],\n",
+ " ['17074.5', '0.00249232', 1],\n",
+ " ['17072.61', '0.0021298', 1],\n",
+ " ['17070', '0.00661501', 2],\n",
+ " ['17062.65', '0.00018758', 1],\n",
+ " ['17060.04', '0.00058617', 1],\n",
+ " ['17059.46', '0.00159889', 1],\n",
+ " ['17054.16', '0.00255422', 1],\n",
+ " ['17053', '0.00291444', 1],\n",
+ " ['17051.23', '0.00012844', 1],\n",
+ " ['17051.09', '0.2', 1],\n",
+ " ['17050.27', '0.00256503', 1],\n",
+ " ['17049.93', '0.00338211', 1],\n",
+ " ['17046', '0.015', 1],\n",
+ " ['17036.51', '0.01314564', 1],\n",
+ " ['17033.15', '0.00213381', 1],\n",
+ " ['17033', '0.00291786', 1],\n",
+ " ['17029.74', '0.00058721', 1],\n",
+ " ['17027.84', '0.0000467', 1],\n",
+ " ['17027', '0.01167557', 1],\n",
+ " ['17023.51', '0.00045', 1],\n",
+ " ['17020', '0.02666396', 1],\n",
+ " ['17017.17', '0.05', 1],\n",
+ " ['17010', '0.08781479', 2],\n",
+ " ['17009', '0.00146099', 1],\n",
+ " ['17008', '0.01192063', 1],\n",
+ " ['17002.72', '0.141', 1],\n",
+ " ['17000', '3.28337352', 40],\n",
+ " ['16999.45', '0.00058825', 1],\n",
+ " ['16999', '0.1105445', 2],\n",
+ " ['16992.99', '0.00099467', 1],\n",
+ " ['16992.18', '0.00152168', 1],\n",
+ " ['16991', '0.00176', 1],\n",
+ " ['16990', '0.07674111', 2],\n",
+ " ['16989.35', '0.00250481', 1],\n",
+ " ['16989', '0.00099406', 1],\n",
+ " ['16980.77', '0.00113196', 1],\n",
+ " ['16969.16', '0.0005893', 1],\n",
+ " ['16968.21', '0.00352418', 1],\n",
+ " ['16966', '0.0012', 1],\n",
+ " ['16965.28', '0.01066811', 1],\n",
+ " ['16965.19', '0.00256503', 1],\n",
+ " ['16956.94', '0.00180598', 1],\n",
+ " ['16954.8', '0.00290522', 1],\n",
+ " ['16950', '0.04374242', 1],\n",
+ " ['16938.87', '0.00059036', 1],\n",
+ " ['16929.95', '0.00204823', 1],\n",
+ " ['16922.88', '0.00271127', 1],\n",
+ " ['16921.4', '0.01062529', 1],\n",
+ " ['16918', '0.00057106', 1],\n",
+ " ['16911.92', '0.00023441', 1],\n",
+ " ['16911', '0.017739', 1],\n",
+ " ['16910', '0.00184516', 2],\n",
+ " ['16908.57', '0.00059142', 1],\n",
+ " ['16904.62', '0.00251737', 1],\n",
+ " ['16900.39', '0.0012', 1],\n",
+ " ['16900', '0.73433946', 4],\n",
+ " ['16897', '2', 1],\n",
+ " ['16888', '0.0176575', 1],\n",
+ " ['16887.2', '0.04448869', 1],\n",
+ " ['16880.54', '0.00256503', 1],\n",
+ " ['16879.71', '0.01177745', 1],\n",
+ " ['16878.28', '0.00059248', 1],\n",
+ " ['16877', '0.5', 1],\n",
+ " ['16872.82', '0.00724713', 1],\n",
+ " ['16864.19', '0.00155361', 1],\n",
+ " ['16859.8', '0.00165826', 1],\n",
+ " ['16859.12', '0.00156046', 1],\n",
+ " ['16850', '0.2955', 1],\n",
+ " ['16847.99', '0.00059354', 1],\n",
+ " ['16838.33', '0.00153886', 1],\n",
+ " ['16833.81', '0.00150847', 1],\n",
+ " ['16824.25', '0.00216124', 1],\n",
+ " ['16820.31', '0.00252998', 1],\n",
+ " ['16817.7', '0.00059461', 1],\n",
+ " ['16808.73', '0.00162274', 1],\n",
+ " ['16804.93', '0.01', 1],\n",
+ " ['16800.53', '0.0002', 1],\n",
+ " ['16800', '0.362624', 8],\n",
+ " ['16796.89', '0.00343306', 1],\n",
+ " ['16796.3', '0.00256503', 1],\n",
+ " ['16787.41', '0.00059568', 1],\n",
+ " ['16782.66', '0.00216566', 1],\n",
+ " ['16780', '0.10610143', 2],\n",
+ " ['16777', '0.05', 1],\n",
+ " ['16759', '0.19192071', 1],\n",
+ " ['16757.11', '0.00059676', 1],\n",
+ " ['16750', '0.025', 2],\n",
+ " ['16747.55', '0.00273966', 1],\n",
+ " ['16743.92', '0.00100946', 1],\n",
+ " ['16742.59', '0.00023678', 1],\n",
+ " ['16741.79', '0.03', 1],\n",
+ " ['16741.72', '0.00154444', 1],\n",
+ " ['16741.37', '0.00012904', 1],\n",
+ " ['16736.42', '0.00254266', 1],\n",
+ " ['16735', '0.00059515', 1],\n",
+ " ['16727.85', '0.00114908', 1],\n",
+ " ['16726.82', '0.00059784', 1],\n",
+ " ['16712.49', '0.00256503', 1],\n",
+ " ['16706.03', '0.00183311', 1],\n",
+ " ['16704.83', '0.00294869', 1],\n",
+ " ['16700', '0.04178514', 3],\n",
+ " ['16696.53', '0.00059893', 1],\n",
+ " ['16692.43', '0.00089322', 1],\n",
+ " ['16688', '0.03', 1],\n",
+ " ['16686', '0.039', 1],\n",
+ " ['16681.65', '0.00207871', 1],\n",
+ " ['16680', '0.00025008', 1],\n",
+ " ['16667', '0.01462343', 1],\n",
+ " ['16666.24', '0.00060002', 1],\n",
+ " ['16666', '0.03619768', 2],\n",
+ " ['16661', '0.02246086', 1],\n",
+ " ['16659.86', '0.003', 1],\n",
+ " ['16655', '0.05968177', 1],\n",
+ " ['16652.95', '0.00255541', 1],\n",
+ " ['16650', '0.35996996', 2],\n",
+ " ['16635.94', '0.00060111', 1],\n",
+ " ['16632', '0.005', 1],\n",
+ " ['16630', '0.0037656', 1],\n",
+ " ['16629.09', '0.00256503', 1],\n",
+ " ['16624.65', '0.00735531', 1],\n",
+ " ['16623', '0.03619791', 1],\n",
+ " ['16614.78', '0.00157693', 1],\n",
+ " ['16613.71', '0.00158351', 1],\n",
+ " ['16612.02', '0.00168299', 1],\n",
+ " ['16605.65', '0.0006022', 1],\n",
+ " ['16600', '1.30045181', 2],\n",
+ " ['16592.04', '0.0015617', 1],\n",
+ " ['16586', '0.0006005', 1],\n",
+ " ['16585.58', '0.00153105', 1],\n",
+ " ['16583.78', '0.01', 1],\n",
+ " ['16582.33', '0.36620157', 1],\n",
+ " ['16579.51', '0.00219315', 1],\n",
+ " ['16575.36', '0.00060331', 1],\n",
+ " ['16574.95', '0.00023918', 1],\n",
+ " ['16574.04', '0.00276834', 1],\n",
+ " ['16572', '0.00449855', 1],\n",
+ " ['16571.17', '0.01199674', 1],\n",
+ " ['16569.89', '0.00256822', 1],\n",
+ " ['16561.68', '0.00164695', 1],\n",
+ " ['16555', '0.0638249', 2],\n",
+ " ['16550', '0.1605', 2],\n",
+ " ['16547.61', '0.00348478', 1],\n",
+ " ['16546.16', '0.01353521', 1],\n",
+ " ['16546.12', '0.00256503', 1],\n",
+ " ['16545.07', '0.00060441', 1],\n",
+ " ['16535.86', '0.00219798', 1],\n",
+ " ['16525', '0.08505429', 2],\n",
+ " ['16524.69', '1.16013062', 1],\n",
+ " ['16520', '0.33306198', 3],\n",
+ " ['16517.77', '0.00233011', 1],\n",
+ " ['16514.78', '0.00060552', 1],\n",
+ " ['16508.58', '0.11116597', 1],\n",
+ " ['16505', '0.30680673', 2],\n",
+ " ['16501', '0.01', 1],\n",
+ " ['16500', '2.80494116', 20],\n",
+ " ['16498.51', '0.00102448', 1],\n",
+ " ['16494.94', '0.00156755', 1],\n",
+ " ['16487.25', '0.00258109', 1],\n",
+ " ['16484.48', '0.00060663', 1],\n",
+ " ['16481', '0.7155', 1],\n",
+ " ['16478.69', '0.00116645', 1],\n",
+ " ['16475.5', '0.19522317', 1],\n",
+ " ['16463.55', '0.00256503', 1],\n",
+ " ['16458.83', '0.00186064', 1],\n",
+ " ['16458.55', '0.00299282', 1],\n",
+ " ['16454.19', '0.00060775', 1],\n",
+ " ['16443.6', '0.04448869', 1],\n",
+ " ['16436.99', '0.00210966', 1],\n",
+ " ['16423.9', '0.00060887', 1],\n",
+ " ['16415.24', '0.00074533', 1],\n",
+ " ['16409', '0.0002416', 1],\n",
+ " ['16407', '0.00060705', 1],\n",
+ " ['16405.02', '0.00259403', 1],\n",
+ " ['16402.32', '0.00279732', 1],\n",
+ " ['16400', '0.11883238', 6],\n",
+ " ['16399', '0.00140854', 1],\n",
+ " ['16393.61', '0.00060999', 1],\n",
+ " ['16386', '0.043', 1],\n",
+ " ['16381.4', '0.00256503', 1],\n",
+ " ['16380.13', '0.00746511', 1],\n",
+ " ['16371.88', '0.0016069', 1],\n",
+ " ['16369.05', '0.0016006', 1],\n",
+ " ['16367.87', '0.00170809', 1],\n",
+ " ['16364', '0.001527', 1],\n",
+ " ['16363.31', '0.00061112', 1],\n",
+ " ['16350', '0.405', 2],\n",
+ " ['16349.35', '0.00158489', 1],\n",
+ " ['16341.02', '0.00155396', 1],\n",
+ " ['16338.33', '0.00222552', 1],\n",
+ " ['16333.02', '0.00061226', 1],\n",
+ " ['16323.21', '0.00260703', 1],\n",
+ " ['16322', '0.02967627', 1],\n",
+ " ['16320', '0.035', 1],\n",
+ " ['16318.27', '0.00167151', 1],\n",
+ " ['16315', '0.00440735', 1],\n",
+ " ['16302.73', '0.00061339', 1],\n",
+ " ['16302.03', '0.00353727', 1],\n",
+ " ['16301.11', '0.0030489', 1],\n",
+ " ['16300', '0.14844669', 6],\n",
+ " ['16299.66', '0.00256503', 1],\n",
+ " ['16292.69', '0.00223078', 1],\n",
+ " ['16280.83', '0.00336953', 1],\n",
+ " ['16280', '0.02291939', 1],\n",
+ " ['16272.44', '0.00061454', 1],\n",
+ " ['16267.5', '0.07899185', 1],\n",
+ " ['16261', '0.0006125', 1],\n",
+ " ['16256.69', '0.00103972', 1],\n",
+ " ['16251.81', '0.001591', 1],\n",
+ " ['16250', '1.5074035', 6],\n",
+ " ['16244.7', '0.00024404', 1],\n",
+ " ['16242.15', '0.00061568', 1],\n",
+ " ['16241.8', '0.0026201', 1],\n",
+ " ['16238.8', '1.02441228', 1],\n",
+ " ['16234', '0.10956855', 1],\n",
+ " ['16233.25', '0.00118409', 1],\n",
+ " ['16233', '0.00061233', 1],\n",
+ " ['16232.39', '0.0028266', 1],\n",
+ " ['16225', '0.07832107', 1],\n",
+ " ['16218.32', '0.00256503', 1],\n",
+ " ['16215.9', '0.0030376', 1],\n",
+ " ['16215.47', '0.00347594', 1],\n",
+ " ['16215.29', '0.00188858', 1],\n",
+ " ['16211.85', '0.00061683', 1],\n",
+ " ['16201', '0.00496', 1],\n",
+ " ['16200.89', '0.30453321', 1],\n",
+ " ['16200', '0.3952258', 7],\n",
+ " ['16199.34', '0.00235501', 1],\n",
+ " ['16197.87', '0.01543413', 1],\n",
+ " ['16195.93', '0.00214106', 1],\n",
+ " ['16187', '0.01', 1],\n",
+ " ['16181.56', '0.00061799', 1],\n",
+ " ['16160.79', '0.00263323', 1],\n",
+ " ['16155', '0.05330147', 1],\n",
+ " ['16151.27', '0.00061915', 1],\n",
+ " ['16151', '0.015', 1],\n",
+ " ['16150', '0.31488444', 2],\n",
+ " ['16139.21', '0.00757655', 1],\n",
+ " ['16137.39', '0.00256503', 1],\n",
+ " ['16133.57', '0.00163064', 1],\n",
+ " ['16133.05', '0.00978047', 1],\n",
+ " ['16127.32', '0.00173357', 1],\n",
+ " ['16126.96', '0.00162463', 1],\n",
+ " ['16125.57', '0.0002404', 1],\n",
+ " ['16120.98', '0.00062031', 1],\n",
+ " ['16120', '0.00385083', 1],\n",
+ " ['16111', '0.00308484', 1],\n",
+ " ['16110.21', '0.00160841', 1],\n",
+ " ['16110', '0.2', 1],\n",
+ " ['16106', '0.18861382', 1],\n",
+ " ['16100.66', '0.00225837', 1],\n",
+ " ['16100.06', '0.00157722', 1],\n",
+ " ['16100', '1.66382535', 8],\n",
+ " ['16090.68', '0.00062148', 1],\n",
+ " ['16086', '0.047', 1],\n",
+ " ['16085', '0.00061921', 1],\n",
+ " ['16082.06', '0.00024651', 1],\n",
+ " ['16080.19', '0.00264643', 1],\n",
+ " ['16078.43', '0.00169645', 1],\n",
+ " ['16069.93', '0.01393633', 1],\n",
+ " ['16064.21', '0.0028562', 1],\n",
+ " ['16060.39', '0.00062265', 1],\n",
+ " ['16060.09', '0.00359056', 1],\n",
+ " ['16056.87', '0.00256503', 1],\n",
+ " ['16053.09', '0.00226408', 1],\n",
+ " ['16053', '0.00309599', 1],\n",
+ " ['16030.1', '0.00062383', 1],\n",
+ " ['16021', '0.046815', 1],\n",
+ " ['16018.42', '0.00105518', 1],\n",
+ " ['16016.16', '0.06', 1],\n",
+ " ['16012.25', '0.0016148', 1],\n",
+ " ['16005', '0.35848265', 1],\n",
+ " ['16001', '0.00475475', 1],\n",
+ " ['16000.71', '0.04902438', 1],\n",
+ " ['16000', '2.97460875', 46],\n",
+ " ...],\n",
+ " 'asks': [['19139.24', '0.1', 1],\n",
+ " ['19139.39', '0.03995097', 1],\n",
+ " ['19140.04', '0.5', 1],\n",
+ " ['19141.64', '0.11486341', 1],\n",
+ " ['19141.65', '0.28715842', 1],\n",
+ " ['19142.43', '0.1306071', 1],\n",
+ " ['19142.9', '0.22941529', 1],\n",
+ " ['19142.91', '0.57353809', 1],\n",
+ " ['19142.92', '0.26120748', 1],\n",
+ " ['19143.73', '0.01049371', 1],\n",
+ " ['19143.8', '0.37750274', 1],\n",
+ " ['19144.23', '0.20000007', 1],\n",
+ " ['19144.29', '0.03950896', 1],\n",
+ " ['19144.35', '0.13640141', 1],\n",
+ " ['19145.03', '0.10897414', 1],\n",
+ " ['19145.06', '0.10447134', 1],\n",
+ " ['19145.07', '0.2611782', 1],\n",
+ " ['19145.48', '0.05359487', 1],\n",
+ " ['19145.77', '0.35993583', 2],\n",
+ " ['19145.78', '0.5223368', 1],\n",
+ " ['19146.02', '0.39174777', 1],\n",
+ " ['19146.26', '0.10718973', 1],\n",
+ " ['19146.34', '0.30470338', 2],\n",
+ " ['19146.35', '0.05262666', 1],\n",
+ " ['19146.4', '0.76175825', 1],\n",
+ " ['19146.72', '0.48065646', 1],\n",
+ " ['19146.98', '0.233', 1],\n",
+ " ['19147.02', '0.29967883', 1],\n",
+ " ['19147.38', '0.20891312', 1],\n",
+ " ['19147.76', '0.52228279', 1],\n",
+ " ['19149.49', '0.52220088', 2],\n",
+ " ['19149.72', '1.30550211', 1],\n",
+ " ['19150.53', '0.20888283', 1],\n",
+ " ['19150.54', '0.52220698', 1],\n",
+ " ['19151.17', '0.10890257', 1],\n",
+ " ['19152.46', '0.0627791', 1],\n",
+ " ['19152.79', '1.25791503', 1],\n",
+ " ['19153', '0.15694772', 1],\n",
+ " ['19153.31', '1.5', 1],\n",
+ " ['19153.42', '0.89562463', 1],\n",
+ " ['19153.59', '0.60810664', 1],\n",
+ " ['19153.6', '1.52026641', 1],\n",
+ " ['19154.37', '0.50335309', 2],\n",
+ " ['19154.38', '0.235', 1],\n",
+ " ['19154.41', '1.25838266', 1],\n",
+ " ['19155.78', '0.52206432', 1],\n",
+ " ['19160.12', '0.233', 1],\n",
+ " ['19161.9', '2.30059659', 1],\n",
+ " ['19163.52', '0.78278001', 1],\n",
+ " ['19164.21', '0.52183468', 1],\n",
+ " ['19165.86', '0.235', 1],\n",
+ " ['19169.47', '0.1', 1],\n",
+ " ['19169.66', '0.2', 2],\n",
+ " ['19170.7', '3.85460199', 1],\n",
+ " ['19170.8', '0.1', 1],\n",
+ " ['19170.96', '0.1', 1],\n",
+ " ['19171.6', '0.235', 1],\n",
+ " ['19174.43', '0.1', 1],\n",
+ " ['19174.57', '0.04896638', 1],\n",
+ " ['19177.34', '0.235', 1],\n",
+ " ['19180.37', '0.1', 1],\n",
+ " ['19183.08', '0.235', 1],\n",
+ " ['19184.21', '0.1', 1],\n",
+ " ['19184.25', '0.00044067', 1],\n",
+ " ['19184.26', '0.00043166', 1],\n",
+ " ['19184.27', '0.00017631', 1],\n",
+ " ['19184.28', '0.00131906', 1],\n",
+ " ['19184.29', '0.00137805', 1],\n",
+ " ['19185.6', '2.60626272', 1],\n",
+ " ['19188.82', '1.409', 2],\n",
+ " ['19188.9', '0.039', 1],\n",
+ " ['19193.77', '1.903', 1],\n",
+ " ['19194.56', '1.41', 2],\n",
+ " ['19199.77', '12.01680607', 1],\n",
+ " ['19200.3', '1.41', 2],\n",
+ " ['19200.94', '0.43668154', 1],\n",
+ " ['19202.87', '6.146', 1],\n",
+ " ['19225.99', '2.60058745', 1],\n",
+ " ['19245.16', '0.00261834', 1],\n",
+ " ['19250', '0.00496134', 3],\n",
+ " ['19254.95', '0.00162702', 1],\n",
+ " ['19258.09', '0.02081531', 1],\n",
+ " ['19266.76', '0.00010594', 1],\n",
+ " ['19269.62', '0.00072105', 1],\n",
+ " ['19276.72', '0.00089699', 1],\n",
+ " ['19279.82', '0.0066612', 1],\n",
+ " ['19280', '0.00022468', 1],\n",
+ " ['19281.32', '0.00256503', 1],\n",
+ " ['19282.71', '0.00546072', 1],\n",
+ " ['19284.68', '0.00022088', 1],\n",
+ " ['19287.18', '0.00137144', 1],\n",
+ " ['19291.51', '0.00051836', 1],\n",
+ " ['19292.54', '0.00051834', 1],\n",
+ " ['19295.42', '0.00101907', 1],\n",
+ " ['19300', '0.05321051', 4],\n",
+ " ['19300.07', '0.00926235', 1],\n",
+ " ['19302.23', '0.00010574', 1],\n",
+ " ['19307.59', '0.00598921', 1],\n",
+ " ['19307.6', '0.00222426', 1],\n",
+ " ['19307.96', '0.00217786', 1],\n",
+ " ['19315.58', '0.02647534', 1],\n",
+ " ['19325', '0.00221134', 1],\n",
+ " ['19327.39', '0.0024178', 1],\n",
+ " ['19328.97', '0.00192361', 1],\n",
+ " ['19337.77', '0.00010555', 1],\n",
+ " ['19350', '0.00485079', 2],\n",
+ " ['19351.9', '0.00192217', 1],\n",
+ " ['19352.73', '0.000785', 1],\n",
+ " ['19355.12', '0.00074151', 1],\n",
+ " ['19357.29', '0.00010532', 1],\n",
+ " ['19357.69', '0.00144147', 1],\n",
+ " ['19360.42', '0.00540847', 1],\n",
+ " ['19363.64', '0.00834864', 1],\n",
+ " ['19366.59', '0.00304602', 1],\n",
+ " ['19367', '0.00208742', 1],\n",
+ " ['19373.37', '0.00010536', 1],\n",
+ " ['19373.8', '0.00011513', 1],\n",
+ " ['19376.43', '0.00129023', 1],\n",
+ " ['19378.02', '0.00256503', 1],\n",
+ " ['19378.84', '0.00053914', 1],\n",
+ " ['19380.66', '0.00136774', 1],\n",
+ " ['19387.47', '0.0005158', 1],\n",
+ " ['19392.4', '0.004', 1],\n",
+ " ['19393.3', '0.00127285', 1],\n",
+ " ['19393.48', '0.00138774', 1],\n",
+ " ['19394.17', '0.00133944', 1],\n",
+ " ['19395.09', '0.00921697', 1],\n",
+ " ['19396.08', '0.00051557', 1],\n",
+ " ['19400', '0.05221134', 2],\n",
+ " ['19401', '0.00632336', 1],\n",
+ " ['19404.37', '0.00221317', 1],\n",
+ " ['19404.83', '0.01856098', 1],\n",
+ " ['19409.03', '0.00010516', 1],\n",
+ " ['19416.38', '0.00147303', 1],\n",
+ " ['19416.41', '0.00051503', 1],\n",
+ " ['19426.02', '0.00020574', 1],\n",
+ " ['19426.08', '0.00071045', 1],\n",
+ " ['19432.51', '0.00216389', 1],\n",
+ " ['19433.17', '0.00643703', 1],\n",
+ " ['19436.3', '0.00137903', 1],\n",
+ " ['19437.38', '0.00157352', 1],\n",
+ " ['19440.85', '0.00021368', 1],\n",
+ " ['19444.76', '0.00010497', 1],\n",
+ " ['19450', '0.00144601', 1],\n",
+ " ['19460.19', '0.00051387', 1],\n",
+ " ['19462.41', '0.0001021', 1],\n",
+ " ['19463.25', '0.01812938', 1],\n",
+ " ['19468.83', '0.00008', 1],\n",
+ " ['19474.74', '0.003', 1],\n",
+ " ['19475', '0.00221134', 1],\n",
+ " ['19475.19', '0.00256503', 1],\n",
+ " ['19480.56', '0.00010478', 1],\n",
+ " ['19490.56', '0.00917182', 1],\n",
+ " ['19491.86', '0.00051304', 1],\n",
+ " ['19492.33', '0.00546072', 1],\n",
+ " ['19492.34', '0.00181989', 1],\n",
+ " ['19493.97', '0.00071275', 1],\n",
+ " ['19497.3', '0.01', 1],\n",
+ " ['19499', '0.01544695', 1],\n",
+ " ['19500', '0.37208347', 6],\n",
+ " ['19501.64', '0.00220213', 1],\n",
+ " ['19516.42', '0.00010458', 1],\n",
+ " ['19522', '0.001', 1],\n",
+ " ['19526.76', '0.00013874', 1],\n",
+ " ['19527.89', '0.00126407', 1],\n",
+ " ['19529.06', '0.01599994', 1],\n",
+ " ['19529.73', '0.00239275', 1],\n",
+ " ['19533.15', '0.00257973', 1],\n",
+ " ['19543.25', '0.00046052', 1],\n",
+ " ['19544.14', '0.00160295', 1],\n",
+ " ['19550', '0.00221134', 1],\n",
+ " ['19552.35', '0.00010439', 1],\n",
+ " ['19556.64', '0.00053914', 1],\n",
+ " ['19557.86', '0.00215004', 1],\n",
+ " ['19558.57', '0.00019592', 1],\n",
+ " ['19563.47', '0.00088385', 1],\n",
+ " ['19564', '0.00002669', 1],\n",
+ " ['19572.87', '0.00256503', 1],\n",
+ " ['19575.17', '0.0260925', 1],\n",
+ " ['19575.72', '0.00135123', 1],\n",
+ " ['19581.26', '0.00481621', 1],\n",
+ " ['19581.28', '0.01856098', 1],\n",
+ " ['19585.08', '0.00139879', 1],\n",
+ " ['19586.52', '0.00912688', 1],\n",
+ " ['19587.17', '0.0010039', 1],\n",
+ " ['19588.34', '0.0001042', 1],\n",
+ " ['19589.62', '0.0053453', 1],\n",
+ " ['19599.39', '0.00219115', 1],\n",
+ " ['19600', '0.001', 1],\n",
+ " ['19617.45', '0.00189532', 1],\n",
+ " ['19620', '0.0052258', 1],\n",
+ " ['19622.48', '0.00020574', 1],\n",
+ " ['19624.4', '0.00010401', 1],\n",
+ " ['19625', '0.00221134', 1],\n",
+ " ['19629.44', '0.00011423', 1],\n",
+ " ['19637.57', '0.0018942', 1],\n",
+ " ['19646.44', '0.00142028', 1],\n",
+ " ['19650', '0.00051892', 1],\n",
+ " ['19651.06', '0.00070232', 1],\n",
+ " ['19658.34', '0.00300081', 1],\n",
+ " ['19658.76', '0.00073005', 1],\n",
+ " ['19660.53', '0.00010382', 1],\n",
+ " ['19661.22', '0.00155561', 1],\n",
+ " ['19662.98', '0.00021126', 1],\n",
+ " ['19663.42', '0.00125536', 1],\n",
+ " ['19668.35', '0.00134774', 1],\n",
+ " ['19670.88', '0.004', 1],\n",
+ " ['19671.03', '0.00256503', 1],\n",
+ " ['19679.94', '0.00136754', 1],\n",
+ " ['19682.95', '0.00908217', 1],\n",
+ " ['19684.03', '0.00213625', 1],\n",
+ " ['19684.43', '0.00131969', 1],\n",
+ " ['19688.45', '0.005', 1],\n",
+ " ['19696.73', '0.00010363', 1],\n",
+ " ['19697.63', '0.00218022', 1],\n",
+ " ['19700', '0.12223396', 9],\n",
+ " ['19700.65', '0.74118903', 1],\n",
+ " ['19704.23', '0.00546072', 1],\n",
+ " ['19705.99', '0.00145138', 1],\n",
+ " ['19709.59', '0.00005798', 1],\n",
+ " ['19720', '0.00005788', 1],\n",
+ " ['19720.1', '0.0004712', 1],\n",
+ " ['19720.94', '0.00070455', 1],\n",
+ " ['19723.26', '0.00634235', 1],\n",
+ " ['19728.07', '0.00135863', 1],\n",
+ " ['19730.48', '0.00011304', 1],\n",
+ " ['19732.99', '0.00010344', 1],\n",
+ " ['19734.18', '0.00236796', 1],\n",
+ " ['19736.07', '0.00053914', 1],\n",
+ " ['19750', '0.00255577', 2],\n",
+ " ['19757.73', '0.01856098', 1],\n",
+ " ['19760.83', '0.01785638', 1],\n",
+ " ['19766.04', '0.00007172', 1],\n",
+ " ['19769.31', '0.00010325', 1],\n",
+ " ['19769.67', '0.00256503', 1],\n",
+ " ['19775', '0.00221134', 1],\n",
+ " ['19779.84', '0.00903767', 1],\n",
+ " ['19780', '0.00304728', 1],\n",
+ " ['19782.46', '0.0017932', 1],\n",
+ " ['19786.22', '0.00076127', 1],\n",
+ " ['19794', '0.02557692', 1],\n",
+ " ['19796.37', '0.00216934', 1],\n",
+ " ['19797.98', '0.00010163', 1],\n",
+ " ['19799.47', '0.00001778', 1],\n",
+ " ['19799.88', '0.00124671', 1],\n",
+ " ['19800', '0.58153381', 9],\n",
+ " ['19805.47', '0.09548606', 1],\n",
+ " ['19805.71', '0.00010306', 1],\n",
+ " ['19807.6', '0.00005541', 1],\n",
+ " ['19810.91', '0.0008', 1],\n",
+ " ['19811.01', '0.00212256', 1],\n",
+ " ['19820.94', '0.00020574', 1],\n",
+ " ['19821.54', '0.00528275', 1],\n",
+ " ['19825.43', '0.0025417', 1],\n",
+ " ['19837.67', '0.00157923', 1],\n",
+ " ['19842.17', '0.00010287', 1],\n",
+ " ['19843.74', '0.00521664', 1],\n",
+ " ['19850', '1.06099054', 4],\n",
+ " ['19854.47', '0.00087089', 1],\n",
+ " ['19860', '0.00054462', 1],\n",
+ " ['19863.99', '0.00025687', 1],\n",
+ " ['19868.59', '0.00133131', 1],\n",
+ " ['19868.81', '0.00256503', 1],\n",
+ " ['19875', '0.00067202', 1],\n",
+ " ['19875.18', '0.0116963', 1],\n",
+ " ['19875.25', '0.00050314', 1],\n",
+ " ['19877.22', '0.0089934', 1],\n",
+ " ['19878.64', '0.00069428', 1],\n",
+ " ['19878.7', '0.00010268', 1],\n",
+ " ['19879.38', '0.00017367', 1],\n",
+ " ['19883.32', '0.00098895', 1],\n",
+ " ['19886.25', '0.00013623', 1],\n",
+ " ['19887.64', '0.0015379', 1],\n",
+ " ['19887.65', '0.00020888', 1],\n",
+ " ['19891.07', '0.00019592', 1],\n",
+ " ['19895.59', '0.00215852', 1],\n",
+ " ['19898', '0.1891025', 1],\n",
+ " ['19899.05', '0.00005056', 1],\n",
+ " ['19900', '0.05653593', 5],\n",
+ " ['19907.55', '0.00026436', 1],\n",
+ " ['19910.25', '0.00186745', 1],\n",
+ " ['19915.3', '0.00010249', 1],\n",
+ " ['19917.13', '0.00053914', 1],\n",
+ " ['19918.45', '0.00546072', 1],\n",
+ " ['19925', '0.00221134', 1],\n",
+ " ['19927.45', '0.00158476', 1],\n",
+ " ['19933.32', '0.00005047', 1],\n",
+ " ['19934.18', '0.01856098', 1],\n",
+ " ['19936.19', '0.00597206', 1],\n",
+ " ['19937.29', '0.00123813', 1],\n",
+ " ['19938.81', '0.00210896', 1],\n",
+ " ['19939.5', '0.00139941', 1],\n",
+ " ['19940', '0.08630938', 1],\n",
+ " ['19940.77', '0.00234343', 1],\n",
+ " ['19941.01', '0.00250866', 1],\n",
+ " ['19945', '0.01231094', 1],\n",
+ " ['19945.65', '0.0013735', 1],\n",
+ " ['19949.36', '0.004', 1],\n",
+ " ['19950', '0.05290195', 2],\n",
+ " ['19950.54', '0.00069644', 1],\n",
+ " ['19951.95', '0.01602904', 4],\n",
+ " ['19952', '0.00521505', 1],\n",
+ " ['19954.48', '0.00295628', 1],\n",
+ " ['19960.14', '0.00067635', 1],\n",
+ " ['19960.3', '0.00132803', 1],\n",
+ " ['19960.85', '0.00050098', 1],\n",
+ " ['19962.99', '0.00025946', 1],\n",
+ " ['19966.58', '0.00100167', 1],\n",
+ " ['19967.16', '0.00071878', 1],\n",
+ " ['19968.46', '0.00256503', 1],\n",
+ " ['19970.63', '0.00134763', 1],\n",
+ " ['19975.09', '0.00894934', 1],\n",
+ " ['19978.76', '0.00009863', 1],\n",
+ " ['19979.03', '0.00130023', 1],\n",
+ " ['19980', '0.01', 1],\n",
+ " ['19985.62', '0.00006038', 1],\n",
+ " ['19988.69', '0.00010332', 1],\n",
+ " ['19988.84', '0.00050028', 1],\n",
+ " ['19988.85', '0.00005033', 1],\n",
+ " ['19995.31', '0.00214776', 1],\n",
+ " ['19999.93', '0.00143005', 1],\n",
+ " ['20000', '1.63947507', 26],\n",
+ " ['20000.41', '0.00007462', 1],\n",
+ " ['20005.45', '0.00099973', 1],\n",
+ " ['20017.68', '0.00624907', 1],\n",
+ " ['20019.7', '0.00156782', 1],\n",
+ " ['20021.41', '0.00020574', 1],\n",
+ " ['20022.62', '0.00015848', 1],\n",
+ " ['20024.22', '0.00133854', 1],\n",
+ " ['20025.48', '0.00010313', 1],\n",
+ " ['20030', '0.00006854', 1],\n",
+ " ['20032.37', '0.00089868', 1],\n",
+ " ['20036.37', '0.00030223', 1],\n",
+ " ['20044.33', '0.00099779', 1],\n",
+ " ['20046.45', '0.00049884', 1],\n",
+ " ['20047.95', '0.01022816', 1],\n",
+ " ['20048', '0.02525316', 1],\n",
+ " ['20050', '0.02881541', 1],\n",
+ " ['20056.2', '0.00522094', 1],\n",
+ " ['20062.35', '0.00010294', 1],\n",
+ " ['20062.96', '0.01758749', 1],\n",
+ " ['20067.43', '0.00209544', 1],\n",
+ " ['20068.6', '0.00256503', 1],\n",
+ " ['20075.66', '0.00122958', 1],\n",
+ " ['20076.92', '0.0017669', 1],\n",
+ " ['20081.25', '0.0000513', 1],\n",
+ " ['20081.52', '0.00014999', 1],\n",
+ " ['20083.21', '0.00099586', 1],\n",
+ " ['20083.39', '0.0012', 1],\n",
+ " ['20084.98', '0.01599994', 1],\n",
+ " ['20086.11', '0.00008', 1],\n",
+ " ['20089.15', '0.00056144', 1],\n",
+ " ['20090', '0.1', 1],\n",
+ " ['20093.72', '0.00010899', 1],\n",
+ " ['20095.27', '0.002', 1],\n",
+ " ['20095.53', '0.00213705', 1],\n",
+ " ['20097.38', '0.00601761', 1],\n",
+ " ['20099.29', '0.00010275', 1],\n",
+ " ['20099.87', '0.00053914', 1],\n",
+ " ['20100', '0.09297406', 6],\n",
+ " ['20108.86', '0.00068633', 1],\n",
+ " ['20110.62', '0.01856098', 1],\n",
+ " ['20113.99', '0.00015422', 1],\n",
+ " ['20114.88', '0.00020652', 1],\n",
+ " ['20116.66', '0.00152039', 1],\n",
+ " ['20122.09', '0.00349816', 2],\n",
+ " ['20123.02', '0.00116643', 1],\n",
+ " ['20132.05', '0.00049672', 1],\n",
+ " ['20134.98', '0.00546072', 1],\n",
+ " ['20135.62', '0.00155586', 1],\n",
+ " ['20136.29', '0.00010256', 1],\n",
+ " ['20149.53', '0.00231915', 1],\n",
+ " ['20149.81', '0.00085813', 1],\n",
+ " ['20159.29', '0.00029009', 1],\n",
+ " ['20160.97', '0.00099202', 1],\n",
+ " ['20162.85', '0.00012105', 1],\n",
+ " ['20165.83', '0.00131169', 1],\n",
+ " ['20167.15', '0.0001224', 1],\n",
+ " ['20169.25', '0.00256503', 1],\n",
+ " ['20173.36', '0.00010238', 1],\n",
+ " ['20175.39', '0.00288916', 1],\n",
+ " ['20177.51', '0.00049561', 1],\n",
+ " ['20182.83', '0.00068842', 1],\n",
+ " ['20183.96', '0.00097422', 1],\n",
+ " ['20196.26', '0.00212639', 1],\n",
+ " ['20196.88', '0.00208201', 1],\n",
+ " ['20199.84', '0.00099011', 1],\n",
+ " ['20200', '0.68503328', 8],\n",
+ " ['20207.41', '0.00183999', 1],\n",
+ " ['20210.49', '0.00010219', 1],\n",
+ " ['20212.59', '0.00427457', 1],\n",
+ " ['20214.99', '0.00122112', 1],\n",
+ " ['20217.65', '0.00049462', 1],\n",
+ " ['20220.7', '0.00018859', 1],\n",
+ " ['20221.62', '0.0018395', 1],\n",
+ " ['20223.9', '0.00020574', 1],\n",
+ " ['20227.84', '0.004', 1],\n",
+ " ['20229.22', '0.00019592', 1],\n",
+ " ['20236.6', '0.0001108', 1],\n",
+ " ['20236.94', '0.00137884', 1],\n",
+ " ['20238.72', '0.0009882', 1],\n",
+ " ['20242.09', '0.00884905', 1],\n",
+ " ['20243.33', '0.0124408', 1],\n",
+ " ['20247.71', '0.000102', 1],\n",
+ " ['20249.79', '0.00644481', 1],\n",
+ " ['20250', '0.00547053', 2],\n",
+ " ['20252.36', '0.00013135', 1],\n",
+ " ['20255.08', '0.0029124', 1],\n",
+ " ['20256.59', '0.0013086', 1],\n",
+ " ['20265.62', '0.00132802', 1],\n",
+ " ['20270.4', '0.00256503', 1],\n",
+ " ['20277.6', '0.00098631', 1],\n",
+ " ['20278.04', '0.00128106', 1],\n",
+ " ['20280.4', '0.00070768', 1],\n",
+ " ['20280.83', '0.00002596', 1],\n",
+ " ['20284.27', '0.00053914', 1],\n",
+ " ['20284.98', '0.00010181', 1],\n",
+ " ['20292', '0.0047794', 1],\n",
+ " ['20293.64', '0.00515986', 1],\n",
+ " ['20297.5', '0.00211577', 1],\n",
+ " ['20298.25', '0.00140903', 1],\n",
+ " ['20300', '0.06981237', 8],\n",
+ " ['20302.51', '0.00531855', 1],\n",
+ " ['20303.25', '0.00049253', 1],\n",
+ " ['20306.57', '0.00037576', 1],\n",
+ " ['20312.85', '0.00132429', 1],\n",
+ " ['20316.48', '0.00098442', 1],\n",
+ " ['20316.5', '0.00615716', 1],\n",
+ " ['20319.92', '0.00003456', 1],\n",
+ " ['20322.32', '0.00010163', 1],\n",
+ " ['20324.82', '0.00131874', 1],\n",
+ " ['20327.17', '0.00206866', 1],\n",
+ " ['20341', '1', 1],\n",
+ " ['20341.75', '0.00067847', 1],\n",
+ " ['20344.72', '0.00020419', 1],\n",
+ " ['20348.32', '0.00150308', 1],\n",
+ " ['20350', '0.04', 2],\n",
+ " ['20353.87', '0.00546072', 1],\n",
+ " ['20355.03', '0.00122738', 1],\n",
+ " ['20355.28', '0.00121269', 1],\n",
+ " ['20355.36', '0.00098254', 1],\n",
+ " ['20359.73', '0.00010144', 1],\n",
+ " ['20360', '0.00490613', 1],\n",
+ " ['20360.47', '0.00229512', 1],\n",
+ " ['20362.57', '0.0042231', 1],\n",
+ " ['20369.71', '0.01732263', 1],\n",
+ " ['20371.81', '0.00026325', 1],\n",
+ " ['20372', '0.00246908', 1],\n",
+ " ['20372.05', '0.00256503', 1],\n",
+ " ['20372.65', '0.19730406', 1],\n",
+ " ['20375.75', '0.00174099', 1],\n",
+ " ['20383.43', '0.18888894', 1],\n",
+ " ['20388.85', '0.00049046', 1],\n",
+ " ['20389.06', '0.00371839', 1],\n",
+ " ['20390.47', '0.00072072', 1],\n",
+ " ['20394.23', '0.00098067', 1],\n",
+ " ['20397.21', '0.00010125', 1],\n",
+ " ['20399.23', '0.00210523', 1],\n",
+ " ['20399.99', '1.3299759', 1],\n",
+ " ['20400', '1.80257855', 11],\n",
+ " ['20401.19', '0.00049311', 1],\n",
+ " ['20402.95', '0.00075969', 1],\n",
+ " ['20404.07', '0.00014792', 1],\n",
+ " ['20404.55', '0.0003111', 1],\n",
+ " ['20414.95', '0.01549053', 1],\n",
+ " ['20417.81', '0.0006805', 1],\n",
+ " ['20420', '0.48786852', 1],\n",
+ " ['20421', '0.0047794', 1],\n",
+ " ['20423.19', '0.00246731', 1],\n",
+ " ['20428.44', '0.00020574', 1],\n",
+ " ['20433.11', '0.0009788', 1],\n",
+ " ['20434.76', '0.00010107', 1],\n",
+ " ['20438.04', '0.00153284', 1],\n",
+ " ['20444.12', '0.13', 1],\n",
+ " ['20449.54', '0.00084555', 1],\n",
+ " ['20450', '0.01540988', 5],\n",
+ " ['20450.25', '0.00024597', 1],\n",
+ " ['20451.76', '0.06173', 1],\n",
+ " ['20456', '0.00001835', 1],\n",
+ " ['20458.3', '0.00205541', 1],\n",
+ " ['20463.65', '0.00010702', 1],\n",
+ " ['20464.18', '0.01135966', 1],\n",
+ " ['20464.48', '1.25344354', 1],\n",
+ " ['20467.41', '0.00048858', 1],\n",
+ " ['20467.52', '0.00129235', 1],\n",
+ " ['20470', '0.00157776', 1],\n",
+ " ['20470.37', '0.00053914', 1],\n",
+ " ['20471.99', '0.00097694', 1],\n",
+ " ['20472.04', '0.00298592', 1],\n",
+ " ['20472.38', '0.00010088', 1],\n",
+ " ['20473.99', '0.00007417', 1],\n",
+ " ['20474.22', '0.00256503', 1],\n",
+ " ['20474.45', '0.00048841', 1],\n",
+ " ['20481', '0.00005294', 1],\n",
+ " ['20481.52', '0.00256705', 1],\n",
+ " ['20483.9', '0.00048819', 1],\n",
+ " ['20484', '0.67396581', 1],\n",
+ " ['20489.14', '0.00095971', 1],\n",
+ " ['20496.55', '0.00120433', 1],\n",
+ " ['20499.1', '0.08147675', 1],\n",
+ " ['20499.18', '0.00121875', 1],\n",
+ " ['20500', '2.01442837', 22],\n",
+ " ['20501', '0.00283171', 1],\n",
+ " ['20501.35', '0.00048777', 1],\n",
+ " ['20501.48', '0.00207571', 1],\n",
+ " ['20502.11', '0.00098771', 1],\n",
+ " ['20506.32', '0.004', 1],\n",
+ " ['20508.97', '0.00048759', 1],\n",
+ " ['20509.01', '0.00181293', 1],\n",
+ " ['20510.07', '0.0001007', 1],\n",
+ " ['20510.51', '0.01294459', 1],\n",
+ " ['20510.87', '0.00097509', 1],\n",
+ " ['20516.33', '0.00015325', 1],\n",
+ " ['20520.12', '0.00181274', 1],\n",
+ " ['20523', '0.00025238', 1],\n",
+ " ['20533.89', '0.00509949', 1],\n",
+ " ['20535.29', '0.00048697', 1],\n",
+ " ['20536.53', '0.02400167', 1],\n",
+ " ['20538.81', '0.00135857', 1],\n",
+ " ['20545', '0.0049016', 1],\n",
+ " ['20547', '0.05', 1],\n",
+ " ['20547.83', '0.00010051', 1],\n",
+ " ['20548.02', '0.00048666', 1],\n",
+ " ['20548.51', '0.13630365', 1],\n",
+ " ['20549.75', '0.00097325', 1],\n",
+ " ['20550', '0.00048435', 1],\n",
+ " ['20551.61', '0.00048658', 1],\n",
+ " ['20551.82', '0.0008', 1],\n",
+ " ['20552.04', '0.00048657', 1],\n",
+ " ['20557.27', '0.00128946', 1],\n",
+ " ['20560.05', '0.00048638', 1],\n",
+ " ['20560.22', '0.00286918', 1],\n",
+ " ['20564.98', '0.00130869', 1],\n",
+ " ['20569.22', '0.00048616', 1],\n",
+ " ['20573', '0.2', 1],\n",
+ " ['20573.11', '0.00019592', 1],\n",
+ " ['20573.15', '0.00118165', 1],\n",
+ " ['20573.63', '0.00231861', 1],\n",
+ " ['20575.15', '0.00546072', 1],\n",
+ " ['20576.9', '0.00256503', 1],\n",
+ " ['20577.17', '0.00020188', 1],\n",
+ " ['20577.33', '0.00067871', 1],\n",
+ " ['20581.54', '0.00126217', 1],\n",
+ " ['20582.64', '0.00148597', 1],\n",
+ " ['20584', '0.01865068', 1],\n",
+ " ['20585.66', '0.00010033', 1],\n",
+ " ['20588.62', '0.00097141', 1],\n",
+ " ['20590', '0.00204746', 1],\n",
+ " ['20590.27', '0.00204223', 1],\n",
+ " ['20591', '0.01013806', 1],\n",
+ " ['20598.56', '0.00069675', 1],\n",
+ " ['20600', '0.89804653', 7],\n",
+ " ['20601.01', '0.00138832', 1],\n",
+ " ['20601.44', '0.00079138', 1],\n",
+ " ['20603.16', '0.00048536', 1],\n",
+ " ['20604.24', '0.00206536', 1],\n",
+ " ['20610.73', '0.00048518', 1],\n",
+ " ['20611.99', '0.00027975', 1],\n",
+ " ['20619.77', '0.0060666', 1],\n",
+ " ['20623.55', '0.00010014', 1],\n",
+ " ['20624', '0.2', 1],\n",
+ " ['20624.97', '0.00048485', 1],\n",
+ " ['20625.21', '0.00012897', 1],\n",
+ " ['20625.96', '0.00048483', 1],\n",
+ " ['20627.5', '0.00096958', 1],\n",
+ " ['20629.94', '0.00129924', 1],\n",
+ " ['20635.04', '0.00020574', 1],\n",
+ " ['20637.1', '0.00048456', 1],\n",
+ " ['20638', '0.003968', 1],\n",
+ " ['20638.79', '0.00119603', 1],\n",
+ " ['20640.9', '0.01599994', 1],\n",
+ " ['20644.35', '0.00121018', 1],\n",
+ " ['20645.65', '0.00048436', 1],\n",
+ " ['20650', '2.10393159', 3],\n",
+ " ['20650.59', '0.02748046', 1],\n",
+ " ['20655.54', '0.00067267', 1],\n",
+ " ['20658.18', '0.00053914', 1],\n",
+ " ['20661.52', '0.00009996', 1],\n",
+ " ['20666.38', '0.00096776', 1],\n",
+ " ['20672.41', '0.00101756', 1],\n",
+ " ['20676.84', '0.00597442', 1],\n",
+ " ['20679.03', '0.00171545', 1],\n",
+ " ['20680.1', '0.00256503', 1],\n",
+ " ['20681.15', '0.01765896', 1],\n",
+ " ['20685.66', '0.00196062', 1],\n",
+ " ['20686.81', '0.00130035', 1],\n",
+ " ['20694', '0.2', 1],\n",
+ " ['20698', '0.0028317', 1],\n",
+ " ['20699.56', '0.00009977', 1],\n",
+ " ['20700', '0.30678487', 3],\n",
+ " ['20703.89', '0.000483', 1],\n",
+ " ['20705.26', '0.00096594', 1],\n",
+ " ['20707.52', '0.00205505', 1],\n",
+ " ['20721', '0.0035', 1],\n",
+ " ['20723.09', '0.00202914', 1],\n",
+ " ['20728.8', '0.00243093', 1],\n",
+ " ['20731.25', '0.00048236', 1],\n",
+ " ['20737.66', '0.00009959', 1],\n",
+ " ['20738.71', '0.00010875', 1],\n",
+ " ['20740', '0.02885508', 1],\n",
+ " ['20744', '0.2', 1],\n",
+ " ['20744.14', '0.00096413', 1],\n",
+ " ['20745', '0.00147621', 1],\n",
+ " ['20750', '0.00813772', 2],\n",
+ " ['20753.73', '0.00083316', 1],\n",
+ " ['20773.73', '0.0012733', 1],\n",
+ " ['20775.82', '0.0000378', 1],\n",
+ " ['20775.84', '0.00009941', 1],\n",
+ " ['20776.98', '0.00503982', 1],\n",
+ " ['20781.83', '0.00048119', 1],\n",
+ " ['20782.03', '0.00118779', 1],\n",
+ " ['20783', '0.00002614', 1],\n",
+ " ['20783.01', '0.00096232', 1],\n",
+ " ['20783.81', '0.00256503', 1],\n",
+ " ['20784.81', '0.004', 1],\n",
+ " ['20789.01', '0.00223906', 1],\n",
+ " ['20790.55', '0.00120167', 1],\n",
+ " ['20791', '0.2', 1],\n",
+ " ['20794.54', '0.0024141', 1],\n",
+ " ['20796', '0.62787137', 1],\n",
+ " ['20798.82', '0.00546072', 1],\n",
+ " ['20798.93', '0.00094542', 1],\n",
+ " ['20799', '0.06', 1],\n",
+ " ['20800', '0.50538816', 8],\n",
+ " ['20809.83', '0.00048054', 1],\n",
+ " ['20811.31', '0.00207139', 1],\n",
+ " ['20812.28', '0.0001996', 1],\n",
+ " ['20814.08', '0.00009922', 1],\n",
+ " ['20815.11', '0.00178627', 1],\n",
+ " ['20815.65', '0.00067094', 1],\n",
+ " ['20816.85', '0.00048038', 1],\n",
+ " ['20819.67', '0.00146905', 1],\n",
+ " ['20821.89', '0.00096053', 1],\n",
+ " ['20823.03', '0.00178637', 1],\n",
+ " ['20824.19', '0.0048885', 1],\n",
+ " ['20840.39', '0.00010509', 1],\n",
+ " ['20843.31', '0.03712471', 1],\n",
+ " ['20843.74', '0.00020574', 1],\n",
+ " ['20844', '0.2', 1],\n",
+ " ['20845.19', '0.00133861', 1],\n",
+ " ['20847.71', '0.00053914', 1],\n",
+ " ['20852.41', '0.00009904', 1],\n",
+ " ['20855', '1', 1],\n",
+ " ['20856.77', '0.00201614', 1],\n",
+ " ['20859.77', '0.00047939', 1],\n",
+ " ['20860.77', '0.00095874', 1],\n",
+ " ['20862.42', '0.0012706', 1],\n",
+ " ['20862.56', '0.00010749', 1],\n",
+ " ['20862.87', '0.0009', 1],\n",
+ " ['20868.74', '0.00128964', 1],\n",
+ " ['20869', '0.05', 1],\n",
+ " ['20869.94', '0.0028266', 1],\n",
+ " ['20875', '0.0129', 1],\n",
+ " ['20888', '0.2', 1],\n",
+ " ['20888.03', '0.00256503', 1],\n",
+ " ['20889.56', '0.00124355', 1],\n",
+ " ['20889.68', '0.0009', 1],\n",
+ " ['20890.79', '0.00009886', 1],\n",
+ " ['20893.46', '0.0455334', 1],\n",
+ " ['20893.89', '0.01849938', 1],\n",
+ " ['20896.03', '0.00066493', 1],\n",
+ " ['20897', '0.02535628', 1],\n",
+ " ['20899.65', '0.00095695', 1],\n",
+ " ['20900', '0.02207073', 3],\n",
+ " ['20901', '0.01160405', 1],\n",
+ " ['20902.45', '0.00047841', 1],\n",
+ " ['20908.29', '0.00136792', 1],\n",
+ " ['20915.62', '0.00206106', 1],\n",
+ " ['20919', '0.0122613', 1],\n",
+ " ['20920.47', '0.00003181', 1],\n",
+ " ['20921.7', '0.00068599', 1],\n",
+ " ['20922.86', '0.00019592', 1],\n",
+ " ['20926.25', '0.0011796', 1],\n",
+ " ['20927.5', '0.00014393', 1],\n",
+ " ['20927.58', '0.00597737', 1],\n",
+ " ['20929.26', '0.00009868', 1],\n",
+ " ['20931.23', '0.23983302', 1],\n",
+ " ['20937.71', '0.00047761', 1],\n",
+ " ['20937.79', '0.00119322', 1],\n",
+ " ['20938.53', '0.00095518', 1],\n",
+ " ['20939.62', '0.00128002', 1],\n",
+ " ['20944', '0.2', 1],\n",
+ " ['20947.21', '0.00121857', 1],\n",
+ " ['20950', '0.05214196', 2],\n",
+ " ['20954.56', '0.0004556', 1],\n",
+ " ['20959.49', '0.00042047', 1],\n",
+ " ['20961.39', '0.00396137', 1],\n",
+ " ['20967.54', '0.0116476', 1],\n",
+ " ['20970.88', '0.00497125', 1],\n",
+ " ['20972', '0.00039', 1],\n",
+ " ['20976.45', '0.0009', 1],\n",
+ " ['20977.3', '0.00438806', 1],\n",
+ " ['20977.4', '0.00095341', 1],\n",
+ " ['20978.19', '0.02496121', 1],\n",
+ " ['20979.85', '0.00128', 1],\n",
+ " ['20981.56', '0.2', 1],\n",
+ " ['20986.83', '0.00169029', 1],\n",
+ " ['20988.05', '0.00047646', 1],\n",
+ " ['20988.7', '0.0041127', 1],\n",
+ " ['20991.32', '0.00200321', 1],\n",
+ " ['20992.79', '0.00256503', 1],\n",
+ " ['20993', '0.19556118', 1],\n",
+ " ['20997.36', '0.01739302', 1],\n",
+ " ['20997.99', '0.00243542', 1],\n",
+ " ['20999.35', '0.004791', 1],\n",
+ " ['21000', '2.63577541', 25],\n",
+ " ['21003.35', '0.00010683', 1],\n",
+ " ['21003.51', '0.00003275', 1],\n",
+ " ['21004.93', '0.00012664', 1],\n",
+ " ['21006.65', '0.00221586', 1],\n",
+ " ['21008.5', '0.00004366', 1],\n",
+ " ['21009.49', '0.00002304', 1],\n",
+ " ['21015.28', '0.00104153', 1],\n",
+ " ['21015.65', '0.00047584', 1],\n",
+ " ['21016.28', '0.00095164', 1],\n",
+ " ['21020.46', '0.00205078', 1],\n",
+ " ['21021.44', '0.00061935', 1],\n",
+ " ['21022.78', '0.00015373', 1],\n",
+ " ['21024.93', '0.00546072', 1],\n",
+ " ['21032.13', '0.00014451', 1],\n",
+ " ['21038.62', '0.000242', 1],\n",
+ " ['21038.97', '0.00239509', 1],\n",
+ " ['21038.98', '0.00053914', 1],\n",
+ " ['21040.51', '0.00010549', 1],\n",
+ " ['21041.59', '0.0003', 1],\n",
+ " ['21043.29', '0.00015606', 1],\n",
+ " ['21043.64', '0.00086423', 1],\n",
+ " ['21050.08', '0.00019735', 1],\n",
+ " ['21051.81', '0.18888893', 1],\n",
+ " ['21052.13', '0.00141296', 1],\n",
+ " ['21052.8', '0.02', 1],\n",
+ " ['21054.55', '0.00020574', 1],\n",
+ " ['21055.16', '0.00094989', 1],\n",
+ " ['21056.57', '0.00148781', 1],\n",
+ " ['21056.72', '0.00066326', 1],\n",
+ " ['21062.44', '0.00082094', 1],\n",
+ " ['21063.29', '0.004', 1],\n",
+ " ['21067.32', '0.00052316', 1],\n",
+ " ['21067.66', '0.00127684', 1],\n",
+ " ['21069', '0.2', 1],\n",
+ " ['21069.32', '0.00017616', 1],\n",
+ " ['21070.64', '0.0110327', 1],\n",
+ " ['21071.48', '0.00117147', 1],\n",
+ " ['21073.65', '0.00047453', 1],\n",
+ " ['21073.74', '0.0002', 1],\n",
+ " ['21080.71', '0.00405715', 1],\n",
+ " ['21084.52', '0.00125454', 1],\n",
+ " ['21086.07', '0.00118483', 1],\n",
+ " ['21093.59', '0.00047408', 1],\n",
+ " ['21094.04', '0.00094814', 1],\n",
+ " ['21094.81', '0.00045084', 1],\n",
+ " ['21098.07', '0.00256503', 1],\n",
+ " ['21098.71', '0.00024549', 1],\n",
+ " ['21108.26', '0.00634091', 1],\n",
+ " ['21108.58', '0.00008188', 1],\n",
+ " ['21113.41', '0.00093133', 1],\n",
+ " ['21120.66', '0.00004263', 1],\n",
+ " ['21125.78', '0.00176', 1],\n",
+ " ['21125.83', '0.00204055', 1],\n",
+ " ['21126.73', '0.00199038', 1],\n",
+ " ['21129.12', '0.00004351', 1],\n",
+ " ['21130.27', '0.03294012', 1],\n",
+ " ['21130.42', '0.00176038', 1],\n",
+ " ['21132.92', '0.00094639', 1],\n",
+ " ['21136', '0.00026', 1],\n",
+ " ['21136.59', '0.00156715', 1],\n",
+ " ['21139.32', '0.00065728', 1],\n",
+ " ['21144.39', '0.0012', 1],\n",
+ " ['21147', '0.025', 1],\n",
+ " ['21147.85', '0.00137387', 1],\n",
+ " ['21155.7', '0.00003715', 1],\n",
+ " ['21156.13', '0.00131893', 1],\n",
+ " ['21159.25', '0.00047261', 1],\n",
+ " ['21169', '0.2', 1],\n",
+ " ['21171.52', '0.00047233', 1],\n",
+ " ['21171.79', '0.00094465', 1],\n",
+ " ['21172.11', '0.00125201', 1],\n",
+ " ['21173', '0.00043127', 1],\n",
+ " ['21177.01', '0.00127086', 1],\n",
+ " ['21184.33', '0.00278465', 1],\n",
+ " ['21196.12', '0.10980085', 1],\n",
+ " ['21200', '0.96615481', 5],\n",
+ " ['21202.21', '0.00157462', 2],\n",
+ " ['21203.88', '0.00256503', 1],\n",
+ " ['21206.67', '0.00143234', 1],\n",
+ " ['21210.67', '0.00094292', 1],\n",
+ " ['21211.39', '0.000018', 1],\n",
+ " ['21212.13', '0.00012058', 1],\n",
+ " ['21217.72', '0.00116341', 1],\n",
+ " ['21220.16', '0.00134782', 1],\n",
+ " ['21222.62', '0.00010573', 1],\n",
+ " ['21226.57', '0.0021929', 1],\n",
+ " ['21231.72', '0.00203037', 1],\n",
+ " ['21232', '0.00053914', 1],\n",
+ " ['21232.39', '0.00504628', 1],\n",
+ " ['21235.41', '0.0011765', 1],\n",
+ " ['21237.55', '0.00188393', 1],\n",
+ " ['21239.97', '0.00588946', 1],\n",
+ " ['21244.61', '0.00044668', 1],\n",
+ " ['21244.85', '0.0004707', 1],\n",
+ " ['21249.46', '0.0004706', 1],\n",
+ " ['21249.55', '0.0009412', 1],\n",
+ " ['21250.84', '0.00071009', 1],\n",
+ " ['21253.5', '0.00546072', 1],\n",
+ " ['21253.96', '0.00126109', 1],\n",
+ " ['21263.01', '0.00197761', 1],\n",
+ " ['21267.48', '0.00020574', 1],\n",
+ " ['21268.24', '0.0056825', 1],\n",
+ " ['21277.07', '0.00006296', 1],\n",
+ " ['21278.55', '0.00019592', 1],\n",
+ " ['21278.88', '0.00003997', 1],\n",
+ " ['21279', '0.2', 1],\n",
+ " ['21288.43', '0.00093948', 1],\n",
+ " ['21290.6', '0.00019512', 1],\n",
+ " ['21299.2', '0.0016655', 1],\n",
+ " ['21300', '0.02200506', 1],\n",
+ " ['21300.58', '0.00065566', 1],\n",
+ " ['21306.8', '0.00005068', 1],\n",
+ " ['21310.21', '0.00367189', 2],\n",
+ " ['21311', '0.005', 1],\n",
+ " ['21313.3', '0.00267895', 1],\n",
+ " ['21314.84', '0.00021994', 1],\n",
+ " ['21316.5', '0.02375', 1],\n",
+ " ['21318.39', '0.01713111', 1],\n",
+ " ['21323.4', '0.00112146', 1],\n",
+ " ['21327.31', '0.00093776', 1],\n",
+ " ['21327.4', '0.00046888', 1],\n",
+ " ['21330.45', '0.00046881', 1],\n",
+ " ['21333.05', '0.00136676', 1],\n",
+ " ['21338.13', '0.00202025', 1],\n",
+ " ['21341.77', '0.004', 1],\n",
+ " ['21350', '0.00014673', 1],\n",
+ " ['21353.8', '0.00235978', 1],\n",
+ " ['21358.62', '0.00486139', 1],\n",
+ " ['21359', '0.005', 1],\n",
+ " ['21359.56', '0.37777787', 1],\n",
+ " ['21364.97', '0.00115537', 1],\n",
+ " ['21366.18', '0.00093606', 1],\n",
+ " ['21372.82', '0.0014658', 1],\n",
+ " ['21375.74', '0.00080891', 1],\n",
+ " ['21385.45', '0.00064971', 1],\n",
+ " ['21385.79', '0.00116822', 1],\n",
+ " ['21389', '0.2', 1],\n",
+ " ['21390', '0.015', 1],\n",
+ " ['21391.63', '0.00012435', 1],\n",
+ " ['21392.82', '0.00013878', 1],\n",
+ " ['21394.76', '0.00018167', 1],\n",
+ " ['21399.96', '0.00123604', 1],\n",
+ " ['21400', '0.81399437', 3],\n",
+ " ['21400.17', '0.00196494', 1],\n",
+ " ['21402.02', '0.00944985', 1],\n",
+ " ['21403.99', '0.00014565', 1],\n",
+ " ['21405.06', '0.00093436', 1],\n",
+ " ['21405.34', '0.00046717', 1],\n",
+ " ['21406.12', '0.00403846', 1],\n",
+ " ['21414.71', '0.00034986', 1],\n",
+ " ['21416.05', '0.00046694', 1],\n",
+ " ['21417.08', '0.00256503', 1],\n",
+ " ['21424.5', '0.00009456', 1],\n",
+ " ['21426.8', '0.00053914', 1],\n",
+ " ['21432.64', '0.00091746', 1],\n",
+ " ['21441.08', '0.00173412', 1],\n",
+ " ['21442.33', '0.00173477', 1],\n",
+ " ['21443.94', '0.00093266', 1],\n",
+ " ['21444.18', '0.00010463', 1],\n",
+ " ['21445.08', '0.00201017', 1],\n",
+ " ['21448.79', '0.00217018', 1],\n",
+ " ['21451.08', '0.03537626', 1],\n",
+ " ['21456', '0.25', 1],\n",
+ " ['21471.7', '0.00129955', 1],\n",
+ " ['21475', '0.0190951', 1],\n",
+ " ['21476.25', '0.00056639', 1],\n",
+ " ['21482.58', '0.00020574', 1],\n",
+ " ['21483.28', '0.00046548', 1],\n",
+ " ['21484.55', '0.00546072', 1],\n",
+ " ['21486.38', '0.0012337', 1],\n",
+ " ['21487', '0.2', 1],\n",
+ " ['21489.81', '0.00125237', 1],\n",
+ " ['21500', '0.22916395', 16],\n",
+ " ['21501.14', '0.00245128', 1],\n",
+ " ['21501.65', '0.00046508', 1],\n",
+ " ['21503.47', '0.00274332', 1],\n",
+ " ['21505.46', '0.00048576', 1],\n",
+ " ['21507.88', '0.00010426', 1],\n",
+ " ['21513.24', '0.00114741', 1],\n",
+ " ['21519.53', '0.00120715', 1],\n",
+ " ['21524.49', '0.00256503', 1],\n",
+ " ['21533.87', '0.00019291', 1],\n",
+ " ['21536.67', '0.00132801', 1],\n",
+ " ['21537.25', '0.00116001', 1],\n",
+ " ['21538.23', '0.00195235', 1],\n",
+ " ['21542.49', '0.0005', 1],\n",
+ " ['21543.24', '0.00003417', 1],\n",
+ " ['21543.86', '0.00050807', 1],\n",
+ " ['21544.41', '0.00046416', 1],\n",
+ " ['21547.27', '0.00064816', 1],\n",
+ " ['21552.58', '0.00200015', 1],\n",
+ " ['21557.04', '0.00580283', 1],\n",
+ " ['21561.22', '0.0004638', 1],\n",
+ " ['21572.93', '0.05218917', 1],\n",
+ " ['21573.03', '0.00124244', 1],\n",
+ " ['21587.25', '0.00046324', 1],\n",
+ " ['21591', '0.2', 1],\n",
+ " ['21600.71', '0.00012911', 1],\n",
+ " ['21616.23', '0.00164108', 1],\n",
+ " ['21620.25', '0.004', 1],\n",
+ " ['21623.38', '0.00053914', 1],\n",
+ " ['21626.94', '0.00035402', 1],\n",
+ " ['21631.87', '0.0001255', 1],\n",
+ " ['21632.44', '0.00256503', 1],\n",
+ " ['21634.44', '0.00064223', 1],\n",
+ " ['21639.16', '0.00046213', 1],\n",
+ " ['21640.28', '0.00019592', 1],\n",
+ " ['21644.33', '0.01687313', 1],\n",
+ " ['21659', '0.04', 1],\n",
+ " ['21660.61', '0.00199017', 1],\n",
+ " ['21668.05', '0.00010355', 1],\n",
+ " ['21672.85', '0.00046141', 1],\n",
+ " ['21673.32', '0.00232499', 1],\n",
+ " ['21673.33', '0.0021477', 1],\n",
+ " ['21677.17', '0.00193983', 1],\n",
+ " ['21689.77', '0.00115185', 1],\n",
+ " ['21690.58', '0.00023879', 1],\n",
+ " ['21693.71', '0.00079705', 1],\n",
+ " ['21693.83', '0.00141164', 1],\n",
+ " ['21695', '0.2', 1],\n",
+ " ['21695.07', '0.01071516', 1],\n",
+ " ['21699.85', '0.00020574', 1],\n",
+ " ['21700', '0.00037368', 1],\n",
+ " ['21717.09', '0.00046047', 1],\n",
+ " ['21718.12', '0.00546072', 1],\n",
+ " ['21720.11', '0.00121782', 1],\n",
+ " ['21723.63', '0.00503292', 1],\n",
+ " ['21724', '0.00539077', 1],\n",
+ " ['21730.11', '0.00251598', 1],\n",
+ " ['21740.92', '0.00256503', 1],\n",
+ " ['21749', '0.05238911', 1],\n",
+ " ['21750', '0.02401294', 1],\n",
+ " ['21756.7', '0.0009038', 1],\n",
+ " ['21758.62', '0.00101756', 1],\n",
+ " ['21758.86', '0.00170954', 1],\n",
+ " ['21761.1', '0.00170862', 1],\n",
+ " ['21766', '0.28026418', 1],\n",
+ " ['21768.22', '0.00051612', 1],\n",
+ " ['21769.18', '0.00198024', 1],\n",
+ " ['21779.91', '0.00019073', 1],\n",
+ " ['21785.46', '0.0001221', 1],\n",
+ " ['21788.06', '0.00461721', 1],\n",
+ " ['21791.99', '0.00128045', 1],\n",
+ " ['21792.5', '0.00057489', 1],\n",
+ " ['21795.03', '0.00045882', 1],\n",
+ " ['21796.82', '0.00064073', 1],\n",
+ " ['21798', '0.03344406', 1],\n",
+ " ['21800', '0.00570771', 3],\n",
+ " ['21805.33', '0.00121566', 1],\n",
+ " ['21807.25', '0.00123414', 1],\n",
+ " ['21810.39', '0.00391456', 1],\n",
+ " ['21817', '0.0019274', 1],\n",
+ " ['21821.77', '0.00053914', 1],\n",
+ " ['21827.4', '0.00270261', 1],\n",
+ " ['21831.8', '0.00003778', 1],\n",
+ " ['21838.73', '0.00045084', 1],\n",
+ " ['21841.47', '0.00060776', 1],\n",
+ " ['21841.6', '0.00118935', 1],\n",
+ " ['21843.37', '0.00114375', 1],\n",
+ " ['21849.95', '0.00256503', 1],\n",
+ " ['21857.91', '0.00130849', 1],\n",
+ " ['21870', '0.0886', 1],\n",
+ " ['21871.88', '0.00022745', 1],\n",
+ " ['21872.97', '0.00045719', 1],\n",
+ " ['21878.29', '0.00197037', 1],\n",
+ " ['21878.83', '0.00571748', 1],\n",
+ " ['21886.33', '0.00063484', 1],\n",
+ " ['21894.26', '0.00010248', 1],\n",
+ " ['21896.87', '0.00122406', 1],\n",
+ " ['21898.73', '0.004', 1],\n",
+ " ['21900', '0.01978499', 2],\n",
+ " ['21900.22', '0.00212545', 1],\n",
+ " ['21919.32', '0.00020574', 1],\n",
+ " ['21933.29', '0.00066635', 1],\n",
+ " ['21937.98', '0.00161701', 1],\n",
+ " ['21950.91', '0.00045556', 1],\n",
+ " ['21954.22', '0.00546072', 1],\n",
+ " ['21957.73', '0.00191505', 1],\n",
+ " ['21959.53', '0.00256503', 1],\n",
+ " ['21975.26', '0.01661903', 1],\n",
+ " ['21987.96', '0.00196054', 1],\n",
+ " ['21997.64', '0.00229071', 1],\n",
+ " ['21998', '0.05909417', 2],\n",
+ " ['21998.07', '0.00113571', 1],\n",
+ " ['21999', '0.01363228', 1],\n",
+ " ['22000', '0.86758326', 25],\n",
+ " ['22008.17', '0.00019592', 1],\n",
+ " ['22016.41', '0.00078537', 1],\n",
+ " ['22021.98', '0.00053914', 1],\n",
+ " ['22028.77', '0.00018858', 1],\n",
+ " ['22028.85', '0.00045395', 1],\n",
+ " ['22045.05', '0.00119987', 1],\n",
+ " ['22049.25', '0.0006334', 1],\n",
+ " ['22058', '0.0239354', 1],\n",
+ " ...],\n",
+ " 'auction_mode': False,\n",
+ " 'auction': None})"
+ ]
+ },
+ "execution_count": 43,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "order_book_raw"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 44,
+ "id": "679d0d79",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# price and supply related metrics for loaded coin\n",
+ "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import get_coinpaprika_id\n",
+ "\n",
+ "cp_id = get_coinpaprika_id(ticker)\n",
+ "ps = openbb.crypto.dd.ps(cp_id)\n",
+ "if not ps.empty:\n",
+ " ps = ps.set_index(\"Metric\")\n",
+ " ps"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 45,
+ "id": "92e76d79",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " date_to \n",
+ " name \n",
+ " description \n",
+ " is_conference \n",
+ " link \n",
+ " \n",
+ " \n",
+ " date \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2021-06-11\\n00:00:00 \n",
+ " None \n",
+ " Ask El Salvador for advice: Cuba suspends doll... \n",
+ " \n",
+ " False \n",
+ " <a href=\"https://www.rt.com/business/526265-cu... \n",
+ " \n",
+ " \n",
+ " 2021-06-11\\n00:00:00 \n",
+ " None \n",
+ " One of the Richest Bitcoin Whales in History B... \n",
+ " \n",
+ " False \n",
+ " <a href=\"https://aronboss.com/one-of-the-riche... \n",
+ " \n",
+ " \n",
+ " 2021-05-10\\n00:00:00 \n",
+ " None \n",
+ " Bitcoin’s upcoming Taproot upgrade and why it ... \n",
+ " \n",
+ " False \n",
+ " <a href=\"https://cointelegraph.com/news/bitcoi... \n",
+ " \n",
+ " \n",
+ " 2021-03-24\\n08:00:00 \n",
+ " 2021-03-26\\n23:00:00 \n",
+ " THE CRYPTO GATHERING \n",
+ " \n",
+ " False \n",
+ " <a href=\"https://www.realvision.com/refer?grsf... \n",
+ " \n",
+ " \n",
+ " 2018-10-09\\n09:00:00 \n",
+ " 2018-10-09\\n18:00:00 \n",
+ " Blockchain & Bitcoin Conference Switzerland \n",
+ " The second conference organized by\\nSmile-Expo... \n",
+ " True \n",
+ " <a href=\"https://switzerland.bc.events/?utm_so... \n",
+ " \n",
+ " \n",
+ " 2018-09-28\\n20:00:00 \n",
+ " 2018-09-30\\n16:00:00 \n",
+ " Super Conference \n",
+ " KWIC, Kitchener - Waterloo, ON, Canada.\\n29 Se... \n",
+ " True \n",
+ " <a href=\"https://blockchainsuperconference.com... \n",
+ " \n",
+ " \n",
+ " 2018-07-10\\n12:00:00 \n",
+ " None \n",
+ " SEC- ETF VanEck decision \n",
+ " \n",
+ " False \n",
+ " <a href=\"https://www.criptonoticias.com/mercad... \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " date_to \\\n",
+ "date \n",
+ "2021-06-11\\n00:00:00 None \n",
+ "2021-06-11\\n00:00:00 None \n",
+ "2021-05-10\\n00:00:00 None \n",
+ "2021-03-24\\n08:00:00 2021-03-26\\n23:00:00 \n",
+ "2018-10-09\\n09:00:00 2018-10-09\\n18:00:00 \n",
+ "2018-09-28\\n20:00:00 2018-09-30\\n16:00:00 \n",
+ "2018-07-10\\n12:00:00 None \n",
+ "\n",
+ " name \\\n",
+ "date \n",
+ "2021-06-11\\n00:00:00 Ask El Salvador for advice: Cuba suspends doll... \n",
+ "2021-06-11\\n00:00:00 One of the Richest Bitcoin Whales in History B... \n",
+ "2021-05-10\\n00:00:00 Bitcoin’s upcoming Taproot upgrade and why it ... \n",
+ "2021-03-24\\n08:00:00 THE CRYPTO GATHERING \n",
+ "2018-10-09\\n09:00:00 Blockchain & Bitcoin Conference Switzerland \n",
+ "2018-09-28\\n20:00:00 Super Conference \n",
+ "2018-07-10\\n12:00:00 SEC- ETF VanEck decision \n",
+ "\n",
+ " description \\\n",
+ "date \n",
+ "2021-06-11\\n00:00:00 \n",
+ "2021-06-11\\n00:00:00 \n",
+ "2021-05-10\\n00:00:00 \n",
+ "2021-03-24\\n08:00:00 \n",
+ "2018-10-09\\n09:00:00 The second conference organized by\\nSmile-Expo... \n",
+ "2018-09-28\\n20:00:00 KWIC, Kitchener - Waterloo, ON, Canada.\\n29 Se... \n",
+ "2018-07-10\\n12:00:00 \n",
+ "\n",
+ " is_conference \\\n",
+ "date \n",
+ "2021-06-11\\n00:00:00 False \n",
+ "2021-06-11\\n00:00:00 False \n",
+ "2021-05-10\\n00:00:00 False \n",
+ "2021-03-24\\n08:00:00 False \n",
+ "2018-10-09\\n09:00:00 True \n",
+ "2018-09-28\\n20:00:00 True \n",
+ "2018-07-10\\n12:00:00 False \n",
+ "\n",
+ " link \n",
+ "date \n",
+ "2021-06-11\\n00:00:00 {x} ')\n",
+ "\n",
+ "events"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 46,
+ "id": "a14130db",
+ "metadata": {},
+ "outputs": [
+ {
+ "ename": "KeyboardInterrupt",
+ "evalue": "",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[0;32mIn [46], line 5\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[39m# social media\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[39mfrom\u001b[39;00m \u001b[39mopenbb_terminal\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mcryptocurrency\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mdue_diligence\u001b[39;00m\u001b[39m.\u001b[39;00m\u001b[39mpycoingecko_view\u001b[39;00m \u001b[39mimport\u001b[39;00m display_social\n\u001b[0;32m----> 5\u001b[0m display_social(ticker)\n\u001b[1;32m 6\u001b[0m fig \u001b[39m=\u001b[39m plt\u001b[39m.\u001b[39mfigure()\n\u001b[1;32m 7\u001b[0m fig\u001b[39m.\u001b[39mtight_layout()\n",
+ "File \u001b[0;32m~/OpenBBTerminal/openbb_terminal/decorators.py:70\u001b[0m, in \u001b[0;36mlog_start_end..decorator..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 68\u001b[0m \u001b[39mreturn\u001b[39;00m value\n\u001b[1;32m 69\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m---> 70\u001b[0m value \u001b[39m=\u001b[39m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[1;32m 71\u001b[0m logger_used\u001b[39m.\u001b[39minfo(\u001b[39m\"\u001b[39m\u001b[39mEND\u001b[39m\u001b[39m\"\u001b[39m, extra\u001b[39m=\u001b[39m{\u001b[39m\"\u001b[39m\u001b[39mfunc_name_override\u001b[39m\u001b[39m\"\u001b[39m: func\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m})\n\u001b[1;32m 72\u001b[0m \u001b[39mreturn\u001b[39;00m value\n",
+ "File \u001b[0;32m~/OpenBBTerminal/openbb_terminal/cryptocurrency/due_diligence/pycoingecko_view.py:133\u001b[0m, in \u001b[0;36mdisplay_social\u001b[0;34m(symbol, export)\u001b[0m\n\u001b[1;32m 122\u001b[0m \u001b[39m@log_start_end\u001b[39m(log\u001b[39m=\u001b[39mlogger)\n\u001b[1;32m 123\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mdisplay_social\u001b[39m(symbol: \u001b[39mstr\u001b[39m, export: \u001b[39mstr\u001b[39m \u001b[39m=\u001b[39m \u001b[39m\"\u001b[39m\u001b[39m\"\u001b[39m) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39mNone\u001b[39;00m:\n\u001b[1;32m 124\u001b[0m \u001b[39m\"\"\"Shows social media corresponding to loaded coin. [Source: CoinGecko]\u001b[39;00m\n\u001b[1;32m 125\u001b[0m \n\u001b[1;32m 126\u001b[0m \u001b[39m Parameters\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 131\u001b[0m \u001b[39m Export dataframe data to csv,json,xlsx file\u001b[39;00m\n\u001b[1;32m 132\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[0;32m--> 133\u001b[0m coin \u001b[39m=\u001b[39m gecko\u001b[39m.\u001b[39;49mCoin(symbol)\n\u001b[1;32m 134\u001b[0m df \u001b[39m=\u001b[39m coin\u001b[39m.\u001b[39mget_social_media()\n\u001b[1;32m 136\u001b[0m print_rich_table(\n\u001b[1;32m 137\u001b[0m df,\n\u001b[1;32m 138\u001b[0m headers\u001b[39m=\u001b[39m\u001b[39mlist\u001b[39m(df\u001b[39m.\u001b[39mcolumns),\n\u001b[1;32m 139\u001b[0m show_index\u001b[39m=\u001b[39m\u001b[39mFalse\u001b[39;00m,\n\u001b[1;32m 140\u001b[0m title\u001b[39m=\u001b[39m\u001b[39m\"\u001b[39m\u001b[39mSocial Media for Loaded Coin\u001b[39m\u001b[39m\"\u001b[39m,\n\u001b[1;32m 141\u001b[0m )\n",
+ "File \u001b[0;32m~/OpenBBTerminal/openbb_terminal/decorators.py:70\u001b[0m, in \u001b[0;36mlog_start_end..decorator..wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 68\u001b[0m \u001b[39mreturn\u001b[39;00m value\n\u001b[1;32m 69\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m---> 70\u001b[0m value \u001b[39m=\u001b[39m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[1;32m 71\u001b[0m logger_used\u001b[39m.\u001b[39minfo(\u001b[39m\"\u001b[39m\u001b[39mEND\u001b[39m\u001b[39m\"\u001b[39m, extra\u001b[39m=\u001b[39m{\u001b[39m\"\u001b[39m\u001b[39mfunc_name_override\u001b[39m\u001b[39m\"\u001b[39m: func\u001b[39m.\u001b[39m\u001b[39m__name__\u001b[39m})\n\u001b[1;32m 72\u001b[0m \u001b[39mreturn\u001b[39;00m value\n",
+ "File \u001b[0;32m~/OpenBBTerminal/openbb_terminal/cryptocurrency/due_diligence/pycoingecko_model.py:291\u001b[0m, in \u001b[0;36mCoin.__init__\u001b[0;34m(self, symbol, load_from_api)\u001b[0m\n\u001b[1;32m 289\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mclient \u001b[39m=\u001b[39m CoinGeckoAPI()\n\u001b[1;32m 290\u001b[0m \u001b[39mif\u001b[39;00m load_from_api:\n\u001b[0;32m--> 291\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_coin_list \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mclient\u001b[39m.\u001b[39;49mget_coins_list()\n\u001b[1;32m 292\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 293\u001b[0m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m_coin_list \u001b[39m=\u001b[39m read_file_data(\u001b[39m\"\u001b[39m\u001b[39mcoingecko_coins.json\u001b[39m\u001b[39m\"\u001b[39m)\n",
+ "File \u001b[0;32m~/opt/anaconda3/envs/obb/lib/python3.9/site-packages/pycoingecko/utils.py:12\u001b[0m, in \u001b[0;36mfunc_args_preprocessing..input_args\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[39m# check in *args for lists and booleans\u001b[39;00m\n\u001b[1;32m 10\u001b[0m args \u001b[39m=\u001b[39m [arg_preprocessing(v) \u001b[39mfor\u001b[39;00m v \u001b[39min\u001b[39;00m args]\n\u001b[0;32m---> 12\u001b[0m \u001b[39mreturn\u001b[39;00m func(\u001b[39m*\u001b[39;49margs, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n",
+ "File \u001b[0;32m~/opt/anaconda3/envs/obb/lib/python3.9/site-packages/pycoingecko/api.py:131\u001b[0m, in \u001b[0;36mCoinGeckoAPI.get_coins_list\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m 128\u001b[0m api_url \u001b[39m=\u001b[39m \u001b[39m'\u001b[39m\u001b[39m{0}\u001b[39;00m\u001b[39mcoins/list\u001b[39m\u001b[39m'\u001b[39m\u001b[39m.\u001b[39mformat(\u001b[39mself\u001b[39m\u001b[39m.\u001b[39mapi_base_url)\n\u001b[1;32m 129\u001b[0m api_url \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39m__api_url_params(api_url, kwargs)\n\u001b[0;32m--> 131\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49m__request(api_url)\n",
+ "File \u001b[0;32m~/opt/anaconda3/envs/obb/lib/python3.9/site-packages/pycoingecko/api.py:29\u001b[0m, in \u001b[0;36mCoinGeckoAPI.__request\u001b[0;34m(self, url)\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39m__request\u001b[39m(\u001b[39mself\u001b[39m, url):\n\u001b[1;32m 27\u001b[0m \u001b[39m# print(url)\u001b[39;00m\n\u001b[1;32m 28\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[0;32m---> 29\u001b[0m response \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49msession\u001b[39m.\u001b[39;49mget(url, timeout\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mrequest_timeout)\n\u001b[1;32m 30\u001b[0m \u001b[39mexcept\u001b[39;00m requests\u001b[39m.\u001b[39mexceptions\u001b[39m.\u001b[39mRequestException:\n\u001b[1;32m 31\u001b[0m \u001b[39mraise\u001b[39;00m\n",
+ "File \u001b[0;32m~/opt/anaconda3/envs/obb/lib/python3.9/site-packages/requests/sessions.py:600\u001b[0m, in \u001b[0;36mSession.get\u001b[0;34m(self, url, **kwargs)\u001b[0m\n\u001b[1;32m 592\u001b[0m \u001b[39mr\u001b[39m\u001b[39m\"\"\"Sends a GET request. Returns :class:`Response` object.\u001b[39;00m\n\u001b[1;32m 593\u001b[0m \n\u001b[1;32m 594\u001b[0m \u001b[39m:param url: URL for the new :class:`Request` object.\u001b[39;00m\n\u001b[1;32m 595\u001b[0m \u001b[39m:param \\*\\*kwargs: Optional arguments that ``request`` takes.\u001b[39;00m\n\u001b[1;32m 596\u001b[0m \u001b[39m:rtype: requests.Response\u001b[39;00m\n\u001b[1;32m 597\u001b[0m \u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m 599\u001b[0m kwargs\u001b[39m.\u001b[39msetdefault(\u001b[39m\"\u001b[39m\u001b[39mallow_redirects\u001b[39m\u001b[39m\"\u001b[39m, \u001b[39mTrue\u001b[39;00m)\n\u001b[0;32m--> 600\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mrequest(\u001b[39m\"\u001b[39;49m\u001b[39mGET\u001b[39;49m\u001b[39m\"\u001b[39;49m, url, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n",
+ "File \u001b[0;32m~/opt/anaconda3/envs/obb/lib/python3.9/site-packages/requests/sessions.py:587\u001b[0m, in \u001b[0;36mSession.request\u001b[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001b[0m\n\u001b[1;32m 582\u001b[0m send_kwargs \u001b[39m=\u001b[39m {\n\u001b[1;32m 583\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mtimeout\u001b[39m\u001b[39m\"\u001b[39m: timeout,\n\u001b[1;32m 584\u001b[0m \u001b[39m\"\u001b[39m\u001b[39mallow_redirects\u001b[39m\u001b[39m\"\u001b[39m: allow_redirects,\n\u001b[1;32m 585\u001b[0m }\n\u001b[1;32m 586\u001b[0m send_kwargs\u001b[39m.\u001b[39mupdate(settings)\n\u001b[0;32m--> 587\u001b[0m resp \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49msend(prep, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49msend_kwargs)\n\u001b[1;32m 589\u001b[0m \u001b[39mreturn\u001b[39;00m resp\n",
+ "File \u001b[0;32m~/opt/anaconda3/envs/obb/lib/python3.9/site-packages/requests/sessions.py:701\u001b[0m, in \u001b[0;36mSession.send\u001b[0;34m(self, request, **kwargs)\u001b[0m\n\u001b[1;32m 698\u001b[0m start \u001b[39m=\u001b[39m preferred_clock()\n\u001b[1;32m 700\u001b[0m \u001b[39m# Send the request\u001b[39;00m\n\u001b[0;32m--> 701\u001b[0m r \u001b[39m=\u001b[39m adapter\u001b[39m.\u001b[39;49msend(request, \u001b[39m*\u001b[39;49m\u001b[39m*\u001b[39;49mkwargs)\n\u001b[1;32m 703\u001b[0m \u001b[39m# Total elapsed time of the request (approximately)\u001b[39;00m\n\u001b[1;32m 704\u001b[0m elapsed \u001b[39m=\u001b[39m preferred_clock() \u001b[39m-\u001b[39m start\n",
+ "File \u001b[0;32m~/opt/anaconda3/envs/obb/lib/python3.9/site-packages/requests/adapters.py:489\u001b[0m, in \u001b[0;36mHTTPAdapter.send\u001b[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001b[0m\n\u001b[1;32m 487\u001b[0m \u001b[39mtry\u001b[39;00m:\n\u001b[1;32m 488\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mnot\u001b[39;00m chunked:\n\u001b[0;32m--> 489\u001b[0m resp \u001b[39m=\u001b[39m conn\u001b[39m.\u001b[39;49murlopen(\n\u001b[1;32m 490\u001b[0m method\u001b[39m=\u001b[39;49mrequest\u001b[39m.\u001b[39;49mmethod,\n\u001b[1;32m 491\u001b[0m url\u001b[39m=\u001b[39;49murl,\n\u001b[1;32m 492\u001b[0m body\u001b[39m=\u001b[39;49mrequest\u001b[39m.\u001b[39;49mbody,\n\u001b[1;32m 493\u001b[0m headers\u001b[39m=\u001b[39;49mrequest\u001b[39m.\u001b[39;49mheaders,\n\u001b[1;32m 494\u001b[0m redirect\u001b[39m=\u001b[39;49m\u001b[39mFalse\u001b[39;49;00m,\n\u001b[1;32m 495\u001b[0m assert_same_host\u001b[39m=\u001b[39;49m\u001b[39mFalse\u001b[39;49;00m,\n\u001b[1;32m 496\u001b[0m preload_content\u001b[39m=\u001b[39;49m\u001b[39mFalse\u001b[39;49;00m,\n\u001b[1;32m 497\u001b[0m decode_content\u001b[39m=\u001b[39;49m\u001b[39mFalse\u001b[39;49;00m,\n\u001b[1;32m 498\u001b[0m retries\u001b[39m=\u001b[39;49m\u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mmax_retries,\n\u001b[1;32m 499\u001b[0m timeout\u001b[39m=\u001b[39;49mtimeout,\n\u001b[1;32m 500\u001b[0m )\n\u001b[1;32m 502\u001b[0m \u001b[39m# Send the request.\u001b[39;00m\n\u001b[1;32m 503\u001b[0m \u001b[39melse\u001b[39;00m:\n\u001b[1;32m 504\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mhasattr\u001b[39m(conn, \u001b[39m\"\u001b[39m\u001b[39mproxy_pool\u001b[39m\u001b[39m\"\u001b[39m):\n",
+ "File \u001b[0;32m~/opt/anaconda3/envs/obb/lib/python3.9/site-packages/urllib3/connectionpool.py:876\u001b[0m, in \u001b[0;36mHTTPConnectionPool.urlopen\u001b[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)\u001b[0m\n\u001b[1;32m 873\u001b[0m \u001b[39mreturn\u001b[39;00m response\n\u001b[1;32m 875\u001b[0m response\u001b[39m.\u001b[39mdrain_conn()\n\u001b[0;32m--> 876\u001b[0m retries\u001b[39m.\u001b[39;49msleep(response)\n\u001b[1;32m 877\u001b[0m log\u001b[39m.\u001b[39mdebug(\u001b[39m\"\u001b[39m\u001b[39mRetry: \u001b[39m\u001b[39m%s\u001b[39;00m\u001b[39m\"\u001b[39m, url)\n\u001b[1;32m 878\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39murlopen(\n\u001b[1;32m 879\u001b[0m method,\n\u001b[1;32m 880\u001b[0m url,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 891\u001b[0m \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mresponse_kw\n\u001b[1;32m 892\u001b[0m )\n",
+ "File \u001b[0;32m~/opt/anaconda3/envs/obb/lib/python3.9/site-packages/urllib3/util/retry.py:428\u001b[0m, in \u001b[0;36mRetry.sleep\u001b[0;34m(self, response)\u001b[0m\n\u001b[1;32m 419\u001b[0m \u001b[39m\"\"\"Sleep between retry attempts.\u001b[39;00m\n\u001b[1;32m 420\u001b[0m \n\u001b[1;32m 421\u001b[0m \u001b[39mThis method will respect a server's ``Retry-After`` response header\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 424\u001b[0m \u001b[39mthis method will return immediately.\u001b[39;00m\n\u001b[1;32m 425\u001b[0m \u001b[39m\"\"\"\u001b[39;00m\n\u001b[1;32m 427\u001b[0m \u001b[39mif\u001b[39;00m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mrespect_retry_after_header \u001b[39mand\u001b[39;00m response:\n\u001b[0;32m--> 428\u001b[0m slept \u001b[39m=\u001b[39m \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49msleep_for_retry(response)\n\u001b[1;32m 429\u001b[0m \u001b[39mif\u001b[39;00m slept:\n\u001b[1;32m 430\u001b[0m \u001b[39mreturn\u001b[39;00m\n",
+ "File \u001b[0;32m~/opt/anaconda3/envs/obb/lib/python3.9/site-packages/urllib3/util/retry.py:407\u001b[0m, in \u001b[0;36mRetry.sleep_for_retry\u001b[0;34m(self, response)\u001b[0m\n\u001b[1;32m 405\u001b[0m retry_after \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mget_retry_after(response)\n\u001b[1;32m 406\u001b[0m \u001b[39mif\u001b[39;00m retry_after:\n\u001b[0;32m--> 407\u001b[0m time\u001b[39m.\u001b[39;49msleep(retry_after)\n\u001b[1;32m 408\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mTrue\u001b[39;00m\n\u001b[1;32m 410\u001b[0m \u001b[39mreturn\u001b[39;00m \u001b[39mFalse\u001b[39;00m\n",
+ "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
+ ]
+ }
+ ],
+ "source": [
+ "# social media\n",
+ "\n",
+ "from openbb_terminal.cryptocurrency.due_diligence.pycoingecko_view import display_social\n",
+ "\n",
+ "display_social(ticker)\n",
+ "fig = plt.figure()\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "social = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "8f89627f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# tweets for loaded coin\n",
+ "from openbb_terminal.cryptocurrency.cryptocurrency_helpers import get_coinpaprika_id\n",
+ "\n",
+ "cp_id = get_coinpaprika_id(ticker)\n",
+ "tweets = openbb.crypto.dd.twitter(cp_id)\n",
+ "tweets"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "9bb75443",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# github activity over time\n",
+ "\n",
+ "gh_data = openbb.crypto.dd.gh(symbol=ticker)\n",
+ "\n",
+ "if not gh_data.empty:\n",
+ " fig, ax = plt.subplots(figsize=(11, 5), dpi=150)\n",
+ " openbb.crypto.dd.gh(symbol=ticker, external_axes=[ax], chart=True)\n",
+ " fig.tight_layout()\n",
+ " f = io.BytesIO()\n",
+ " fig.savefig(f, format=\"svg\")\n",
+ " gh = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "fcaa973d",
+ "metadata": {},
+ "source": [
+ "## TA\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "477317b4",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "ticker_data = historical_data_one_year.copy()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "7af3695c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# simple moving average\n",
+ "ticker_data.index.names = [\"date\"]\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(11, 3), dpi=150)\n",
+ "openbb.common.ta.ma(\n",
+ " data=ticker_data[\"Close\"],\n",
+ " ma_type=\"SMA\",\n",
+ " symbol=ticker,\n",
+ " external_axes=[ax],\n",
+ " chart=True,\n",
+ ")\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "sma = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "5d5089fa",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# exponential moving average\n",
+ "fig, ax = plt.subplots(figsize=(11, 3), dpi=150)\n",
+ "openbb.common.ta.ma(\n",
+ " data=ticker_data[\"Close\"],\n",
+ " ma_type=\"EMA\",\n",
+ " symbol=ticker,\n",
+ " external_axes=[ax],\n",
+ " chart=True,\n",
+ ")\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "ema = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "5facfbf4",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# zero lag exponential moving average\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(11, 3), dpi=150)\n",
+ "openbb.common.ta.ma(\n",
+ " data=ticker_data[\"Close\"],\n",
+ " ma_type=\"ZLMA\",\n",
+ " symbol=ticker,\n",
+ " external_axes=[ax],\n",
+ " chart=True,\n",
+ ")\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "zlma = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "df54f7ad",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# commodity channel index\n",
+ "\n",
+ "fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(11, 5), dpi=150)\n",
+ "openbb.common.ta.cci(\n",
+ " data=ticker_data,\n",
+ " symbol=ticker,\n",
+ " external_axes=[ax1, ax2],\n",
+ " chart=True,\n",
+ ")\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "cci = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "f53469eb",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# moving average convergence/divergence\n",
+ "\n",
+ "fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(11, 5), dpi=150)\n",
+ "openbb.common.ta.macd(\n",
+ " data=ticker_data[\"Adj Close\"],\n",
+ " symbol=ticker,\n",
+ " external_axes=[ax1, ax2],\n",
+ " chart=True,\n",
+ ")\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "macd = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "dd79e6b6",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# fisher transform\n",
+ "\n",
+ "fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(11, 11), dpi=150)\n",
+ "ax3 = ax2.twinx()\n",
+ "openbb.common.ta.fisher(\n",
+ " data=ticker_data,\n",
+ " symbol=ticker,\n",
+ " external_axes=[ax1, ax2, ax3],\n",
+ " chart=True,\n",
+ ")\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "fisher = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "b699e61f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# aroon indicator\n",
+ "\n",
+ "fig, (ax1, ax2, ax3) = plt.subplots(nrows=3, ncols=1, figsize=(11, 11), dpi=150)\n",
+ "openbb.common.ta.aroon(\n",
+ " data=ticker_data,\n",
+ " symbol=ticker,\n",
+ " external_axes=[ax1, ax2, ax3],\n",
+ " chart=True,\n",
+ ")\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "aroon = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "79401027",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# bollinger bands\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(11, 3), dpi=150)\n",
+ "openbb.common.ta.bbands(\n",
+ " data=ticker_data,\n",
+ " symbol=ticker,\n",
+ " external_axes=[ax],\n",
+ " chart=True,\n",
+ ")\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "bbands = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "0b5e2949",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# fibonacci retracement\n",
+ "\n",
+ "fig, ax1 = plt.subplots(figsize=(11, 5), dpi=150)\n",
+ "ax2 = ax1.twinx()\n",
+ "openbb.common.ta.fib(\n",
+ " data=ticker_data,\n",
+ " symbol=ticker,\n",
+ " external_axes=[ax1, ax2],\n",
+ " chart=True,\n",
+ ")\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "fib = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "48847a7f",
+ "metadata": {},
+ "source": [
+ "## QA"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "e77b373b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# summary\n",
+ "\n",
+ "summary = openbb.common.qa.summary(data=ticker_data)\n",
+ "summary"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "3ecfc93e",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# normality statistics and tests\n",
+ "\n",
+ "# fig, _ = plt.subplots(figsize=(11, 3), dpi=150)\n",
+ "# openbb.common.qa.normality(\n",
+ "# data=ticker_data,\n",
+ "# target=\"Close\",\n",
+ "# chart=True,\n",
+ "# )\n",
+ "# fig.tight_layout()\n",
+ "# f = io.BytesIO()\n",
+ "# fig.savefig(f, format=\"svg\")\n",
+ "\n",
+ "normality = openbb.common.qa.normality(\n",
+ " data=ticker_data[\"Close\"],\n",
+ ")\n",
+ "normality"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "8abe96b0",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# box and whisker plot\n",
+ "\n",
+ "fig, ax = plt.subplots(figsize=(11, 3), dpi=150)\n",
+ "openbb.common.qa.bw(\n",
+ " symbol=ticker,\n",
+ " data=ticker_data,\n",
+ " target=\"Close\",\n",
+ " yearly=False,\n",
+ " external_axes=[ax],\n",
+ " chart=True,\n",
+ ")\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "bw = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "66a7dccc",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# rolling mean and std deviation of prices\n",
+ "\n",
+ "fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(11, 5), dpi=150)\n",
+ "openbb.common.qa.rolling(\n",
+ " symbol=ticker,\n",
+ " data=ticker_data,\n",
+ " target=\"Close\",\n",
+ " external_axes=[ax1, ax2],\n",
+ " chart=True,\n",
+ ")\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "rolling = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "d6b43dd7",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# rolling kurtosis of distribution of prices\n",
+ "\n",
+ "fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(11, 5), dpi=150)\n",
+ "openbb.common.qa.kurtosis(\n",
+ " symbol=ticker,\n",
+ " data=ticker_data,\n",
+ " target=\"Close\",\n",
+ " external_axes=[ax1, ax2],\n",
+ " chart=True,\n",
+ ")\n",
+ "fig.tight_layout()\n",
+ "f = io.BytesIO()\n",
+ "fig.savefig(f, format=\"svg\")\n",
+ "kurtosis = f.getvalue().decode(\"utf-8\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ebdbebf5",
+ "metadata": {},
+ "source": [
+ "## PRED"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "fd5136de",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# TODO: add prediction"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ac501a32-124d-4d21-aae1-a8d147bb1071",
+ "metadata": {},
+ "source": [
+ "## Render the report template to a file"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "abfe37e4-ea38-42c3-8fb5-7cceb233fb12",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "body = \"\"\n",
+ "\n",
+ "img = str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/OpenBB_reports_logo.png\"\n",
+ "floppy_disk_img = str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/floppy-disc.png\"\n",
+ "body += widgets.header(\n",
+ " img,\n",
+ " floppy_disk_img,\n",
+ " author,\n",
+ " report_date,\n",
+ " report_time,\n",
+ " report_timezone,\n",
+ " f\"INVESTMENT RESEARCH REPORT: {ticker}\",\n",
+ ")\n",
+ "\n",
+ "body += widgets.tablinks(\n",
+ " [\n",
+ " \"SUMMARY\",\n",
+ " \"Due Diligence\",\n",
+ " \"Technical Analysis\",\n",
+ " \"Quantitative Analysis\",\n",
+ " ]\n",
+ ")\n",
+ "\n",
+ "comment = \"\"\n",
+ "\n",
+ "# Summary tab\n",
+ "htmlcode = \"\"\n",
+ "htmlcode += widgets.row(\n",
+ " [widgets.h(3, \"Basic information about loaded coin\") + basic_info.to_html()]\n",
+ ")\n",
+ "if not links.empty:\n",
+ " htmlcode += widgets.row([widgets.h(3, \"Links\") + links.to_html(escape=False)])\n",
+ "\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Published news\") + news.to_html(escape=False)])\n",
+ "# htmlcode += widgets.row([widgets.h(3, \"Altindex\")])\n",
+ "# htmlcode += widgets.row([altindex])\n",
+ "\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Historical data\")])\n",
+ "for data in historical_data:\n",
+ " htmlcode += widgets.row([data])\n",
+ "\n",
+ "htmlcode += widgets.row([widgets.h(3, \"1-year historical data candlestick chart\")])\n",
+ "htmlcode += widgets.row([candle_one_year])\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Sentiment analysis\")])\n",
+ "htmlcode += widgets.row([headlines])\n",
+ "# TODO: print rich table\n",
+ "# htmlcode += widgets.row([widgets.h(3, \"Quick performance\")])\n",
+ "# htmlcode += widgets.row([quick_performance])\n",
+ "body += widgets.add_tab(\"SUMMARY\", htmlcode)\n",
+ "\n",
+ "# # Due diligence tab\n",
+ "htmlcode = \"\"\n",
+ "htmlcode += widgets.row(\n",
+ " [widgets.h(3, f\"Trading pair info {ticker}/USDT\") + trading_pair_info.to_html()]\n",
+ ")\n",
+ "if not mcapdom_df.empty:\n",
+ " htmlcode += widgets.row([widgets.h(3, \"Market cap dominance\")])\n",
+ " htmlcode += widgets.row([mcapdom])\n",
+ "\n",
+ "if not roadmap_model.empty:\n",
+ " htmlcode += widgets.row([widgets.h(3, \"Roadmap\") + roadmap_model.to_html()])\n",
+ " htmlcode += widgets.row([roadmap_view])\n",
+ "\n",
+ "if not tokenomics_model.empty:\n",
+ " htmlcode += widgets.row([widgets.h(3, \"Tokenomics\") + tokenomics_model.to_html()])\n",
+ " htmlcode += widgets.row([tokenomics_view])\n",
+ "\n",
+ "if not fundraise_df.empty:\n",
+ " htmlcode += widgets.row([widgets.h(3, \"Fundraising Details\")])\n",
+ " htmlcode += widgets.row([widgets.p(fundraise_info)])\n",
+ " htmlcode += widgets.row([fundraise_df.to_html()])\n",
+ "\n",
+ "if not ath.empty:\n",
+ " htmlcode += widgets.row([widgets.h(3, \"All time high\")])\n",
+ " htmlcode += widgets.row([ath.to_html()])\n",
+ "\n",
+ "if not atl.empty:\n",
+ " htmlcode += widgets.row([widgets.h(3, \"All time low\")])\n",
+ " htmlcode += widgets.row([atl.to_html()])\n",
+ "\n",
+ "htmlcode += widgets.row([widgets.h(3, \"All markets\")])\n",
+ "htmlcode += widgets.row([market.sample(n=20).sort_index().to_html(escape=False)])\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Exchanges where loaded coin is listed\")])\n",
+ "htmlcode += widgets.row([ex.sample(n=20).sort_index().to_html()])\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Last trades\")])\n",
+ "htmlcode += widgets.row([trades.tail(20).to_html()])\n",
+ "\n",
+ "if order_book_raw:\n",
+ " htmlcode += widgets.row([widgets.h(3, \"Order book\")])\n",
+ " htmlcode += widgets.row([order_book])\n",
+ "\n",
+ "htmlcode += widgets.row(\n",
+ " [widgets.h(3, \"Price and supply related metrics for loaded coin\")]\n",
+ ")\n",
+ "htmlcode += widgets.row([ps.to_html()])\n",
+ "if not events.empty:\n",
+ " htmlcode += widgets.row([widgets.h(3, \"Events\")])\n",
+ " htmlcode += widgets.row([events.to_html(escape=False)])\n",
+ "# TODO: print rich table\n",
+ "# htmlcode += widgets.row([widgets.h(3, \"Tweets for loaded coin\")])\n",
+ "# htmlcode += widgets.row([tweets])\n",
+ "# htmlcode += widgets.row([widgets.h(3, \"Social media\")])\n",
+ "# htmlcode += widgets.row([social.to_html()])\n",
+ "if not gh_data.empty:\n",
+ " htmlcode += widgets.row([widgets.h(3, \"Github activity over time\")])\n",
+ " htmlcode += widgets.row([gh])\n",
+ "else:\n",
+ " htmlcode += widgets.row([widgets.h(3, \"Github activity over time\")])\n",
+ " htmlcode += widgets.row([widgets.p(\"No data available.\")])\n",
+ "\n",
+ "body += widgets.add_tab(\"Due Diligence\", htmlcode)\n",
+ "\n",
+ "# Technical Analysis tab\n",
+ "htmlcode = \"\"\n",
+ "htmlcode = widgets.row([widgets.h(3, \"Simple moving average\")])\n",
+ "htmlcode += widgets.row([sma])\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Exponential moving average\")])\n",
+ "htmlcode += widgets.row([ema])\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Zero lag exponential moving average\")])\n",
+ "htmlcode += widgets.row([zlma])\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Commodity channel index\")])\n",
+ "htmlcode += widgets.row([cci])\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Moving average convergence/divergence\")])\n",
+ "htmlcode += widgets.row([macd])\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Fisher transform\")])\n",
+ "htmlcode += widgets.row([fisher])\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Aroon indicator\")])\n",
+ "htmlcode += widgets.row([aroon])\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Bollinger bands\")])\n",
+ "htmlcode += widgets.row([bbands])\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Fibonacci retracement\")])\n",
+ "htmlcode += widgets.row([fib])\n",
+ "body += widgets.add_tab(\"Technical Analysis\", htmlcode)\n",
+ "\n",
+ "# Quantitative Analysis tab\n",
+ "htmlcode = \"\"\n",
+ "htmlcode = widgets.row([widgets.h(3, \"Summary\") + summary.to_html()])\n",
+ "htmlcode += widgets.row(\n",
+ " [widgets.h(3, \"Normality statistics and tests\") + normality.to_html()]\n",
+ ")\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Box and whisker plot\")])\n",
+ "htmlcode += widgets.row([bw])\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Rolling mean and std deviation of prices\")])\n",
+ "htmlcode += widgets.row([rolling])\n",
+ "htmlcode += widgets.row([widgets.h(3, \"Rolling kurtosis of distribution of prices\")])\n",
+ "htmlcode += widgets.row([kurtosis])\n",
+ "body += widgets.add_tab(\"Quantitative Analysis\", htmlcode)\n",
+ "\n",
+ "body += widgets.tab_clickable_and_save_evt()\n",
+ "report = widgets.html_report(title=report_name, stylesheet=stylesheet, body=body)\n",
+ "\n",
+ "# # to save the results\n",
+ "with open(report_name + \".html\", \"w\", encoding=\"utf-8\") as fh:\n",
+ " fh.write(report)"
+ ]
+ }
+ ],
+ "metadata": {
+ "celltoolbar": "Tags",
+ "kernelspec": {
+ "display_name": "Python 3.9.13 ('obb')",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.9.13"
+ },
+ "vscode": {
+ "interpreter": {
+ "hash": "e784374cc4f9a84ed6af2983247aaf351b155c82bcc2188134a65f3c99031000"
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/openbb_terminal/reports/economy.ipynb b/openbb_terminal/reports/templates/economy.ipynb
similarity index 91%
rename from openbb_terminal/reports/economy.ipynb
rename to openbb_terminal/reports/templates/economy.ipynb
index 6f404dd16f8..4a86a0dea7d 100644
--- a/openbb_terminal/reports/economy.ipynb
+++ b/openbb_terminal/reports/templates/economy.ipynb
@@ -34,7 +34,7 @@
"from openbb_terminal.sdk import helper\n",
"from openbb_terminal.sdk import openbb\n",
"from openbb_terminal.helper_classes import TerminalStyle\n",
- "\n",
+ "from openbb_terminal.core.config.paths import REPOSITORY_DIRECTORY\n",
"\n",
"%matplotlib inline\n",
"matplotlib_inline.backend_inline.set_matplotlib_formats(\"svg\")\n",
@@ -103,7 +103,7 @@
"id": "0b9ec3f9",
"metadata": {},
"source": [
- "Overview"
+ "Summary"
]
},
{
@@ -171,24 +171,27 @@
" start_date=datetime.datetime.now().strftime(\"%Y-%m-%d\"),\n",
" importance=\"high\",\n",
")\n",
- "events_1 = events_1.set_index(\"Date\")\n",
+ "if not events_1.empty:\n",
+ " events_1 = events_1.set_index(\"Date\")\n",
"\n",
"events_2, title_2 = openbb.economy.events(\n",
" country=\"Euro zone\",\n",
" start_date=datetime.datetime.now().strftime(\"%Y-%m-%d\"),\n",
" importance=\"all\",\n",
")\n",
- "events_2 = events_2[\n",
- " (events_2[\"Importance\"] == \"High\") | (events_2[\"Importance\"] == \"Medium\")\n",
- "]\n",
- "events_2 = events_2.set_index(\"Date\")\n",
+ "if not events_2.empty:\n",
+ " events_2 = events_2[\n",
+ " (events_2[\"Importance\"] == \"High\") | (events_2[\"Importance\"] == \"Medium\")\n",
+ " ]\n",
+ " events_2 = events_2.set_index(\"Date\")\n",
"\n",
"events_3, title_3 = openbb.economy.events(\n",
" country=\"China\",\n",
" start_date=datetime.datetime.now().strftime(\"%Y-%m-%d\"),\n",
" importance=\"all\",\n",
")\n",
- "events_3 = events_3.set_index(\"Date\")"
+ "if not events_3.empty:\n",
+ " events_3 = events_3.set_index(\"Date\")"
]
},
{
@@ -223,20 +226,21 @@
"fig.savefig(f, format=\"svg\")\n",
"ycrv_chart_1 = f.getvalue().decode(\"utf-8\")\n",
"\n",
- "ycrv_data_1.set_index(\"Tenor\", inplace=True)\n",
- "ycrv_data_1.index = [\n",
- " \"1M\",\n",
- " \"3M\",\n",
- " \"6M\",\n",
- " \"1Y\",\n",
- " \"2Y\",\n",
- " \"3Y\",\n",
- " \"5Y\",\n",
- " \"7Y\",\n",
- " \"10Y\",\n",
- " \"20Y\",\n",
- " \"30Y\",\n",
- "]"
+ "if not ycrv_data_1.empty:\n",
+ " ycrv_data_1.set_index(\"Tenor\", inplace=True)\n",
+ " ycrv_data_1.index = [\n",
+ " \"1M\",\n",
+ " \"3M\",\n",
+ " \"6M\",\n",
+ " \"1Y\",\n",
+ " \"2Y\",\n",
+ " \"3Y\",\n",
+ " \"5Y\",\n",
+ " \"7Y\",\n",
+ " \"10Y\",\n",
+ " \"20Y\",\n",
+ " \"30Y\",\n",
+ " ]"
]
},
{
@@ -262,26 +266,27 @@
"f = io.BytesIO()\n",
"fig.savefig(f, format=\"svg\")\n",
"ycrv_chart_2 = f.getvalue().decode(\"utf-8\")\n",
- "ycrv_data_2.set_index(\"Tenor\", inplace=True)\n",
- "ycrv_data_2.index = [\n",
- " \"3M\",\n",
- " \"6M\",\n",
- " \"9M\",\n",
- " \"1Y\",\n",
- " \"2Y\",\n",
- " \"3Y\",\n",
- " \"4Y\",\n",
- " \"5Y\",\n",
- " \"6Y\",\n",
- " \"7Y\",\n",
- " \"8Y\",\n",
- " \"9Y\",\n",
- " \"10Y\",\n",
- " \"15Y\",\n",
- " \"20Y\",\n",
- " \"25Y\",\n",
- " \"30Y\",\n",
- "]"
+ "if not ycrv_data_1.empty:\n",
+ " ycrv_data_2.set_index(\"Tenor\", inplace=True)\n",
+ " ycrv_data_2.index = [\n",
+ " \"3M\",\n",
+ " \"6M\",\n",
+ " \"9M\",\n",
+ " \"1Y\",\n",
+ " \"2Y\",\n",
+ " \"3Y\",\n",
+ " \"4Y\",\n",
+ " \"5Y\",\n",
+ " \"6Y\",\n",
+ " \"7Y\",\n",
+ " \"8Y\",\n",
+ " \"9Y\",\n",
+ " \"10Y\",\n",
+ " \"15Y\",\n",
+ " \"20Y\",\n",
+ " \"25Y\",\n",
+ " \"30Y\",\n",
+ " ]"
]
},
{
@@ -663,8 +668,8 @@
"source": [
"body = \"\"\n",
"\n",
- "img = \"./openbb_terminal/reports/OpenBB_reports_logo.png\"\n",
- "floppy_disk_img = \"./openbb_terminal/reports/floppy-disc.png\"\n",
+ "img = str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/OpenBB_reports_logo.png\"\n",
+ "floppy_disk_img = str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/floppy-disc.png\"\n",
"body += widgets.header(\n",
" img,\n",
" floppy_disk_img,\n",
@@ -677,7 +682,7 @@
"\n",
"body += widgets.tablinks(\n",
" [\n",
- " \"Overview\",\n",
+ " \"SUMMARY\",\n",
" \"Events\",\n",
" \"Yields\",\n",
" \"Equity Market\",\n",
@@ -685,7 +690,7 @@
" ]\n",
")\n",
"\n",
- "# Overview\n",
+ "# Summary\n",
"htmlcode = widgets.row(\n",
" [widgets.h(3, \"Global markets (source: WSJ)\") + overview.to_html()]\n",
")\n",
@@ -704,7 +709,7 @@
" + news[:6].to_html()\n",
" ]\n",
")\n",
- "body += widgets.add_tab(\"Overview\", htmlcode)\n",
+ "body += widgets.add_tab(\"SUMMARY\", htmlcode)\n",
"\n",
"# Events\n",
"htmlcode = widgets.row([widgets.h(3, \"Economic calendars (source: investing.com)\")])\n",
@@ -762,20 +767,12 @@
"with open(report_name + \".html\", \"w\", encoding=\"utf-8\") as fh:\n",
" fh.write(report)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "44d43dde-189c-4371-aa14-e72c428de830",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
"metadata": {
"celltoolbar": "Tags",
"kernelspec": {
- "display_name": "Python 3.10.4 ('obb')",
+ "display_name": "Python 3.9.13 ('obb')",
"language": "python",
"name": "python3"
},
@@ -789,11 +786,11 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.4"
+ "version": "3.9.13"
},
"vscode": {
"interpreter": {
- "hash": "1a8cc6b6e60740679b24fc1ea93bdeb94d949a22102a80c99b7fd3f0d572afd6"
+ "hash": "e784374cc4f9a84ed6af2983247aaf351b155c82bcc2188134a65f3c99031000"
}
}
},
diff --git a/openbb_terminal/reports/equity.ipynb b/openbb_terminal/reports/templates/equity.ipynb
similarity index 97%
rename from openbb_terminal/reports/equity.ipynb
rename to openbb_terminal/reports/templates/equity.ipynb
index 3e64ff57b1e..71bd3dd486e 100644
--- a/openbb_terminal/reports/equity.ipynb
+++ b/openbb_terminal/reports/templates/equity.ipynb
@@ -35,7 +35,7 @@
"from openbb_terminal.sdk import openbb\n",
"from openbb_terminal import config_terminal as cfg\n",
"from openbb_terminal.helper_classes import TerminalStyle\n",
- "from openbb_terminal.core.config.paths import USER_ENV_FILE\n",
+ "from openbb_terminal.core.config.paths import USER_ENV_FILE, REPOSITORY_DIRECTORY\n",
"\n",
"%matplotlib inline\n",
"matplotlib_inline.backend_inline.set_matplotlib_formats(\"svg\")\n",
@@ -88,7 +88,7 @@
"# Parameters that will be replaced when calling this notebook\n",
"# Do not leave parameters blank as notebook will not run otherwise\n",
"symbol = \"msft\"\n",
- "report_name = \"Equity report for AAPL\""
+ "report_name = f\"Equity report for {symbol}\""
]
},
{
@@ -133,6 +133,7 @@
"outputs": [],
"source": [
"info = openbb.stocks.fa.info(symbol=symbol).transpose()\n",
+ "\n",
"if info[\"Long business summary\"][0] != \"NA\":\n",
" overview = info[\"Long business summary\"][0]\n",
"else:\n",
@@ -181,10 +182,6 @@
"outputs": [],
"source": [
"tables = openbb.etf.news(info[\"Short name\"][0], 5)\n",
- "\n",
- "# Add an empty iterator if it the returned type is None\n",
- "# i.e.: in case of lack of a valid API\n",
- "tables = tables if tables is not None else []\n",
"for table in tables:\n",
" table[0].loc[\"link\"] = (\n",
" table[0].loc[\"link\"].apply(lambda x: f'{x} ')\n",
@@ -535,10 +532,6 @@
"outputs": [],
"source": [
"similar_companies = openbb.stocks.ca.polygon_peers(symbol)\n",
- "\n",
- "# Add an empty list if it the returned list is empty\n",
- "# i.e.: in case of lack of a valid API\n",
- "similar_companies = similar_companies if similar_companies is not None else []\n",
"similar_companies.append(symbol)"
]
},
@@ -1231,8 +1224,8 @@
"source": [
"body = \"\"\n",
"\n",
- "img = \"./openbb_terminal/reports/OpenBB_reports_logo.png\"\n",
- "floppy_disk_img = \"./openbb_terminal/reports/floppy-disc.png\"\n",
+ "img = str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/OpenBB_reports_logo.png\"\n",
+ "floppy_disk_img = str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/floppy-disc.png\"\n",
"body += widgets.header(\n",
" img,\n",
" floppy_disk_img,\n",
@@ -1245,7 +1238,7 @@
"\n",
"body += widgets.tablinks(\n",
" [\n",
- " \"Summary\",\n",
+ " \"SUMMARY\",\n",
" \"Overview\",\n",
" \"Fundamental Analysis\",\n",
" \"Technical Analysis\",\n",
@@ -1320,7 +1313,7 @@
" ],\n",
" round(regression_val - last_price, 2),\n",
" )\n",
- "body += widgets.add_tab(\"Summary\", htmlcode)\n",
+ "body += widgets.add_tab(\"SUMMARY\", htmlcode)\n",
"\n",
"htmlcode = widgets.row([widgets.h(3, \"Description\") + widgets.p(overview)])\n",
"htmlcode += widgets.row([widgets.h(3, \"Price Chart\") + price_chart])\n",
@@ -1382,13 +1375,9 @@
" )\n",
"except:\n",
" pass\n",
- "\n",
- "try:\n",
- " htmlcode += widgets.row(\n",
- " [widgets.h(3, f\"Enterprise data for {symbol}\") + enterprise_df.to_html()]\n",
- " )\n",
- "except:\n",
- " pass\n",
+ "htmlcode += widgets.row(\n",
+ " [widgets.h(3, f\"Enterprise data for {symbol}\") + enterprise_df.to_html()]\n",
+ ")\n",
"htmlcode += widgets.row(\n",
" [widgets.h(3, f\"Income Statement for {symbol}\") + income_df.to_html()]\n",
")\n",
@@ -1402,7 +1391,9 @@
" )\n",
"except:\n",
" pass\n",
+ "\n",
"body += widgets.add_tab(\"Fundamental Analysis\", htmlcode)\n",
+ "\n",
"htmlcode = widgets.row([widgets.h(3, \"Put to call ratio\") + pcr_chart])\n",
"htmlcode += widgets.row(\n",
" [widgets.h(3, \"Option Volume for closest expiry date\") + vol_chart]\n",
@@ -1570,14 +1561,6 @@
" os.getenv(\"OPENBB_RICHSTYLE\") or \"dark\",\n",
")"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "f20745a4-053f-4cd3-8bb2-96c88c0600df",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
"metadata": {
@@ -1597,11 +1580,11 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.4"
+ "version": "3.9.13"
},
"vscode": {
"interpreter": {
- "hash": "1a8cc6b6e60740679b24fc1ea93bdeb94d949a22102a80c99b7fd3f0d572afd6"
+ "hash": "e784374cc4f9a84ed6af2983247aaf351b155c82bcc2188134a65f3c99031000"
}
}
},
diff --git a/openbb_terminal/reports/etf.ipynb b/openbb_terminal/reports/templates/etf.ipynb
similarity index 90%
rename from openbb_terminal/reports/etf.ipynb
rename to openbb_terminal/reports/templates/etf.ipynb
index e90eaebdff5..53d1751b10b 100644
--- a/openbb_terminal/reports/etf.ipynb
+++ b/openbb_terminal/reports/templates/etf.ipynb
@@ -33,6 +33,7 @@
"from openbb_terminal.sdk import widgets\n",
"from openbb_terminal.sdk import openbb\n",
"from openbb_terminal.helper_classes import TerminalStyle\n",
+ "from openbb_terminal.core.config.paths import REPOSITORY_DIRECTORY\n",
"\n",
"%matplotlib inline\n",
"matplotlib_inline.backend_inline.set_matplotlib_formats(\"svg\")\n",
@@ -62,12 +63,7 @@
" theme = TerminalStyle(\"light\", \"light\", \"light\")\n",
"except:\n",
" pass\n",
- "stylesheet = widgets.html_report_stylesheet()\n",
- "try:\n",
- " with open(\"openbb_terminal/reports/OpenBB_reports_logo.png\", \"rb\") as image_file:\n",
- " openbb_image_encoded = base64.b64encode(image_file.read())\n",
- "except FileNotFoundError:\n",
- " openbb_image_encoded = None"
+ "stylesheet = widgets.html_report_stylesheet()"
]
},
{
@@ -240,8 +236,8 @@
"source": [
"body = \"\"\n",
"\n",
- "img = \"./openbb_terminal/reports/OpenBB_reports_logo.png\"\n",
- "floppy_disk_img = (\"./openbb_terminal/reports/floppy-disc.png\",)\n",
+ "img = str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/OpenBB_reports_logo.png\"\n",
+ "floppy_disk_img = str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/floppy-disc.png\"\n",
"body += widgets.header(\n",
" img,\n",
" floppy_disk_img,\n",
@@ -275,20 +271,12 @@
"with open(report_name + \".html\", \"w\", encoding=\"utf-8\") as fh:\n",
" fh.write(report)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "703368dd-a57d-4584-a85c-319ead55f628",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
"metadata": {
"celltoolbar": "Tags",
"kernelspec": {
- "display_name": "Python 3 (ipykernel)",
+ "display_name": "Python 3.9.13 ('obb')",
"language": "python",
"name": "python3"
},
@@ -302,11 +290,11 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.9.6"
+ "version": "3.9.13"
},
"vscode": {
"interpreter": {
- "hash": "ab0e87f2bc73919b75956d1b3e303320699d53da895be1bb46287d7dc67c6497"
+ "hash": "e784374cc4f9a84ed6af2983247aaf351b155c82bcc2188134a65f3c99031000"
}
}
},
diff --git a/openbb_terminal/reports/floppy-disc.png b/openbb_terminal/reports/templates/floppy-disc.png
similarity index 100%
rename from openbb_terminal/reports/floppy-disc.png
rename to openbb_terminal/reports/templates/floppy-disc.png
diff --git a/openbb_terminal/reports/forecast.ipynb b/openbb_terminal/reports/templates/forecast.ipynb
similarity index 90%
rename from openbb_terminal/reports/forecast.ipynb
rename to openbb_terminal/reports/templates/forecast.ipynb
index b8a2ca8b261..e674387368c 100644
--- a/openbb_terminal/reports/forecast.ipynb
+++ b/openbb_terminal/reports/templates/forecast.ipynb
@@ -30,6 +30,7 @@
"from openbb_terminal.sdk import widgets\n",
"from openbb_terminal.sdk import openbb\n",
"from openbb_terminal.helper_classes import TerminalStyle\n",
+ "from openbb_terminal.core.config.paths import REPOSITORY_DIRECTORY\n",
"\n",
"%matplotlib inline\n",
"matplotlib_inline.backend_inline.set_matplotlib_formats(\"svg\")\n",
@@ -47,12 +48,7 @@
" theme = TerminalStyle(\"light\", \"light\", \"light\")\n",
"except:\n",
" pass\n",
- "stylesheet = widgets.html_report_stylesheet()\n",
- "try:\n",
- " with open(\"openbb_terminal/reports/OpenBB_reports_logo.png\", \"rb\") as image_file:\n",
- " openbb_image_encoded = base64.b64encode(image_file.read())\n",
- "except FileNotFoundError:\n",
- " openbb_image_encoded = None"
+ "stylesheet = widgets.html_report_stylesheet()"
]
},
{
@@ -230,8 +226,8 @@
"source": [
"body = \"\"\n",
"\n",
- "img = \"./openbb_terminal/reports/OpenBB_reports_logo.png\"\n",
- "floppy_disk_img = (\"./openbb_terminal/reports/floppy-disc.png\",)\n",
+ "img = str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/OpenBB_reports_logo.png\"\n",
+ "floppy_disk_img = str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/floppy-disc.png\"\n",
"body += widgets.header(\n",
" img,\n",
" floppy_disk_img,\n",
@@ -260,20 +256,12 @@
"with open(report_name + \".html\", \"w\", encoding=\"utf-8\") as fh:\n",
" fh.write(report)"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "b7f52d81-8362-4a68-9830-fee24c16fa08",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
"metadata": {
"celltoolbar": "Tags",
"kernelspec": {
- "display_name": "Python 3.10.4 ('obb')",
+ "display_name": "Python 3.9.13 ('obb')",
"language": "python",
"name": "python3"
},
@@ -287,11 +275,11 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.4"
+ "version": "3.9.13"
},
"vscode": {
"interpreter": {
- "hash": "1a8cc6b6e60740679b24fc1ea93bdeb94d949a22102a80c99b7fd3f0d572afd6"
+ "hash": "e784374cc4f9a84ed6af2983247aaf351b155c82bcc2188134a65f3c99031000"
}
}
},
diff --git a/openbb_terminal/reports/forex.ipynb b/openbb_terminal/reports/templates/forex.ipynb
similarity index 96%
rename from openbb_terminal/reports/forex.ipynb
rename to openbb_terminal/reports/templates/forex.ipynb
index 899c6489a70..a8e2f4bd77a 100644
--- a/openbb_terminal/reports/forex.ipynb
+++ b/openbb_terminal/reports/templates/forex.ipynb
@@ -34,6 +34,7 @@
"from openbb_terminal.sdk import widgets\n",
"from openbb_terminal.sdk import openbb\n",
"from openbb_terminal.helper_classes import TerminalStyle\n",
+ "from openbb_terminal.core.config.paths import REPOSITORY_DIRECTORY\n",
"\n",
"%matplotlib inline\n",
"matplotlib_inline.backend_inline.set_matplotlib_formats(\"svg\")\n",
@@ -51,12 +52,7 @@
" theme = TerminalStyle(\"light\", \"light\", \"light\")\n",
"except:\n",
" pass\n",
- "stylesheet = widgets.html_report_stylesheet()\n",
- "try:\n",
- " with open(\"./openbb_terminal/reports/OpenBB_reports_logo.png\", \"rb\") as image_file:\n",
- " openbb_image_encoded = base64.b64encode(image_file.read())\n",
- "except FileNotFoundError:\n",
- " openbb_image_encoded = None"
+ "stylesheet = widgets.html_report_stylesheet()"
]
},
{
@@ -630,11 +626,8 @@
"source": [
"body = \"\"\n",
"\n",
- "try:\n",
- " img = f' '\n",
- "except AttributeError:\n",
- " img = None\n",
- "floppy_disk_img = \"openbb_terminal/reports/floppy-disc.png\"\n",
+ "img = str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/OpenBB_reports_logo.png\"\n",
+ "floppy_disk_img = str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/floppy-disc.png\"\n",
"body += widgets.header(\n",
" img,\n",
" floppy_disk_img,\n",
@@ -757,7 +750,7 @@
"metadata": {
"celltoolbar": "Tags",
"kernelspec": {
- "display_name": "Python 3.10.4 ('obb')",
+ "display_name": "Python 3.9.13 ('obb')",
"language": "python",
"name": "python3"
},
@@ -771,11 +764,11 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.4"
+ "version": "3.9.13"
},
"vscode": {
"interpreter": {
- "hash": "1a8cc6b6e60740679b24fc1ea93bdeb94d949a22102a80c99b7fd3f0d572afd6"
+ "hash": "e784374cc4f9a84ed6af2983247aaf351b155c82bcc2188134a65f3c99031000"
}
}
},
diff --git a/openbb_terminal/reports/portfolio.ipynb b/openbb_terminal/reports/templates/portfolio.ipynb
similarity index 94%
rename from openbb_terminal/reports/portfolio.ipynb
rename to openbb_terminal/reports/templates/portfolio.ipynb
index 493cd34942c..89f81e2c800 100644
--- a/openbb_terminal/reports/portfolio.ipynb
+++ b/openbb_terminal/reports/templates/portfolio.ipynb
@@ -38,6 +38,7 @@
"from openbb_terminal.sdk import openbb\n",
"from openbb_terminal.sdk import Portfolio\n",
"from openbb_terminal.helper_classes import TerminalStyle\n",
+ "from openbb_terminal.core.config.paths import REPOSITORY_DIRECTORY\n",
"\n",
"%matplotlib inline\n",
"matplotlib_inline.backend_inline.set_matplotlib_formats(\"svg\")\n",
@@ -93,19 +94,6 @@
"report_name = \"Portfolio Report\""
]
},
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "ee7112da",
- "metadata": {},
- "outputs": [],
- "source": [
- "if \"reports\" in os.getcwd():\n",
- " holdings = \"../../portfolio/holdings/\"\n",
- "else:\n",
- " holdings = \"portfolio/holdings/\""
- ]
- },
{
"cell_type": "code",
"execution_count": null,
@@ -113,6 +101,7 @@
"metadata": {},
"outputs": [],
"source": [
+ "holdings = str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/miscellaneous/portfolio_examples/holdings/\"\n",
"orderbook_path = holdings + orderbook\n",
"_, orderbook_file = os.path.split(orderbook_path)\n",
"report_title = f\"Portfolio report for {orderbook_file}\"\n",
@@ -153,7 +142,7 @@
" P.get_orderbook()\n",
"except ValueError:\n",
" raise ValueError(\n",
- " \"Failed to load the orderbook. Is this file inside the 'Holdings' folder?\"\n",
+ " \"Failed to load the orderbook. Is this file inside the 'holdings' folder?\"\n",
" )"
]
},
@@ -348,13 +337,10 @@
"metadata": {},
"outputs": [],
"source": [
- "from glob import escape\n",
- "\n",
- "\n",
"body = \"\"\n",
"\n",
- "img = \"./openbb_terminal/reports/OpenBB_reports_logo.png\"\n",
- "floppy_disk_img = (\"./openbb_terminal/reports/floppy-disc.png\",)\n",
+ "img = str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/OpenBB_reports_logo.png\"\n",
+ "floppy_disk_img = str(REPOSITORY_DIRECTORY) + \"/openbb_terminal/reports/templates/floppy-disc.png\"\n",
"body += widgets.header(\n",
" img,\n",
" floppy_disk_img,\n",
@@ -365,7 +351,7 @@
" report_title,\n",
")\n",
"\n",
- "body += widgets.tablinks([\"Summary\", \"In-Depth Analysis\", \"Statistics\"])\n",
+ "body += widgets.tablinks([\"SUMMARY\", \"In-Depth Analysis\", \"Statistics\"])\n",
"\n",
"# Summary\n",
"htmlcode = widgets.p(\n",
@@ -409,7 +395,7 @@
" [widgets.h(3, \"Benchmark Trades\") + P.benchmark_trades.to_html()]\n",
")\n",
"\n",
- "body += widgets.add_tab(\"Summary\", htmlcode)\n",
+ "body += widgets.add_tab(\"SUMMARY\", htmlcode)\n",
"\n",
"# In Depth Analysis\n",
"htmlcode = widgets.p(\n",
@@ -480,7 +466,7 @@
"metadata": {
"celltoolbar": "Tags",
"kernelspec": {
- "display_name": "Python 3.10.4 ('obb')",
+ "display_name": "Python 3.9.13 ('obb')",
"language": "python",
"name": "python3"
},
@@ -494,11 +480,11 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.4"
+ "version": "3.9.13"
},
"vscode": {
"interpreter": {
- "hash": "1a8cc6b6e60740679b24fc1ea93bdeb94d949a22102a80c99b7fd3f0d572afd6"
+ "hash": "e784374cc4f9a84ed6af2983247aaf351b155c82bcc2188134a65f3c99031000"
}
}
},
diff --git a/openbb_terminal/sdk.py b/openbb_terminal/sdk.py
index 761887ae177..e7ea30b2eeb 100644
--- a/openbb_terminal/sdk.py
+++ b/openbb_terminal/sdk.py
@@ -7,7 +7,7 @@ import warnings
import types
import functools
import importlib
-from typing import Optional, Callable, List
+from typing import Optional, Callable, List, Union
import logging
from traceback import format_stack
@@ -2383,7 +2383,7 @@ class Loader:
log_all_settings()
@classmethod
- def get_function(cls, function_path: str) -> Callable:
+ def get_function(cls, function_path: str) -> Union[Callable, None]:
"""Get function from string path.
Parameters
@@ -2399,7 +2399,16 @@ class Loader:
Function
"""
module_path, function_name = function_path.rsplit(sep=".", maxsplit=1)
- module = cls.__load_module(module_path=module_path)
+ try:
+ module = cls.__load_module(module_path=module_path)
+ except Exception as e:
+ # This avoids crash on loading SDK under installer application.
+ # SDK is used by papermill to generate reports and some dependencies
+ # are not compatible. Since the reports are run in a subprocess,
+ # this error message is actually not displayed on screen.
+ # TODO: Fix this.
+ console.print(f"Cannot load: {module_path} -> {e}")
+ return None
try:
function = getattr(module, function_name)
diff --git a/openbb_terminal/terminal_controller.py b/openbb_terminal/terminal_controller.py
index acec8e8a73a..51382ee3e65 100644
--- a/openbb_terminal/terminal_controller.py
+++ b/openbb_terminal/terminal_controller.py
@@ -18,7 +18,6 @@ from prompt_toolkit.completion import NestedCompleter
from prompt_toolkit.styles import Style
from prompt_toolkit.formatted_text import HTML
import pandas as pd
-
from openbb_terminal import feature_flags as obbff
from openbb_terminal import keys_controller
from openbb_terminal.terminal_helper import is_packaged_application
@@ -40,7 +39,7 @@ from openbb_terminal.helper_funcs import (
)
from openbb_terminal.loggers import setup_logging
from openbb_terminal.core.log.generation.settings_logger import log_all_settings
-from openbb_terminal.menu import session
+from openbb_terminal.menu import session, is_papermill
from openbb_terminal.parent_classes import BaseController
from openbb_terminal.rich_config import console, MenuText
from openbb_terminal.terminal_helper import (
@@ -55,8 +54,9 @@ from openbb_terminal.terminal_helper import (
)
from openbb_terminal.helper_funcs import parse_and_split_input
from openbb_terminal.common import feedparser_view
+from openbb_terminal.reports.reports_model import ipykernel_launcher
-# pylint: disable=too-many-public-methods,import-outside-toplevel
+# pylint: disable=too-many-public-methods,import-outside-toplevel, too-many-function-args
# pylint: disable=too-many-branches,no-member,C0302,too-many-return-statements
logger = logging.getLogger(__name__)
@@ -889,8 +889,10 @@ def terminal(jobs_cmds: List[str] = None, test_mode=False):
except (KeyboardInterrupt, EOFError):
print_goodbye()
break
- # Get input from user without auto-completion
+ elif is_papermill():
+ pass
else:
+ # Get input from user without auto-completion
an_input = input(f"{get_flair()} / $ ")
try:
@@ -1098,6 +1100,7 @@ def main(
path_list: List[str],
verbose: bool,
routines_args: List[str] = None,
+ **kwargs,
):
"""
Runs the terminal with various options
@@ -1119,12 +1122,16 @@ def main(
E.g. GME,AMC,BTC-USD
"""
+ if kwargs["module"] == "ipykernel_launcher":
+ ipykernel_launcher(kwargs["module_file"], kwargs["module_hist_file"])
+
if test:
run_test_list(path_list=path_list, filtert=filtert, verbose=verbose)
return
if debug:
os.environ["DEBUG_MODE"] = "true"
+
if isinstance(path_list, list) and path_list[0].endswith(".openbb"):
run_routine(file=path_list[0], routines_args=routines_args)
elif path_list:
@@ -1186,10 +1193,41 @@ def parse_args_and_run():
type=lambda s: [str(item) for item in s.split(",")],
default=None,
)
-
+ # The args -m, -f and --HistoryManager.hist_file are used only in reports menu
+ # by papermill and that's why they have suppress help.
+ parser.add_argument(
+ "-m",
+ help=argparse.SUPPRESS,
+ dest="module",
+ default="",
+ type=str,
+ )
+ parser.add_argument(
+ "-f",
+ help=argparse.SUPPRESS,
+ dest="module_file",
+ default="",
+ type=str,
+ )
+ parser.add_argument(
+ "--HistoryManager.hist_file",
+ help=argparse.SUPPRESS,
+ dest="module_hist_file",
+ default="",
+ type=str,
+ )
if sys.argv[1:] and "-" not in sys.argv[1][0]:
sys.argv.insert(1, "--file")
- ns_parser = parser.parse_args()
+ ns_parser, unknown = parser.parse_known_args()
+
+ # This ensures that if terminal.py receives unknown args it will not start.
+ # Use -d flag if you want to see the unknown args.
+ if unknown:
+ if ns_parser.debug:
+ console.print(unknown)
+ else:
+ sys.exit(-1)
+
main(
ns_parser.debug,
ns_parser.test,
@@ -1197,6 +1235,9 @@ def parse_args_and_run():
ns_parser.path,
ns_parser.verbose,
ns_parser.routine_args,
+ module=ns_parser.module,
+ module_file=ns_parser.module_file,
+ module_hist_file=ns_parser.module_hist_file,
)
diff --git a/poetry.lock b/poetry.lock
index 427c9137929..2b6fa8690a7 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -77,7 +77,7 @@ pandas = ">=0.18"
toolz = "*"
[package.extras]
-dev = ["black", "docutils", "flake8", "ipython", "m2r", "mistune (<2.0.0)", "pytest", "recommonmark", "sphinx", "vega-datasets"]
+dev = ["black", "docutils", "ipython", "flake8", "pytest", "sphinx", "mistune (<2.0.0)", "m2r", "vega-datasets", "recommonmark"]
[[package]]
name = "altgraph"
@@ -100,8 +100,8 @@ idna = ">=2.8"
sniffio = ">=1.1"
[package.extras]
-doc = ["packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
-test = ["contextlib2", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "uvloop (>=0.15)"]
+doc = ["packaging", "sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"]
+test = ["coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "contextlib2", "uvloop (<0.15)", "mock (>=4)", "uvloop (>=0.15)"]
trio = ["trio (>=0.16,<0.22)"]
[[package]]
@@ -139,8 +139,8 @@ python-versions = ">=3.6"
argon2-cffi-bindings = "*"
[package.extras]
-dev = ["cogapp", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "pre-commit", "pytest", "sphinx", "sphinx-notfound-page", "tomli"]
-docs = ["furo", "sphinx", "sphinx-notfound-page"]
+dev = ["pre-commit", "cogapp", "tomli", "coverage[toml] (>=5.0.2)", "hypothesis", "pytest", "sphinx", "sphinx-notfound-page", "furo"]
+docs = ["sphinx", "sphinx-notfound-page", "furo"]
tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"]
[[package]]
@@ -155,7 +155,7 @@ python-versions = ">=3.6"
cffi = ">=1.0.1"
[package.extras]
-dev = ["cogapp", "pre-commit", "pytest", "wheel"]
+dev = ["pytest", "cogapp", "pre-commit", "wheel"]
tests = ["pytest"]
[[package]]
@@ -206,11 +206,11 @@ pyerfa = ">=2.0"
PyYAML = ">=3.13"
[package.extras]
-all = ["asdf (>=2.10.0)", "beautifulsoup4", "bleach", "bottleneck", "certifi", "dask", "h5py", "html5lib", "ipython (>=4.2)", "jplephem", "matplotlib (>=3.1,!=3.4.0,!=3.5.2)", "mpmath", "pandas", "pyarrow (>=5.0.0)", "pytest (>=7.0)", "pytz", "scipy (>=1.3)", "sortedcontainers", "typing-extensions (>=3.10.0.1)"]
-docs = ["Jinja2 (<3.1)", "matplotlib (>=3.1,!=3.4.0,!=3.5.2)", "pytest (>=7.0)", "scipy (>=1.3)", "sphinx (<4)", "sphinx-astropy (>=1.6)", "sphinx-changelog (>=1.2.0)"]
-recommended = ["matplotlib (>=3.1,!=3.4.0,!=3.5.2)", "scipy (>=1.3)"]
-test = ["pytest (>=7.0)", "pytest-astropy (>=0.10)", "pytest-astropy-header (>=0.2.1)", "pytest-doctestplus (>=0.12)", "pytest-xdist"]
-test_all = ["coverage", "ipython (>=4.2)", "objgraph", "pooch", "pytest (>=7.0)", "pytest-astropy (>=0.10)", "pytest-astropy-header (>=0.2.1)", "pytest-doctestplus (>=0.12)", "pytest-xdist", "sgp4 (>=2.3)", "skyfield (>=1.20)"]
+all = ["scipy (>=1.3)", "matplotlib (>=3.1,!=3.4.0,!=3.5.2)", "certifi", "dask", "h5py", "pyarrow (>=5.0.0)", "beautifulsoup4", "html5lib", "bleach", "pandas", "sortedcontainers", "pytz", "jplephem", "mpmath", "asdf (>=2.10.0)", "bottleneck", "ipython (>=4.2)", "pytest (>=7.0)", "typing-extensions (>=3.10.0.1)"]
+docs = ["sphinx (<4)", "sphinx-astropy (>=1.6)", "pytest (>=7.0)", "scipy (>=1.3)", "matplotlib (>=3.1,!=3.4.0,!=3.5.2)", "sphinx-changelog (>=1.2.0)", "Jinja2 (<3.1)"]
+recommended = ["scipy (>=1.3)", "matplotlib (>=3.1,!=3.4.0,!=3.5.2)"]
+test = ["pytest (>=7.0)", "pytest-doctestplus (>=0.12)", "pytest-astropy-header (>=0.2.1)", "pytest-astropy (>=0.10)", "pytest-xdist"]
+test_all = ["pytest (>=7.0)", "pytest-doctestplus (>=0.12)", "pytest-astropy-header (>=0.2.1)", "pytest-astropy (>=0.10)", "pytest-xdist", "objgraph", "ipython (>=4.2)", "coverage", "skyfield (>=1.20)", "sgp4 (>=2.3)", "pooch"]
[[package]]
name = "asttokens"
@@ -251,10 +251,10 @@ optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[package.extras]
-dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six", "sphinx", "sphinx-notfound-page", "zope.interface"]
-docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"]
-tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six", "zope.interface"]
-tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six"]
+dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"]
+docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
+tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"]
+tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"]
[[package]]
name = "babel"
@@ -309,7 +309,7 @@ PyYAML = ">=5.3.1"
stevedore = ">=1.20.0"
[package.extras]
-test = ["beautifulsoup4 (>=4.8.0)", "coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "pylint (==1.9.4)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "toml"]
+test = ["coverage (>=4.5.4)", "fixtures (>=3.0.0)", "flake8 (>=4.0.0)", "stestr (>=2.5.0)", "testscenarios (>=0.5.0)", "testtools (>=2.3.0)", "toml", "beautifulsoup4 (>=4.8.0)", "pylint (==1.9.4)"]
toml = ["toml"]
yaml = ["pyyaml"]
@@ -322,7 +322,7 @@ optional = false
python-versions = ">=3.5"
[package.extras]
-tests = ["PyHamcrest (>=2.0.2)", "mypy", "pytest (>=4.6)", "pytest-benchmark", "pytest-cov", "pytest-flake8"]
+tests = ["pytest-flake8", "pytest-cov", "pytest-benchmark", "pytest (>=4.6)", "PyHamcrest (>=2.0.2)", "mypy"]
[[package]]
name = "beartype"
@@ -333,10 +333,10 @@ optional = false
python-versions = ">=3.6.0"
[package.extras]
-dev = ["coverage (>=5.5)", "mypy (>=0.800)", "pytest (>=4.0.0)", "sphinx (>=3.4.3)", "tox (>=3.20.1)"]
-doc-rtd = ["sphinx (==3.4.3)", "sphinx-rtd-theme (==0.5.1)"]
-test-tox = ["mypy (>=0.800)", "pytest (>=4.0.0)"]
test-tox-coverage = ["coverage (>=5.5)"]
+test-tox = ["pytest (>=4.0.0)", "mypy (>=0.800)"]
+doc-rtd = ["sphinx-rtd-theme (==0.5.1)", "sphinx (==3.4.3)"]
+dev = ["sphinx (>=3.4.3)", "tox (>=3.20.1)", "pytest (>=4.0.0)", "mypy (>=0.800)", "coverage (>=5.5)"]
[[package]]
name = "beautifulsoup4"
@@ -391,7 +391,7 @@ webencodings = "*"
[package.extras]
css = ["tinycss2 (>=1.1.0,<1.2)"]
-dev = ["Sphinx (==4.3.2)", "black (==22.3.0)", "build (==0.8.0)", "flake8 (==4.0.1)", "hashin (==0.17.0)", "mypy (==0.961)", "pip-tools (==6.6.2)", "pytest (==7.1.2)", "tox (==3.25.0)", "twine (==4.0.1)", "wheel (==0.37.1)"]
+dev = ["build (==0.8.0)", "flake8 (==4.0.1)", "hashin (==0.17.0)", "pip-tools (==6.6.2)", "pytest (==7.1.2)", "Sphinx (==4.3.2)", "tox (==3.25.0)", "twine (==4.0.1)", "wheel (==0.37.1)", "black (==22.3.0)", "mypy (==0.961)"]
[[package]]
name = "blinker"
@@ -425,7 +425,7 @@ ffn = ">=0.3.5"
pyprind = ">=2.11"
[package.extras]
-dev = ["black (>=20.8b1)", "codecov", "coverage", "cython (>=0.25)", "ffn (>=0.3.5)", "flake8", "flake8-black", "future", "matplotlib (>=2)", "mock", "nose", "numpy (>=1)", "pandas (>=0.19)", "pyprind (>=2.11)"]
+dev = ["black (>=20.8b1)", "codecov", "coverage", "cython (>=0.25)", "flake8", "flake8-black", "future", "mock", "nose", "numpy (>=1)", "pandas (>=0.19)", "matplotlib (>=2)", "ffn (>=0.3.5)", "pyprind (>=2.11)"]
[[package]]
name = "cachetools"
@@ -452,7 +452,7 @@ requests = ">=2.18.4"
yarl = {version = ">=1.7.2", markers = "python_version >= \"3.5.2\""}
[package.extras]
-doc = ["Sphinx (==4.0)", "m2r2 (==0.2.7)", "mistune (==0.8.4)", "readthedocs-sphinx-search (==0.1.0)", "sphinx-rtd-theme (==0.5.2)"]
+doc = ["Sphinx (==4.0)", "mistune (==0.8.4)", "m2r2 (==0.2.7)", "sphinx-rtd-theme (==0.5.2)", "readthedocs-sphinx-search (==0.1.0)"]
qa = ["flake8 (==3.7.9)"]
[[package]]
@@ -534,7 +534,7 @@ optional = false
python-versions = "*"
[package.extras]
-test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"]
+test = ["hypothesis (==3.55.3)", "flake8 (==3.7.8)"]
[[package]]
name = "convertdate"
@@ -548,8 +548,8 @@ python-versions = "<4,>=3.7"
pymeeus = ">=0.3.13,<=1"
[package.extras]
-dev = ["black", "build", "isort", "pylint"]
-docs = ["myst-parser", "sphinx", "sphinx-rtd-theme"]
+dev = ["build", "black", "isort", "pylint"]
+docs = ["sphinx", "sphinx-rtd-theme", "myst-parser"]
tests = ["coverage"]
[[package]]
@@ -579,11 +579,11 @@ cffi = ">=1.12"
[package.extras]
docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"]
-docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"]
+docstest = ["pyenchant (>=1.6.11)", "twine (>=1.12.0)", "sphinxcontrib-spelling (>=4.0.1)"]
pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"]
sdist = ["setuptools-rust (>=0.11.4)"]
ssh = ["bcrypt (>=3.1.5)"]
-test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"]
+test = ["pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-subtests", "pytest-xdist", "pretend", "iso8601", "pytz", "hypothesis (>=1.11.4,!=3.79.2)"]
[[package]]
name = "cssselect"
@@ -639,9 +639,9 @@ regex = "<2019.02.19 || >2019.02.19,<2021.8.27 || >2021.8.27,<2022.3.15"
tzlocal = "*"
[package.extras]
-calendars = ["convertdate", "convertdate", "hijri-converter"]
-fasttext = ["fasttext"]
langdetect = ["langdetect"]
+fasttext = ["fasttext"]
+calendars = ["convertdate", "hijri-converter", "convertdate"]
[[package]]
name = "datetime"
@@ -742,8 +742,8 @@ optional = false
python-versions = ">=3.6,<4.0"
[package.extras]
-curio = ["curio (>=1.2,<2.0)", "sniffio (>=1.1,<2.0)"]
dnssec = ["cryptography (>=2.6,<37.0)"]
+curio = ["curio (>=1.2,<2.0)", "sniffio (>=1.1,<2.0)"]
doh = ["h2 (>=4.1.0)", "httpx (>=0.21.1)", "requests (>=2.23.0,<3.0.0)", "requests-toolbelt (>=0.9.1,<0.10.0)"]
idna = ["idna (>=2.1,<4.0)"]
trio = ["trio (>=0.14,<0.20)"]
@@ -811,7 +811,7 @@ pytz = "*"
toolz = "*"
[package.extras]
-dev = ["flake8", "hypothesis", "pip-tools", "pytest", "pytest-benchmark", "pytest-xdist"]
+dev = ["flake8", "hypothesis", "pytest", "pytest-benchmark", "pytest-xdist", "pip-tools"]
[[package]]
name = "executing"
@@ -822,7 +822,7 @@ optional = false
python-versions = "*"
[package.extras]
-tests = ["asttokens", "littleutils", "pytest", "rich"]
+tests = ["rich", "littleutils", "pytest", "asttokens"]
[[package]]
name = "fastjsonschema"
@@ -833,7 +833,7 @@ optional = false
python-versions = "*"
[package.extras]
-devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"]
+devel = ["colorama", "jsonschema", "json-spec", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"]
[[package]]
name = "feedparser"
@@ -866,7 +866,7 @@ scipy = ">=0.15"
tabulate = ">=0.7.5"
[package.extras]
-dev = ["black (>=20.8b1)", "codecov", "coverage", "flake8", "flake8-black", "future", "mock", "nose"]
+dev = ["nose", "mock", "future", "flake8-black", "flake8", "coverage", "codecov", "black (>=20.8b1)"]
[[package]]
name = "filelock"
@@ -955,9 +955,9 @@ optional = false
python-versions = ">=3.7"
[package.extras]
-all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=14.0.0)", "xattr", "zopfli (>=0.1.4)"]
+all = ["fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "zopfli (>=0.1.4)", "lz4 (>=1.7.4.2)", "matplotlib", "sympy", "skia-pathops (>=0.5.0)", "uharfbuzz (>=0.23.0)", "brotlicffi (>=0.8.0)", "scipy", "brotli (>=1.0.1)", "munkres", "unicodedata2 (>=14.0.0)", "xattr"]
graphite = ["lz4 (>=1.7.4.2)"]
-interpolatable = ["munkres", "scipy"]
+interpolatable = ["scipy", "munkres"]
lxml = ["lxml (>=4.0,<5)"]
pathops = ["skia-pathops (>=0.5.0)"]
plot = ["matplotlib"]
@@ -966,7 +966,7 @@ symfont = ["sympy"]
type1 = ["xattr"]
ufo = ["fs (>=2.2.0,<3)"]
unicode = ["unicodedata2 (>=14.0.0)"]
-woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"]
+woff = ["zopfli (>=0.1.4)", "brotlicffi (>=0.8.0)", "brotli (>=1.0.1)"]
[[package]]
name = "formulaic"
@@ -985,8 +985,8 @@ scipy = ">=1.6"
wrapt = ">=1.0"
[package.extras]
-arrow = ["pyarrow (>=1)"]
calculus = ["sympy (>=1.3,<1.10)"]
+arrow = ["pyarrow (>=1)"]
[[package]]
name = "fred"
@@ -1121,10 +1121,10 @@ six = ">=1.9"
webencodings = "*"
[package.extras]
-all = ["chardet (>=2.2)", "genshi", "lxml"]
-chardet = ["chardet (>=2.2)"]
-genshi = ["genshi"]
lxml = ["lxml"]
+genshi = ["genshi"]
+chardet = ["chardet (>=2.2)"]
+all = ["lxml", "chardet (>=2.2)", "genshi"]
[[package]]
name = "httpcore"
@@ -1159,8 +1159,8 @@ rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]}
sniffio = "*"
[package.extras]
-brotli = ["brotli", "brotlicffi"]
-cli = ["click (>=8.0.0,<9.0.0)", "pygments (>=2.0.0,<3.0.0)", "rich (>=10,<13)"]
+brotli = ["brotlicffi", "brotli"]
+cli = ["click (>=8.0.0,<9.0.0)", "rich (>=10,<13)", "pygments (>=2.0.0,<3.0.0)"]
http2 = ["h2 (>=3,<5)"]
socks = ["socksio (>=1.0.0,<2.0.0)"]
@@ -1203,9 +1203,9 @@ python-versions = ">=3.7"
zipp = ">=0.5"
[package.extras]
-docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"]
+docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "jaraco.tidelift (>=1.4)"]
perf = ["ipython"]
-testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"]
+testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"]
[[package]]
name = "inflection"
@@ -1243,7 +1243,7 @@ python-versions = ">=3.8,<4.0"
httpx = ">=0.23.0,<0.24.0"
[package.extras]
-docs = ["mkdocs (>=1.4.0,<2.0.0)", "mkdocs-git-revision-date-localized-plugin (>=1.1.0,<2.0.0)", "mkdocs-material (>=8.5.4,<9.0.0)", "mkdocstrings[python] (>=0.19.0,<0.20.0)"]
+docs = ["mkdocstrings[python] (>=0.19.0,<0.20.0)", "mkdocs-git-revision-date-localized-plugin (>=1.1.0,<2.0.0)", "mkdocs-material (>=8.5.4,<9.0.0)", "mkdocs (>=1.4.0,<2.0.0)"]
[[package]]
name = "investpy"
@@ -1265,7 +1265,7 @@ requests = ">=2.22.0"
Unidecode = ">=1.1.1"
[package.extras]
-docs = ["furo (==2021.4.11b34)", "investpy (==1.0.8)", "recommonmark (==0.7.1)", "sphinx (==3.4.3)"]
+docs = ["sphinx (==3.4.3)", "recommonmark (==0.7.1)", "furo (==2021.4.11b34)", "investpy (==1.0.8)"]
tests = ["pytest (==6.2.5)"]
[[package]]
@@ -1280,8 +1280,8 @@ python-versions = ">=3.6"
ipywidgets = ">=7.0.0"
[package.extras]
-docs = ["jupyter-sphinx", "nbsphinx", "nbsphinx-link", "pypandoc", "pytest-check-links", "recommonmark", "sphinx (>=1.5)", "sphinx-rtd-theme"]
-test = ["nbval", "pytest (>=4.6)", "pytest-cov"]
+test = ["nbval", "pytest-cov", "pytest (>=4.6)"]
+docs = ["sphinx-rtd-theme", "sphinx (>=1.5)", "recommonmark", "pypandoc", "pytest-check-links", "nbsphinx-link", "nbsphinx", "jupyter-sphinx"]
[[package]]
name = "ipykernel"
@@ -1306,7 +1306,7 @@ traitlets = ">=5.1.0"
[package.extras]
docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt"]
-test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-cov", "pytest-timeout"]
+test = ["flaky", "ipyparallel", "pre-commit", "pytest-cov", "pytest-timeout", "pytest (>=7.0)"]
[[package]]
name = "ipympl"
@@ -1348,7 +1348,7 @@ stack-data = "*"
traitlets = ">=5"
[package.extras]
-all = ["Sphinx (>=1.3)", "black", "curio", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.19)", "pandas", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "testpath", "trio"]
+all = ["black", "Sphinx (>=1.3)", "ipykernel", "nbconvert", "nbformat", "ipywidgets", "notebook", "ipyparallel", "qtconsole", "pytest (<7.1)", "pytest-asyncio", "testpath", "curio", "matplotlib (!=3.2.0)", "numpy (>=1.19)", "pandas", "trio"]
black = ["black"]
doc = ["Sphinx (>=1.3)"]
kernel = ["ipykernel"]
@@ -1358,7 +1358,7 @@ notebook = ["ipywidgets", "notebook"]
parallel = ["ipyparallel"]
qtconsole = ["qtconsole"]
test = ["pytest (<7.1)", "pytest-asyncio", "testpath"]
-test_extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.19)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"]
+test_extra = ["pytest (<7.1)", "pytest-asyncio", "testpath", "curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.19)", "pandas", "trio"]
[[package]]
name = "ipython-genutils"
@@ -1385,7 +1385,7 @@ traitlets = ">=4.3.1"
widgetsnbextension = ">=3.6.0,<3.7.0"
[package.extras]
-test = ["mock", "pytest (>=3.6.0)", "pytest-cov"]
+test = ["pytest (>=3.6.0)", "pytest-cov", "mock"]
[[package]]
name = "iso8601"
@@ -1404,10 +1404,10 @@ optional = false
python-versions = ">=3.6.1,<4.0"
[package.extras]
-colors = ["colorama (>=0.4.3,<0.5.0)"]
pipfile_deprecated_finder = ["pipreqs", "requirementslib"]
+requirements_deprecated_finder = ["pipreqs", "pip-api"]
+colors = ["colorama (>=0.4.3,<0.5.0)"]
plugins = ["setuptools"]
-requirements_deprecated_finder = ["pip-api", "pipreqs"]
[[package]]
name = "jedi"
@@ -1486,7 +1486,7 @@ six = ">=1.11.0"
[package.extras]
format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"]
-format_nongpl = ["idna", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "webcolors"]
+format_nongpl = ["idna", "jsonpointer (>1.13)", "webcolors", "rfc3986-validator (>0.1.0)", "rfc3339-validator"]
[[package]]
name = "jupyter"
@@ -1522,7 +1522,7 @@ tornado = ">=6.2"
traitlets = "*"
[package.extras]
-doc = ["ipykernel", "myst-parser", "sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"]
+doc = ["ipykernel", "myst-parser", "sphinx-rtd-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt"]
test = ["codecov", "coverage", "ipykernel (>=6.12)", "ipython", "mypy", "pre-commit", "pytest", "pytest-asyncio (>=0.18)", "pytest-cov", "pytest-timeout"]
[[package]]
@@ -1597,7 +1597,7 @@ traitlets = ">=5.1"
websocket-client = "*"
[package.extras]
-test = ["coverage", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-mock", "pytest-timeout", "pytest-tornasync", "requests"]
+test = ["coverage", "ipykernel", "pre-commit", "pytest-console-scripts", "pytest-cov", "pytest-mock", "pytest-timeout", "pytest-tornasync", "pytest (>=7.0)", "requests"]
[[package]]
name = "jupyterlab"
@@ -1620,7 +1620,7 @@ tomli = "*"
tornado = ">=6.1.0"
[package.extras]
-test = ["check-manifest", "coverage", "jupyterlab-server", "pre-commit", "pytest (>=6.0)", "pytest-check-links (>=0.5)", "pytest-console-scripts", "pytest-cov", "requests", "requests-cache", "virtualenv"]
+test = ["check-manifest", "coverage", "jupyterlab-server", "pre-commit", "pytest (>=6.0)", "pytest-cov", "pytest-console-scripts", "pytest-check-links (>=0.5)", "requests", "requests-cache", "virtualenv"]
ui-tests = ["build"]
[[package]]
@@ -1675,7 +1675,7 @@ requests = "*"
[package.extras]
docs = ["autodoc-traits", "docutils (<0.19)", "jinja2 (<3.1.0)", "mistune (<1)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi"]
openapi = ["openapi-core (>=0.14.2)", "ruamel-yaml"]
-test = ["codecov", "ipykernel", "jupyter-server", "openapi-core (>=0.14.2,<0.15.0)", "openapi-spec-validator (<0.5)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "ruamel-yaml", "strict-rfc3339"]
+test = ["codecov", "ipykernel", "jupyter-server", "openapi-core (>=0.14.2,<0.15.0)", "openapi-spec-validator (<0.5)", "pytest-console-scripts", "pytest-cov", "pytest (>=7.0)", "ruamel-yaml", "strict-rfc3339"]
[[package]]
name = "jupyterlab-widgets"
@@ -1750,7 +1750,7 @@ colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""}
win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""}
[package.extras]
-dev = ["Sphinx (>=4.1.1)", "black (>=19.10b0)", "colorama (>=0.3.4)", "docutils (==0.16)", "flake8 (>=3.7.7)", "isort (>=5.1.1)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)", "tox (>=3.9.0)"]
+dev = ["sphinx-rtd-theme (>=0.4.3)", "sphinx-autobuild (>=0.7.1)", "Sphinx (>=4.1.1)", "isort (>=5.1.1)", "black (>=19.10b0)", "pytest-cov (>=2.7.1)", "pytest (>=4.6.2)", "tox (>=3.9.0)", "flake8 (>=3.7.7)", "docutils (==0.16)", "colorama (>=0.3.4)"]
[[package]]
name = "lxml"
@@ -1789,12 +1789,12 @@ python-versions = "~=3.6"
attrs = ">=19,<22"
[package.extras]
-code_style = ["pre-commit (==2.6)"]
-compare = ["commonmark (>=0.9.1,<0.10.0)", "markdown (>=3.2.2,<3.3.0)", "mistletoe-ebp (>=0.10.0,<0.11.0)", "mistune (>=0.8.4,<0.9.0)", "panflute (>=1.12,<2.0)"]
-linkify = ["linkify-it-py (>=1.0,<2.0)"]
+testing = ["pytest-regressions", "pytest-cov", "pytest-benchmark (>=3.2,<4.0)", "pytest (>=3.6,<4)", "psutil", "coverage"]
+rtd = ["sphinx-book-theme", "sphinx-panels (>=0.4.0,<0.5.0)", "sphinx-copybutton", "sphinx (>=2,<4)", "pyyaml", "myst-nb (==0.13.0a1)"]
plugins = ["mdit-py-plugins"]
-rtd = ["myst-nb (==0.13.0a1)", "pyyaml", "sphinx (>=2,<4)", "sphinx-book-theme", "sphinx-copybutton", "sphinx-panels (>=0.4.0,<0.5.0)"]
-testing = ["coverage", "psutil", "pytest (>=3.6,<4)", "pytest-benchmark (>=3.2,<4.0)", "pytest-cov", "pytest-regressions"]
+linkify = ["linkify-it-py (>=1.0,<2.0)"]
+compare = ["panflute (>=1.12,<2.0)", "mistune (>=0.8.4,<0.9.0)", "mistletoe-ebp (>=0.10.0,<0.11.0)", "markdown (>=3.2.2,<3.3.0)", "commonmark (>=0.9.1,<0.10.0)"]
+code_style = ["pre-commit (==2.6)"]
[[package]]
name = "markupsafe"
@@ -1854,9 +1854,9 @@ python-versions = "~=3.6"
markdown-it-py = ">=1.0,<2.0"
[package.extras]
+testing = ["pytest-regressions", "pytest-cov", "pytest (>=3.6,<4)", "coverage"]
+rtd = ["sphinx-book-theme (>=0.1.0,<0.2.0)", "myst-parser (==0.14.0a3)"]
code_style = ["pre-commit (==2.6)"]
-rtd = ["myst-parser (==0.14.0a3)", "sphinx-book-theme (>=0.1.0,<0.2.0)"]
-testing = ["coverage", "pytest (>=3.6,<4)", "pytest-cov", "pytest-regressions"]
[[package]]
name = "mistune"
@@ -1875,7 +1875,7 @@ optional = false
python-versions = ">=3.6"
[package.extras]
-build = ["blurb", "twine", "wheel"]
+build = ["twine", "wheel", "blurb"]
docs = ["sphinx"]
test = ["pytest (<5.4)", "pytest-cov"]
@@ -1959,7 +1959,7 @@ sphinx = ">=3.1,<5"
[package.extras]
code_style = ["pre-commit (>=2.12,<3.0)"]
linkify = ["linkify-it-py (>=1.0,<2.0)"]
-rtd = ["ipython", "sphinx-book-theme (>=0.1.0,<0.2.0)", "sphinx-panels (>=0.5.2,<0.6.0)", "sphinxcontrib-bibtex (>=2.1,<3.0)", "sphinxcontrib.mermaid (>=0.6.3,<0.7.0)", "sphinxext-opengraph (>=0.4.2,<0.5.0)", "sphinxext-rediraffe (>=0.2,<1.0)"]
+rtd = ["ipython", "sphinx-book-theme (>=0.1.0,<0.2.0)", "sphinx-panels (>=0.5.2,<0.6.0)", "sphinxcontrib-bibtex (>=2.1,<3.0)", "sphinxext-rediraffe (>=0.2,<1.0)", "sphinxcontrib.mermaid (>=0.6.3,<0.7.0)", "sphinxext-opengraph (>=0.4.2,<0.5.0)"]
testing = ["beautifulsoup4", "coverage", "docutils (>=0.17.0,<0.18.0)", "pytest (>=3.6,<4)", "pytest-cov", "pytest-regressions"]
[[package]]
@@ -1990,9 +1990,9 @@ tornado = ">=6.1"
traitlets = ">=4.2.1"
[package.extras]
-docs = ["myst-parser", "nbsphinx", "sphinx", "sphinx-rtd-theme", "sphinxcontrib-github-alt"]
+docs = ["sphinx", "nbsphinx", "sphinxcontrib-github-alt", "sphinx-rtd-theme", "myst-parser"]
json-logging = ["json-logging"]
-test = ["coverage", "nbval", "pytest", "pytest-cov", "pytest-tornasync", "requests", "requests-unixsocket", "selenium (==4.1.5)", "testpath"]
+test = ["pytest", "coverage", "requests", "testpath", "nbval", "selenium (==4.1.5)", "pytest-cov", "pytest-tornasync", "requests-unixsocket"]
[[package]]
name = "nbclient"
@@ -2009,8 +2009,8 @@ nest-asyncio = "*"
traitlets = ">=5.0.0"
[package.extras]
-sphinx = ["Sphinx (>=1.7)", "mock", "moto", "myst-parser", "sphinx-book-theme"]
-test = ["black", "check-manifest", "flake8", "ipykernel", "ipython (<8.0.0)", "ipywidgets (<8.0.0)", "mypy", "pip (>=18.1)", "pytest (>=4.1)", "pytest-asyncio", "pytest-cov (>=2.6.1)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "wheel (>=0.31.0)", "xmltodict"]
+sphinx = ["Sphinx (>=1.7)", "sphinx-book-theme", "mock", "moto", "myst-parser"]
+test = ["ipython (<8.0.0)", "ipykernel", "ipywidgets (<8.0.0)", "pytest (>=4.1)", "pytest-asyncio", "pytest-cov (>=2.6.1)", "check-manifest", "flake8", "mypy", "xmltodict", "black", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)"]
[[package]]
name = "nbconvert"
@@ -2040,10 +2040,10 @@ tinycss2 = "*"
traitlets = ">=5.0"
[package.extras]
-all = ["ipykernel", "ipython", "ipywidgets (>=7)", "nbsphinx (>=0.2.12)", "pre-commit", "pyppeteer (>=1,<1.1)", "pytest", "pytest-cov", "pytest-dependency", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "tornado (>=6.1)"]
-docs = ["ipython", "nbsphinx (>=0.2.12)", "sphinx (>=1.5.1)", "sphinx-rtd-theme"]
+all = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pre-commit", "pyppeteer (>=1,<1.1)", "tornado (>=6.1)", "sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"]
+docs = ["sphinx (>=1.5.1)", "sphinx-rtd-theme", "nbsphinx (>=0.2.12)", "ipython"]
serve = ["tornado (>=6.1)"]
-test = ["ipykernel", "ipywidgets (>=7)", "pre-commit", "pyppeteer (>=1,<1.1)", "pytest", "pytest-cov", "pytest-dependency"]
+test = ["pytest", "pytest-cov", "pytest-dependency", "ipykernel", "ipywidgets (>=7)", "pre-commit", "pyppeteer (>=1,<1.1)"]
webpdf = ["pyppeteer (>=1,<1.1)"]
[[package]]
@@ -2096,11 +2096,11 @@ optional = false
python-versions = ">=3.8"
[package.extras]
-default = ["matplotlib (>=3.4)", "numpy (>=1.19)", "pandas (>=1.3)", "scipy (>=1.8)"]
-developer = ["mypy (>=0.981)", "pre-commit (>=2.20)"]
-doc = ["nb2plots (>=0.6)", "numpydoc (>=1.4)", "pillow (>=9.1)", "pydata-sphinx-theme (>=0.9)", "sphinx (>=5)", "sphinx-gallery (>=0.10)", "texext (>=0.6.6)"]
-extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.9)", "sympy (>=1.10)"]
-test = ["codecov (>=2.1)", "pytest (>=7.1)", "pytest-cov (>=3.0)"]
+default = ["numpy (>=1.19)", "scipy (>=1.8)", "matplotlib (>=3.4)", "pandas (>=1.3)"]
+developer = ["pre-commit (>=2.20)", "mypy (>=0.981)"]
+doc = ["sphinx (>=5)", "pydata-sphinx-theme (>=0.9)", "sphinx-gallery (>=0.10)", "numpydoc (>=1.4)", "pillow (>=9.1)", "nb2plots (>=0.6)", "texext (>=0.6.6)"]
+extra = ["lxml (>=4.6)", "pygraphviz (>=1.9)", "pydot (>=1.4.2)", "sympy (>=1.10)"]
+test = ["pytest (>=7.1)", "pytest-cov (>=3.0)", "codecov (>=2.1)"]
[[package]]
name = "nodeenv"
@@ -2137,9 +2137,9 @@ tornado = ">=6.1"
traitlets = ">=4.2.1"
[package.extras]
-docs = ["myst-parser", "nbsphinx", "sphinx", "sphinx-rtd-theme", "sphinxcontrib-github-alt"]
+docs = ["sphinx", "nbsphinx", "sphinxcontrib-github-alt", "sphinx-rtd-theme", "myst-parser"]
json-logging = ["json-logging"]
-test = ["coverage", "nbval", "pytest", "pytest-cov", "requests", "requests-unixsocket", "selenium (==4.1.5)", "testpath"]
+test = ["pytest", "coverage", "requests", "testpath", "nbval", "selenium (==4.1.5)", "pytest-cov", "requests-unixsocket"]
[[package]]
name = "notebook-shim"
@@ -2153,7 +2153,7 @@ python-versions = ">=3.7"
jupyter-server = ">=1.8,<3"
[package.extras]
-test = ["pytest", "pytest-console-scripts", "pytest-tornasync"]
+test = ["pytest-tornasync", "pytest-console-scripts", "pytest"]
[[package]]
name = "numpy"
@@ -2247,7 +2247,7 @@ python-dateutil = ">=2.8.1"
pytz = ">=2020.1"
[package.extras]
-test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"]
+test = ["pytest-xdist (>=1.31)", "pytest (>=6.0)", "hypothesis (>=5.5.3)"]
[[package]]
name = "pandas-datareader"
@@ -2299,6 +2299,42 @@ category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+[[package]]
+name = "papermill"
+version = "2.4.0"
+description = "Parametrize and run Jupyter and nteract Notebooks"
+category = "main"
+optional = false
+python-versions = ">=3.7"
+develop = false
+
+[package.dependencies]
+click = "*"
+entrypoints = "*"
+nbclient = ">=0.2.0"
+nbformat = ">=5.1.2"
+pyyaml = "*"
+requests = "*"
+tenacity = ">=5.0.2"
+tqdm = ">=4.32.2"
+
+[package.extras]
+all = ["boto3", "azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "requests (>=2.21.0)", "gcsfs (>=0.2.0)", "pyarrow (>=2.0)", "black (>=19.3b0)"]
+azure = ["azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "requests (>=2.21.0)"]
+black = ["black (>=19.3b0)"]
+dev = ["boto3", "botocore", "codecov", "coverage", "google-compute-engine", "ipython (>=5.0)", "ipywidgets", "notebook", "moto", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "pytest-mock (>=1.10)", "pytest-env (>=0.6.2)", "requests (>=2.21.0)", "check-manifest", "attrs (>=17.4.0)", "pre-commit", "flake8", "tox", "bumpversion", "recommonmark", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "gcsfs (>=0.2.0)", "pyarrow (>=2.0)", "black (>=19.3b0)"]
+gcs = ["gcsfs (>=0.2.0)"]
+github = ["PyGithub (>=1.55)"]
+hdfs = ["pyarrow (>=2.0)"]
+s3 = ["boto3"]
+test = ["boto3", "botocore", "codecov", "coverage", "google-compute-engine", "ipython (>=5.0)", "ipywidgets", "notebook", "moto", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "pytest-mock (>=1.10)", "pytest-env (>=0.6.2)", "requests (>=2.21.0)", "check-manifest", "attrs (>=17.4.0)", "pre-commit", "flake8", "tox", "bumpversion", "recommonmark", "pip (>=18.1)", "wheel (>=0.31.0)", "setuptools (>=38.6.0)", "twine (>=1.11.0)", "azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "gcsfs (>=0.2.0)", "pyarrow (>=2.0)", "black (>=19.3b0)"]
+
+[package.source]
+type = "git"
+url = "https://github.com/nteract/papermill.git"
+reference = "main"
+resolved_reference = "54f6c038cdae0c70d5fb04691fa465e12aeb62cb"
+
[[package]]
name = "parso"
version = "0.8.3"
@@ -2332,7 +2368,7 @@ numpy = ">=1.4"
six = "*"
[package.extras]
-test = ["pytest", "pytest-cov", "scipy"]
+test = ["scipy", "pytest-cov", "pytest"]
[[package]]
name = "pbr"
@@ -2393,8 +2429,8 @@ optional = false
python-versions = ">=3.7"
[package.extras]
-docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx (>=4)", "sphinx-autodoc-typehints (>=1.12)"]
-test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"]
+docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"]
+test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"]
[[package]]
name = "plotly"
@@ -2416,8 +2452,8 @@ optional = false
python-versions = ">=3.6"
[package.extras]
-dev = ["pre-commit", "tox"]
-testing = ["pytest", "pytest-benchmark"]
+testing = ["pytest-benchmark", "pytest"]
+dev = ["tox", "pre-commit"]
[[package]]
name = "pmdarima"
@@ -2452,7 +2488,7 @@ websocket-client = ">=0.54.0"
[package.extras]
ci = ["coveralls"]
-dev = ["betamax (>=0.8,<0.9)", "betamax-matchers (>=0.3.0,<0.5)", "packaging", "pre-commit", "pytest (>=2.7.3)", "requests (>=2.20.1,<3)", "sphinx", "sphinx-rtd-theme"]
+dev = ["packaging", "pre-commit", "sphinx", "sphinx-rtd-theme", "betamax (>=0.8,<0.9)", "betamax-matchers (>=0.3.0,<0.5)", "pytest (>=2.7.3)", "requests (>=2.20.1,<3)"]
lint = ["pre-commit", "sphinx", "sphinx-rtd-theme"]
readthedocs = ["sphinx", "sphinx-rtd-theme"]
test = ["betamax (>=0.8,<0.9)", "betamax-matchers (>=0.3.0,<0.5)", "pytest (>=2.7.3)", "requests (>=2.20.1,<3)"]
@@ -2469,10 +2505,10 @@ python-versions = "~=3.6"
requests = ">=2.6.0,<3.0"
[package.extras]
+test = ["testfixtures (>4.13.2,<7)", "pytest", "mock (>=0.8)", "betamax-serializers (>=0.2.0,<0.3)", "betamax-matchers (>=0.4.0,<0.5)", "betamax (>=0.8,<0.9)"]
+lint = ["flynt", "pydocstyle", "pre-commit", "flake8", "black"]
+dev = ["testfixtures (>4.13.2,<7)", "pytest", "mock (>=0.8)", "betamax-serializers (>=0.2.0,<0.3)", "betamax-matchers (>=0.4.0,<0.5)", "betamax (>=0.8,<0.9)", "flynt", "pydocstyle", "pre-commit", "flake8", "black"]
ci = ["coveralls"]
-dev = ["betamax (>=0.8,<0.9)", "betamax-matchers (>=0.4.0,<0.5)", "betamax-serializers (>=0.2.0,<0.3)", "black", "flake8", "flynt", "mock (>=0.8)", "pre-commit", "pydocstyle", "pytest", "testfixtures (>4.13.2,<7)"]
-lint = ["black", "flake8", "flynt", "pre-commit", "pydocstyle"]
-test = ["betamax (>=0.8,<0.9)", "betamax-matchers (>=0.4.0,<0.5)", "betamax-serializers (>=0.2.0,<0.3)", "mock (>=0.8)", "pytest", "testfixtures (>4.13.2,<7)"]
[[package]]
name = "pre-commit"
@@ -2549,7 +2585,7 @@ optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[package.extras]
-test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
+test = ["ipaddress", "mock", "enum34", "pywin32", "wmi"]
[[package]]
name = "ptyprocess"
@@ -2672,7 +2708,7 @@ numpy = ">=1.16.4"
[package.extras]
carto = ["pydeck-carto"]
-jupyter = ["ipykernel (>=5.1.2)", "ipython (>=5.8.0)", "ipywidgets (>=7,<8)", "traitlets (>=4.3.2)"]
+jupyter = ["ipywidgets (>=7,<8)", "traitlets (>=4.3.2)", "ipython (>=5.8.0)", "ipykernel (>=5.1.2)"]
[[package]]
name = "pyerfa"
@@ -2710,9 +2746,9 @@ sseclient = ">=0.0.22"
temporal-cache = ">=0.1.1"
[package.extras]
-async = ["Pillow (>=5.3.0)", "aiohttp (>=3.2)", "aiohttp-sse-client (>=0.2.0)", "aiostream (>=0.3.1)", "deprecation (>=2.0.6)", "ipython (>=7.2.0)", "pandas (>=0.22)", "pytz (>=2019.1)", "requests (>=2.21.0)", "six", "socketIO-client-nexus (>=0.7.6)", "sseclient (>=0.0.22)", "temporal-cache (>=0.1.1)"]
-dev = ["Pillow (>=5.3.0)", "Sphinx (>=1.8.4)", "TA-Lib (>=0.4.17)", "aiohttp (>=3.2)", "aiohttp-sse-client (>=0.2.0)", "aiostream (>=0.3.1)", "black (>=20)", "bump2version (>=1.0.0)", "deprecation (>=2.0.6)", "flake8 (>=3.7.8)", "flake8-black (>=0.2.1)", "ipython (>=7.2.0)", "mock", "pandas (>=0.22)", "pytest (>=4.3.0)", "pytest-cov (>=2.6.1)", "pytz (>=2019.1)", "recommonmark", "requests (>=2.21.0)", "six", "socketIO-client-nexus (>=0.7.6)", "sphinx-markdown-builder (>=0.5.2)", "sphinx-rtd-theme", "sseclient (>=0.0.22)", "temporal-cache (>=0.1.1)"]
studies = ["TA-Lib (>=0.4.17)"]
+dev = ["sphinx-rtd-theme", "sphinx-markdown-builder (>=0.5.2)", "Sphinx (>=1.8.4)", "recommonmark", "pytest-cov (>=2.6.1)", "pytest (>=4.3.0)", "mock", "flake8-black (>=0.2.1)", "flake8 (>=3.7.8)", "bump2version (>=1.0.0)", "black (>=20)", "TA-Lib (>=0.4.17)", "aiostream (>=0.3.1)", "aiohttp-sse-client (>=0.2.0)", "aiohttp (>=3.2)", "temporal-cache (>=0.1.1)", "sseclient (>=0.0.22)", "socketIO-client-nexus (>=0.7.6)", "six", "requests (>=2.21.0)", "pytz (>=2019.1)", "pandas (>=0.22)", "Pillow (>=5.3.0)", "ipython (>=7.2.0)", "deprecation (>=2.0.6)"]
+async = ["aiostream (>=0.3.1)", "aiohttp-sse-client (>=0.2.0)", "aiohttp (>=3.2)", "temporal-cache (>=0.1.1)", "sseclient (>=0.0.22)", "socketIO-client-nexus (>=0.7.6)", "six", "requests (>=2.21.0)", "pytz (>=2019.1)", "pandas (>=0.22)", "Pillow (>=5.3.0)", "ipython (>=7.2.0)", "deprecation (>=2.0.6)"]
[[package]]
name = "pyflakes"
@@ -2764,8 +2800,8 @@ numpy = ">=1.12.0"
scipy = ">=1.0.0"
[package.extras]
-docs = ["astunparse", "ipython", "jupyter-client", "nbsphinx", "sphinx", "sphinx-rtd-theme"]
-tests = ["pytest", "pytest-xdist"]
+tests = ["pytest-xdist", "pytest"]
+docs = ["jupyter-client", "nbsphinx", "sphinx-rtd-theme", "astunparse", "ipython", "sphinx"]
[[package]]
name = "pyinstaller"
@@ -2784,7 +2820,7 @@ pywin32-ctypes = {version = ">=0.2.0", markers = "sys_platform == \"win32\""}
[package.extras]
encryption = ["tinyaes (>=1.0.0)"]
-hook_testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"]
+hook_testing = ["pytest (>=2.7.3)", "execnet (>=1.5.0)", "psutil"]
[[package]]
name = "pyinstaller-hooks-contrib"
@@ -2845,7 +2881,7 @@ python-versions = "*"
aws = ["pymongo-auth-aws (<2.0.0)"]
encryption = ["pymongocrypt (>=1.1.0,<2.0.0)"]
gssapi = ["pykerberos"]
-ocsp = ["certifi", "pyopenssl (>=17.2.0)", "requests (<3.0.0)", "service-identity (>=18.1.0)"]
+ocsp = ["pyopenssl (>=17.2.0)", "requests (<3.0.0)", "service-identity (>=18.1.0)", "certifi"]
snappy = ["python-snappy"]
srv = ["dnspython (>=1.16.0,<1.17.0)"]
tls = ["ipaddress"]
@@ -2895,7 +2931,7 @@ optional = false
python-versions = ">=3.6.8"
[package.extras]
-diagrams = ["jinja2", "railroad-diagrams"]
+diagrams = ["railroad-diagrams", "jinja2"]
[[package]]
name = "pyportfolioopt"
@@ -2912,7 +2948,7 @@ pandas = ">=0.19"
scipy = ">=1.3,<2.0"
[package.extras]
-optionals = ["cvxopt (>=1.2,!=1.2.5.post1,<2.0)", "matplotlib (>=3.2.0,<4.0.0)", "scikit-learn (>=0.24.1,<0.25.0)"]
+optionals = ["cvxopt (>=1.2,!=1.2.5.post1,<2.0)", "scikit-learn (>=0.24.1,<0.25.0)", "matplotlib (>=3.2.0,<4.0.0)"]
[[package]]
name = "pyprind"
@@ -2964,7 +3000,7 @@ coverage = {version = ">=5.2.1", extras = ["toml"]}
pytest = ">=4.6"
[package.extras]
-testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"]
+testing = ["virtualenv", "pytest-xdist", "six", "process-tests", "hunter", "fields"]
[[package]]
name = "pytest-mock"
@@ -2978,7 +3014,7 @@ python-versions = ">=3.7"
pytest = ">=5.0"
[package.extras]
-dev = ["pre-commit", "pytest-asyncio", "tox"]
+dev = ["pre-commit", "tox", "pytest-asyncio"]
[[package]]
name = "pytest-recording"
@@ -3012,7 +3048,7 @@ loguru = "*"
typing-extensions = "*"
[package.extras]
-testing = ["aiodns", "aiohttp (>=3.7.4)", "backoff", "base58", "dnspython", "flake8", "loguru", "mock", "pytest", "pytest-asyncio", "pytest-cov", "pytest-mock", "pytest-socket", "typing-extensions"]
+testing = ["pytest-asyncio", "pytest-mock", "pytest-socket", "pytest-cov", "pytest", "mock", "typing-extensions", "loguru", "flake8", "dnspython", "base58", "backoff", "aiohttp (>=3.7.4)", "aiodns"]
[[package]]
name = "python-binance"
@@ -3393,10 +3429,10 @@ scipy = ">=1.3.2"
threadpoolctl = ">=2.0.0"
[package.extras]
-benchmark = ["matplotlib (>=3.1.2)", "memory-profiler (>=0.57.0)", "pandas (>=1.0.5)"]
-docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.1.2)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)", "sphinx (>=4.0.1)", "sphinx-gallery (>=0.7.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"]
-examples = ["matplotlib (>=3.1.2)", "pandas (>=1.0.5)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)"]
-tests = ["black (>=22.3.0)", "flake8 (>=3.8.2)", "matplotlib (>=3.1.2)", "mypy (>=0.961)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "pyamg (>=4.0.0)", "pytest (>=5.0.1)", "pytest-cov (>=2.9.0)", "scikit-image (>=0.16.2)"]
+tests = ["numpydoc (>=1.2.0)", "pyamg (>=4.0.0)", "mypy (>=0.961)", "black (>=22.3.0)", "flake8 (>=3.8.2)", "pytest-cov (>=2.9.0)", "pytest (>=5.0.1)", "pandas (>=1.0.5)", "scikit-image (>=0.16.2)", "matplotlib (>=3.1.2)"]
+examples = ["seaborn (>=0.9.0)", "pandas (>=1.0.5)", "scikit-image (>=0.16.2)", "matplotlib (>=3.1.2)"]
+docs = ["sphinxext-opengraph (>=0.4.2)", "sphinx-prompt (>=1.3.0)", "Pillow (>=7.1.2)", "numpydoc (>=1.2.0)", "sphinx-gallery (>=0.7.0)", "sphinx (>=4.0.1)", "memory-profiler (>=0.57.0)", "seaborn (>=0.9.0)", "pandas (>=1.0.5)", "scikit-image (>=0.16.2)", "matplotlib (>=3.1.2)"]
+benchmark = ["memory-profiler (>=0.57.0)", "pandas (>=1.0.5)", "matplotlib (>=3.1.2)"]
[[package]]
name = "scipy"
@@ -3587,8 +3623,8 @@ sphinxcontrib-serializinghtml = ">=1.1.5"
[package.extras]
docs = ["sphinxcontrib-websupport"]
-lint = ["docutils-stubs", "flake8 (>=3.5.0)", "isort", "mypy (>=0.931)", "types-requests", "types-typed-ast"]
-test = ["cython", "html5lib", "pytest", "pytest-cov", "typed-ast"]
+lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.931)", "docutils-stubs", "types-typed-ast", "types-requests"]
+test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"]
[[package]]
name = "sphinxcontrib-applehelp"
@@ -3599,8 +3635,8 @@ optional = false
python-versions = ">=3.5"
[package.extras]
-lint = ["docutils-stubs", "flake8", "mypy"]
test = ["pytest"]
+lint = ["docutils-stubs", "mypy", "flake8"]
[[package]]
name = "sphinxcontrib-devhelp"
@@ -3611,8 +3647,8 @@ optional = false
python-versions = ">=3.5"
[package.extras]
-lint = ["docutils-stubs", "flake8", "mypy"]
test = ["pytest"]
+lint = ["docutils-stubs", "mypy", "flake8"]
[[package]]
name = "sphinxcontrib-htmlhelp"
@@ -3623,8 +3659,8 @@ optional = false
python-versions = ">=3.6"
[package.extras]
-lint = ["docutils-stubs", "flake8", "mypy"]
test = ["html5lib", "pytest"]
+lint = ["docutils-stubs", "mypy", "flake8"]
[[package]]
name = "sphinxcontrib-jsmath"
@@ -3635,7 +3671,7 @@ optional = false
python-versions = ">=3.5"
[package.extras]
-test = ["flake8", "mypy", "pytest"]
+test = ["mypy", "flake8", "pytest"]
[[package]]
name = "sphinxcontrib-qthelp"
@@ -3646,8 +3682,8 @@ optional = false
python-versions = ">=3.5"
[package.extras]
-lint = ["docutils-stubs", "flake8", "mypy"]
test = ["pytest"]
+lint = ["docutils-stubs", "mypy", "flake8"]
[[package]]
name = "sphinxcontrib-serializinghtml"
@@ -3658,7 +3694,7 @@ optional = false
python-versions = ">=3.5"
[package.extras]
-lint = ["docutils-stubs", "flake8", "mypy"]
+lint = ["flake8", "mypy", "docutils-stubs"]
test = ["pytest"]
[[package]]
@@ -3695,7 +3731,7 @@ executing = "*"
pure-eval = "*"
[package.extras]
-tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
+tests = ["cython", "littleutils", "pygments", "typeguard", "pytest"]
[[package]]
name = "statsmodels"
@@ -3715,7 +3751,7 @@ scipy = ">=1.3"
[package.extras]
build = ["cython (>=0.29.26)"]
develop = ["cython (>=0.29.26)"]
-docs = ["ipykernel", "jupyter-client", "matplotlib", "nbconvert", "nbformat", "numpydoc", "pandas-datareader", "sphinx"]
+docs = ["sphinx", "nbconvert", "jupyter-client", "ipykernel", "matplotlib", "nbformat", "numpydoc", "pandas-datareader"]
[[package]]
name = "stevedore"
@@ -3798,7 +3834,7 @@ frozendict = ">=1.2"
tzlocal = ">=2.0.0"
[package.extras]
-dev = ["Sphinx (>=1.8.4)", "black (>=20)", "bump2version (>=1.0.0)", "flake8 (>=3.7.8)", "flake8-black (>=0.2.1)", "frozendict (>=1.2)", "mock", "pytest (>=4.3.0)", "pytest-cov (>=2.6.1)", "sphinx-markdown-builder (>=0.5.2)", "tzlocal (>=2.0.0)"]
+dev = ["tzlocal (>=2.0.0)", "frozendict (>=1.2)", "sphinx-markdown-builder (>=0.5.2)", "Sphinx (>=1.8.4)", "pytest-cov (>=2.6.1)", "pytest (>=4.3.0)", "mock", "flake8-black (>=0.2.1)", "flake8 (>=3.7.8)", "bump2version (>=1.0.0)", "black (>=20)"]
[[package]]
name = "tenacity"
@@ -3825,7 +3861,7 @@ pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""}
tornado = ">=6.1.0"
[package.extras]
-test = ["pre-commit", "pytest (>=6.0)", "pytest-timeout"]
+test = ["pre-commit", "pytest-timeout", "pytest (>=6.0)"]
[[package]]
name = "thepassiveinvestor"
@@ -3855,8 +3891,8 @@ python-versions = ">=3.7"
webencodings = ">=0.4"
[package.extras]
-doc = ["sphinx", "sphinx-rtd-theme"]
test = ["flake8", "isort", "pytest"]
+doc = ["sphinx-rtd-theme", "sphinx"]
[[package]]
name = "tokenize-rt"
@@ -3977,8 +4013,8 @@ optional = true
python-versions = ">=3.5.3"
[package.extras]
-doc = ["sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
-test = ["mypy", "pytest", "typing-extensions"]
+doc = ["sphinx-rtd-theme", "sphinx-autodoc-typehints (>=1.2.0)"]
+test = ["pytest", "typing-extensions", "mypy"]
[[package]]
name = "types-python-dateutil"
@@ -4070,7 +4106,7 @@ tzdata = {version = "*", markers = "platform_system == \"Windows\""}
[package.extras]
devenv = ["black", "pyroma", "pytest-cov", "zest.releaser"]
-test = ["pytest (>=4.3)", "pytest-mock (>=3.3)"]
+test = ["pytest-mock (>=3.3)", "pytest (>=4.3)"]
[[package]]
name = "ujson"
@@ -4113,8 +4149,8 @@ optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4"
[package.extras]
-brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"]
-secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"]
+brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"]
+secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "urllib3-secure-extra", "ipaddress"]
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
[[package]]
@@ -4151,7 +4187,7 @@ python-versions = ">=3.4"
decorator = ">=3.4.0"
[package.extras]
-test = ["flake8 (>=2.4.0)", "isort (>=4.2.2)", "pytest (>=2.2.3)"]
+test = ["pytest (>=2.2.3)", "flake8 (>=2.4.0)", "isort (>=4.2.2)"]
[[package]]
name = "valinvest"
@@ -4211,9 +4247,9 @@ traitlets = ">=5.0.3,<6"
websockets = ">=9.0"
[package.extras]
-dev = ["black", "bump2version", "jupyter-releaser (>=0.6,<1.0)"]
-test = ["ipywidgets", "matplotlib", "mock", "numpy", "pandas", "pytest", "pytest-rerunfailures", "pytest-tornasync"]
-visual_test = ["bqplot", "ipympl (==0.8.7)", "ipyvolume", "jupyterlab (>=3.0,<4.0)", "jupyterlab-miami-nights (==0.3.2)", "scipy"]
+visual_test = ["jupyterlab-miami-nights (==0.3.2)", "ipyvolume", "ipympl (==0.8.7)", "scipy", "bqplot", "jupyterlab (>=3.0,<4.0)"]
+test = ["pytest-tornasync", "pytest-rerunfailures", "pytest", "mock", "matplotlib", "ipywidgets", "pandas", "numpy"]
+dev = ["jupyter-releaser (>=0.6,<1.0)", "bump2version", "black"]
[[package]]
name = "watchdog"
@@ -4251,9 +4287,9 @@ optional = false
python-versions = ">=3.7"
[package.extras]
-docs = ["Sphinx (>=3.4)", "sphinx-rtd-theme (>=0.5)"]
-optional = ["python-socks", "wsaccel"]
test = ["websockets"]
+optional = ["wsaccel", "python-socks"]
+docs = ["sphinx-rtd-theme (>=0.5)", "Sphinx (>=3.4)"]
[[package]]
name = "websockets"
@@ -4337,8 +4373,8 @@ optional = false
python-versions = ">=3.7"
[package.extras]
-docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"]
-testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
+docs = ["sphinx (>=3.5)", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "furo", "jaraco.tidelift (>=1.4)"]
+testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "flake8 (<5)", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "jaraco.functools", "more-itertools", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"]
[[package]]
name = "zope.interface"
@@ -4349,7 +4385,7 @@ optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[package.extras]
-docs = ["repoze.sphinx.autointerface", "sphinx"]
+docs = ["sphinx", "repoze.sphinx.autointerface"]
test = ["coverage (>=5.0.3)", "zope.event", "zope.testing"]
testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"]
@@ -4361,2180 +4397,350 @@ prediction = ["torch"]
[metadata]
lock-version = "1.1"
python-versions = "^3.8,<3.11, !=3.9.7"
-content-hash = "33f0008106438c2826e3fb565baf54befe1b9937eddfc34f238aebd1bc6abf34"
+content-hash = "1d744cf69c7f1fe541f478138294f8b6ae88322d61d4c0192b4059ff18746727"
[metadata.files]
aiodns = []
-aiohttp = [
- {file = "aiohttp-3.8.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ba71c9b4dcbb16212f334126cc3d8beb6af377f6703d9dc2d9fb3874fd667ee9"},
- {file = "aiohttp-3.8.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d24b8bb40d5c61ef2d9b6a8f4528c2f17f1c5d2d31fed62ec860f6006142e83e"},
- {file = "aiohttp-3.8.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f88df3a83cf9df566f171adba39d5bd52814ac0b94778d2448652fc77f9eb491"},
- {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b97decbb3372d4b69e4d4c8117f44632551c692bb1361b356a02b97b69e18a62"},
- {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:309aa21c1d54b8ef0723181d430347d7452daaff93e8e2363db8e75c72c2fb2d"},
- {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ad5383a67514e8e76906a06741febd9126fc7c7ff0f599d6fcce3e82b80d026f"},
- {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20acae4f268317bb975671e375493dbdbc67cddb5f6c71eebdb85b34444ac46b"},
- {file = "aiohttp-3.8.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05a3c31c6d7cd08c149e50dc7aa2568317f5844acd745621983380597f027a18"},
- {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d6f76310355e9fae637c3162936e9504b4767d5c52ca268331e2756e54fd4ca5"},
- {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:256deb4b29fe5e47893fa32e1de2d73c3afe7407738bd3c63829874661d4822d"},
- {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:5c59fcd80b9049b49acd29bd3598cada4afc8d8d69bd4160cd613246912535d7"},
- {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:059a91e88f2c00fe40aed9031b3606c3f311414f86a90d696dd982e7aec48142"},
- {file = "aiohttp-3.8.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2feebbb6074cdbd1ac276dbd737b40e890a1361b3cc30b74ac2f5e24aab41f7b"},
- {file = "aiohttp-3.8.3-cp310-cp310-win32.whl", hash = "sha256:5bf651afd22d5f0c4be16cf39d0482ea494f5c88f03e75e5fef3a85177fecdeb"},
- {file = "aiohttp-3.8.3-cp310-cp310-win_amd64.whl", hash = "sha256:653acc3880459f82a65e27bd6526e47ddf19e643457d36a2250b85b41a564715"},
- {file = "aiohttp-3.8.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:86fc24e58ecb32aee09f864cb11bb91bc4c1086615001647dbfc4dc8c32f4008"},
- {file = "aiohttp-3.8.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75e14eac916f024305db517e00a9252714fce0abcb10ad327fb6dcdc0d060f1d"},
- {file = "aiohttp-3.8.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d1fde0f44029e02d02d3993ad55ce93ead9bb9b15c6b7ccd580f90bd7e3de476"},
- {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ab94426ddb1ecc6a0b601d832d5d9d421820989b8caa929114811369673235c"},
- {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89d2e02167fa95172c017732ed7725bc8523c598757f08d13c5acca308e1a061"},
- {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:02f9a2c72fc95d59b881cf38a4b2be9381b9527f9d328771e90f72ac76f31ad8"},
- {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c7149272fb5834fc186328e2c1fa01dda3e1fa940ce18fded6d412e8f2cf76d"},
- {file = "aiohttp-3.8.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:512bd5ab136b8dc0ffe3fdf2dfb0c4b4f49c8577f6cae55dca862cd37a4564e2"},
- {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7018ecc5fe97027214556afbc7c502fbd718d0740e87eb1217b17efd05b3d276"},
- {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:88c70ed9da9963d5496d38320160e8eb7e5f1886f9290475a881db12f351ab5d"},
- {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:da22885266bbfb3f78218dc40205fed2671909fbd0720aedba39b4515c038091"},
- {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:e65bc19919c910127c06759a63747ebe14f386cda573d95bcc62b427ca1afc73"},
- {file = "aiohttp-3.8.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:08c78317e950e0762c2983f4dd58dc5e6c9ff75c8a0efeae299d363d439c8e34"},
- {file = "aiohttp-3.8.3-cp311-cp311-win32.whl", hash = "sha256:45d88b016c849d74ebc6f2b6e8bc17cabf26e7e40c0661ddd8fae4c00f015697"},
- {file = "aiohttp-3.8.3-cp311-cp311-win_amd64.whl", hash = "sha256:96372fc29471646b9b106ee918c8eeb4cca423fcbf9a34daa1b93767a88a2290"},
- {file = "aiohttp-3.8.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c971bf3786b5fad82ce5ad570dc6ee420f5b12527157929e830f51c55dc8af77"},
- {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff25f48fc8e623d95eca0670b8cc1469a83783c924a602e0fbd47363bb54aaca"},
- {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e381581b37db1db7597b62a2e6b8b57c3deec95d93b6d6407c5b61ddc98aca6d"},
- {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db19d60d846283ee275d0416e2a23493f4e6b6028825b51290ac05afc87a6f97"},
- {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25892c92bee6d9449ffac82c2fe257f3a6f297792cdb18ad784737d61e7a9a85"},
- {file = "aiohttp-3.8.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:398701865e7a9565d49189f6c90868efaca21be65c725fc87fc305906be915da"},
- {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:4a4fbc769ea9b6bd97f4ad0b430a6807f92f0e5eb020f1e42ece59f3ecfc4585"},
- {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:b29bfd650ed8e148f9c515474a6ef0ba1090b7a8faeee26b74a8ff3b33617502"},
- {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:1e56b9cafcd6531bab5d9b2e890bb4937f4165109fe98e2b98ef0dcfcb06ee9d"},
- {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:ec40170327d4a404b0d91855d41bfe1fe4b699222b2b93e3d833a27330a87a6d"},
- {file = "aiohttp-3.8.3-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2df5f139233060578d8c2c975128fb231a89ca0a462b35d4b5fcf7c501ebdbe1"},
- {file = "aiohttp-3.8.3-cp36-cp36m-win32.whl", hash = "sha256:f973157ffeab5459eefe7b97a804987876dd0a55570b8fa56b4e1954bf11329b"},
- {file = "aiohttp-3.8.3-cp36-cp36m-win_amd64.whl", hash = "sha256:437399385f2abcd634865705bdc180c8314124b98299d54fe1d4c8990f2f9494"},
- {file = "aiohttp-3.8.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:09e28f572b21642128ef31f4e8372adb6888846f32fecb288c8b0457597ba61a"},
- {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f3553510abdbec67c043ca85727396ceed1272eef029b050677046d3387be8d"},
- {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e168a7560b7c61342ae0412997b069753f27ac4862ec7867eff74f0fe4ea2ad9"},
- {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db4c979b0b3e0fa7e9e69ecd11b2b3174c6963cebadeecfb7ad24532ffcdd11a"},
- {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e164e0a98e92d06da343d17d4e9c4da4654f4a4588a20d6c73548a29f176abe2"},
- {file = "aiohttp-3.8.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e8a78079d9a39ca9ca99a8b0ac2fdc0c4d25fc80c8a8a82e5c8211509c523363"},
- {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:21b30885a63c3f4ff5b77a5d6caf008b037cb521a5f33eab445dc566f6d092cc"},
- {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4b0f30372cef3fdc262f33d06e7b411cd59058ce9174ef159ad938c4a34a89da"},
- {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:8135fa153a20d82ffb64f70a1b5c2738684afa197839b34cc3e3c72fa88d302c"},
- {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:ad61a9639792fd790523ba072c0555cd6be5a0baf03a49a5dd8cfcf20d56df48"},
- {file = "aiohttp-3.8.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:978b046ca728073070e9abc074b6299ebf3501e8dee5e26efacb13cec2b2dea0"},
- {file = "aiohttp-3.8.3-cp37-cp37m-win32.whl", hash = "sha256:0d2c6d8c6872df4a6ec37d2ede71eff62395b9e337b4e18efd2177de883a5033"},
- {file = "aiohttp-3.8.3-cp37-cp37m-win_amd64.whl", hash = "sha256:21d69797eb951f155026651f7e9362877334508d39c2fc37bd04ff55b2007091"},
- {file = "aiohttp-3.8.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ca9af5f8f5812d475c5259393f52d712f6d5f0d7fdad9acdb1107dd9e3cb7eb"},
- {file = "aiohttp-3.8.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d90043c1882067f1bd26196d5d2db9aa6d268def3293ed5fb317e13c9413ea4"},
- {file = "aiohttp-3.8.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d737fc67b9a970f3234754974531dc9afeea11c70791dcb7db53b0cf81b79784"},
- {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebf909ea0a3fc9596e40d55d8000702a85e27fd578ff41a5500f68f20fd32e6c"},
- {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5835f258ca9f7c455493a57ee707b76d2d9634d84d5d7f62e77be984ea80b849"},
- {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da37dcfbf4b7f45d80ee386a5f81122501ec75672f475da34784196690762f4b"},
- {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87f44875f2804bc0511a69ce44a9595d5944837a62caecc8490bbdb0e18b1342"},
- {file = "aiohttp-3.8.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:527b3b87b24844ea7865284aabfab08eb0faf599b385b03c2aa91fc6edd6e4b6"},
- {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d5ba88df9aa5e2f806650fcbeedbe4f6e8736e92fc0e73b0400538fd25a4dd96"},
- {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:e7b8813be97cab8cb52b1375f41f8e6804f6507fe4660152e8ca5c48f0436017"},
- {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:2dea10edfa1a54098703cb7acaa665c07b4e7568472a47f4e64e6319d3821ccf"},
- {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:713d22cd9643ba9025d33c4af43943c7a1eb8547729228de18d3e02e278472b6"},
- {file = "aiohttp-3.8.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2d252771fc85e0cf8da0b823157962d70639e63cb9b578b1dec9868dd1f4f937"},
- {file = "aiohttp-3.8.3-cp38-cp38-win32.whl", hash = "sha256:66bd5f950344fb2b3dbdd421aaa4e84f4411a1a13fca3aeb2bcbe667f80c9f76"},
- {file = "aiohttp-3.8.3-cp38-cp38-win_amd64.whl", hash = "sha256:84b14f36e85295fe69c6b9789b51a0903b774046d5f7df538176516c3e422446"},
- {file = "aiohttp-3.8.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16c121ba0b1ec2b44b73e3a8a171c4f999b33929cd2397124a8c7fcfc8cd9e06"},
- {file = "aiohttp-3.8.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8d6aaa4e7155afaf994d7924eb290abbe81a6905b303d8cb61310a2aba1c68ba"},
- {file = "aiohttp-3.8.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:43046a319664a04b146f81b40e1545d4c8ac7b7dd04c47e40bf09f65f2437346"},
- {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:599418aaaf88a6d02a8c515e656f6faf3d10618d3dd95866eb4436520096c84b"},
- {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:92a2964319d359f494f16011e23434f6f8ef0434acd3cf154a6b7bec511e2fb7"},
- {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:73a4131962e6d91109bca6536416aa067cf6c4efb871975df734f8d2fd821b37"},
- {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:598adde339d2cf7d67beaccda3f2ce7c57b3b412702f29c946708f69cf8222aa"},
- {file = "aiohttp-3.8.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:75880ed07be39beff1881d81e4a907cafb802f306efd6d2d15f2b3c69935f6fb"},
- {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a0239da9fbafd9ff82fd67c16704a7d1bccf0d107a300e790587ad05547681c8"},
- {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:4e3a23ec214e95c9fe85a58470b660efe6534b83e6cbe38b3ed52b053d7cb6ad"},
- {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:47841407cc89a4b80b0c52276f3cc8138bbbfba4b179ee3acbd7d77ae33f7ac4"},
- {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:54d107c89a3ebcd13228278d68f1436d3f33f2dd2af5415e3feaeb1156e1a62c"},
- {file = "aiohttp-3.8.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c37c5cce780349d4d51739ae682dec63573847a2a8dcb44381b174c3d9c8d403"},
- {file = "aiohttp-3.8.3-cp39-cp39-win32.whl", hash = "sha256:f178d2aadf0166be4df834c4953da2d7eef24719e8aec9a65289483eeea9d618"},
- {file = "aiohttp-3.8.3-cp39-cp39-win_amd64.whl", hash = "sha256:88e5be56c231981428f4f506c68b6a46fa25c4123a2e86d156c58a8369d31ab7"},
- {file = "aiohttp-3.8.3.tar.gz", hash = "sha256:3828fb41b7203176b82fe5d699e0d845435f2374750a44b480ea6b930f6be269"},
-]
-aiosignal = [
- {file = "aiosignal-1.2.0-py3-none-any.whl", hash = "sha256:26e62109036cd181df6e6ad646f91f0dcfd05fe16d0cb924138ff2ab75d64e3a"},
- {file = "aiosignal-1.2.0.tar.gz", hash = "sha256:78ed67db6c7b7ced4f98e495e572106d5c432a93e1ddd1bf475e1dc05f5b7df2"},
-]
-alabaster = [
- {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"},
- {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"},
-]
-alpha-vantage = [
- {file = "alpha_vantage-2.3.1-py3-none-any.whl", hash = "sha256:5d05355febe6f0fafc4bd11dc6ce3504a02d9d3c105d60202539855c0f608661"},
- {file = "alpha_vantage-2.3.1.tar.gz", hash = "sha256:0ce76908c3e2a22f9bbdacead90195ec3a4fa41ef8ae7c69a4a2fc99459bfbec"},
-]
+aiohttp = []
+aiosignal = []
+alabaster = []
+alpha-vantage = []
altair = []
altgraph = []
anyio = []
-appnope = [
- {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"},
- {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"},
-]
-arch = [
- {file = "arch-5.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:75fa6f9386ecc2df81bcbf5d055a290a697482ca51e0b3459dab183d288993cb"},
- {file = "arch-5.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f9c9220d331618322517e0f2b3b3529f9c51f5e5a891441da4a107fd2d6d7fce"},
- {file = "arch-5.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c503acacf88786a78c0ea6606e292c7bfa66e42603c72b7d9fe8dca021a9ddf"},
- {file = "arch-5.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92dbbae9bc19aa38492a1b5968d855e7f69f18e626bfba3dd42e43182ea7907d"},
- {file = "arch-5.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:522e19656759a9b8408cda652ddadaf8e65e23aff433c4b22a11ea79bd3c2b67"},
- {file = "arch-5.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4c23b5138198127bc1a7ec432139fbe855d399e51f6391125b5dc3ab2f4a7860"},
- {file = "arch-5.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aadb88a0199b51c6134634618fd074ffbb430a5d3c43126da0b6d259447e1f36"},
- {file = "arch-5.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96eb779fd90f16787376bc3ada24f3e162bc74f746d1fc3fb809ec36f954007e"},
- {file = "arch-5.3.1-cp37-cp37m-win32.whl", hash = "sha256:7694ea6085bf817e09ddc8fcb4a871a0f255d3b6b486696cfa16121df591fdb9"},
- {file = "arch-5.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:32df883248a7d6f7ee204bf9ccb4a141ece43ab3b06ee22627cb84c8b4b7d24b"},
- {file = "arch-5.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ef94fd5738fc0bccc4ee8a27871d5d7052b3962d784b397acf7f7bcc3afc34f4"},
- {file = "arch-5.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:74e629d33ff41ab2a0917f475703826fd3c0976a3dc236873b19b41f719afe5b"},
- {file = "arch-5.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:84c3944a47d28923bad70a7a6a11081d55482b80ef6abb8581a7f98e05ec9584"},
- {file = "arch-5.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b862462dd22297073b772e08144f31b7be05080b4063de5ce794c969d0348a94"},
- {file = "arch-5.3.1-cp38-cp38-win32.whl", hash = "sha256:ae2e8026085ca841e6c31144913462e79706c8604e46deda4558ec252a4c5833"},
- {file = "arch-5.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:0cb9b0c5751a3a0ecefe47842b40a04dae393d7754489128ec22df0649d49b52"},
- {file = "arch-5.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:03a5cb976ffb230f59d827242e072cf605f70a993be0e7069d30378e13cb60f5"},
- {file = "arch-5.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:38857f8b2ca2fc46c7e1ac7889354eb4f16e7360283586a3730004097648b539"},
- {file = "arch-5.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd37af7633ae1d5d5719b5eaa7ed97b9a3450f2ed699e188c2c67f7e88ca7b44"},
- {file = "arch-5.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:236a8dc7414d557a59cae5dd39efff4fb49ab3fb792b68212f6c03a0c088d947"},
- {file = "arch-5.3.1-cp39-cp39-win32.whl", hash = "sha256:aabfc7b96416d6b3054164292ee364d1e86d2906a152faf1489562ba1669b2df"},
- {file = "arch-5.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:bed3352ab7d4ae79a206acb618f786a3f4bc4080e1b90f8c0b19c5a070a365a0"},
- {file = "arch-5.3.1.tar.gz", hash = "sha256:106f15c8770a34f71239b6c88f8517814e6b7fea3b8f2e009b3a8a23fd7e77c2"},
-]
-argon2-cffi = [
- {file = "argon2-cffi-21.3.0.tar.gz", hash = "sha256:d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b"},
- {file = "argon2_cffi-21.3.0-py3-none-any.whl", hash = "sha256:8c976986f2c5c0e5000919e6de187906cfd81fb1c72bf9d88c01177e77da7f80"},
-]
-argon2-cffi-bindings = [
- {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"},
- {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"},
- {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"},
- {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"},
- {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"},
- {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"},
- {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"},
- {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"},
- {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"},
- {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"},
- {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"},
- {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"},
- {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"},
- {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"},
- {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"},
- {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"},
- {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"},
- {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"},
- {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"},
- {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"},
- {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"},
-]
-ascii-magic = [
- {file = "ascii_magic-1.6-py3-none-any.whl", hash = "sha256:937447d8677b7428856729c298c0264afd62fc2b8e7ff90c82000492cdc5f8d4"},
- {file = "ascii_magic-1.6.tar.gz", hash = "sha256:7da5518f7368e73f11e2151a0c060804aa149e267b369b7ee7653fbd7b046a51"},
-]
-astor = [
- {file = "astor-0.8.1-py2.py3-none-any.whl", hash = "sha256:070a54e890cefb5b3739d19f30f5a5ec840ffc9c50ffa7d23cc9fc1a38ebbfc5"},
- {file = "astor-0.8.1.tar.gz", hash = "sha256:6a6effda93f4e1ce9f618779b2dd1d9d84f1e32812c23a29b3fff6fd7f63fa5e"},
-]
+appnope = []
+arch = []
+argon2-cffi = []
+argon2-cffi-bindings = []
+ascii-magic = []
+astor = []
astroid = []
-astropy = [
- {file = "astropy-5.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1845b338605a1115d2a5854707e86a9c118a7cce5d2a1c0da6a39d67ebb1648c"},
- {file = "astropy-5.1.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ca1fb44178d8357f17da585099cf13d99020a7e4321f90a2e823d6357f60fc8"},
- {file = "astropy-5.1.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9a48fdea31efcf7dae8c2f9e35c8d9c2d464ab72f2282ab9e93ef332eb2c6223"},
- {file = "astropy-5.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f7ba415912751351aa4bf4e44f159215abbb50f94f470090a4df0e1a8343341"},
- {file = "astropy-5.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:605ecbe244f8122f2611593208502adf4c065471bce88657cf2d67122cb51923"},
- {file = "astropy-5.1.1-cp310-cp310-win32.whl", hash = "sha256:2ae78973bb97a2ed1eecf912d3e7c122e5beceea9325cd4d08f907c025769f60"},
- {file = "astropy-5.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:725276a6d4bcd815ef1f4c7080d91d7e3b46aa449b3acffd495195d4a793d0d8"},
- {file = "astropy-5.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:17286c4d4cfdc26c8a9cb3e4b00d8c1b90a6fb06f0f86caf8c83b2a00907323a"},
- {file = "astropy-5.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:80f178e0d25c0ad1d6370383bef72fd4c9b9764e66efa37a3b1b457b516199ce"},
- {file = "astropy-5.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28c5b72355b59128c590dd77c7a10cf5557d4b8775a0ae4f561d00c7a7a7a890"},
- {file = "astropy-5.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99a5e32b9df3ca904e7297fe4896b09db821c2ab13110225897d901aa389ec44"},
- {file = "astropy-5.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:64a0944ac04a904029ffcbe7ff41276527cb10f2cd419f52ab4135a78de49e21"},
- {file = "astropy-5.1.1-cp311-cp311-win32.whl", hash = "sha256:f00a5a108d5a723d8c98632e4f1692eeaec847de70675eb6fb680b6bee46073f"},
- {file = "astropy-5.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:38c31260cfc8dea69062ee2488bcc2e65f8553c6ca0c8784a92fdf21512ca856"},
- {file = "astropy-5.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b69337baee96d8c49ca76900b18bcb7e8b154d411018025214136ee1b8f2458d"},
- {file = "astropy-5.1.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e049af9e672d7d53c9f58d128ade935f08829167f0e522f82ed59d44e118724c"},
- {file = "astropy-5.1.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:7342a2fa897cccac0227d9cbd39f3aef2a6a95dd3a57448c0e1ef4815dd39151"},
- {file = "astropy-5.1.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:df49549891920b9d8e9ed8ea3f465ff1d5ae92788e534a581fb1be41dd39bb4b"},
- {file = "astropy-5.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a492b5231e02745c70e159ff3eaf887be1d2dbf2ef1d557d882474e09ca01ae4"},
- {file = "astropy-5.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:1a1d3e57473d679ed0cbd864e61bfe866ed7ae2f43caa2a5d1d3c42b0ecfe15b"},
- {file = "astropy-5.1.1-cp38-cp38-win32.whl", hash = "sha256:52d87dc4af21a96f30e13c0e8386752eceecaf00fe06266f5344ba7c02226015"},
- {file = "astropy-5.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:176af7050c4cb248a11eb73b297fc0c028cef5097f35866c0066a55877a69f3a"},
- {file = "astropy-5.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0a15cab2912f13fef370ac5de33c2f83e3f5090d1d6199f9e0bd44d6f7321386"},
- {file = "astropy-5.1.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:350c55ddcf92802feb053cc5e780a173c91dd1c01df3bc9bff9096e682193a23"},
- {file = "astropy-5.1.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aa571a52cd311d03389b0fcbb102722a3e05be19dbb8ad418124138559fc70a8"},
- {file = "astropy-5.1.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:33ce18410c76bf6e1b7cd7e42ead215e845c53b7cebec2ed5d4559d0fb9ff99b"},
- {file = "astropy-5.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fd08dbe2387107b4ec1f3748d99276515e0d61ff2fdee0304b7ab39a704a171"},
- {file = "astropy-5.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4a61250c2550615227990322c224072808b0f8aaee89f92ca8c9d5779f3e72be"},
- {file = "astropy-5.1.1-cp39-cp39-win32.whl", hash = "sha256:423ee2c6fad28cbf5a6576a028872764d3c27d02e389c540f16aeb28c5edc923"},
- {file = "astropy-5.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:30008bba984bfca24db30a5c397ac781f984abfeb5f50e12706245ca32d7f973"},
- {file = "astropy-5.1.1.tar.gz", hash = "sha256:ba4bd696af7090fd399b464c704bf27b5633121e461785edc70432606a94bd81"},
-]
+astropy = []
asttokens = []
-async-timeout = [
- {file = "async-timeout-4.0.2.tar.gz", hash = "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15"},
- {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"},
-]
+async-timeout = []
atomicwrites = []
-attrs = [
- {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"},
- {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"},
-]
-babel = [
- {file = "Babel-2.10.3-py3-none-any.whl", hash = "sha256:ff56f4892c1c4bf0d814575ea23471c230d544203c7748e8c68f0089478d48eb"},
- {file = "Babel-2.10.3.tar.gz", hash = "sha256:7614553711ee97490f732126dc077f8d0ae084ebc6a96e23db1482afabdb2c51"},
-]
-backcall = [
- {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"},
- {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"},
-]
-backoff = [
- {file = "backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8"},
- {file = "backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba"},
-]
-"backports.zoneinfo" = [
- {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"},
- {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"},
- {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"},
- {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"},
- {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"},
- {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"},
- {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"},
- {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"},
- {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"},
- {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"},
- {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"},
- {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"},
- {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"},
- {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"},
- {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"},
- {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"},
-]
-bandit = [
- {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"},
- {file = "bandit-1.7.4.tar.gz", hash = "sha256:2d63a8c573417bae338962d4b9b06fbc6080f74ecd955a092849e1e65c717bd2"},
-]
-base58 = [
- {file = "base58-2.1.1-py3-none-any.whl", hash = "sha256:11a36f4d3ce51dfc1043f3218591ac4eb1ceb172919cebe05b52a5bcc8d245c2"},
- {file = "base58-2.1.1.tar.gz", hash = "sha256:c5d0cb3f5b6e81e8e35da5754388ddcc6d0d14b6c6a132cb93d69ed580a7278c"},
-]
-beartype = [
- {file = "beartype-0.7.1-py3-none-any.whl", hash = "sha256:2bdd7da07c017c82380162d67d3331a48c6b608d8e1c65508f6951e8c7afce8f"},
- {file = "beartype-0.7.1.tar.gz", hash = "sha256:0ea3b0b7983e4bdabb47ad299a4ba11cc48beaedabaf89752eea27cb6152e5c1"},
-]
-beautifulsoup4 = [
- {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"},
- {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"},
-]
-black = [
- {file = "black-22.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ff67aec0a47c424bc99b71005202045dc09270da44a27848d534600ac64fc7"},
- {file = "black-22.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:819dc789f4498ecc91438a7de64427c73b45035e2e3680c92e18795a839ebb66"},
- {file = "black-22.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b49776299fece66bffaafe357d929ca9451450f5466e997a7285ab0fe28e3b"},
- {file = "black-22.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:21199526696b8f09c3997e2b4db8d0b108d801a348414264d2eb8eb2532e540d"},
- {file = "black-22.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e464456d24e23d11fced2bc8c47ef66d471f845c7b7a42f3bd77bf3d1789650"},
- {file = "black-22.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9311e99228ae10023300ecac05be5a296f60d2fd10fff31cf5c1fa4ca4b1988d"},
- {file = "black-22.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:915ace4ff03fdfff953962fa672d44be269deb2eaf88499a0f8805221bc68c87"},
- {file = "black-22.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:444ebfb4e441254e87bad00c661fe32df9969b2bf224373a448d8aca2132b395"},
- {file = "black-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ef3925f30e12a184889aac03d77d031056860ccae8a1e519f6cbb742736383"},
- {file = "black-22.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:432247333090c8c5366e69627ccb363bc58514ae3e63f7fc75c54b1ea80fa7de"},
- {file = "black-22.10.0-py3-none-any.whl", hash = "sha256:c957b2b4ea88587b46cf49d1dc17681c1e672864fd7af32fc1e9664d572b3458"},
- {file = "black-22.10.0.tar.gz", hash = "sha256:f513588da599943e0cde4e32cc9879e825d58720d6557062d1098c5ad80080e1"},
-]
-bleach = [
- {file = "bleach-5.0.1-py3-none-any.whl", hash = "sha256:085f7f33c15bd408dd9b17a4ad77c577db66d76203e5984b1bd59baeee948b2a"},
- {file = "bleach-5.0.1.tar.gz", hash = "sha256:0d03255c47eb9bd2f26aa9bb7f2107732e7e8fe195ca2f64709fcf3b0a4a085c"},
-]
+attrs = []
+babel = []
+backcall = []
+backoff = []
+"backports.zoneinfo" = []
+bandit = []
+base58 = []
+beartype = []
+beautifulsoup4 = []
+black = []
+bleach = []
blinker = []
-bs4 = [
- {file = "bs4-0.0.1.tar.gz", hash = "sha256:36ecea1fd7cc5c0c6e4a1ff075df26d50da647b75376626cc186e2212886dd3a"},
-]
-bt = [
- {file = "bt-0.2.9-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:5654e5639ffd0778714d567ae14fb06d485e43becb720a0dc5a38b405251485e"},
- {file = "bt-0.2.9-cp36-cp36m-win_amd64.whl", hash = "sha256:5d6dd92fd6aa1efbade3efee980add709fc591a8b007643016f2e0cbf7372daf"},
- {file = "bt-0.2.9-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:637fd917f57d0302b17968025650be7d8b2b6da32c2c7daea9ae48f6a66cbb8c"},
- {file = "bt-0.2.9-cp37-cp37m-win_amd64.whl", hash = "sha256:55a9cf1ca3aa2c425a48fc1e8d324cd5959d4d189e221f7744c1c6e30149c61b"},
- {file = "bt-0.2.9-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:5dbf1ced108a6f2086b927dcf17ecd1deff7d98266d7f52ab3ff43be4a349ec3"},
- {file = "bt-0.2.9-cp38-cp38-win_amd64.whl", hash = "sha256:e77a56adc7bcac285df2c70e714b8724fc92fa1beb8de4b1fd991ab3862f84b0"},
- {file = "bt-0.2.9-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:a1aed6e0ee3fa3b6f5bcef1f26d29e2a96c8329ea54894362014e20012de053b"},
- {file = "bt-0.2.9-cp39-cp39-win_amd64.whl", hash = "sha256:399bedbf48026899e85536ea8cbd21459461346638ae20f439a09bc75fa131e9"},
- {file = "bt-0.2.9.tar.gz", hash = "sha256:d162d71aaaaf7265a848d1fc0040f503add32dac2f9f3127bece0d74c22efb9b"},
-]
-cachetools = [
- {file = "cachetools-5.2.0-py3-none-any.whl", hash = "sha256:f9f17d2aec496a9aa6b76f53e3b614c965223c061982d434d160f930c698a9db"},
- {file = "cachetools-5.2.0.tar.gz", hash = "sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757"},
-]
+bs4 = []
+bt = []
+cachetools = []
ccxt = []
certifi = []
-cffi = [
- {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"},
- {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"},
- {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"},
- {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"},
- {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"},
- {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"},
- {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"},
- {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"},
- {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"},
- {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"},
- {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"},
- {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"},
- {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"},
- {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"},
- {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"},
- {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"},
- {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"},
- {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"},
- {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"},
- {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"},
- {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"},
- {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"},
- {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"},
- {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"},
- {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"},
- {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"},
- {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"},
- {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"},
- {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"},
- {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"},
- {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"},
- {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"},
- {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"},
- {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"},
- {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"},
- {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"},
- {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"},
- {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"},
- {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"},
- {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"},
- {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"},
- {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"},
- {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"},
- {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"},
- {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"},
- {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"},
- {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"},
- {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"},
- {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"},
- {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"},
- {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"},
- {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"},
- {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"},
- {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"},
- {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"},
- {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"},
- {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"},
- {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"},
- {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"},
- {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"},
- {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"},
- {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"},
- {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"},
- {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"},
-]
-cfgv = [
- {file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"},
- {file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"},
-]
-charset-normalizer = [
- {file = "charset-normalizer-2.1.0.tar.gz", hash = "sha256:575e708016ff3a5e3681541cb9d79312c416835686d054a23accb873b254f413"},
- {file = "charset_normalizer-2.1.0-py3-none-any.whl", hash = "sha256:5189b6f22b01957427f35b6a08d9a0bc45b46d3788ef5a92e978433c7a35f8a5"},
-]
-click = [
- {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
- {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
-]
+cffi = []
+cfgv = []
+charset-normalizer = []
+click = []
codespell = []
-colorama = [
- {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
- {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
-]
-commonmark = [
- {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"},
- {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"},
-]
-convertdate = [
- {file = "convertdate-2.4.0-py3-none-any.whl", hash = "sha256:fcffe3a67522172648cf03b0c3757cfd079726fe5ae04ce29989ad3958039e4e"},
- {file = "convertdate-2.4.0.tar.gz", hash = "sha256:770c6b2195544d3e451e230b3f1c9b121ed02680b877f896306a04cf6f26b48f"},
-]
+colorama = []
+commonmark = []
+convertdate = []
coverage = []
cryptography = []
-cssselect = [
- {file = "cssselect-1.1.0-py2.py3-none-any.whl", hash = "sha256:f612ee47b749c877ebae5bb77035d8f4202c6ad0f0fc1271b3c18ad6c4468ecf"},
- {file = "cssselect-1.1.0.tar.gz", hash = "sha256:f95f8dedd925fd8f54edb3d2dfb44c190d9d18512377d3c1e2388d16126879bc"},
-]
-cvxpy = [
- {file = "cvxpy-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4e081576a625255bd3949d8d7f751a5d0175b2db512673e0ebc19fcabdfdb60a"},
- {file = "cvxpy-1.2.1-cp310-cp310-manylinux_2_24_x86_64.whl", hash = "sha256:55b1cdbfb7fb7eba53077b5154d5287e8a0d31404eb342737eb1db360a265eef"},
- {file = "cvxpy-1.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:0da15d10459908d1964cf2f35c706a99150ab22a1243d98796943d7daa43aa95"},
- {file = "cvxpy-1.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8d51712e1f5cee68de1068a28d72d4ca855acae7162ded3872fa7bd46b9051d3"},
- {file = "cvxpy-1.2.1-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:94ad386214e8b92b990caa2e3367cf503b03c0ded8ba4d3a4b916fe310bac97f"},
- {file = "cvxpy-1.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:21efdff59d3128b23c18f1a0c82bc8cf177ac40de0c10aece4e7536c4b942abe"},
- {file = "cvxpy-1.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8861a12efa88e626fd932eb5ca8e5b97bc55efaba0a4b580265990ae3b29f323"},
- {file = "cvxpy-1.2.1-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:b6a3d1e5f37c6bb01cbaf1e6574c805499ef60619ca0dcac4927c403c4a6f46c"},
- {file = "cvxpy-1.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:08711eda2b7c371b67450e1e7de98223b4940a89b065e3295777b184b9e9131b"},
- {file = "cvxpy-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e0f85757a936905c64f92e84b06e04d0bc9e7b8ab932ebf9b0c7e80949b60160"},
- {file = "cvxpy-1.2.1-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:0ed7e4b4bbcc80a55582e62d5688e2202f33dde3d0fceb23c81373dc6257d745"},
- {file = "cvxpy-1.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:8df52e9b0817d15814f3cdc7861c65b6f4e5554d90429fe4cfecb7bdd91994cf"},
- {file = "cvxpy-1.2.1.tar.gz", hash = "sha256:6d67642643d1ddb2f2af59b466b87d42c4a2e367831ad7b43c33b59eefa5b50e"},
-]
-cycler = [
- {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"},
- {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"},
-]
+cssselect = []
+cvxpy = []
+cycler = []
cython = []
-dateparser = [
- {file = "dateparser-1.1.2-py2.py3-none-any.whl", hash = "sha256:d31659dc806a7d88e2b510b2c74f68b525ae531f145c62a57a99bd616b7f90cf"},
- {file = "dateparser-1.1.2.tar.gz", hash = "sha256:3821bf191f95b2658c4abd91571c09821ce7a2bc179bf6cefd8b4515c3ccf9ef"},
-]
+dateparser = []
datetime = []
debugpy = []
-decorator = [
- {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
- {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
-]
-defusedxml = [
- {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
- {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
-]
-degiro-connector = [
- {file = "degiro-connector-2.0.21.tar.gz", hash = "sha256:06b7bda360cafca5b271c47ef939b7ec4f534ddd60284323bea898215445bcf2"},
- {file = "degiro_connector-2.0.21-py3-none-any.whl", hash = "sha256:1f4d806260f69d6b006ff6d3d18ebcd80c4866b1b07edba43a1583fc2f507ae2"},
-]
-deprecation = [
- {file = "deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a"},
- {file = "deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff"},
-]
-detecta = [
- {file = "detecta-0.0.5-py3-none-any.whl", hash = "sha256:dbaf1938e5d785386c904034e2553824e2aa31793e967984ca65983aca06d23e"},
- {file = "detecta-0.0.5.tar.gz", hash = "sha256:d2ea7d13dfbbc994d6ce385a7f8dc0a85fe675a8a8e712a64ec56e54c40603ed"},
-]
-dill = [
- {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"},
- {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"},
-]
+decorator = []
+defusedxml = []
+degiro-connector = []
+deprecation = []
+detecta = []
+dill = []
distlib = []
-dnspython = [
- {file = "dnspython-2.2.1-py3-none-any.whl", hash = "sha256:a851e51367fb93e9e1361732c1d60dab63eff98712e503ea7d92e6eccb109b4f"},
- {file = "dnspython-2.2.1.tar.gz", hash = "sha256:0f7569a4a6ff151958b64304071d370daa3243d15941a7beedf0c9fe5105603e"},
-]
-docstring-to-markdown = [
- {file = "docstring-to-markdown-0.10.tar.gz", hash = "sha256:12f75b0c7b7572defea2d9e24b57ef7ac38c3e26e91c0e5547cfc02b1c168bf6"},
- {file = "docstring_to_markdown-0.10-py3-none-any.whl", hash = "sha256:a2cd520599d1499d4a5d4eb16dea5bdebe32e5627504fb417d5733570f3d4d0b"},
-]
-docutils = [
- {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"},
- {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"},
-]
-ecos = [
- {file = "ecos-2.0.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:533e1a0dec84e4e9a882b401a59b821da192f7fe4f32c6d65e400b6425858775"},
- {file = "ecos-2.0.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9b1e8134e822583f457d7759cab030e6076732bcbe977ceb1c64d8fe99c17bc3"},
- {file = "ecos-2.0.10-cp310-cp310-win_amd64.whl", hash = "sha256:d1b7058c71808cb35e16217b832d2bf944f9a64ef852f6bd707ae66b474071e6"},
- {file = "ecos-2.0.10-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ae8bf83a9146741faaf36448eaeeef83b4dd7a9e88b80fe0e89b03d403e3096c"},
- {file = "ecos-2.0.10-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6bfe0211b99094efea0c469abbd64a7f6b991dcf0a8bed7c591c6218607a9504"},
- {file = "ecos-2.0.10-cp36-cp36m-win_amd64.whl", hash = "sha256:14deff01083fe8f54c52bee8f678eaebae54bc1eecce276324bf8ce30c306778"},
- {file = "ecos-2.0.10-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d5944f9acdfd1d23fb16a22da1e78ae98981c283e16a27fbd7cf3d52e670222b"},
- {file = "ecos-2.0.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8f64207b256ec8ee2ee54411927604b10e56b554bd608c7af5529c3bea93eafd"},
- {file = "ecos-2.0.10-cp37-cp37m-win_amd64.whl", hash = "sha256:13cfe9a4134b7a2f3a8f4b8d88ce5d5106bac3d168c356b0d77e1dd2ea9dc42d"},
- {file = "ecos-2.0.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8a116ebad51aeb8847ddf05bb1e432f56f6a495682406f237a7f1633374b8356"},
- {file = "ecos-2.0.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6ed5ee0610b06911b6839e095a392cce52f8d88bedf86a381a9ed93c3af2a677"},
- {file = "ecos-2.0.10-cp38-cp38-win_amd64.whl", hash = "sha256:d8afaeb204c6cbb706ebee218e3817a735ba9f7b33edc20844e6fda54946403c"},
- {file = "ecos-2.0.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b25f75808a2e136b8adc9c4dca0f3c56fc8d8256fb3c19cd162194125b4e52a9"},
- {file = "ecos-2.0.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:48948eadd2e45dd9766f0686e3de27cc6ae8e9dc85c1a2139f712b9703b0374c"},
- {file = "ecos-2.0.10-cp39-cp39-win_amd64.whl", hash = "sha256:98c8e3b7247e7c63852974a9c4b1acc5804269b50a1aba3447220cad5e4c617f"},
- {file = "ecos-2.0.10.tar.gz", hash = "sha256:9391a73fd25b2fc56b163a2a70c78973458bb194fe475b6c27672c0d980a47cf"},
-]
-entrypoints = [
- {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"},
- {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"},
-]
-et-xmlfile = [
- {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"},
- {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"},
-]
+dnspython = []
+docstring-to-markdown = []
+docutils = []
+ecos = []
+entrypoints = []
+et-xmlfile = []
exchange-calendars = []
-executing = [
- {file = "executing-1.1.1-py2.py3-none-any.whl", hash = "sha256:236ea5f059a38781714a8bfba46a70fad3479c2f552abee3bbafadc57ed111b8"},
- {file = "executing-1.1.1.tar.gz", hash = "sha256:b0d7f8dcc2bac47ce6e39374397e7acecea6fdc380a6d5323e26185d70f38ea8"},
-]
+executing = []
fastjsonschema = []
feedparser = []
-ffn = [
- {file = "ffn-0.3.6-py2.py3-none-any.whl", hash = "sha256:1e55e8caf6b63dce2f164cc4d3b8a02b678be7ed12990cafb2006b818a9a09e7"},
- {file = "ffn-0.3.6.tar.gz", hash = "sha256:4a79e72e06ff328e333ffe97010b1ce110bcd694fcd03be7351bf5065cd273e8"},
-]
+ffn = []
filelock = []
-financedatabase = [
- {file = "financedatabase-1.0.2-py3-none-any.whl", hash = "sha256:2fbe8acea1a12d2e3371c81b075f357f61f34cae5e6d94de9b3afd68ff3c3a19"},
- {file = "financedatabase-1.0.2.tar.gz", hash = "sha256:7b03d37ef5eef8433380d92122f2fd24bad741971518eaf1bd4a9c6f30763e23"},
-]
-finnhub-python = [
- {file = "finnhub-python-2.4.15.tar.gz", hash = "sha256:5a9f9cb61571783ee8f49b770b4ce962e5af237ec9231824b8a8403bbdd0cef2"},
- {file = "finnhub_python-2.4.15-py3-none-any.whl", hash = "sha256:68a73e67ac21dad09b522bad52d5782c573a678b92ebba3e89e112af176a8de5"},
-]
-finviz = [
- {file = "finviz-1.4.4.tar.gz", hash = "sha256:9772060a070d59e8d1045ffbe826553d15f189fab43074b50bf7a510b5360172"},
-]
+financedatabase = []
+finnhub-python = []
+finviz = []
finvizfinance = []
-flake8 = [
- {file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"},
- {file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"},
-]
-fonttools = [
- {file = "fonttools-4.38.0-py3-none-any.whl", hash = "sha256:820466f43c8be8c3009aef8b87e785014133508f0de64ec469e4efb643ae54fb"},
- {file = "fonttools-4.38.0.zip", hash = "sha256:2bb244009f9bf3fa100fc3ead6aeb99febe5985fa20afbfbaa2f8946c2fbdaf1"},
-]
-formulaic = [
- {file = "formulaic-0.3.4-py3-none-any.whl", hash = "sha256:5ee1f3f4a5990c0947a68f90d051a4ca497d6eb0f9f387d2cf1e732a9cbf76ec"},
- {file = "formulaic-0.3.4.tar.gz", hash = "sha256:2f841297d27dbd19f51dadea35887c363512d6eed70503b453e0f59c679d0f54"},
-]
-fred = [
- {file = "fred-3.1.tar.gz", hash = "sha256:f31327d648917694b8d15d66ca4e82a082dbb88ca027bdcc9d56738cbc836a6a"},
-]
-fredapi = [
- {file = "fredapi-0.4.3-py3-none-any.whl", hash = "sha256:e06075592eabddadfe0635f3c59e9072c9f48647430328b4582171ea10f7df2f"},
- {file = "fredapi-0.4.3.tar.gz", hash = "sha256:d9b3194fb60541991bd33f019c710d4a9580ecfb5e47efbf2d2571888a2aac02"},
-]
+flake8 = []
+fonttools = []
+formulaic = []
+fred = []
+fredapi = []
frozendict = []
frozenlist = []
-fundamentalanalysis = [
- {file = "fundamentalanalysis-0.2.14-py3-none-any.whl", hash = "sha256:eda7920cb3b2f76b197cfe0a47e3936e6b4e65273a3852039cd3e5edd1bb06cc"},
- {file = "fundamentalanalysis-0.2.14.tar.gz", hash = "sha256:bc3ee7948f7de817e195b2ac6d34dc6ba9c5f4780c9d29b7768c2790e67ab4a4"},
-]
-future = [
- {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"},
-]
-gitdb = [
- {file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"},
- {file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"},
-]
+fundamentalanalysis = []
+future = []
+gitdb = []
gitpython = []
grpcio = []
h11 = []
-hijri-converter = [
- {file = "hijri-converter-2.2.4.tar.gz", hash = "sha256:9e1d9fa4c220f6867da2abb1a96240675ae974abba951c686a781f4ef6ac218f"},
- {file = "hijri_converter-2.2.4-py3-none-any.whl", hash = "sha256:5ed4f4c284626e3916cd770e09346d5cc319e2a7762c22357838864908fd6e6d"},
-]
+hijri-converter = []
holidays = []
-html5lib = [
- {file = "html5lib-1.1-py2.py3-none-any.whl", hash = "sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d"},
- {file = "html5lib-1.1.tar.gz", hash = "sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f"},
-]
+html5lib = []
httpcore = []
httpx = []
-identify = [
- {file = "identify-2.5.7-py2.py3-none-any.whl", hash = "sha256:7a67b2a6208d390fd86fd04fb3def94a3a8b7f0bcbd1d1fcd6736f4defe26390"},
- {file = "identify-2.5.7.tar.gz", hash = "sha256:5b8fd1e843a6d4bf10685dd31f4520a7f1c7d0e14e9bc5d34b1d6f111cabc011"},
-]
-idna = [
- {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
- {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
-]
+identify = []
+idna = []
imagesize = []
-importlib-metadata = [
- {file = "importlib_metadata-5.0.0-py3-none-any.whl", hash = "sha256:ddb0e35065e8938f867ed4928d0ae5bf2a53b7773871bfe6bcc7e4fcdc7dea43"},
- {file = "importlib_metadata-5.0.0.tar.gz", hash = "sha256:da31db32b304314d044d3c12c79bd59e307889b287ad12ff387b3500835fc2ab"},
-]
-inflection = [
- {file = "inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2"},
- {file = "inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417"},
-]
-iniconfig = [
- {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
- {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
-]
-interface-meta = [
- {file = "interface_meta-1.3.0-py3-none-any.whl", hash = "sha256:de35dc5241431886e709e20a14d6597ed07c9f1e8b4bfcffde2190ca5b700ee8"},
- {file = "interface_meta-1.3.0.tar.gz", hash = "sha256:8a4493f8bdb73fb9655dcd5115bc897e207319e36c8835f39c516a2d7e9d79a1"},
-]
+importlib-metadata = []
+inflection = []
+iniconfig = []
+interface-meta = []
investiny = []
-investpy = [
- {file = "investpy-1.0.8.tar.gz", hash = "sha256:6a7632a94b484ee07cd54afd416bdc759cd905ba60c62dbb8a8d157229b267c6"},
-]
+investpy = []
ipyflex = []
-ipykernel = [
- {file = "ipykernel-6.16.1-py3-none-any.whl", hash = "sha256:32eb7bdc5af57185e9a42b0dcef66413ef91a0490b378eae46cbdf0d4e0b5912"},
- {file = "ipykernel-6.16.1.tar.gz", hash = "sha256:3a27a550c1d682e7825f0f7732b0142b79ef1b21cd2e713cacac0c9847535f13"},
-]
-ipympl = [
- {file = "ipympl-0.8.8-py2.py3-none-any.whl", hash = "sha256:86468aeaae8c0a28007d0c7f6dbb85f2b6cb9805167e88d4daa7529562009159"},
- {file = "ipympl-0.8.8.tar.gz", hash = "sha256:5bf5d780b07fafe7924922ac6b2f3abd22721f341e5e196b3b82737dfbd0e1c9"},
-]
+ipykernel = []
+ipympl = []
ipython = []
-ipython-genutils = [
- {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"},
- {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"},
-]
+ipython-genutils = []
ipywidgets = []
-iso8601 = [
- {file = "iso8601-0.1.16-py2.py3-none-any.whl", hash = "sha256:906714829fedbc89955d52806c903f2332e3948ed94e31e85037f9e0226b8376"},
- {file = "iso8601-0.1.16.tar.gz", hash = "sha256:36532f77cc800594e8f16641edae7f1baf7932f05d8e508545b95fc53c6dc85b"},
-]
-isort = [
- {file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"},
- {file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"},
-]
-jedi = [
- {file = "jedi-0.18.1-py2.py3-none-any.whl", hash = "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d"},
- {file = "jedi-0.18.1.tar.gz", hash = "sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab"},
-]
-jedi-language-server = [
- {file = "jedi-language-server-0.35.1.tar.gz", hash = "sha256:e31185e79e1abdcc5a077305cb24cd3a44798a2db525045b40f6b647dc5bdf08"},
- {file = "jedi_language_server-0.35.1-py3-none-any.whl", hash = "sha256:532c16a9199d902bdc88ca991da176fe177f0b3019b826b50bf568a0b0081167"},
-]
-jinja2 = [
- {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"},
- {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"},
-]
+iso8601 = []
+isort = []
+jedi = []
+jedi-language-server = []
+jinja2 = []
joblib = []
json5 = []
-jsonschema = [
- {file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"},
- {file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"},
-]
-jupyter = [
- {file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"},
- {file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"},
- {file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"},
-]
+jsonschema = []
+jupyter = []
jupyter-client = []
-jupyter-console = [
- {file = "jupyter_console-6.4.4-py3-none-any.whl", hash = "sha256:756df7f4f60c986e7bc0172e4493d3830a7e6e75c08750bbe59c0a5403ad6dee"},
- {file = "jupyter_console-6.4.4.tar.gz", hash = "sha256:172f5335e31d600df61613a97b7f0352f2c8250bbd1092ef2d658f77249f89fb"},
-]
+jupyter-console = []
jupyter-core = []
-jupyter-lsp = [
- {file = "jupyter-lsp-1.5.1.tar.gz", hash = "sha256:751abd35413be99a4331f3597b09341adc755589ed32091ac2f686db3d61267e"},
- {file = "jupyter_lsp-1.5.1-py3-none-any.whl", hash = "sha256:28bb4c44f0c78b4fe55041b2209a8a1f33b1719f39e5e280d8c4d689dc44ca31"},
-]
+jupyter-lsp = []
jupyter-server = []
-jupyterlab = [
- {file = "jupyterlab-3.5.0-py3-none-any.whl", hash = "sha256:f433059fe0e12d75ea90a81a0b6721113bb132857e3ec2197780b6fe84cbcbde"},
- {file = "jupyterlab-3.5.0.tar.gz", hash = "sha256:e02556c8ea1b386963c4b464e4618aee153c5416b07ab481425c817a033323a2"},
-]
+jupyterlab = []
jupyterlab-code-formatter = []
jupyterlab-lsp = []
-jupyterlab-pygments = [
- {file = "jupyterlab_pygments-0.2.2-py2.py3-none-any.whl", hash = "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f"},
- {file = "jupyterlab_pygments-0.2.2.tar.gz", hash = "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"},
-]
+jupyterlab-pygments = []
jupyterlab-server = []
-jupyterlab-widgets = [
- {file = "jupyterlab_widgets-1.1.1-py3-none-any.whl", hash = "sha256:90ab47d99da03a3697074acb23b2975ead1d6171aa41cb2812041a7f2a08177a"},
- {file = "jupyterlab_widgets-1.1.1.tar.gz", hash = "sha256:67d0ef1e407e0c42c8ab60b9d901cd7a4c68923650763f75bf17fb06c1943b79"},
-]
-kaleido = [
- {file = "kaleido-0.2.1.post1-py2.py3-none-manylinux2014_armv7l.whl", hash = "sha256:d313940896c24447fc12c74f60d46ea826195fc991f58569a6e73864d53e5c20"},
-]
+jupyterlab-widgets = []
+kaleido = []
kiwisolver = []
korean-lunar-calendar = []
-lazy-object-proxy = [
- {file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"},
- {file = "lazy_object_proxy-1.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bb8c5fd1684d60a9902c60ebe276da1f2281a318ca16c1d0a96db28f62e9166b"},
- {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a57d51ed2997e97f3b8e3500c984db50a554bb5db56c50b5dab1b41339b37e36"},
- {file = "lazy_object_proxy-1.7.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd45683c3caddf83abbb1249b653a266e7069a09f486daa8863fb0e7496a9fdb"},
- {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8561da8b3dd22d696244d6d0d5330618c993a215070f473b699e00cf1f3f6443"},
- {file = "lazy_object_proxy-1.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fccdf7c2c5821a8cbd0a9440a456f5050492f2270bd54e94360cac663398739b"},
- {file = "lazy_object_proxy-1.7.1-cp310-cp310-win32.whl", hash = "sha256:898322f8d078f2654d275124a8dd19b079080ae977033b713f677afcfc88e2b9"},
- {file = "lazy_object_proxy-1.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:85b232e791f2229a4f55840ed54706110c80c0a210d076eee093f2b2e33e1bfd"},
- {file = "lazy_object_proxy-1.7.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:46ff647e76f106bb444b4533bb4153c7370cdf52efc62ccfc1a28bdb3cc95442"},
- {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12f3bb77efe1367b2515f8cb4790a11cffae889148ad33adad07b9b55e0ab22c"},
- {file = "lazy_object_proxy-1.7.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c19814163728941bb871240d45c4c30d33b8a2e85972c44d4e63dd7107faba44"},
- {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e40f2013d96d30217a51eeb1db28c9ac41e9d0ee915ef9d00da639c5b63f01a1"},
- {file = "lazy_object_proxy-1.7.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:2052837718516a94940867e16b1bb10edb069ab475c3ad84fd1e1a6dd2c0fcfc"},
- {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win32.whl", hash = "sha256:6a24357267aa976abab660b1d47a34aaf07259a0c3859a34e536f1ee6e76b5bb"},
- {file = "lazy_object_proxy-1.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6aff3fe5de0831867092e017cf67e2750c6a1c7d88d84d2481bd84a2e019ec35"},
- {file = "lazy_object_proxy-1.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6a6e94c7b02641d1311228a102607ecd576f70734dc3d5e22610111aeacba8a0"},
- {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ce15276a1a14549d7e81c243b887293904ad2d94ad767f42df91e75fd7b5b6"},
- {file = "lazy_object_proxy-1.7.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e368b7f7eac182a59ff1f81d5f3802161932a41dc1b1cc45c1f757dc876b5d2c"},
- {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ecbb350991d6434e1388bee761ece3260e5228952b1f0c46ffc800eb313ff42"},
- {file = "lazy_object_proxy-1.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:553b0f0d8dbf21890dd66edd771f9b1b5f51bd912fa5f26de4449bfc5af5e029"},
- {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win32.whl", hash = "sha256:c7a683c37a8a24f6428c28c561c80d5f4fd316ddcf0c7cab999b15ab3f5c5c69"},
- {file = "lazy_object_proxy-1.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:df2631f9d67259dc9620d831384ed7732a198eb434eadf69aea95ad18c587a28"},
- {file = "lazy_object_proxy-1.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:07fa44286cda977bd4803b656ffc1c9b7e3bc7dff7d34263446aec8f8c96f88a"},
- {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4dca6244e4121c74cc20542c2ca39e5c4a5027c81d112bfb893cf0790f96f57e"},
- {file = "lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91ba172fc5b03978764d1df5144b4ba4ab13290d7bab7a50f12d8117f8630c38"},
- {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:043651b6cb706eee4f91854da4a089816a6606c1428fd391573ef8cb642ae4f7"},
- {file = "lazy_object_proxy-1.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b9e89b87c707dd769c4ea91f7a31538888aad05c116a59820f28d59b3ebfe25a"},
- {file = "lazy_object_proxy-1.7.1-cp38-cp38-win32.whl", hash = "sha256:9d166602b525bf54ac994cf833c385bfcc341b364e3ee71e3bf5a1336e677b55"},
- {file = "lazy_object_proxy-1.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:8f3953eb575b45480db6568306893f0bd9d8dfeeebd46812aa09ca9579595148"},
- {file = "lazy_object_proxy-1.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:dd7ed7429dbb6c494aa9bc4e09d94b778a3579be699f9d67da7e6804c422d3de"},
- {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70ed0c2b380eb6248abdef3cd425fc52f0abd92d2b07ce26359fcbc399f636ad"},
- {file = "lazy_object_proxy-1.7.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7096a5e0c1115ec82641afbdd70451a144558ea5cf564a896294e346eb611be1"},
- {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f769457a639403073968d118bc70110e7dce294688009f5c24ab78800ae56dc8"},
- {file = "lazy_object_proxy-1.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:39b0e26725c5023757fc1ab2a89ef9d7ab23b84f9251e28f9cc114d5b59c1b09"},
- {file = "lazy_object_proxy-1.7.1-cp39-cp39-win32.whl", hash = "sha256:2130db8ed69a48a3440103d4a520b89d8a9405f1b06e2cc81640509e8bf6548f"},
- {file = "lazy_object_proxy-1.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:677ea950bef409b47e51e733283544ac3d660b709cfce7b187f5ace137960d61"},
- {file = "lazy_object_proxy-1.7.1-pp37.pp38-none-any.whl", hash = "sha256:d66906d5785da8e0be7360912e99c9188b70f52c422f9fc18223347235691a84"},
-]
-linearmodels = [
- {file = "linearmodels-4.27-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5976599bdb33f73b3cc79b8ca0d067fab6548442d033a50dc395aa3ec67693d"},
- {file = "linearmodels-4.27-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7591602411040bb01263a6913c64d9ef93dfb6a818ae1d947e7463f0cd0254c9"},
- {file = "linearmodels-4.27-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08dc545c51282ac48010953387a0a098a93d0ed83720736e8f076f756eb18516"},
- {file = "linearmodels-4.27-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e07643e86a8ce75ae7f9f715894488203287c7d5d585a5db283c7ca407084dcd"},
- {file = "linearmodels-4.27-cp310-cp310-win_amd64.whl", hash = "sha256:ca8f4171c2ffb56ce2569fcc327499a0661bf7c02003d2dbe2bf2d22df10b95f"},
- {file = "linearmodels-4.27-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4400974cb92c1fbd4e6517c469b051d14e1df65568723a1ae908fffc75462e68"},
- {file = "linearmodels-4.27-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ea68dc975555f3a90dba8acceafc468fd5be7577c10f5a4565562bfd3b0d4942"},
- {file = "linearmodels-4.27-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65ee100108b8140ecef925caf51dededca4274f985d068bb1682e3ca8924bbe6"},
- {file = "linearmodels-4.27-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fefe44723b10aadcc43a173f8fdfdd539b6c7eb42a691d84119242e87ef0b983"},
- {file = "linearmodels-4.27-cp38-cp38-win32.whl", hash = "sha256:d96b9e5c65c441a665bcddc128ee7af34ab34aec2bfadf918c0669f341230048"},
- {file = "linearmodels-4.27-cp38-cp38-win_amd64.whl", hash = "sha256:c65d96bd67630ffbf1cf682952f167c71b19bdd52018e9481154365afc5d383c"},
- {file = "linearmodels-4.27-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4d031ffc4ff1ba683c85b3af4a1b7ce46b28fa4a7fa7b28d37f28fc3dfd22014"},
- {file = "linearmodels-4.27-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c63bbf45bd4f89056074a52717a5dab91ea9360d177f6340f0b8c93858925f72"},
- {file = "linearmodels-4.27-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e73d38a409ad03dc326e6e49f4d746b36ef313af941f70d5afb9ba0103c202bf"},
- {file = "linearmodels-4.27-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d94cd82a24975eceb18232f516e4629ebdd53fd6abe690dfa08ace621040db50"},
- {file = "linearmodels-4.27-cp39-cp39-win32.whl", hash = "sha256:23c4f7a6be06f9046b13eb14f73f934c61ae8bf1ff22bca045e21d05960c2e05"},
- {file = "linearmodels-4.27-cp39-cp39-win_amd64.whl", hash = "sha256:80e0079c9a67eb0c54479f2ed3d6ac957a60f6b8fa37cf3247a7dd7555a46028"},
- {file = "linearmodels-4.27.tar.gz", hash = "sha256:1e2ddd4ee82f46b003633136c1170206a90406a45ef1217d3fade30bb1407ccd"},
-]
-loguru = [
- {file = "loguru-0.6.0-py3-none-any.whl", hash = "sha256:4e2414d534a2ab57573365b3e6d0234dfb1d84b68b7f3b948e6fb743860a77c3"},
- {file = "loguru-0.6.0.tar.gz", hash = "sha256:066bd06758d0a513e9836fd9c6b5a75bfb3fd36841f4b996bc60b547a309d41c"},
-]
-lxml = [
- {file = "lxml-4.9.1-cp27-cp27m-macosx_10_15_x86_64.whl", hash = "sha256:98cafc618614d72b02185ac583c6f7796202062c41d2eeecdf07820bad3295ed"},
- {file = "lxml-4.9.1-cp27-cp27m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c62e8dd9754b7debda0c5ba59d34509c4688f853588d75b53c3791983faa96fc"},
- {file = "lxml-4.9.1-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:21fb3d24ab430fc538a96e9fbb9b150029914805d551deeac7d7822f64631dfc"},
- {file = "lxml-4.9.1-cp27-cp27m-win32.whl", hash = "sha256:86e92728ef3fc842c50a5cb1d5ba2bc66db7da08a7af53fb3da79e202d1b2cd3"},
- {file = "lxml-4.9.1-cp27-cp27m-win_amd64.whl", hash = "sha256:4cfbe42c686f33944e12f45a27d25a492cc0e43e1dc1da5d6a87cbcaf2e95627"},
- {file = "lxml-4.9.1-cp27-cp27mu-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dad7b164905d3e534883281c050180afcf1e230c3d4a54e8038aa5cfcf312b84"},
- {file = "lxml-4.9.1-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:a614e4afed58c14254e67862456d212c4dcceebab2eaa44d627c2ca04bf86837"},
- {file = "lxml-4.9.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:49a866923e69bc7da45a0565636243707c22752fc38f6b9d5c8428a86121022c"},
- {file = "lxml-4.9.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:f9ced82717c7ec65a67667bb05865ffe38af0e835cdd78728f1209c8fffe0cad"},
- {file = "lxml-4.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:d9fc0bf3ff86c17348dfc5d322f627d78273eba545db865c3cd14b3f19e57fa5"},
- {file = "lxml-4.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:e5f66bdf0976ec667fc4594d2812a00b07ed14d1b44259d19a41ae3fff99f2b8"},
- {file = "lxml-4.9.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fe17d10b97fdf58155f858606bddb4e037b805a60ae023c009f760d8361a4eb8"},
- {file = "lxml-4.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8caf4d16b31961e964c62194ea3e26a0e9561cdf72eecb1781458b67ec83423d"},
- {file = "lxml-4.9.1-cp310-cp310-win32.whl", hash = "sha256:4780677767dd52b99f0af1f123bc2c22873d30b474aa0e2fc3fe5e02217687c7"},
- {file = "lxml-4.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:b122a188cd292c4d2fcd78d04f863b789ef43aa129b233d7c9004de08693728b"},
- {file = "lxml-4.9.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:be9eb06489bc975c38706902cbc6888f39e946b81383abc2838d186f0e8b6a9d"},
- {file = "lxml-4.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:f1be258c4d3dc609e654a1dc59d37b17d7fef05df912c01fc2e15eb43a9735f3"},
- {file = "lxml-4.9.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:927a9dd016d6033bc12e0bf5dee1dde140235fc8d0d51099353c76081c03dc29"},
- {file = "lxml-4.9.1-cp35-cp35m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9232b09f5efee6a495a99ae6824881940d6447debe272ea400c02e3b68aad85d"},
- {file = "lxml-4.9.1-cp35-cp35m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:04da965dfebb5dac2619cb90fcf93efdb35b3c6994fea58a157a834f2f94b318"},
- {file = "lxml-4.9.1-cp35-cp35m-win32.whl", hash = "sha256:4d5bae0a37af799207140652a700f21a85946f107a199bcb06720b13a4f1f0b7"},
- {file = "lxml-4.9.1-cp35-cp35m-win_amd64.whl", hash = "sha256:4878e667ebabe9b65e785ac8da4d48886fe81193a84bbe49f12acff8f7a383a4"},
- {file = "lxml-4.9.1-cp36-cp36m-macosx_10_15_x86_64.whl", hash = "sha256:1355755b62c28950f9ce123c7a41460ed9743c699905cbe664a5bcc5c9c7c7fb"},
- {file = "lxml-4.9.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:bcaa1c495ce623966d9fc8a187da80082334236a2a1c7e141763ffaf7a405067"},
- {file = "lxml-4.9.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6eafc048ea3f1b3c136c71a86db393be36b5b3d9c87b1c25204e7d397cee9536"},
- {file = "lxml-4.9.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:13c90064b224e10c14dcdf8086688d3f0e612db53766e7478d7754703295c7c8"},
- {file = "lxml-4.9.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:206a51077773c6c5d2ce1991327cda719063a47adc02bd703c56a662cdb6c58b"},
- {file = "lxml-4.9.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:e8f0c9d65da595cfe91713bc1222af9ecabd37971762cb830dea2fc3b3bb2acf"},
- {file = "lxml-4.9.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:8f0a4d179c9a941eb80c3a63cdb495e539e064f8054230844dcf2fcb812b71d3"},
- {file = "lxml-4.9.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:830c88747dce8a3e7525defa68afd742b4580df6aa2fdd6f0855481e3994d391"},
- {file = "lxml-4.9.1-cp36-cp36m-win32.whl", hash = "sha256:1e1cf47774373777936c5aabad489fef7b1c087dcd1f426b621fda9dcc12994e"},
- {file = "lxml-4.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:5974895115737a74a00b321e339b9c3f45c20275d226398ae79ac008d908bff7"},
- {file = "lxml-4.9.1-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:1423631e3d51008871299525b541413c9b6c6423593e89f9c4cfbe8460afc0a2"},
- {file = "lxml-4.9.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:2aaf6a0a6465d39b5ca69688fce82d20088c1838534982996ec46633dc7ad6cc"},
- {file = "lxml-4.9.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:9f36de4cd0c262dd9927886cc2305aa3f2210db437aa4fed3fb4940b8bf4592c"},
- {file = "lxml-4.9.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:ae06c1e4bc60ee076292e582a7512f304abdf6c70db59b56745cca1684f875a4"},
- {file = "lxml-4.9.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:57e4d637258703d14171b54203fd6822fda218c6c2658a7d30816b10995f29f3"},
- {file = "lxml-4.9.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6d279033bf614953c3fc4a0aa9ac33a21e8044ca72d4fa8b9273fe75359d5cca"},
- {file = "lxml-4.9.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a60f90bba4c37962cbf210f0188ecca87daafdf60271f4c6948606e4dabf8785"},
- {file = "lxml-4.9.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6ca2264f341dd81e41f3fffecec6e446aa2121e0b8d026fb5130e02de1402785"},
- {file = "lxml-4.9.1-cp37-cp37m-win32.whl", hash = "sha256:27e590352c76156f50f538dbcebd1925317a0f70540f7dc8c97d2931c595783a"},
- {file = "lxml-4.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:eea5d6443b093e1545ad0210e6cf27f920482bfcf5c77cdc8596aec73523bb7e"},
- {file = "lxml-4.9.1-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:f05251bbc2145349b8d0b77c0d4e5f3b228418807b1ee27cefb11f69ed3d233b"},
- {file = "lxml-4.9.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:487c8e61d7acc50b8be82bda8c8d21d20e133c3cbf41bd8ad7eb1aaeb3f07c97"},
- {file = "lxml-4.9.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:8d1a92d8e90b286d491e5626af53afef2ba04da33e82e30744795c71880eaa21"},
- {file = "lxml-4.9.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:b570da8cd0012f4af9fa76a5635cd31f707473e65a5a335b186069d5c7121ff2"},
- {file = "lxml-4.9.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ef87fca280fb15342726bd5f980f6faf8b84a5287fcc2d4962ea8af88b35130"},
- {file = "lxml-4.9.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:93e414e3206779ef41e5ff2448067213febf260ba747fc65389a3ddaa3fb8715"},
- {file = "lxml-4.9.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6653071f4f9bac46fbc30f3c7838b0e9063ee335908c5d61fb7a4a86c8fd2036"},
- {file = "lxml-4.9.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:32a73c53783becdb7eaf75a2a1525ea8e49379fb7248c3eeefb9412123536387"},
- {file = "lxml-4.9.1-cp38-cp38-win32.whl", hash = "sha256:1a7c59c6ffd6ef5db362b798f350e24ab2cfa5700d53ac6681918f314a4d3b94"},
- {file = "lxml-4.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:1436cf0063bba7888e43f1ba8d58824f085410ea2025befe81150aceb123e345"},
- {file = "lxml-4.9.1-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:4beea0f31491bc086991b97517b9683e5cfb369205dac0148ef685ac12a20a67"},
- {file = "lxml-4.9.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:41fb58868b816c202e8881fd0f179a4644ce6e7cbbb248ef0283a34b73ec73bb"},
- {file = "lxml-4.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:bd34f6d1810d9354dc7e35158aa6cc33456be7706df4420819af6ed966e85448"},
- {file = "lxml-4.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:edffbe3c510d8f4bf8640e02ca019e48a9b72357318383ca60e3330c23aaffc7"},
- {file = "lxml-4.9.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6d949f53ad4fc7cf02c44d6678e7ff05ec5f5552b235b9e136bd52e9bf730b91"},
- {file = "lxml-4.9.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:079b68f197c796e42aa80b1f739f058dcee796dc725cc9a1be0cdb08fc45b000"},
- {file = "lxml-4.9.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9c3a88d20e4fe4a2a4a84bf439a5ac9c9aba400b85244c63a1ab7088f85d9d25"},
- {file = "lxml-4.9.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4e285b5f2bf321fc0857b491b5028c5f276ec0c873b985d58d7748ece1d770dd"},
- {file = "lxml-4.9.1-cp39-cp39-win32.whl", hash = "sha256:ef72013e20dd5ba86a8ae1aed7f56f31d3374189aa8b433e7b12ad182c0d2dfb"},
- {file = "lxml-4.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:10d2017f9150248563bb579cd0d07c61c58da85c922b780060dcc9a3aa9f432d"},
- {file = "lxml-4.9.1-pp37-pypy37_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0538747a9d7827ce3e16a8fdd201a99e661c7dee3c96c885d8ecba3c35d1032c"},
- {file = "lxml-4.9.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:0645e934e940107e2fdbe7c5b6fb8ec6232444260752598bc4d09511bd056c0b"},
- {file = "lxml-4.9.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6daa662aba22ef3258934105be2dd9afa5bb45748f4f702a3b39a5bf53a1f4dc"},
- {file = "lxml-4.9.1-pp38-pypy38_pp73-macosx_10_15_x86_64.whl", hash = "sha256:603a464c2e67d8a546ddaa206d98e3246e5db05594b97db844c2f0a1af37cf5b"},
- {file = "lxml-4.9.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:c4b2e0559b68455c085fb0f6178e9752c4be3bba104d6e881eb5573b399d1eb2"},
- {file = "lxml-4.9.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0f3f0059891d3254c7b5fb935330d6db38d6519ecd238ca4fce93c234b4a0f73"},
- {file = "lxml-4.9.1-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_24_i686.whl", hash = "sha256:c852b1530083a620cb0de5f3cd6826f19862bafeaf77586f1aef326e49d95f0c"},
- {file = "lxml-4.9.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:287605bede6bd36e930577c5925fcea17cb30453d96a7b4c63c14a257118dbb9"},
- {file = "lxml-4.9.1.tar.gz", hash = "sha256:fe749b052bb7233fe5d072fcb549221a8cb1a16725c47c37e42b0b9cb3ff2c3f"},
-]
+lazy-object-proxy = []
+linearmodels = []
+loguru = []
+lxml = []
macholib = []
-markdown-it-py = [
- {file = "markdown-it-py-1.1.0.tar.gz", hash = "sha256:36be6bb3ad987bfdb839f5ba78ddf094552ca38ccbd784ae4f74a4e1419fc6e3"},
- {file = "markdown_it_py-1.1.0-py3-none-any.whl", hash = "sha256:98080fc0bc34c4f2bcf0846a096a9429acbd9d5d8e67ed34026c03c61c464389"},
-]
-markupsafe = [
- {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"},
- {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"},
- {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"},
- {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"},
- {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"},
- {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"},
-]
+markdown-it-py = []
+markupsafe = []
matplotlib = []
matplotlib-inline = []
-mccabe = [
- {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
- {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
-]
-mdit-py-plugins = [
- {file = "mdit-py-plugins-0.2.8.tar.gz", hash = "sha256:5991cef645502e80a5388ec4fc20885d2313d4871e8b8e320ca2de14ac0c015f"},
- {file = "mdit_py_plugins-0.2.8-py3-none-any.whl", hash = "sha256:1833bf738e038e35d89cb3a07eb0d227ed647ce7dd357579b65343740c6d249c"},
-]
-mistune = [
- {file = "mistune-0.8.4-py2.py3-none-any.whl", hash = "sha256:88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4"},
- {file = "mistune-0.8.4.tar.gz", hash = "sha256:59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e"},
-]
-mock = [
- {file = "mock-4.0.3-py3-none-any.whl", hash = "sha256:122fcb64ee37cfad5b3f48d7a7d51875d7031aaf3d8be7c42e2bee25044eee62"},
- {file = "mock-4.0.3.tar.gz", hash = "sha256:7d3fbbde18228f4ff2f1f119a45cdffa458b4c0dee32eb4d2bb2f82554bac7bc"},
-]
+mccabe = []
+mdit-py-plugins = []
+mistune = []
+mock = []
more-itertools = []
-mplfinance = [
- {file = "mplfinance-0.12.9b1-py3-none-any.whl", hash = "sha256:1535ebe59fd2df3137980b087fc264c89943efd8b0c3499327757d4c26c29ac6"},
- {file = "mplfinance-0.12.9b1.tar.gz", hash = "sha256:33691b7d84cfc88d3c56e21583a3c8a655bc0bbaa334c07593de166b82bf81b2"},
-]
-multidict = [
- {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2"},
- {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3"},
- {file = "multidict-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c"},
- {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f"},
- {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9"},
- {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20"},
- {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88"},
- {file = "multidict-6.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7"},
- {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee"},
- {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672"},
- {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9"},
- {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87"},
- {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389"},
- {file = "multidict-6.0.2-cp310-cp310-win32.whl", hash = "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293"},
- {file = "multidict-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658"},
- {file = "multidict-6.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51"},
- {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608"},
- {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3"},
- {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4"},
- {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b"},
- {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8"},
- {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba"},
- {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43"},
- {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8"},
- {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b"},
- {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15"},
- {file = "multidict-6.0.2-cp37-cp37m-win32.whl", hash = "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc"},
- {file = "multidict-6.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a"},
- {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60"},
- {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86"},
- {file = "multidict-6.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d"},
- {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0"},
- {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d"},
- {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376"},
- {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693"},
- {file = "multidict-6.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849"},
- {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49"},
- {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516"},
- {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227"},
- {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9"},
- {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d"},
- {file = "multidict-6.0.2-cp38-cp38-win32.whl", hash = "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57"},
- {file = "multidict-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96"},
- {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c"},
- {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e"},
- {file = "multidict-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071"},
- {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032"},
- {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2"},
- {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c"},
- {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9"},
- {file = "multidict-6.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80"},
- {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d"},
- {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb"},
- {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68"},
- {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360"},
- {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937"},
- {file = "multidict-6.0.2-cp39-cp39-win32.whl", hash = "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a"},
- {file = "multidict-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae"},
- {file = "multidict-6.0.2.tar.gz", hash = "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013"},
-]
-multitasking = [
- {file = "multitasking-0.0.11-py3-none-any.whl", hash = "sha256:1e5b37a5f8fc1e6cfaafd1a82b6b1cc6d2ed20037d3b89c25a84f499bd7b3dd4"},
- {file = "multitasking-0.0.11.tar.gz", hash = "sha256:4d6bc3cc65f9b2dca72fb5a787850a88dae8f620c2b36ae9b55248e51bcd6026"},
-]
-mypy = [
- {file = "mypy-0.930-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:221cc94dc6a801ccc2be7c0c9fd791c5e08d1fa2c5e1c12dec4eab15b2469871"},
- {file = "mypy-0.930-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:db3a87376a1380f396d465bed462e76ea89f838f4c5e967d68ff6ee34b785c31"},
- {file = "mypy-0.930-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1d2296f35aae9802eeb1327058b550371ee382d71374b3e7d2804035ef0b830b"},
- {file = "mypy-0.930-cp310-cp310-win_amd64.whl", hash = "sha256:959319b9a3cafc33a8185f440a433ba520239c72e733bf91f9efd67b0a8e9b30"},
- {file = "mypy-0.930-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:45a4dc21c789cfd09b8ccafe114d6de66f0b341ad761338de717192f19397a8c"},
- {file = "mypy-0.930-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1e689e92cdebd87607a041585f1dc7339aa2e8a9f9bad9ba7e6ece619431b20c"},
- {file = "mypy-0.930-cp36-cp36m-win_amd64.whl", hash = "sha256:ed4e0ea066bb12f56b2812a15ff223c57c0a44eca817ceb96b214bb055c7051f"},
- {file = "mypy-0.930-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a9d8dffefba634b27d650e0de2564379a1a367e2e08d6617d8f89261a3bf63b2"},
- {file = "mypy-0.930-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b419e9721260161e70d054a15abbd50603c16f159860cfd0daeab647d828fc29"},
- {file = "mypy-0.930-cp37-cp37m-win_amd64.whl", hash = "sha256:601f46593f627f8a9b944f74fd387c9b5f4266b39abad77471947069c2fc7651"},
- {file = "mypy-0.930-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1ea7199780c1d7940b82dbc0a4e37722b4e3851264dbba81e01abecc9052d8a7"},
- {file = "mypy-0.930-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:70b197dd8c78fc5d2daf84bd093e8466a2b2e007eedaa85e792e513a820adbf7"},
- {file = "mypy-0.930-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5feb56f8bb280468fe5fc8e6f56f48f99aa0df9eed3c507a11505ee4657b5380"},
- {file = "mypy-0.930-cp38-cp38-win_amd64.whl", hash = "sha256:2e9c5409e9cb81049bb03fa1009b573dea87976713e3898561567a86c4eaee01"},
- {file = "mypy-0.930-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:554873e45c1ca20f31ddf873deb67fa5d2e87b76b97db50669f0468ccded8fae"},
- {file = "mypy-0.930-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0feb82e9fa849affca7edd24713dbe809dce780ced9f3feca5ed3d80e40b777f"},
- {file = "mypy-0.930-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bc1a0607ea03c30225347334af66b0af12eefba018a89a88c209e02b7065ea95"},
- {file = "mypy-0.930-cp39-cp39-win_amd64.whl", hash = "sha256:f9f665d69034b1fcfdbcd4197480d26298bbfb5d2dfe206245b6498addb34999"},
- {file = "mypy-0.930-py3-none-any.whl", hash = "sha256:bf4a44e03040206f7c058d1f5ba02ef2d1820720c88bc4285c7d9a4269f54173"},
- {file = "mypy-0.930.tar.gz", hash = "sha256:51426262ae4714cc7dd5439814676e0992b55bcc0f6514eccb4cf8e0678962c2"},
-]
-mypy-extensions = [
- {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
- {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
-]
-myst-parser = [
- {file = "myst-parser-0.15.2.tar.gz", hash = "sha256:f7f3b2d62db7655cde658eb5d62b2ec2a4631308137bd8d10f296a40d57bbbeb"},
- {file = "myst_parser-0.15.2-py3-none-any.whl", hash = "sha256:40124b6f27a4c42ac7f06b385e23a9dcd03d84801e9c7130b59b3729a554b1f9"},
-]
-nbclassic = [
- {file = "nbclassic-0.4.5-py3-none-any.whl", hash = "sha256:07fba5a9e52a6ed7e795b45d300629b2a07a69e5a47398833b7977a7ecc8a3c1"},
- {file = "nbclassic-0.4.5.tar.gz", hash = "sha256:05704c6cdd8301bf52e40ed9fae39e80d6bc5d2d447dc67831c145b4dd928779"},
-]
-nbclient = [
- {file = "nbclient-0.5.13-py3-none-any.whl", hash = "sha256:47ac905af59379913c1f8f541098d2550153cf8dc58553cbe18c702b181518b0"},
- {file = "nbclient-0.5.13.tar.gz", hash = "sha256:40c52c9b5e3c31faecaee69f202b3f53e38d7c1c563de0fadde9d7eda0fdafe8"},
-]
+mplfinance = []
+multidict = []
+multitasking = []
+mypy = []
+mypy-extensions = []
+myst-parser = []
+nbclassic = []
+nbclient = []
nbconvert = []
nbformat = []
nbmake = []
-nest-asyncio = [
- {file = "nest_asyncio-1.5.6-py3-none-any.whl", hash = "sha256:b9a953fb40dceaa587d109609098db21900182b16440652454a146cffb06e8b8"},
- {file = "nest_asyncio-1.5.6.tar.gz", hash = "sha256:d267cc1ff794403f7df692964d1d2a3fa9418ffea2a3f6859a439ff482fef290"},
-]
-networkx = [
- {file = "networkx-2.8.7-py3-none-any.whl", hash = "sha256:15cdf7f7c157637107ea690cabbc488018f8256fa28242aed0fb24c93c03a06d"},
- {file = "networkx-2.8.7.tar.gz", hash = "sha256:815383fd52ece0a7024b5fd8408cc13a389ea350cd912178b82eed8b96f82cd3"},
-]
-nodeenv = [
- {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"},
- {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"},
-]
+nest-asyncio = []
+networkx = []
+nodeenv = []
notebook = []
notebook-shim = []
numpy = []
-oandapyv20 = [
- {file = "oandapyV20-0.6.3.tar.gz", hash = "sha256:173a56b41ab3a19315c2fbea6f9aa3f0c17f64ba84acff014d072c64c1844b28"},
-]
+oandapyv20 = []
oauthlib = []
-onetimepass = [
- {file = "onetimepass-1.0.1.tar.gz", hash = "sha256:a569dac076d6e3761cbc55e36952144a637ca1b075c6d509de1c1dbc5e7f6a27"},
-]
-openpyxl = [
- {file = "openpyxl-3.0.10-py2.py3-none-any.whl", hash = "sha256:0ab6d25d01799f97a9464630abacbb34aafecdcaa0ef3cba6d6b3499867d0355"},
- {file = "openpyxl-3.0.10.tar.gz", hash = "sha256:e47805627aebcf860edb4edf7987b1309c1b3632f3750538ed962bbcc3bd7449"},
-]
-osqp = [
- {file = "osqp-0.6.2.post5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c7b3ae95221ad6f607dc4a69f36b7a0c71ca434ce85dcbf5cfa084770be5b249"},
- {file = "osqp-0.6.2.post5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26664bd4238f0f92642f532b23e61efba810a6debba0b3117300749f801e9c25"},
- {file = "osqp-0.6.2.post5-cp310-cp310-win_amd64.whl", hash = "sha256:ff71646bc9d55c5b3a72cc9b4197e51c36d25d8b2bb81f975d3ce7772ff188ec"},
- {file = "osqp-0.6.2.post5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4ca601c5008600b3e0a408339be21f9d626c497b0b0c4dbe4ffe6d6dbbed1b9f"},
- {file = "osqp-0.6.2.post5-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07602c8747ce7a177d091bb6d47ce8f214997a86b7577ddee4adae43e9ac92f"},
- {file = "osqp-0.6.2.post5-cp36-cp36m-win_amd64.whl", hash = "sha256:8c2e40e6788b860887d584a9929ad1c0e436aab8f82bb24da7b165034cb04017"},
- {file = "osqp-0.6.2.post5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:73a307a93fa7ab68b610e08637c95940070a27f11fda5a2e7a7095cfaff3f0ef"},
- {file = "osqp-0.6.2.post5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77408f93ed261581fe498505c69480fb8584c8c0da2a2cd0710bb4bae0c872f5"},
- {file = "osqp-0.6.2.post5-cp37-cp37m-win_amd64.whl", hash = "sha256:648cb4e34caf0ee948b34a1d0b184f5233e30009090884e0d75503f868bf7b1f"},
- {file = "osqp-0.6.2.post5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:51a315e02a4cb42e1911047ec6b2a44b67a269d4b5d37d7ee737654206915c82"},
- {file = "osqp-0.6.2.post5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c23bb95e6f72c6b253737edb9e4ef47ceccc3d891c287041ed5fe5f173d317bb"},
- {file = "osqp-0.6.2.post5-cp38-cp38-win_amd64.whl", hash = "sha256:908d42fb5d1d9cb36d74a8f3db69384ed1813f1a3e755367557395ce7cf05e16"},
- {file = "osqp-0.6.2.post5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c9470c5d58535d31080cb693568916a3e837f09dfa94819a85284b36b3626738"},
- {file = "osqp-0.6.2.post5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8003fc363f707daa46fef3af548e6a580372154d6cd49a7bf2f569ba5f807d15"},
- {file = "osqp-0.6.2.post5-cp39-cp39-win_amd64.whl", hash = "sha256:b1e30d6fa10ed11a95023d7308ec1588de3f5b049d09a4d0cc49e057f8e9ce47"},
- {file = "osqp-0.6.2.post5.tar.gz", hash = "sha256:b2fa17aae42a7ed498ec261b33f262bb4b3605e7e8464062159d9fae817f0d61"},
-]
-packaging = [
- {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
- {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
-]
+onetimepass = []
+openpyxl = []
+osqp = []
+packaging = []
pandas = []
-pandas-datareader = [
- {file = "pandas-datareader-0.10.0.tar.gz", hash = "sha256:9fc3c63d39bc0c10c2683f1c6d503ff625020383e38f6cbe14134826b454d5a6"},
- {file = "pandas_datareader-0.10.0-py3-none-any.whl", hash = "sha256:0b95ff3635bc3ee1a6073521b557ab0e3c39d219f4a3b720b6b0bc6e8cdb4bb7"},
-]
-pandas-market-calendars = [
- {file = "pandas_market_calendars-3.2-py3-none-any.whl", hash = "sha256:bf7509d1d40c918b6b91d261adde1e8ac7bf640f4403f45a8ac9f4d4fe47154b"},
- {file = "pandas_market_calendars-3.2.tar.gz", hash = "sha256:5c67ec7158c298aa3efc6913d0c53b82239de779611d5eec23333ff5a2927cf2"},
-]
-pandas-ta = [
- {file = "pandas_ta-0.3.14b.tar.gz", hash = "sha256:0fa35aec831d2815ea30b871688a8d20a76b288a7be2d26cc00c35cd8c09a993"},
-]
-pandocfilters = [
- {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"},
- {file = "pandocfilters-1.5.0.tar.gz", hash = "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38"},
-]
-parso = [
- {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
- {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
-]
+pandas-datareader = []
+pandas-market-calendars = []
+pandas-ta = []
+pandocfilters = []
+papermill = []
+parso = []
pathspec = []
patsy = []
-pbr = [
- {file = "pbr-5.11.0-py2.py3-none-any.whl", hash = "sha256:db2317ff07c84c4c63648c9064a79fe9d9f5c7ce85a9099d4b6258b3db83225a"},
- {file = "pbr-5.11.0.tar.gz", hash = "sha256:b97bc6695b2aff02144133c2e7399d5885223d42b7912ffaec2ca3898e673bfe"},
-]
-pefile = [
- {file = "pefile-2022.5.30.tar.gz", hash = "sha256:a5488a3dd1fd021ce33f969780b88fe0f7eebb76eb20996d7318f307612a045b"},
-]
-pexpect = [
- {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"},
- {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"},
-]
-pickleshare = [
- {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"},
- {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"},
-]
+pbr = []
+pefile = []
+pexpect = []
+pickleshare = []
pillow = []
-platformdirs = [
- {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"},
- {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"},
-]
+platformdirs = []
plotly = []
-pluggy = [
- {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
- {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
-]
-pmdarima = [
- {file = "pmdarima-1.8.5-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:cffaeb8c7fa51f8e6ddcf417a5ce6eceae5d9fe88d9bf093a2272c9120562346"},
- {file = "pmdarima-1.8.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:9a2a332796bc5932332908c3fa9b20378cba182002a7232efec5bdf179e1009e"},
- {file = "pmdarima-1.8.5-cp310-cp310-win_amd64.whl", hash = "sha256:b5eff0d65282d7b76ada8aa12cfb60140b6bbd9a6977a8c3b8fae81224dda684"},
- {file = "pmdarima-1.8.5-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:eeb93bdb18ed054de34ec27a50207727c76f9ca6805c040316e3c2f6434d5148"},
- {file = "pmdarima-1.8.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:067b08bd515118ad61a16bec03d94ebb83f2704733bd928c051cab71d78abb6d"},
- {file = "pmdarima-1.8.5-cp37-cp37m-win32.whl", hash = "sha256:b3406734f132b343c737b4cf24de9305276414dbc64b84729e6be60decdcea92"},
- {file = "pmdarima-1.8.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fb26531ac291b59d6b8d8a396839686f5d2673775febb41995781114bec45123"},
- {file = "pmdarima-1.8.5-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:069648fc214aeb17f04ef2e2ecb731625a935f781649b38f7bed65e88bd15995"},
- {file = "pmdarima-1.8.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:04a491d0a712a715beceb20c8576ad339446cbe4b022896935970fbe7326bf4d"},
- {file = "pmdarima-1.8.5-cp38-cp38-win32.whl", hash = "sha256:e2d0e99fb6608df1c62720baf3703f9fb151adcf3617356e3bf9d91634ddde51"},
- {file = "pmdarima-1.8.5-cp38-cp38-win_amd64.whl", hash = "sha256:9b0eceb8b71c2972d7c64f77ee0765f15802f9a97f78b1af3f50d91f79872871"},
- {file = "pmdarima-1.8.5-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:2ad0aefbff88a49592b70e70ac9283775dc65484e7a07e95db4e93504d5139fd"},
- {file = "pmdarima-1.8.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:af449c9076e942ad00c348ee291c23935ff3ae2871f812146be7b57ee25fa2ec"},
- {file = "pmdarima-1.8.5-cp39-cp39-win32.whl", hash = "sha256:8cafb3760bde70753452ad22996b5e84e40129e0c18557b40376045612d2207a"},
- {file = "pmdarima-1.8.5-cp39-cp39-win_amd64.whl", hash = "sha256:645b692b927965b0fb562ab5a8f1dffdd6cfbca84b3ca797796ada245738109d"},
- {file = "pmdarima-1.8.5.tar.gz", hash = "sha256:090a7e195e849059e6b7f9908d80539f63c0771d8f9c5da44472960f17fcc9fa"},
-]
-praw = [
- {file = "praw-7.6.0-py3-none-any.whl", hash = "sha256:0d8a75c8c9f78c0101f31653b68d23d0d9cee9a6ada7910f809610edcd905090"},
- {file = "praw-7.6.0.tar.gz", hash = "sha256:3eeebe093f2d905b6c99e18aa8c8f64071b2e7a05e60b618166ee53397cdae72"},
-]
-prawcore = [
- {file = "prawcore-2.3.0-py3-none-any.whl", hash = "sha256:48c17db447fa06a13ca3e722201f443031437708daa736c05a1df895fbcceff5"},
- {file = "prawcore-2.3.0.tar.gz", hash = "sha256:daf1ccd4b7a80dc4e6567d48336d782e94a9a6dad83770fc2edf76dc9a84f56d"},
-]
+pluggy = []
+pmdarima = []
+praw = []
+prawcore = []
pre-commit = []
prometheus-client = []
prompt-toolkit = []
-property-cached = [
- {file = "property-cached-1.6.4.zip", hash = "sha256:3e9c4ef1ed3653909147510481d7df62a3cfb483461a6986a6f1dcd09b2ebb73"},
- {file = "property_cached-1.6.4-py2.py3-none-any.whl", hash = "sha256:135fc059ec969c1646424a0db15e7fbe1b5f8c36c0006d0b3c91ba568c11e7d8"},
-]
-protobuf = [
- {file = "protobuf-3.20.3-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:f4bd856d702e5b0d96a00ec6b307b0f51c1982c2bf9c0052cf9019e9a544ba99"},
- {file = "protobuf-3.20.3-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9aae4406ea63d825636cc11ffb34ad3379335803216ee3a856787bcf5ccc751e"},
- {file = "protobuf-3.20.3-cp310-cp310-win32.whl", hash = "sha256:28545383d61f55b57cf4df63eebd9827754fd2dc25f80c5253f9184235db242c"},
- {file = "protobuf-3.20.3-cp310-cp310-win_amd64.whl", hash = "sha256:67a3598f0a2dcbc58d02dd1928544e7d88f764b47d4a286202913f0b2801c2e7"},
- {file = "protobuf-3.20.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:899dc660cd599d7352d6f10d83c95df430a38b410c1b66b407a6b29265d66469"},
- {file = "protobuf-3.20.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e64857f395505ebf3d2569935506ae0dfc4a15cb80dc25261176c784662cdcc4"},
- {file = "protobuf-3.20.3-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:d9e4432ff660d67d775c66ac42a67cf2453c27cb4d738fc22cb53b5d84c135d4"},
- {file = "protobuf-3.20.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:74480f79a023f90dc6e18febbf7b8bac7508420f2006fabd512013c0c238f454"},
- {file = "protobuf-3.20.3-cp37-cp37m-win32.whl", hash = "sha256:b6cc7ba72a8850621bfec987cb72623e703b7fe2b9127a161ce61e61558ad905"},
- {file = "protobuf-3.20.3-cp37-cp37m-win_amd64.whl", hash = "sha256:8c0c984a1b8fef4086329ff8dd19ac77576b384079247c770f29cc8ce3afa06c"},
- {file = "protobuf-3.20.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:de78575669dddf6099a8a0f46a27e82a1783c557ccc38ee620ed8cc96d3be7d7"},
- {file = "protobuf-3.20.3-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:f4c42102bc82a51108e449cbb32b19b180022941c727bac0cfd50170341f16ee"},
- {file = "protobuf-3.20.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:44246bab5dd4b7fbd3c0c80b6f16686808fab0e4aca819ade6e8d294a29c7050"},
- {file = "protobuf-3.20.3-cp38-cp38-win32.whl", hash = "sha256:c02ce36ec760252242a33967d51c289fd0e1c0e6e5cc9397e2279177716add86"},
- {file = "protobuf-3.20.3-cp38-cp38-win_amd64.whl", hash = "sha256:447d43819997825d4e71bf5769d869b968ce96848b6479397e29fc24c4a5dfe9"},
- {file = "protobuf-3.20.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:398a9e0c3eaceb34ec1aee71894ca3299605fa8e761544934378bbc6c97de23b"},
- {file = "protobuf-3.20.3-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bf01b5720be110540be4286e791db73f84a2b721072a3711efff6c324cdf074b"},
- {file = "protobuf-3.20.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:daa564862dd0d39c00f8086f88700fdbe8bc717e993a21e90711acfed02f2402"},
- {file = "protobuf-3.20.3-cp39-cp39-win32.whl", hash = "sha256:819559cafa1a373b7096a482b504ae8a857c89593cf3a25af743ac9ecbd23480"},
- {file = "protobuf-3.20.3-cp39-cp39-win_amd64.whl", hash = "sha256:03038ac1cfbc41aa21f6afcbcd357281d7521b4157926f30ebecc8d4ea59dcb7"},
- {file = "protobuf-3.20.3-py2.py3-none-any.whl", hash = "sha256:a7ca6d488aa8ff7f329d4c545b2dbad8ac31464f1d8b1c87ad1346717731e4db"},
- {file = "protobuf-3.20.3.tar.gz", hash = "sha256:2e3427429c9cffebf259491be0af70189607f365c2f41c7c3764af6f337105f2"},
-]
-psaw = [
- {file = "psaw-0.0.12-py3-none-any.whl", hash = "sha256:cfbfdf1953ee5f31ca9d4ec6d471873ace960da9fbc7234b9d19a059d5cfa2d6"},
-]
+property-cached = []
+protobuf = []
+psaw = []
psutil = []
-ptyprocess = [
- {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
- {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
-]
-pure-eval = [
- {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"},
- {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"},
-]
-py = [
- {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
- {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
-]
-pyally = [
- {file = "pyally-1.1.2-py3-none-any.whl", hash = "sha256:eeb128befcec02e0aac942f1700584f43ff8194955d19ff7a1f96d55de50db36"},
- {file = "pyally-1.1.2.tar.gz", hash = "sha256:d5dba065ddbf18261b83e29e5fffff731d9b03a4278eb9a9333a17f2d1772d4d"},
-]
+ptyprocess = []
+pure-eval = []
+py = []
+pyally = []
pyarrow = []
pycares = []
-pycodestyle = [
- {file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"},
- {file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"},
-]
+pycodestyle = []
pycoingecko = []
-pycparser = [
- {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
- {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
-]
-pydantic = [
- {file = "pydantic-1.8.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:05ddfd37c1720c392f4e0d43c484217b7521558302e7069ce8d318438d297739"},
- {file = "pydantic-1.8.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a7c6002203fe2c5a1b5cbb141bb85060cbff88c2d78eccbc72d97eb7022c43e4"},
- {file = "pydantic-1.8.2-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:589eb6cd6361e8ac341db97602eb7f354551482368a37f4fd086c0733548308e"},
- {file = "pydantic-1.8.2-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:10e5622224245941efc193ad1d159887872776df7a8fd592ed746aa25d071840"},
- {file = "pydantic-1.8.2-cp36-cp36m-win_amd64.whl", hash = "sha256:99a9fc39470010c45c161a1dc584997f1feb13f689ecf645f59bb4ba623e586b"},
- {file = "pydantic-1.8.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a83db7205f60c6a86f2c44a61791d993dff4b73135df1973ecd9eed5ea0bda20"},
- {file = "pydantic-1.8.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:41b542c0b3c42dc17da70554bc6f38cbc30d7066d2c2815a94499b5684582ecb"},
- {file = "pydantic-1.8.2-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:ea5cb40a3b23b3265f6325727ddfc45141b08ed665458be8c6285e7b85bd73a1"},
- {file = "pydantic-1.8.2-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:18b5ea242dd3e62dbf89b2b0ec9ba6c7b5abaf6af85b95a97b00279f65845a23"},
- {file = "pydantic-1.8.2-cp37-cp37m-win_amd64.whl", hash = "sha256:234a6c19f1c14e25e362cb05c68afb7f183eb931dd3cd4605eafff055ebbf287"},
- {file = "pydantic-1.8.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:021ea0e4133e8c824775a0cfe098677acf6fa5a3cbf9206a376eed3fc09302cd"},
- {file = "pydantic-1.8.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e710876437bc07bd414ff453ac8ec63d219e7690128d925c6e82889d674bb505"},
- {file = "pydantic-1.8.2-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:ac8eed4ca3bd3aadc58a13c2aa93cd8a884bcf21cb019f8cfecaae3b6ce3746e"},
- {file = "pydantic-1.8.2-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:4a03cbbe743e9c7247ceae6f0d8898f7a64bb65800a45cbdc52d65e370570820"},
- {file = "pydantic-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:8621559dcf5afacf0069ed194278f35c255dc1a1385c28b32dd6c110fd6531b3"},
- {file = "pydantic-1.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8b223557f9510cf0bfd8b01316bf6dd281cf41826607eada99662f5e4963f316"},
- {file = "pydantic-1.8.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:244ad78eeb388a43b0c927e74d3af78008e944074b7d0f4f696ddd5b2af43c62"},
- {file = "pydantic-1.8.2-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:05ef5246a7ffd2ce12a619cbb29f3307b7c4509307b1b49f456657b43529dc6f"},
- {file = "pydantic-1.8.2-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:54cd5121383f4a461ff7644c7ca20c0419d58052db70d8791eacbbe31528916b"},
- {file = "pydantic-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:4be75bebf676a5f0f87937c6ddb061fa39cbea067240d98e298508c1bda6f3f3"},
- {file = "pydantic-1.8.2-py3-none-any.whl", hash = "sha256:fec866a0b59f372b7e776f2d7308511784dace622e0992a0b59ea3ccee0ae833"},
- {file = "pydantic-1.8.2.tar.gz", hash = "sha256:26464e57ccaafe72b7ad156fdaa4e9b9ef051f69e175dbbb463283000c05ab7b"},
-]
+pycparser = []
+pydantic = []
pydeck = []
-pyerfa = [
- {file = "pyerfa-2.0.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:278832de7803f2fb0ef4b14263200f98dfdb3eaa78dc63835d93796fd8fc42c6"},
- {file = "pyerfa-2.0.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:629248cebc8626a52e80f69d4e2f30cc6e751f57803f5ba7ec99edd09785d181"},
- {file = "pyerfa-2.0.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3285d95dfe398a931a633da961f6f1c0b8690f2a3b1c510a4efe639f784cd9c7"},
- {file = "pyerfa-2.0.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:177f50f0e8354f1a7115c2d4784668b365f1cc2f2c7d1e2f4ddf354160559b32"},
- {file = "pyerfa-2.0.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:041939a7554a98b72885904ffddd8882567191bee62358727679448480174c31"},
- {file = "pyerfa-2.0.0.1-cp310-cp310-win32.whl", hash = "sha256:f9e149bc3d423ae891f6587c1383fd471ae07744b88152e66b5e9f64a8bc9006"},
- {file = "pyerfa-2.0.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:f00dc4fc48a16eb39fd0121f2f06c03ee762b79a207cc5b0bc17d94191b51302"},
- {file = "pyerfa-2.0.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1ba3668e1e181a678ce788d23a4f8666aabd8518f77fdde5157ba4744bc73d4a"},
- {file = "pyerfa-2.0.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8f08f6e6d75a261bb92b707bea19eba2e46a8fcbfb499b789f3eb0d0352ea00"},
- {file = "pyerfa-2.0.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:da89304d6b25ac056e470f44f85770b04c9674eced07a7f93b5eb0ce1edaabd9"},
- {file = "pyerfa-2.0.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:36738ba75e7a69e0ea6a7e96a5d33a852816427e7e94e7089c188ef920b02669"},
- {file = "pyerfa-2.0.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5c077aed4ccd585c1fe2f96ada8edb66e9d27b4ae8ff13ea2783283b298ba0c6"},
- {file = "pyerfa-2.0.0.1-cp37-cp37m-win32.whl", hash = "sha256:0833f8ebba9f84a19a04ee5ca5aa90be75729abfbb8328e7a6d89ed1b04e058c"},
- {file = "pyerfa-2.0.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:e86c08c9c0b75e448818473c6d709e3887a439c05a1aa34042d26774251422b7"},
- {file = "pyerfa-2.0.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b935fa9d10dfd7206760859236640c835aa652609c0ae8a6584593324eb6f318"},
- {file = "pyerfa-2.0.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67711a748821c5d91f7a8907b9125094dfc3e5ab6a6b7ad8e207fd6afbe6b37f"},
- {file = "pyerfa-2.0.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d2c10838241aaf17279468dcc731cb2c09bfb7dd7b340c0f527fd70c7c9e53d1"},
- {file = "pyerfa-2.0.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:37249e1e2b378d1f56e9379e4bb8f2cf87645c160a8a3e92166a1b7bb7ad7ea6"},
- {file = "pyerfa-2.0.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f76fb4b64a87da2af9d0b6b79cc25e1ecc5b4143b2b3c8c9f10b221748c5db4d"},
- {file = "pyerfa-2.0.0.1-cp38-cp38-win32.whl", hash = "sha256:486e672c52bf58eab61140968660ac7fb3b756116b53c26c334ae95dadd943ee"},
- {file = "pyerfa-2.0.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:d603f1e8123f98a0593433aa6dad4ba03f0b0ceef4cb3e96f9a69aa7ab8d5c61"},
- {file = "pyerfa-2.0.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ef5590b2075c50395b958f102988e519e339d96509dfdca0360f26dde94c47e7"},
- {file = "pyerfa-2.0.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7ca8c98842f1ae10c1fbcea0e03a41ddc13456da88da2dc9b8335a8c414d7a3"},
- {file = "pyerfa-2.0.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d3e7dedce1d7e4e044f6f81d192b1f6b373c8ad6716aa8721ec6d3cf4d36f5f3"},
- {file = "pyerfa-2.0.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:690116a6026ee84ce5fec794c9e21bdc8c0ac8345d6722323810181486745068"},
- {file = "pyerfa-2.0.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:da5ee24eaf5e5f841f36885ea16461800b7bea11df5b657bcff85d7a7f51d2d8"},
- {file = "pyerfa-2.0.0.1-cp39-cp39-win32.whl", hash = "sha256:7895b7e6f3bc36442d1969bf3bda5a4c3b661be7a5a468798369cbd5d81023d8"},
- {file = "pyerfa-2.0.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:63a83c35cea8c5d50d53c18089f1e625c0ffc59a7a5b8d44e0f1b3ec5288f183"},
- {file = "pyerfa-2.0.0.1.tar.gz", hash = "sha256:2fd4637ffe2c1e6ede7482c13f583ba7c73119d78bef90175448ce506a0ede30"},
-]
-pyex = [
- {file = "pyEX-0.5.0-py2.py3-none-any.whl", hash = "sha256:8860b8eb9c15d91e5f552786fbe8f8ecd46c4c4931e5cb82ba41187eb603f742"},
- {file = "pyEX-0.5.0.tar.gz", hash = "sha256:e85c392733aec3717b00d05640bd7efcfc87bf949064a7f31112293fe395c27e"},
-]
-pyflakes = [
- {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"},
- {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"},
-]
-pygls = [
- {file = "pygls-0.11.3-py3-none-any.whl", hash = "sha256:5c925b182f2b0aa38d0ce83a9829ca5aed8eb9c7079cffc5bddff2da1033b58f"},
- {file = "pygls-0.11.3.tar.gz", hash = "sha256:4d86fc854e6d6613cd42bf7511e9c6aac947fc8d62ff973a705570b036d969f2"},
-]
+pyerfa = []
+pyex = []
+pyflakes = []
+pygls = []
pygments = []
-pyhdfe = [
- {file = "pyhdfe-0.1.0-py3-none-any.whl", hash = "sha256:21c6f7d9f464929ce5acfce54d46684c4449a5bbe14d2986237ecb30a723b9ee"},
- {file = "pyhdfe-0.1.0.tar.gz", hash = "sha256:820a40722d70e94cec1dcd140d6c480f02578fee96660b722a2e722c2222e377"},
-]
-pyinstaller = [
- {file = "pyinstaller-4.10-py3-none-macosx_10_13_universal2.whl", hash = "sha256:15557cd1a79d182967f0a5040750e6902e13ebd6cab41e3ed84d7b28a306357b"},
- {file = "pyinstaller-4.10-py3-none-manylinux2014_aarch64.whl", hash = "sha256:f2166ff2cd95eefb0d377ae8d1071f186fa25edd410ede65b376162d5ec41909"},
- {file = "pyinstaller-4.10-py3-none-manylinux2014_i686.whl", hash = "sha256:7d94518ba1f8e9a8577345312276891ad7d6cd9785e453e9951b35647e2c7078"},
- {file = "pyinstaller-4.10-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:70c71e827f4b34602cbc7a0947a067b662c1cbdc4db51832e13b97cca3c54dd7"},
- {file = "pyinstaller-4.10-py3-none-manylinux2014_s390x.whl", hash = "sha256:05c21117b84199272ebd355b556af4714f6e79245e1c435d6f16653786d7d17e"},
- {file = "pyinstaller-4.10-py3-none-manylinux2014_x86_64.whl", hash = "sha256:714c4dcc319a41416744d1e30c6317405dfaed80d2adc45f8bfa70dc7367e664"},
- {file = "pyinstaller-4.10-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:581620bdcd32f01e89b13231256b807bb090e7eadf40c81c864ec402afa4758a"},
- {file = "pyinstaller-4.10-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:d4f79c0a774451f12baca4e476376418f011fa3039dde8fd172ea2aa8ff67bad"},
- {file = "pyinstaller-4.10-py3-none-win32.whl", hash = "sha256:cfed0b3a43e73550a43a094610328109564710b9514afa093ef7199d072cae87"},
- {file = "pyinstaller-4.10-py3-none-win_amd64.whl", hash = "sha256:0dcaf6557cdb2da763c46e06e95a94a7634ab03fb09d91bc77988b01ee05c907"},
- {file = "pyinstaller-4.10.tar.gz", hash = "sha256:7749c868d2e2dc84df7d6f65437226183c8a366f3a99bb2737785625c3a3cca1"},
-]
+pyhdfe = []
+pyinstaller = []
pyinstaller-hooks-contrib = []
-pylint = [
- {file = "pylint-2.15.2-py3-none-any.whl", hash = "sha256:cc3da458ba810c49d330e09013dec7ced5217772dec8f043ccdd34dae648fde8"},
- {file = "pylint-2.15.2.tar.gz", hash = "sha256:f63404a2547edb5247da263748771ac9a806ed1de4174cda01293c08ddbc2999"},
-]
-pyluach = [
- {file = "pyluach-2.0.2-py3-none-any.whl", hash = "sha256:560653fdb572ce47db02739c1497a0597ca4f53d95082e5db6e4f01a30a72ca2"},
- {file = "pyluach-2.0.2.tar.gz", hash = "sha256:97894311f1b0d59f5fcab1d12147f8049bce315915d8dcd806bfbf41c94b50cf"},
-]
-pymeeus = [
- {file = "PyMeeus-0.5.11.tar.gz", hash = "sha256:bb9d670818d8b0594317b48a7dadea02a0594e5344263bf2054e1a011c8fed55"},
-]
+pylint = []
+pyluach = []
+pymeeus = []
pymongo = []
pympler = []
pyobjc-core = []
pyobjc-framework-cocoa = []
pyotp = []
-pyparsing = [
- {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"},
- {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
-]
-pyportfolioopt = [
- {file = "pyportfolioopt-1.5.2-py3-none-any.whl", hash = "sha256:b6a3626e95109f5d734cd7fd64d280b52d717150ddd6d88336ac6867c426763c"},
- {file = "pyportfolioopt-1.5.2.tar.gz", hash = "sha256:afe65369ae14a48c40530779f1c42dda13ec6ef7ea2e0c5c43ee7795972de69a"},
-]
-pyprind = [
- {file = "PyPrind-2.11.3-py2.py3-none-any.whl", hash = "sha256:cc8edb66aabb18f25f7a3cce65312b3bc64b49992ddc93ba4cf511e5e25c1be3"},
- {file = "PyPrind-2.11.3.tar.gz", hash = "sha256:e37dcab6e1a9c8e0a7f0fce65fde7a79e2deda1c75aa015910a49e2137b54cbf"},
-]
-pyrsistent = [
- {file = "pyrsistent-0.18.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:df46c854f490f81210870e509818b729db4488e1f30f2a1ce1698b2295a878d1"},
- {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d45866ececf4a5fff8742c25722da6d4c9e180daa7b405dc0a2a2790d668c26"},
- {file = "pyrsistent-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ed6784ceac462a7d6fcb7e9b663e93b9a6fb373b7f43594f9ff68875788e01e"},
- {file = "pyrsistent-0.18.1-cp310-cp310-win32.whl", hash = "sha256:e4f3149fd5eb9b285d6bfb54d2e5173f6a116fe19172686797c056672689daf6"},
- {file = "pyrsistent-0.18.1-cp310-cp310-win_amd64.whl", hash = "sha256:636ce2dc235046ccd3d8c56a7ad54e99d5c1cd0ef07d9ae847306c91d11b5fec"},
- {file = "pyrsistent-0.18.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e92a52c166426efbe0d1ec1332ee9119b6d32fc1f0bbfd55d5c1088070e7fc1b"},
- {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7a096646eab884bf8bed965bad63ea327e0d0c38989fc83c5ea7b8a87037bfc"},
- {file = "pyrsistent-0.18.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cdfd2c361b8a8e5d9499b9082b501c452ade8bbf42aef97ea04854f4a3f43b22"},
- {file = "pyrsistent-0.18.1-cp37-cp37m-win32.whl", hash = "sha256:7ec335fc998faa4febe75cc5268a9eac0478b3f681602c1f27befaf2a1abe1d8"},
- {file = "pyrsistent-0.18.1-cp37-cp37m-win_amd64.whl", hash = "sha256:6455fc599df93d1f60e1c5c4fe471499f08d190d57eca040c0ea182301321286"},
- {file = "pyrsistent-0.18.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:fd8da6d0124efa2f67d86fa70c851022f87c98e205f0594e1fae044e7119a5a6"},
- {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7bfe2388663fd18bd8ce7db2c91c7400bf3e1a9e8bd7d63bf7e77d39051b85ec"},
- {file = "pyrsistent-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e3e1fcc45199df76053026a51cc59ab2ea3fc7c094c6627e93b7b44cdae2c8c"},
- {file = "pyrsistent-0.18.1-cp38-cp38-win32.whl", hash = "sha256:b568f35ad53a7b07ed9b1b2bae09eb15cdd671a5ba5d2c66caee40dbf91c68ca"},
- {file = "pyrsistent-0.18.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1b96547410f76078eaf66d282ddca2e4baae8964364abb4f4dcdde855cd123a"},
- {file = "pyrsistent-0.18.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f87cc2863ef33c709e237d4b5f4502a62a00fab450c9e020892e8e2ede5847f5"},
- {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bc66318fb7ee012071b2792024564973ecc80e9522842eb4e17743604b5e045"},
- {file = "pyrsistent-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:914474c9f1d93080338ace89cb2acee74f4f666fb0424896fcfb8d86058bf17c"},
- {file = "pyrsistent-0.18.1-cp39-cp39-win32.whl", hash = "sha256:1b34eedd6812bf4d33814fca1b66005805d3640ce53140ab8bbb1e2651b0d9bc"},
- {file = "pyrsistent-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07"},
- {file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"},
-]
-pytest = [
- {file = "pytest-6.2.5-py3-none-any.whl", hash = "sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134"},
- {file = "pytest-6.2.5.tar.gz", hash = "sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89"},
-]
-pytest-cov = [
- {file = "pytest-cov-3.0.0.tar.gz", hash = "sha256:e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470"},
- {file = "pytest_cov-3.0.0-py3-none-any.whl", hash = "sha256:578d5d15ac4a25e5f961c938b85a05b09fdaae9deef3bb6de9a6e766622ca7a6"},
-]
-pytest-mock = [
- {file = "pytest-mock-3.10.0.tar.gz", hash = "sha256:fbbdb085ef7c252a326fd8cdcac0aa3b1333d8811f131bdcc701002e1be7ed4f"},
- {file = "pytest_mock-3.10.0-py3-none-any.whl", hash = "sha256:f4c973eeae0282963eb293eb173ce91b091a79c1334455acfac9ddee8a1c784b"},
-]
-pytest-recording = [
- {file = "pytest-recording-0.12.1.tar.gz", hash = "sha256:0d1f36d10dea5090cab8ecd230e5dc937c97b9fed193874b330d2926ddea028f"},
- {file = "pytest_recording-0.12.1-py3-none-any.whl", hash = "sha256:6b5546b822b270b8d7338f70950453be45e4aa5bfd884d97583dfa47288380f9"},
-]
-pythclient = [
- {file = "pythclient-0.1.2-py3-none-any.whl", hash = "sha256:ad441fbbc725b0509662f513b054ca1366a86a16e524676fb65bf3f0e38edee5"},
- {file = "pythclient-0.1.2.tar.gz", hash = "sha256:9a10189108a459151a396c140c0247f507e2c541ebb43792e1c66e4169433b7d"},
-]
-python-binance = [
- {file = "python-binance-1.0.16.tar.gz", hash = "sha256:3796bfa0124d376cf9ad42f03168d7630de56f936613eb39d05a4b82e1b1f1eb"},
- {file = "python_binance-1.0.16-py2.py3-none-any.whl", hash = "sha256:a56ffc8b2c61d1283d02f8cb9011adbd19a9ebc8d903823552f8f6e1e549f28f"},
-]
-python-coinmarketcap = [
- {file = "python-coinmarketcap-0.2.tar.gz", hash = "sha256:b1e0e8b098fc910a5ec943a06774d5ee3b190e915123366e2f16238ef0a8a433"},
- {file = "python_coinmarketcap-0.2-py2-none-any.whl", hash = "sha256:54c278154ee11ca78837fb73eae8c322a60af93dc0ce75b515fecf895d181cf5"},
- {file = "python_coinmarketcap-0.2-py3-none-any.whl", hash = "sha256:3b69a7a92cd4f2b4726a2982d166c0b587fa4911cf366286f798e1e6f9d94933"},
-]
-python-dateutil = [
- {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
- {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
-]
-python-dotenv = [
- {file = "python-dotenv-0.19.2.tar.gz", hash = "sha256:a5de49a31e953b45ff2d2fd434bbc2670e8db5273606c1e737cc6b93eff3655f"},
- {file = "python_dotenv-0.19.2-py2.py3-none-any.whl", hash = "sha256:32b2bdc1873fd3a3c346da1c6db83d0053c3c62f28f1f38516070c4c8971b1d3"},
-]
-python-i18n = [
- {file = "python-i18n-0.3.9.tar.gz", hash = "sha256:df97f3d2364bf3a7ebfbd6cbefe8e45483468e52a9e30b909c6078f5f471e4e8"},
- {file = "python_i18n-0.3.9-py3-none-any.whl", hash = "sha256:bda5b8d889ebd51973e22e53746417bd32783c9bd6780fd27cadbb733915651d"},
-]
-pytrends = [
- {file = "pytrends-4.8.0-py2-none-any.whl", hash = "sha256:31a76cf560a23a9eb691a9a83a3306bbe555ed1665122a5756e789829f56a0ef"},
- {file = "pytrends-4.8.0.tar.gz", hash = "sha256:04b7b33eb6dfc120aa89cb4640688a8b633337276b6ddcea44ff0c7f6b6243d2"},
-]
+pyparsing = []
+pyportfolioopt = []
+pyprind = []
+pyrsistent = []
+pytest = []
+pytest-cov = []
+pytest-mock = []
+pytest-recording = []
+pythclient = []
+python-binance = []
+python-coinmarketcap = []
+python-dateutil = []
+python-dotenv = []
+python-i18n = []
+pytrends = []
pytz = []
-pytz-deprecation-shim = [
- {file = "pytz_deprecation_shim-0.1.0.post0-py2.py3-none-any.whl", hash = "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6"},
- {file = "pytz_deprecation_shim-0.1.0.post0.tar.gz", hash = "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d"},
-]
-pyupgrade = [
- {file = "pyupgrade-2.38.4-py2.py3-none-any.whl", hash = "sha256:944ff993c396ddc2b9012eb3de4cda138eb4c149b22c6c560d4c8bfd0e180982"},
- {file = "pyupgrade-2.38.4.tar.gz", hash = "sha256:1eb43a49f416752929741ba4d706bf3f33593d3cac9bdc217fc1ef55c047c1f4"},
-]
-pywin32 = [
- {file = "pywin32-304-cp310-cp310-win32.whl", hash = "sha256:3c7bacf5e24298c86314f03fa20e16558a4e4138fc34615d7de4070c23e65af3"},
- {file = "pywin32-304-cp310-cp310-win_amd64.whl", hash = "sha256:4f32145913a2447736dad62495199a8e280a77a0ca662daa2332acf849f0be48"},
- {file = "pywin32-304-cp310-cp310-win_arm64.whl", hash = "sha256:d3ee45adff48e0551d1aa60d2ec066fec006083b791f5c3527c40cd8aefac71f"},
- {file = "pywin32-304-cp311-cp311-win32.whl", hash = "sha256:30c53d6ce44c12a316a06c153ea74152d3b1342610f1b99d40ba2795e5af0269"},
- {file = "pywin32-304-cp311-cp311-win_amd64.whl", hash = "sha256:7ffa0c0fa4ae4077e8b8aa73800540ef8c24530057768c3ac57c609f99a14fd4"},
- {file = "pywin32-304-cp311-cp311-win_arm64.whl", hash = "sha256:cbbe34dad39bdbaa2889a424d28752f1b4971939b14b1bb48cbf0182a3bcfc43"},
- {file = "pywin32-304-cp36-cp36m-win32.whl", hash = "sha256:be253e7b14bc601718f014d2832e4c18a5b023cbe72db826da63df76b77507a1"},
- {file = "pywin32-304-cp36-cp36m-win_amd64.whl", hash = "sha256:de9827c23321dcf43d2f288f09f3b6d772fee11e809015bdae9e69fe13213988"},
- {file = "pywin32-304-cp37-cp37m-win32.whl", hash = "sha256:f64c0377cf01b61bd5e76c25e1480ca8ab3b73f0c4add50538d332afdf8f69c5"},
- {file = "pywin32-304-cp37-cp37m-win_amd64.whl", hash = "sha256:bb2ea2aa81e96eee6a6b79d87e1d1648d3f8b87f9a64499e0b92b30d141e76df"},
- {file = "pywin32-304-cp38-cp38-win32.whl", hash = "sha256:94037b5259701988954931333aafd39cf897e990852115656b014ce72e052e96"},
- {file = "pywin32-304-cp38-cp38-win_amd64.whl", hash = "sha256:ead865a2e179b30fb717831f73cf4373401fc62fbc3455a0889a7ddac848f83e"},
- {file = "pywin32-304-cp39-cp39-win32.whl", hash = "sha256:25746d841201fd9f96b648a248f731c1dec851c9a08b8e33da8b56148e4c65cc"},
- {file = "pywin32-304-cp39-cp39-win_amd64.whl", hash = "sha256:d24a3382f013b21aa24a5cfbfad5a2cd9926610c0affde3e8ab5b3d7dbcf4ac9"},
-]
-pywin32-ctypes = [
- {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"},
- {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"},
-]
+pytz-deprecation-shim = []
+pyupgrade = []
+pywin32 = []
+pywin32-ctypes = []
pywinpty = []
-pyyaml = [
- {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"},
- {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"},
- {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"},
- {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"},
- {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"},
- {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"},
- {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"},
- {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"},
- {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"},
- {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"},
- {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"},
- {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"},
- {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"},
- {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"},
- {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"},
- {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"},
- {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"},
- {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"},
- {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"},
- {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"},
- {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"},
- {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"},
- {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"},
- {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"},
- {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"},
- {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"},
- {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"},
- {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"},
- {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"},
- {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"},
- {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"},
- {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"},
- {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"},
-]
-pyzmq = [
- {file = "pyzmq-24.0.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:28b119ba97129d3001673a697b7cce47fe6de1f7255d104c2f01108a5179a066"},
- {file = "pyzmq-24.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bcbebd369493d68162cddb74a9c1fcebd139dfbb7ddb23d8f8e43e6c87bac3a6"},
- {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae61446166983c663cee42c852ed63899e43e484abf080089f771df4b9d272ef"},
- {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87f7ac99b15270db8d53f28c3c7b968612993a90a5cf359da354efe96f5372b4"},
- {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dca7c3956b03b7663fac4d150f5e6d4f6f38b2462c1e9afd83bcf7019f17913"},
- {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8c78bfe20d4c890cb5580a3b9290f700c570e167d4cdcc55feec07030297a5e3"},
- {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:48f721f070726cd2a6e44f3c33f8ee4b24188e4b816e6dd8ba542c8c3bb5b246"},
- {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:afe1f3bc486d0ce40abb0a0c9adb39aed3bbac36ebdc596487b0cceba55c21c1"},
- {file = "pyzmq-24.0.1-cp310-cp310-win32.whl", hash = "sha256:3e6192dbcefaaa52ed81be88525a54a445f4b4fe2fffcae7fe40ebb58bd06bfd"},
- {file = "pyzmq-24.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:86de64468cad9c6d269f32a6390e210ca5ada568c7a55de8e681ca3b897bb340"},
- {file = "pyzmq-24.0.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:838812c65ed5f7c2bd11f7b098d2e5d01685a3f6d1f82849423b570bae698c00"},
- {file = "pyzmq-24.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dfb992dbcd88d8254471760879d48fb20836d91baa90f181c957122f9592b3dc"},
- {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7abddb2bd5489d30ffeb4b93a428130886c171b4d355ccd226e83254fcb6b9ef"},
- {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94010bd61bc168c103a5b3b0f56ed3b616688192db7cd5b1d626e49f28ff51b3"},
- {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8242543c522d84d033fe79be04cb559b80d7eb98ad81b137ff7e0a9020f00ace"},
- {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ccb94342d13e3bf3ffa6e62f95b5e3f0bc6bfa94558cb37f4b3d09d6feb536ff"},
- {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6640f83df0ae4ae1104d4c62b77e9ef39be85ebe53f636388707d532bee2b7b8"},
- {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a180dbd5ea5d47c2d3b716d5c19cc3fb162d1c8db93b21a1295d69585bfddac1"},
- {file = "pyzmq-24.0.1-cp311-cp311-win32.whl", hash = "sha256:624321120f7e60336be8ec74a172ae7fba5c3ed5bf787cc85f7e9986c9e0ebc2"},
- {file = "pyzmq-24.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:1724117bae69e091309ffb8255412c4651d3f6355560d9af312d547f6c5bc8b8"},
- {file = "pyzmq-24.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:15975747462ec49fdc863af906bab87c43b2491403ab37a6d88410635786b0f4"},
- {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b947e264f0e77d30dcbccbb00f49f900b204b922eb0c3a9f0afd61aaa1cedc3d"},
- {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ec91f1bad66f3ee8c6deb65fa1fe418e8ad803efedd69c35f3b5502f43bd1dc"},
- {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:db03704b3506455d86ec72c3358a779e9b1d07b61220dfb43702b7b668edcd0d"},
- {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e7e66b4e403c2836ac74f26c4b65d8ac0ca1eef41dfcac2d013b7482befaad83"},
- {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:7a23ccc1083c260fa9685c93e3b170baba45aeed4b524deb3f426b0c40c11639"},
- {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:fa0ae3275ef706c0309556061185dd0e4c4cd3b7d6f67ae617e4e677c7a41e2e"},
- {file = "pyzmq-24.0.1-cp36-cp36m-win32.whl", hash = "sha256:f01de4ec083daebf210531e2cca3bdb1608dbbbe00a9723e261d92087a1f6ebc"},
- {file = "pyzmq-24.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:de4217b9eb8b541cf2b7fde4401ce9d9a411cc0af85d410f9d6f4333f43640be"},
- {file = "pyzmq-24.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:78068e8678ca023594e4a0ab558905c1033b2d3e806a0ad9e3094e231e115a33"},
- {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77c2713faf25a953c69cf0f723d1b7dd83827b0834e6c41e3fb3bbc6765914a1"},
- {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bb4af15f305056e95ca1bd086239b9ebc6ad55e9f49076d27d80027f72752f6"},
- {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0f14cffd32e9c4c73da66db97853a6aeceaac34acdc0fae9e5bbc9370281864c"},
- {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0108358dab8c6b27ff6b985c2af4b12665c1bc659648284153ee501000f5c107"},
- {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d66689e840e75221b0b290b0befa86f059fb35e1ee6443bce51516d4d61b6b99"},
- {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae08ac90aa8fa14caafc7a6251bd218bf6dac518b7bff09caaa5e781119ba3f2"},
- {file = "pyzmq-24.0.1-cp37-cp37m-win32.whl", hash = "sha256:8421aa8c9b45ea608c205db9e1c0c855c7e54d0e9c2c2f337ce024f6843cab3b"},
- {file = "pyzmq-24.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54d8b9c5e288362ec8595c1d98666d36f2070fd0c2f76e2b3c60fbad9bd76227"},
- {file = "pyzmq-24.0.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:acbd0a6d61cc954b9f535daaa9ec26b0a60a0d4353c5f7c1438ebc88a359a47e"},
- {file = "pyzmq-24.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:47b11a729d61a47df56346283a4a800fa379ae6a85870d5a2e1e4956c828eedc"},
- {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abe6eb10122f0d746a0d510c2039ae8edb27bc9af29f6d1b05a66cc2401353ff"},
- {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:07bec1a1b22dacf718f2c0e71b49600bb6a31a88f06527dfd0b5aababe3fa3f7"},
- {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d945a85b70da97ae86113faf9f1b9294efe66bd4a5d6f82f2676d567338b66"},
- {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1b7928bb7580736ffac5baf814097be342ba08d3cfdfb48e52773ec959572287"},
- {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b946da90dc2799bcafa682692c1d2139b2a96ec3c24fa9fc6f5b0da782675330"},
- {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c8840f064b1fb377cffd3efeaad2b190c14d4c8da02316dae07571252d20b31f"},
- {file = "pyzmq-24.0.1-cp38-cp38-win32.whl", hash = "sha256:4854f9edc5208f63f0841c0c667260ae8d6846cfa233c479e29fdc85d42ebd58"},
- {file = "pyzmq-24.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:42d4f97b9795a7aafa152a36fe2ad44549b83a743fd3e77011136def512e6c2a"},
- {file = "pyzmq-24.0.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:52afb0ac962963fff30cf1be775bc51ae083ef4c1e354266ab20e5382057dd62"},
- {file = "pyzmq-24.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bad8210ad4df68c44ff3685cca3cda448ee46e20d13edcff8909eba6ec01ca4"},
- {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dabf1a05318d95b1537fd61d9330ef4313ea1216eea128a17615038859da3b3b"},
- {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5bd3d7dfd9cd058eb68d9a905dec854f86649f64d4ddf21f3ec289341386c44b"},
- {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8012bce6836d3f20a6c9599f81dfa945f433dab4dbd0c4917a6fb1f998ab33d"},
- {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c31805d2c8ade9b11feca4674eee2b9cce1fec3e8ddb7bbdd961a09dc76a80ea"},
- {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3104f4b084ad5d9c0cb87445cc8cfd96bba710bef4a66c2674910127044df209"},
- {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:df0841f94928f8af9c7a1f0aaaffba1fb74607af023a152f59379c01c53aee58"},
- {file = "pyzmq-24.0.1-cp39-cp39-win32.whl", hash = "sha256:a435ef8a3bd95c8a2d316d6e0ff70d0db524f6037411652803e118871d703333"},
- {file = "pyzmq-24.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:2032d9cb994ce3b4cba2b8dfae08c7e25bc14ba484c770d4d3be33c27de8c45b"},
- {file = "pyzmq-24.0.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bb5635c851eef3a7a54becde6da99485eecf7d068bd885ac8e6d173c4ecd68b0"},
- {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:83ea1a398f192957cb986d9206ce229efe0ee75e3c6635baff53ddf39bd718d5"},
- {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:941fab0073f0a54dc33d1a0460cb04e0d85893cb0c5e1476c785000f8b359409"},
- {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e8f482c44ccb5884bf3f638f29bea0f8dc68c97e38b2061769c4cb697f6140d"},
- {file = "pyzmq-24.0.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:613010b5d17906c4367609e6f52e9a2595e35d5cc27d36ff3f1b6fa6e954d944"},
- {file = "pyzmq-24.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:65c94410b5a8355cfcf12fd600a313efee46ce96a09e911ea92cf2acf6708804"},
- {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:20e7eeb1166087db636c06cae04a1ef59298627f56fb17da10528ab52a14c87f"},
- {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2712aee7b3834ace51738c15d9ee152cc5a98dc7d57dd93300461b792ab7b43"},
- {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a7c280185c4da99e0cc06c63bdf91f5b0b71deb70d8717f0ab870a43e376db8"},
- {file = "pyzmq-24.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:858375573c9225cc8e5b49bfac846a77b696b8d5e815711b8d4ba3141e6e8879"},
- {file = "pyzmq-24.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:80093b595921eed1a2cead546a683b9e2ae7f4a4592bb2ab22f70d30174f003a"},
- {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f3f3154fde2b1ff3aa7b4f9326347ebc89c8ef425ca1db8f665175e6d3bd42f"},
- {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abb756147314430bee5d10919b8493c0ccb109ddb7f5dfd2fcd7441266a25b75"},
- {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44e706bac34e9f50779cb8c39f10b53a4d15aebb97235643d3112ac20bd577b4"},
- {file = "pyzmq-24.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:687700f8371643916a1d2c61f3fdaa630407dd205c38afff936545d7b7466066"},
- {file = "pyzmq-24.0.1.tar.gz", hash = "sha256:216f5d7dbb67166759e59b0479bca82b8acf9bed6015b526b8eb10143fb08e77"},
-]
-qdldl = [
- {file = "qdldl-0.1.5.post2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:408a34b735be5425dc088cdebb1129f0f5d8cc9fd8c888fc9ed0bd1a02a65d6f"},
- {file = "qdldl-0.1.5.post2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:227fe8988a86b9f9ed341ad20d11502789b4d05bceddb09a47dbb24b08d79966"},
- {file = "qdldl-0.1.5.post2-cp310-cp310-win_amd64.whl", hash = "sha256:655f5e83c9e46f2d9b32508852d92b6e8fa6d166a6f48960aac54e81cd578417"},
- {file = "qdldl-0.1.5.post2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ae0b70e7599dd58ef16d6500947b8d2bdd4272ffbbd2ebf5c516691fdfb82212"},
- {file = "qdldl-0.1.5.post2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae054e987066ae861c0bc648a7cdd523cfb1849353bc9b1591ecbf2a55ca8b7d"},
- {file = "qdldl-0.1.5.post2-cp36-cp36m-win_amd64.whl", hash = "sha256:ab77ca440cbca98377e3ade32860c8d7e4fa97759d6266759a7e2f718ec4ded1"},
- {file = "qdldl-0.1.5.post2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fa7057d8888ea8ebba859da8b25d40e10e2f12013f6b0b033c9ab6e68cd10763"},
- {file = "qdldl-0.1.5.post2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:879cd43b41babda79d4896f6b5a79dfbf96be5f13489553c793659116a2e9ce4"},
- {file = "qdldl-0.1.5.post2-cp37-cp37m-win_amd64.whl", hash = "sha256:05b3079837c0ec86136b4a29b3842eab7bfc7a5517d751a3e5d0d5c111a2e523"},
- {file = "qdldl-0.1.5.post2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ffbdd5bd07f2340ad2ce01d44cc95223ffa256136ac5dc32f4f80926701640fb"},
- {file = "qdldl-0.1.5.post2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:438b303b8b7b95531d93b457657ec89e742bd90c9a72da1eebfb51095007922c"},
- {file = "qdldl-0.1.5.post2-cp38-cp38-win_amd64.whl", hash = "sha256:53b19b8509f529fa6fdc8f869f6172d5c89587b657aa24d958d339de3bc47a73"},
- {file = "qdldl-0.1.5.post2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d6f0f55bb853f10e3a2025193af2d1cc202697cc7985fe7785d681114c5b3cdb"},
- {file = "qdldl-0.1.5.post2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15d0fbff31aa19195b135ca934cf75025d46a275d915eebb7c11a7d16e148096"},
- {file = "qdldl-0.1.5.post2-cp39-cp39-win_amd64.whl", hash = "sha256:5269f40521b12941f1334a162f8f06375df6a89f0f90d8a758ae3b83b8931b18"},
- {file = "qdldl-0.1.5.post2.tar.gz", hash = "sha256:7daf7ad1bfff1da71da06e82d5147bdb1ac866581617d8f06cc4eeda48e2a149"},
-]
+pyyaml = []
+pyzmq = []
+qdldl = []
qtconsole = []
-qtpy = [
- {file = "QtPy-2.2.1-py3-none-any.whl", hash = "sha256:268cf5328f41353be1b127e04a81bc74ec9a9b54c9ac75dd8fe0ff48d8ad6ead"},
- {file = "QtPy-2.2.1.tar.gz", hash = "sha256:7d5231133b772e40b4ee514b6673aca558331e4b88ca038b26c9e16c5c95524f"},
-]
-quandl = [
- {file = "Quandl-3.7.0-py2.py3-none-any.whl", hash = "sha256:0e3e5dc60fd057c73c67380b1b0f2e3dc0e4c500fb5e6e146ac3a3c0d992cd1d"},
- {file = "Quandl-3.7.0.tar.gz", hash = "sha256:6e0b82fbc7861610b3577c5397277c4220e065eee0fed4e46cd6b6021655b64c"},
-]
-rapidfuzz = [
- {file = "rapidfuzz-1.9.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:68227a8b25291d6a2140aef049271ea30a77be5ef672a58e582a55a5cc1fce93"},
- {file = "rapidfuzz-1.9.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:c33541995b96ff40025c1456b8c74b7dd2ab9cbf91943fc35a7bb621f48940e2"},
- {file = "rapidfuzz-1.9.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:c2fafbbf97a4632822248f4201601b691e2eac5fdb30e5d7a96d07a6d058a7d4"},
- {file = "rapidfuzz-1.9.1-cp27-cp27m-win32.whl", hash = "sha256:364795f617a99e1dbb55ac3947ab8366588b72531cb2d6152666287d20610706"},
- {file = "rapidfuzz-1.9.1-cp27-cp27m-win_amd64.whl", hash = "sha256:f171d9e66144b0647f9b998ef10bdd919a640e4b1357250c8ef6259deb5ffe0d"},
- {file = "rapidfuzz-1.9.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:c83801a7c5209663aa120b815a4f2c39e95fe8e0b774ec58a1e0affd6a2fcfc6"},
- {file = "rapidfuzz-1.9.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:67e61c2baa6bb1848c4a33752f1781124dcc90bf3f31b18b44db1ae4e4e26634"},
- {file = "rapidfuzz-1.9.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8ab7eb003a18991347174910f11d38ff40399081185d9e3199ec277535f7828b"},
- {file = "rapidfuzz-1.9.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5ad450badf06ddf98a246140b5059ba895ee8445e8102a5a289908327f551f81"},
- {file = "rapidfuzz-1.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:402b2174bded62a793c5f7d9aec16bc32c661402360a934819ae72b54cfbce1e"},
- {file = "rapidfuzz-1.9.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:92066ccb054efc2e17afb4049c98b550969653cd58f71dd756cfcc8e6864630a"},
- {file = "rapidfuzz-1.9.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8dc0bf1814accee08a9c9bace6672ef06eae6b0446fce88e3e97e23dfaf3ea10"},
- {file = "rapidfuzz-1.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdbd387efb8478605951344f327dd03bf053c138d757369a43404305b99e55db"},
- {file = "rapidfuzz-1.9.1-cp310-cp310-win32.whl", hash = "sha256:b1c54807e556dbcc6caf4ce0f24446c01b195f3cc46e2a6e74b82d3a21eaa45d"},
- {file = "rapidfuzz-1.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:ac3273364cd1619cab3bf0ba731efea5405833f9eba362da7dcd70bd42073d8e"},
- {file = "rapidfuzz-1.9.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:d9faf62606c08a0a6992dd480c72b6a068733ae02688dc35f2e36ba0d44673f4"},
- {file = "rapidfuzz-1.9.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:f6a56a48be047637b1b0b2459a11cf7cd5aa7bbe16a439bd4f73b4af39e620e4"},
- {file = "rapidfuzz-1.9.1-cp35-cp35m-win32.whl", hash = "sha256:aa91609979e9d2700f0ff100df99b36e7d700b70169ee385d43d5de9e471ae97"},
- {file = "rapidfuzz-1.9.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b4cfdd0915ab4cec86c2ff6bab9f01b03454f3de0963c37f9f219df2ddf42b95"},
- {file = "rapidfuzz-1.9.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:c6bfa4ad0158a093cd304f795ceefdc3861ae6942a61432b2a50858be6de88ca"},
- {file = "rapidfuzz-1.9.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:eb0ea02295d9278bd2dcd2df4760b0f2887b6c3f2f374005ec5af320d8d3a37e"},
- {file = "rapidfuzz-1.9.1-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d5187cd5cd6273e9fee07de493a42a2153134a4914df74cb1abb0744551c548a"},
- {file = "rapidfuzz-1.9.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6e5b8af63f9c05b64454460759ed84a715d581d598ec4484f4ec512f398e8b1"},
- {file = "rapidfuzz-1.9.1-cp36-cp36m-win32.whl", hash = "sha256:36137f88f2b28115af506118e64e11c816611eab2434293af7fdacd1290ffb9d"},
- {file = "rapidfuzz-1.9.1-cp36-cp36m-win_amd64.whl", hash = "sha256:fcc420cad46be7c9887110edf04cdee545f26dbf22650a443d89790fc35f7b88"},
- {file = "rapidfuzz-1.9.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b06de314f426aebff8a44319016bbe2b22f7848c84e44224f80b0690b7b08b18"},
- {file = "rapidfuzz-1.9.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e5de44e719faea79e45322b037f0d4a141d750b80d2204fa68f43a42a24f0fbc"},
- {file = "rapidfuzz-1.9.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f9439df09a782afd01b67005a3b110c70bbf9e1cf06d2ac9b293ce2d02d3c549"},
- {file = "rapidfuzz-1.9.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e903d4702647465721e2d0431c95f04fd56a06577f06f41e2960c83fd63c1bad"},
- {file = "rapidfuzz-1.9.1-cp37-cp37m-win32.whl", hash = "sha256:a5298f4ac1975edcbb15583eab659a44b33aebaf3bccf172e185cfea68771c08"},
- {file = "rapidfuzz-1.9.1-cp37-cp37m-win_amd64.whl", hash = "sha256:103193a01921b54fcdad6b01cfda3a68e00aeafca236b7ecd5b1b2c2e7e96337"},
- {file = "rapidfuzz-1.9.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1d98a3187040dca855e02179a35c137f72ef83ce243783d44ea59efa86b94b3a"},
- {file = "rapidfuzz-1.9.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cb92bf7fc911b787055a88d9295ca3b4fe8576e3b59271f070f1b1b181eb087d"},
- {file = "rapidfuzz-1.9.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3f014a0f5f8159a94c6ee884fedd1c30e07fb866a5d76ff2c18091bc6363b76f"},
- {file = "rapidfuzz-1.9.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:31474074a99f72289ac325fbd77983e7d355d48860bfe7a4f6f6396fdb24410a"},
- {file = "rapidfuzz-1.9.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec67d79af5a2d7b0cf67b570a5579710e461cadda4120478e813b63491f394dd"},
- {file = "rapidfuzz-1.9.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ebc0d3d15ed32f98f0052cf6e3e9c9b8010fb93c04fb74d2022e3c51ec540e2"},
- {file = "rapidfuzz-1.9.1-cp38-cp38-win32.whl", hash = "sha256:477ab1a3044bab89db45caabc562b158f68765ecaa638b73ba17e92f09dfa5ff"},
- {file = "rapidfuzz-1.9.1-cp38-cp38-win_amd64.whl", hash = "sha256:8e872763dc0367d7544aa585d2e8b27af233323b8a7cd2f9b78cafa05bae5018"},
- {file = "rapidfuzz-1.9.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8401c41e219ae36ca7a88762776a6270511650d4cc70d024ae61561e96d67e47"},
- {file = "rapidfuzz-1.9.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ea10bd8e0436801c3264f7084a5ea194f12ba9fe1ba898aa4a2107d276501292"},
- {file = "rapidfuzz-1.9.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:433737914b46c1ffa0c678eceae1c260dc6b7fb5b6cad4c725d3e3607c764b32"},
- {file = "rapidfuzz-1.9.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c3b08e90e45acbc469d1f456681643256e952bf84ec7714f58979baba0c8a1c"},
- {file = "rapidfuzz-1.9.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bbcd265b3c86176e5db4cbba7b4364d7333c214ee80e2d259c7085929934ca9d"},
- {file = "rapidfuzz-1.9.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d69fabcd635783cd842e7d5ee4b77164314c5124b82df5a0c436ab3d698f8a9"},
- {file = "rapidfuzz-1.9.1-cp39-cp39-win32.whl", hash = "sha256:01f16b6f3fa5d1a26c12f5da5de0032f1e12c919d876005b57492a8ec9a5c043"},
- {file = "rapidfuzz-1.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:0bcc5bbfdbe6068cc2cf0029ab6cde08dceac498d232fa3a61dd34fbfa0b3f36"},
- {file = "rapidfuzz-1.9.1-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:de869c8f4e8edb9b2f7b8232a04896645501defcbd9d85bc0202ff3ec6285f6b"},
- {file = "rapidfuzz-1.9.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:db5978e970fb0955974d51021da4b929e2e4890fef17792989ee32658e2b159c"},
- {file = "rapidfuzz-1.9.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:33479f75f36ac3a1d8421365d4fa906e013490790730a89caba31d06e6f71738"},
- {file = "rapidfuzz-1.9.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:af991cb333ec526d894923163050931b3a870b7694bf7687aaa6154d341a98f5"},
- {file = "rapidfuzz-1.9.1.tar.gz", hash = "sha256:bd7a4fe33ba49db3417f0f57a8af02462554f1296dedcf35b026cd3525efef74"},
-]
-regex = [
- {file = "regex-2022.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ab69b4fe09e296261377d209068d52402fb85ef89dc78a9ac4a29a895f4e24a7"},
- {file = "regex-2022.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5bc5f921be39ccb65fdda741e04b2555917a4bced24b4df14eddc7569be3b493"},
- {file = "regex-2022.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43eba5c46208deedec833663201752e865feddc840433285fbadee07b84b464d"},
- {file = "regex-2022.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c68d2c04f7701a418ec2e5631b7f3552efc32f6bcc1739369c6eeb1af55f62e0"},
- {file = "regex-2022.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:caa2734ada16a44ae57b229d45091f06e30a9a52ace76d7574546ab23008c635"},
- {file = "regex-2022.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef806f684f17dbd6263d72a54ad4073af42b42effa3eb42b877e750c24c76f86"},
- {file = "regex-2022.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be319f4eb400ee567b722e9ea63d5b2bb31464e3cf1b016502e3ee2de4f86f5c"},
- {file = "regex-2022.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:42bb37e2b2d25d958c25903f6125a41aaaa1ed49ca62c103331f24b8a459142f"},
- {file = "regex-2022.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:fbc88d3ba402b5d041d204ec2449c4078898f89c4a6e6f0ed1c1a510ef1e221d"},
- {file = "regex-2022.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:91e0f7e7be77250b808a5f46d90bf0032527d3c032b2131b63dee54753a4d729"},
- {file = "regex-2022.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:cb3652bbe6720786b9137862205986f3ae54a09dec8499a995ed58292bdf77c2"},
- {file = "regex-2022.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:878c626cbca3b649e14e972c14539a01191d79e58934e3f3ef4a9e17f90277f8"},
- {file = "regex-2022.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6df070a986fc064d865c381aecf0aaff914178fdf6874da2f2387e82d93cc5bd"},
- {file = "regex-2022.3.2-cp310-cp310-win32.whl", hash = "sha256:b549d851f91a4efb3e65498bd4249b1447ab6035a9972f7fc215eb1f59328834"},
- {file = "regex-2022.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:8babb2b5751105dc0aef2a2e539f4ba391e738c62038d8cb331c710f6b0f3da7"},
- {file = "regex-2022.3.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1977bb64264815d3ef016625adc9df90e6d0e27e76260280c63eca993e3f455f"},
- {file = "regex-2022.3.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e73652057473ad3e6934944af090852a02590c349357b79182c1b681da2c772"},
- {file = "regex-2022.3.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b22ff939a8856a44f4822da38ef4868bd3a9ade22bb6d9062b36957c850e404f"},
- {file = "regex-2022.3.2-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:878f5d649ba1db9f52cc4ef491f7dba2d061cdc48dd444c54260eebc0b1729b9"},
- {file = "regex-2022.3.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0008650041531d0eadecc96a73d37c2dc4821cf51b0766e374cb4f1ddc4e1c14"},
- {file = "regex-2022.3.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:06b1df01cf2aef3a9790858af524ae2588762c8a90e784ba00d003f045306204"},
- {file = "regex-2022.3.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:57484d39447f94967e83e56db1b1108c68918c44ab519b8ecfc34b790ca52bf7"},
- {file = "regex-2022.3.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:74d86e8924835f863c34e646392ef39039405f6ce52956d8af16497af4064a30"},
- {file = "regex-2022.3.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:ae17fc8103f3b63345709d3e9654a274eee1c6072592aec32b026efd401931d0"},
- {file = "regex-2022.3.2-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:5f92a7cdc6a0ae2abd184e8dfd6ef2279989d24c85d2c85d0423206284103ede"},
- {file = "regex-2022.3.2-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:5dcc4168536c8f68654f014a3db49b6b4a26b226f735708be2054314ed4964f4"},
- {file = "regex-2022.3.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:1e30762ddddb22f7f14c4f59c34d3addabc789216d813b0f3e2788d7bcf0cf29"},
- {file = "regex-2022.3.2-cp36-cp36m-win32.whl", hash = "sha256:286ff9ec2709d56ae7517040be0d6c502642517ce9937ab6d89b1e7d0904f863"},
- {file = "regex-2022.3.2-cp36-cp36m-win_amd64.whl", hash = "sha256:d326ff80ed531bf2507cba93011c30fff2dd51454c85f55df0f59f2030b1687b"},
- {file = "regex-2022.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9d828c5987d543d052b53c579a01a52d96b86f937b1777bbfe11ef2728929357"},
- {file = "regex-2022.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c87ac58b9baaf50b6c1b81a18d20eda7e2883aa9a4fb4f1ca70f2e443bfcdc57"},
- {file = "regex-2022.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6c2441538e4fadd4291c8420853431a229fcbefc1bf521810fbc2629d8ae8c2"},
- {file = "regex-2022.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f3356afbb301ec34a500b8ba8b47cba0b44ed4641c306e1dd981a08b416170b5"},
- {file = "regex-2022.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d96eec8550fd2fd26f8e675f6d8b61b159482ad8ffa26991b894ed5ee19038b"},
- {file = "regex-2022.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf668f26604e9f7aee9f8eaae4ca07a948168af90b96be97a4b7fa902a6d2ac1"},
- {file = "regex-2022.3.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0eb0e2845e81bdea92b8281a3969632686502565abf4a0b9e4ab1471c863d8f3"},
- {file = "regex-2022.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:87bc01226cd288f0bd9a4f9f07bf6827134dc97a96c22e2d28628e824c8de231"},
- {file = "regex-2022.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:09b4b6ccc61d4119342b26246ddd5a04accdeebe36bdfe865ad87a0784efd77f"},
- {file = "regex-2022.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:9557545c10d52c845f270b665b52a6a972884725aa5cf12777374e18f2ea8960"},
- {file = "regex-2022.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:0be0c34a39e5d04a62fd5342f0886d0e57592a4f4993b3f9d257c1f688b19737"},
- {file = "regex-2022.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7b103dffb9f6a47ed7ffdf352b78cfe058b1777617371226c1894e1be443afec"},
- {file = "regex-2022.3.2-cp37-cp37m-win32.whl", hash = "sha256:f8169ec628880bdbca67082a9196e2106060a4a5cbd486ac51881a4df805a36f"},
- {file = "regex-2022.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:4b9c16a807b17b17c4fa3a1d8c242467237be67ba92ad24ff51425329e7ae3d0"},
- {file = "regex-2022.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:67250b36edfa714ba62dc62d3f238e86db1065fccb538278804790f578253640"},
- {file = "regex-2022.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5510932596a0f33399b7fff1bd61c59c977f2b8ee987b36539ba97eb3513584a"},
- {file = "regex-2022.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f7ee2289176cb1d2c59a24f50900f8b9580259fa9f1a739432242e7d254f93"},
- {file = "regex-2022.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d7a68fa53688e1f612c3246044157117403c7ce19ebab7d02daf45bd63913e"},
- {file = "regex-2022.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaf5317c961d93c1a200b9370fb1c6b6836cc7144fef3e5a951326912bf1f5a3"},
- {file = "regex-2022.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad397bc7d51d69cb07ef89e44243f971a04ce1dca9bf24c992c362406c0c6573"},
- {file = "regex-2022.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:297c42ede2c81f0cb6f34ea60b5cf6dc965d97fa6936c11fc3286019231f0d66"},
- {file = "regex-2022.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:af4d8cc28e4c7a2f6a9fed544228c567340f8258b6d7ea815b62a72817bbd178"},
- {file = "regex-2022.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:452519bc4c973e961b1620c815ea6dd8944a12d68e71002be5a7aff0a8361571"},
- {file = "regex-2022.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:cb34c2d66355fb70ae47b5595aafd7218e59bb9c00ad8cc3abd1406ca5874f07"},
- {file = "regex-2022.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d146e5591cb67c5e836229a04723a30af795ef9b70a0bbd913572e14b7b940f"},
- {file = "regex-2022.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:03299b0bcaa7824eb7c0ebd7ef1e3663302d1b533653bfe9dc7e595d453e2ae9"},
- {file = "regex-2022.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9ccb0a4ab926016867260c24c192d9df9586e834f5db83dfa2c8fffb3a6e5056"},
- {file = "regex-2022.3.2-cp38-cp38-win32.whl", hash = "sha256:f7e8f1ee28e0a05831c92dc1c0c1c94af5289963b7cf09eca5b5e3ce4f8c91b0"},
- {file = "regex-2022.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:35ed2f3c918a00b109157428abfc4e8d1ffabc37c8f9abc5939ebd1e95dabc47"},
- {file = "regex-2022.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:55820bc631684172b9b56a991d217ec7c2e580d956591dc2144985113980f5a3"},
- {file = "regex-2022.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:83f03f0bd88c12e63ca2d024adeee75234d69808b341e88343b0232329e1f1a1"},
- {file = "regex-2022.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42d6007722d46bd2c95cce700181570b56edc0dcbadbfe7855ec26c3f2d7e008"},
- {file = "regex-2022.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:320c2f4106962ecea0f33d8d31b985d3c185757c49c1fb735501515f963715ed"},
- {file = "regex-2022.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbd3fe37353c62fd0eb19fb76f78aa693716262bcd5f9c14bb9e5aca4b3f0dc4"},
- {file = "regex-2022.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17e51ad1e6131c496b58d317bc9abec71f44eb1957d32629d06013a21bc99cac"},
- {file = "regex-2022.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:72bc3a5effa5974be6d965ed8301ac1e869bc18425c8a8fac179fbe7876e3aee"},
- {file = "regex-2022.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e5602a9b5074dcacc113bba4d2f011d2748f50e3201c8139ac5b68cf2a76bd8b"},
- {file = "regex-2022.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:729aa8ca624c42f309397c5fc9e21db90bf7e2fdd872461aabdbada33de9063c"},
- {file = "regex-2022.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d6ecfd1970b3380a569d7b3ecc5dd70dba295897418ed9e31ec3c16a5ab099a5"},
- {file = "regex-2022.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:13bbf0c9453c6d16e5867bda7f6c0c7cff1decf96c5498318bb87f8136d2abd4"},
- {file = "regex-2022.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:58ba41e462653eaf68fc4a84ec4d350b26a98d030be1ab24aba1adcc78ffe447"},
- {file = "regex-2022.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c0446b2871335d5a5e9fcf1462f954586b09a845832263db95059dcd01442015"},
- {file = "regex-2022.3.2-cp39-cp39-win32.whl", hash = "sha256:20e6a27959f162f979165e496add0d7d56d7038237092d1aba20b46de79158f1"},
- {file = "regex-2022.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:9efa41d1527b366c88f265a227b20bcec65bda879962e3fc8a2aee11e81266d7"},
- {file = "regex-2022.3.2.tar.gz", hash = "sha256:79e5af1ff258bc0fe0bdd6f69bc4ae33935a898e3cbefbbccf22e88a27fa053b"},
-]
+qtpy = []
+quandl = []
+rapidfuzz = []
+regex = []
reportlab = []
-requests = [
- {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"},
- {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"},
-]
-requests-oauthlib = [
- {file = "requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"},
- {file = "requests_oauthlib-1.3.1-py2.py3-none-any.whl", hash = "sha256:2577c501a2fb8d05a304c09d090d6e47c306fef15809d102b327cf8364bddab5"},
-]
+requests = []
+requests-oauthlib = []
rfc3986 = []
-rich = [
- {file = "rich-12.6.0-py3-none-any.whl", hash = "sha256:a4eb26484f2c82589bd9a17c73d32a010b1e29d89f1604cd9bf3a2097b81bb5e"},
- {file = "rich-12.6.0.tar.gz", hash = "sha256:ba3a3775974105c221d31141f2c116f4fd65c5ceb0698657a11e9f295ec93fd0"},
-]
-riskfolio-lib = [
- {file = "Riskfolio-Lib-3.3.0.tar.gz", hash = "sha256:29d0ff046952304ee8362d914551d82cdb2aa663728a6b1df80365c589a626b4"},
- {file = "Riskfolio_Lib-3.3.0-py3-none-any.whl", hash = "sha256:17f835ba47e946f55eae5041bdc45dcdb6a0f72136361cd6cb16fc608968fce2"},
-]
-robin-stocks = [
- {file = "robin_stocks-2.1.0-py3-none-any.whl", hash = "sha256:f746640e08d138fda2e1da42444e2881c3fb1ce43485f332e5079a42b0a78d57"},
- {file = "robin_stocks-2.1.0.tar.gz", hash = "sha256:3d6b1d97ecf3191897d09c9dc430b57c6183a38d4c66a64f9c62a8f015bb0ae9"},
-]
+rich = []
+riskfolio-lib = []
+robin-stocks = []
"ruamel.yaml" = []
-"ruamel.yaml.clib" = [
- {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d5859983f26d8cd7bb5c287ef452e8aacc86501487634573d260968f753e1d71"},
- {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:debc87a9516b237d0466a711b18b6ebeb17ba9f391eb7f91c649c5c4ec5006c7"},
- {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:df5828871e6648db72d1c19b4bd24819b80a755c4541d3409f0f7acd0f335c80"},
- {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:efa08d63ef03d079dcae1dfe334f6c8847ba8b645d08df286358b1f5293d24ab"},
- {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win32.whl", hash = "sha256:763d65baa3b952479c4e972669f679fe490eee058d5aa85da483ebae2009d231"},
- {file = "ruamel.yaml.clib-0.2.7-cp310-cp310-win_amd64.whl", hash = "sha256:d000f258cf42fec2b1bbf2863c61d7b8918d31ffee905da62dede869254d3b8a"},
- {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:045e0626baf1c52e5527bd5db361bc83180faaba2ff586e763d3d5982a876a9e"},
- {file = "ruamel.yaml.clib-0.2.7-cp311-cp311-macosx_12_6_arm64.whl", hash = "sha256:721bc4ba4525f53f6a611ec0967bdcee61b31df5a56801281027a3a6d1c2daf5"},
- {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4b3a93bb9bc662fc1f99c5c3ea8e623d8b23ad22f861eb6fce9377ac07ad6072"},
- {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-macosx_12_0_arm64.whl", hash = "sha256:a234a20ae07e8469da311e182e70ef6b199d0fbeb6c6cc2901204dd87fb867e8"},
- {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:15910ef4f3e537eea7fe45f8a5d19997479940d9196f357152a09031c5be59f3"},
- {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:370445fd795706fd291ab00c9df38a0caed0f17a6fb46b0f607668ecb16ce763"},
- {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win32.whl", hash = "sha256:ecdf1a604009bd35c674b9225a8fa609e0282d9b896c03dd441a91e5f53b534e"},
- {file = "ruamel.yaml.clib-0.2.7-cp36-cp36m-win_amd64.whl", hash = "sha256:f34019dced51047d6f70cb9383b2ae2853b7fc4dce65129a5acd49f4f9256646"},
- {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aa261c29a5545adfef9296b7e33941f46aa5bbd21164228e833412af4c9c75f"},
- {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-macosx_12_0_arm64.whl", hash = "sha256:f01da5790e95815eb5a8a138508c01c758e5f5bc0ce4286c4f7028b8dd7ac3d0"},
- {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:40d030e2329ce5286d6b231b8726959ebbe0404c92f0a578c0e2482182e38282"},
- {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:c3ca1fbba4ae962521e5eb66d72998b51f0f4d0f608d3c0347a48e1af262efa7"},
- {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win32.whl", hash = "sha256:7bdb4c06b063f6fd55e472e201317a3bb6cdeeee5d5a38512ea5c01e1acbdd93"},
- {file = "ruamel.yaml.clib-0.2.7-cp37-cp37m-win_amd64.whl", hash = "sha256:be2a7ad8fd8f7442b24323d24ba0b56c51219513cfa45b9ada3b87b76c374d4b"},
- {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:91a789b4aa0097b78c93e3dc4b40040ba55bef518f84a40d4442f713b4094acb"},
- {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:99e77daab5d13a48a4054803d052ff40780278240a902b880dd37a51ba01a307"},
- {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:3243f48ecd450eddadc2d11b5feb08aca941b5cd98c9b1db14b2fd128be8c697"},
- {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:8831a2cedcd0f0927f788c5bdf6567d9dc9cc235646a434986a852af1cb54b4b"},
- {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win32.whl", hash = "sha256:3110a99e0f94a4a3470ff67fc20d3f96c25b13d24c6980ff841e82bafe827cac"},
- {file = "ruamel.yaml.clib-0.2.7-cp38-cp38-win_amd64.whl", hash = "sha256:92460ce908546ab69770b2e576e4f99fbb4ce6ab4b245345a3869a0a0410488f"},
- {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5bc0667c1eb8f83a3752b71b9c4ba55ef7c7058ae57022dd9b29065186a113d9"},
- {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:4a4d8d417868d68b979076a9be6a38c676eca060785abaa6709c7b31593c35d1"},
- {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:bf9a6bc4a0221538b1a7de3ed7bca4c93c02346853f44e1cd764be0023cd3640"},
- {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:a7b301ff08055d73223058b5c46c55638917f04d21577c95e00e0c4d79201a6b"},
- {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win32.whl", hash = "sha256:d5e51e2901ec2366b79f16c2299a03e74ba4531ddcfacc1416639c557aef0ad8"},
- {file = "ruamel.yaml.clib-0.2.7-cp39-cp39-win_amd64.whl", hash = "sha256:184faeaec61dbaa3cace407cffc5819f7b977e75360e8d5ca19461cd851a5fc5"},
- {file = "ruamel.yaml.clib-0.2.7.tar.gz", hash = "sha256:1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497"},
-]
+"ruamel.yaml.clib" = []
scikit-learn = []
-scipy = [
- {file = "scipy-1.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:65b77f20202599c51eb2771d11a6b899b97989159b7975e9b5259594f1d35ef4"},
- {file = "scipy-1.8.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:e013aed00ed776d790be4cb32826adb72799c61e318676172495383ba4570aa4"},
- {file = "scipy-1.8.1-cp310-cp310-macosx_12_0_universal2.macosx_10_9_x86_64.whl", hash = "sha256:02b567e722d62bddd4ac253dafb01ce7ed8742cf8031aea030a41414b86c1125"},
- {file = "scipy-1.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1da52b45ce1a24a4a22db6c157c38b39885a990a566748fc904ec9f03ed8c6ba"},
- {file = "scipy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0aa8220b89b2e3748a2836fbfa116194378910f1a6e78e4675a095bcd2c762d"},
- {file = "scipy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:4e53a55f6a4f22de01ffe1d2f016e30adedb67a699a310cdcac312806807ca81"},
- {file = "scipy-1.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:28d2cab0c6ac5aa131cc5071a3a1d8e1366dad82288d9ec2ca44df78fb50e649"},
- {file = "scipy-1.8.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:6311e3ae9cc75f77c33076cb2794fb0606f14c8f1b1c9ff8ce6005ba2c283621"},
- {file = "scipy-1.8.1-cp38-cp38-macosx_12_0_universal2.macosx_10_9_x86_64.whl", hash = "sha256:3b69b90c9419884efeffaac2c38376d6ef566e6e730a231e15722b0ab58f0328"},
- {file = "scipy-1.8.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:6cc6b33139eb63f30725d5f7fa175763dc2df6a8f38ddf8df971f7c345b652dc"},
- {file = "scipy-1.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c4e3ae8a716c8b3151e16c05edb1daf4cb4d866caa385e861556aff41300c14"},
- {file = "scipy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23b22fbeef3807966ea42d8163322366dd89da9bebdc075da7034cee3a1441ca"},
- {file = "scipy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:4b93ec6f4c3c4d041b26b5f179a6aab8f5045423117ae7a45ba9710301d7e462"},
- {file = "scipy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:70ebc84134cf0c504ce6a5f12d6db92cb2a8a53a49437a6bb4edca0bc101f11c"},
- {file = "scipy-1.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f3e7a8867f307e3359cc0ed2c63b61a1e33a19080f92fe377bc7d49f646f2ec1"},
- {file = "scipy-1.8.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:2ef0fbc8bcf102c1998c1f16f15befe7cffba90895d6e84861cd6c6a33fb54f6"},
- {file = "scipy-1.8.1-cp39-cp39-macosx_12_0_universal2.macosx_10_9_x86_64.whl", hash = "sha256:83606129247e7610b58d0e1e93d2c5133959e9cf93555d3c27e536892f1ba1f2"},
- {file = "scipy-1.8.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:93d07494a8900d55492401917a119948ed330b8c3f1d700e0b904a578f10ead4"},
- {file = "scipy-1.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3b3c8924252caaffc54d4a99f1360aeec001e61267595561089f8b5900821bb"},
- {file = "scipy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70de2f11bf64ca9921fda018864c78af7147025e467ce9f4a11bc877266900a6"},
- {file = "scipy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:1166514aa3bbf04cb5941027c6e294a000bba0cf00f5cdac6c77f2dad479b434"},
- {file = "scipy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:9dd4012ac599a1e7eb63c114d1eee1bcfc6dc75a29b589ff0ad0bb3d9412034f"},
- {file = "scipy-1.8.1.tar.gz", hash = "sha256:9e3fb1b0e896f14a85aa9a28d5f755daaeeb54c897b746df7a55ccb02b340f33"},
-]
-screeninfo = [
- {file = "screeninfo-0.6.7.tar.gz", hash = "sha256:1c4bac1ca329da3f68cbc4d2fbc92256aa9bb8ff8583ee3e14f91f0a7baa69cb"},
-]
-scs = [
- {file = "scs-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:727d14eb509430c6f1524d97a7195d35241afde0514df2658d6d5adcf6db3342"},
- {file = "scs-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b559307b1ffcd72d1e8ecf6473c047834c546f65b1a90f560265dd5b24c36ba1"},
- {file = "scs-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:438514dea72896805f15f0f66596393217abb3072c2be53f894b176866f00be4"},
- {file = "scs-3.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1ec501ed06cc07bf291256c3ed0a5a02361ef655aee3e034a5cbc0acfc12c6e2"},
- {file = "scs-3.2.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f501e270b000ab61f8cde7793e8e44bec161cb7087944d8404bb3744b44ac932"},
- {file = "scs-3.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:4532a19e05cd7f115aa724606d0e39a72bbee366f5952d8e90d58954979eeb49"},
- {file = "scs-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0db0c7f4bd58dd7393d75aeb937854067297e26a3714c413c072bbaed069de05"},
- {file = "scs-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc5241cbc1da00b38a2c24a6ea427ee9f771879b9d7e9f5a8ff48bb2e270cdfd"},
- {file = "scs-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:a4c86eeadcb40350b74721d655fb9a8eb7e16ed2962fe4ae64473d0d47d276a1"},
- {file = "scs-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:390770e9af094f81f9c30ce11f119131e1db71f4663d28e1ec5c4fdbe9bf77b0"},
- {file = "scs-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab1c5fada8b19d5413b4cfad9ede834d4cfdd479cc77598d927003657177b3f2"},
- {file = "scs-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:9f8de9e078a1455dbb1995ce4494d9f88c5bf345f6e89c84714ebb89a7121593"},
- {file = "scs-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:76aa5b5d0b1baef4b675d1cde24da39b9bb7cbc6e05d437fd0c33071ca1de364"},
- {file = "scs-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fafefeec16d6d9117629b4776e54da5adb40200888fce9519e4b017931d2062a"},
- {file = "scs-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:f3153e032f22c86f4b3c0024b6dca517dd243c7e26c01ccdd7747198af44a9f8"},
- {file = "scs-3.2.0.tar.gz", hash = "sha256:6a180d86f61999db50b6a305872056b798740c87c4245006924dd654b6a998dd"},
-]
-seaborn = [
- {file = "seaborn-0.11.2-py3-none-any.whl", hash = "sha256:85a6baa9b55f81a0623abddc4a26b334653ff4c6b18c418361de19dbba0ef283"},
- {file = "seaborn-0.11.2.tar.gz", hash = "sha256:cf45e9286d40826864be0e3c066f98536982baf701a7caa386511792d61ff4f6"},
-]
+scipy = []
+screeninfo = []
+scs = []
+seaborn = []
semver = []
-send2trash = [
- {file = "Send2Trash-1.8.0-py3-none-any.whl", hash = "sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08"},
- {file = "Send2Trash-1.8.0.tar.gz", hash = "sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d"},
-]
-sentiment-investor = [
- {file = "sentiment-investor-2.1.0.tar.gz", hash = "sha256:1b1969058ed540ef7059a54c146bc7b1e424b55c405607d4b407d476e562504e"},
- {file = "sentiment_investor-2.1.0-py3-none-any.whl", hash = "sha256:133f3086cc583a475bccd5e1b873d1751bb46633fad675df9c24604ed8377b6d"},
-]
-setuptools-scm = [
- {file = "setuptools_scm-6.4.2-py3-none-any.whl", hash = "sha256:acea13255093849de7ccb11af9e1fb8bde7067783450cee9ef7a93139bddf6d4"},
- {file = "setuptools_scm-6.4.2.tar.gz", hash = "sha256:6833ac65c6ed9711a4d5d2266f8024cfa07c533a0e55f4c12f6eff280a5a9e30"},
-]
+send2trash = []
+sentiment-investor = []
+setuptools-scm = []
sgmllib3k = []
-six = [
- {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
- {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
-]
-smmap = [
- {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"},
- {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"},
-]
+six = []
+smmap = []
sniffio = []
-snowballstemmer = [
- {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"},
- {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"},
-]
-socketio-client-nexus = [
- {file = "socketIO-client-nexus-0.7.6.tar.gz", hash = "sha256:41e6aaaff981f6729690f472eb2c7a5d1dda07349077e34444527b9700b0aea5"},
- {file = "socketIO_client_nexus-0.7.6-py2.py3-none-any.whl", hash = "sha256:9f44d705c38e405fcb334f95c1d5d5878a8daabdfeaca3ba56e974b69f42e643"},
-]
-soupsieve = [
- {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"},
- {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"},
-]
+snowballstemmer = []
+socketio-client-nexus = []
+soupsieve = []
sphinx = []
-sphinxcontrib-applehelp = [
- {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"},
- {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"},
-]
-sphinxcontrib-devhelp = [
- {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"},
- {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"},
-]
-sphinxcontrib-htmlhelp = [
- {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"},
- {file = "sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl", hash = "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07"},
-]
-sphinxcontrib-jsmath = [
- {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"},
- {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"},
-]
-sphinxcontrib-qthelp = [
- {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"},
- {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"},
-]
-sphinxcontrib-serializinghtml = [
- {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"},
- {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"},
-]
-squarify = [
- {file = "squarify-0.4.3-py3-none-any.whl", hash = "sha256:bec7011e0c7f4103fe57a1c16a7c091d9dc1be0f23d774e1c568b748a6f818f6"},
- {file = "squarify-0.4.3.tar.gz", hash = "sha256:54091f6ad175f7f201f8934574e647ce1b50dedc478c5fd968688eb7d7469f95"},
-]
-sseclient = [
- {file = "sseclient-0.0.27.tar.gz", hash = "sha256:b2fe534dcb33b1d3faad13d60c5a7c718e28f85987f2a034ecf5ec279918c11c"},
-]
+sphinxcontrib-applehelp = []
+sphinxcontrib-devhelp = []
+sphinxcontrib-htmlhelp = []
+sphinxcontrib-jsmath = []
+sphinxcontrib-qthelp = []
+sphinxcontrib-serializinghtml = []
+squarify = []
+sseclient = []
stack-data = []
-statsmodels = [
- {file = "statsmodels-0.13.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3e7ca5b7e678c0bb7a24f5c735d58ac104a50eb61b17c484cce0e221a095560f"},
- {file = "statsmodels-0.13.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:066a75d5585378b2df972f81a90b9a3da5e567b7d4833300c1597438c1a35e29"},
- {file = "statsmodels-0.13.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f15f38dfc9c5c091662cb619e12322047368c67aef449c7554d9b324a15f7a94"},
- {file = "statsmodels-0.13.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c4ccc6b4744613367e8a233bd952c8a838db8f528f9fe033bda25aa13fc7d08"},
- {file = "statsmodels-0.13.2-cp310-cp310-win_amd64.whl", hash = "sha256:855b1cc2a91ab140b9bcf304b1731705805ce73223bf500b988804968554c0ed"},
- {file = "statsmodels-0.13.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b69c9af7606325095f7c40c581957bad9f28775653d41537c1ec4cd1b185ff5b"},
- {file = "statsmodels-0.13.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab31bac0f72b83bca1f217a12ec6f309a56485a50c4a705fbdd63112213d4da4"},
- {file = "statsmodels-0.13.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d680b910b57fc0aa87472662cdfe09aae0e21db4bdf19ccd6420fd4dffda892"},
- {file = "statsmodels-0.13.2-cp37-cp37m-win32.whl", hash = "sha256:9e9a3f661d372431850d55157d049e079493c97fc06f550d23d8c8c70805cc48"},
- {file = "statsmodels-0.13.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c9f6326870c095ef688f072cd476b932aff0906d60193eaa08e93ec23b29ca83"},
- {file = "statsmodels-0.13.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5bc050f25f1ba1221efef9ea01b751c60935ad787fcd4259f4ece986f2da9141"},
- {file = "statsmodels-0.13.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:426b1c8ea3918d3d27dbfa38f2bee36cabf41d32163e2cbb3adfb0178b24626a"},
- {file = "statsmodels-0.13.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45b80fac4a63308b1e93fa9dc27a8598930fd5dfd77c850ca077bb850254c6d7"},
- {file = "statsmodels-0.13.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78ee69ec0e0f79f627245c65f8a495b8581c2ea19084aac63941815feb15dcf3"},
- {file = "statsmodels-0.13.2-cp38-cp38-win32.whl", hash = "sha256:20483cc30e11aa072b30d307bb80470f86a23ae8fffa51439ca54509d7aa9b05"},
- {file = "statsmodels-0.13.2-cp38-cp38-win_amd64.whl", hash = "sha256:bf43051a92231ccb9de95e4b6d22d3b15e499ee5ee9bff0a20e6b6ad293e34cb"},
- {file = "statsmodels-0.13.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6bf0dfed5f5edb59b5922b295392cd276463b10a5e730f7e57ee4ff2d8e9a87e"},
- {file = "statsmodels-0.13.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a403b559c5586dab7ac0fc9e754c737b017c96cce0ddd66ff9094764cdaf293d"},
- {file = "statsmodels-0.13.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f23554dd025ea354ce072ba32bfaa840d2b856372e5734290e181d27a1f9e0c"},
- {file = "statsmodels-0.13.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:815f4df713e3eb6f40ae175c71f2a70d32f9219b5b4d23d4e0faab1171ba93ba"},
- {file = "statsmodels-0.13.2-cp39-cp39-win32.whl", hash = "sha256:461c82ab2265fa8457b96afc23ef3ca19f42eb070436e0241b57e58a38863901"},
- {file = "statsmodels-0.13.2-cp39-cp39-win_amd64.whl", hash = "sha256:39daab5a8a9332c8ea83d6464d065080c9ba65f236daf6a64aa18f64ef776fad"},
- {file = "statsmodels-0.13.2.tar.gz", hash = "sha256:77dc292c9939c036a476f1770f9d08976b05437daa229928da73231147cde7d4"},
-]
-stevedore = [
- {file = "stevedore-4.1.0-py3-none-any.whl", hash = "sha256:3b1cbd592a87315f000d05164941ee5e164899f8fc0ce9a00bb0f321f40ef93e"},
- {file = "stevedore-4.1.0.tar.gz", hash = "sha256:02518a8f0d6d29be8a445b7f2ac63753ff29e8f2a2faa01777568d5500d777a6"},
-]
+statsmodels = []
+stevedore = []
stocksera = []
streamlit = []
-tabulate = [
- {file = "tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f"},
- {file = "tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c"},
-]
-temporal-cache = [
- {file = "temporal-cache-0.1.4.tar.gz", hash = "sha256:b6dd850359c46bd4a5c59fc3b953f8924e429b1179a351b3508d07c214738b50"},
- {file = "temporal_cache-0.1.4-py2.py3-none-any.whl", hash = "sha256:8d9a83bc247b8e1fc51bcbae0fe650ae510fa67818a19a688f93ae27a9298e7d"},
-]
-tenacity = [
- {file = "tenacity-8.1.0-py3-none-any.whl", hash = "sha256:35525cd47f82830069f0d6b73f7eb83bc5b73ee2fff0437952cedf98b27653ac"},
- {file = "tenacity-8.1.0.tar.gz", hash = "sha256:e48c437fdf9340f5666b92cd7990e96bc5fc955e1298baf4a907e3972067a445"},
-]
+tabulate = []
+temporal-cache = []
+tenacity = []
terminado = []
-thepassiveinvestor = [
- {file = "thepassiveinvestor-1.0.10-py3-none-any.whl", hash = "sha256:41fd07e5db0fde3587955d5ca86c52079c10c8f6e6572e3c213bded46f6969cf"},
- {file = "thepassiveinvestor-1.0.10.tar.gz", hash = "sha256:6b325b0b9134588763c75a4d05eb2260d4111ec0cd741c27618fcb3918f0ae92"},
-]
-threadpoolctl = [
- {file = "threadpoolctl-3.1.0-py3-none-any.whl", hash = "sha256:8b99adda265feb6773280df41eece7b2e6561b772d21ffd52e372f999024907b"},
- {file = "threadpoolctl-3.1.0.tar.gz", hash = "sha256:a335baacfaa4400ae1f0d8e3a58d6674d2f8828e3716bb2802c44955ad391380"},
-]
+thepassiveinvestor = []
+threadpoolctl = []
tinycss2 = []
-tokenize-rt = [
- {file = "tokenize_rt-4.2.1-py2.py3-none-any.whl", hash = "sha256:08a27fa032a81cf45e8858d0ac706004fcd523e8463415ddf1442be38e204ea8"},
- {file = "tokenize_rt-4.2.1.tar.gz", hash = "sha256:0d4f69026fed520f8a1e0103aa36c406ef4661417f20ca643f913e33531b3b94"},
-]
+tokenize-rt = []
tokenterminal = []
-toml = [
- {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
- {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
-]
-tomli = [
- {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
- {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
-]
+toml = []
+tomli = []
tomlkit = []
toolz = []
-torch = [
- {file = "torch-1.11.0-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:62052b50fffc29ca7afc0c04ef8206b6f1ca9d10629cb543077e12967e8d0398"},
- {file = "torch-1.11.0-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:866bfba29ac98dec35d893d8e17eaec149d0ac7a53be7baae5c98069897db667"},
- {file = "torch-1.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:951640fb8db308a59d9b510e7d1ad910aff92913323bbe4bc75435347ddd346d"},
- {file = "torch-1.11.0-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:5d77b5ece78fdafa5c7f42995ff9474399d22571cd6b2de21a5d666306a2ff8c"},
- {file = "torch-1.11.0-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:b5a38682769b544c875ecc34bcb81fbad5c922139b61319aacffcfd8a32f528c"},
- {file = "torch-1.11.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:f82d77695a60626f2b7382d85bc566de8a6b3e50d32080755abc040db802e419"},
- {file = "torch-1.11.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b96654d42566080a134e784705f33f8536b3b95b5dcde357ed7879b1692a5f78"},
- {file = "torch-1.11.0-cp37-cp37m-win_amd64.whl", hash = "sha256:8ee7c2e8d7f7020d5bfbc1bb91b9591044c26bbd0cee5e4f694cfd7ed8649260"},
- {file = "torch-1.11.0-cp37-none-macosx_10_9_x86_64.whl", hash = "sha256:6860b1d1bf0bb0b67a6bd47f85a0e4c825b518eea13b5d6101999dbbcbd5bc0c"},
- {file = "torch-1.11.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:4322aa29f50da7f404db06cdf30896ea67b09f673af4a985afc7162bc897864d"},
- {file = "torch-1.11.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:e4d2e0ddd652f30e94cff750220324ec45705d4ecc69658f773b3cb1c7a28dd0"},
- {file = "torch-1.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:34ce5ea4d8d85da32cdbadb50d4585106901e9f8a3527991daa70c13a09de1f7"},
- {file = "torch-1.11.0-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:0ccc85cd06227a3edf809e2c795fd5762c3d4e8a38b5c9f744c6e7cf841361bb"},
- {file = "torch-1.11.0-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:c1554e49d74f1b2c3e7202d77056ba2dd7465437585bac64062b580f714a44e9"},
- {file = "torch-1.11.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:58c7814502b1c129a650d7092033bbb0bbd64faf1a7941631aaa1aeaddc37570"},
- {file = "torch-1.11.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:831cf588f01dda9409e75576741d2823453990dee2983d670f2584b37a01adf7"},
- {file = "torch-1.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:44a1d02fd20f827f0f36dc26fdcfc45e793806a6ad52769a22260655a77a4369"},
- {file = "torch-1.11.0-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:50fd9bf85c578c871c28f1cb0ace9dfc6024401c7f399b174fb0f370899f4454"},
- {file = "torch-1.11.0-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:0e48af66ad755f0f9c5f2664028a414f57c49d6adc37e77e06fe0004da4edb61"},
-]
+torch = []
tornado = []
tqdm = []
-tradingview-ta = [
- {file = "tradingview_ta-3.3.0-py3-none-any.whl", hash = "sha256:1250068a44e253caeb2066bc1cd6e588f71796612d41d5d55d25083cf86b5531"},
- {file = "tradingview_ta-3.3.0.tar.gz", hash = "sha256:f1a55351ed28554234106a28772f167e818d57f384d47f85b763bd143955c34a"},
-]
+tradingview-ta = []
traitlets = []
-typeguard = [
- {file = "typeguard-2.13.3-py3-none-any.whl", hash = "sha256:5e3e3be01e887e7eafae5af63d1f36c849aaa94e3a0112097312aabfa16284f1"},
- {file = "typeguard-2.13.3.tar.gz", hash = "sha256:00edaa8da3a133674796cf5ea87d9f4b4c367d77476e185e80251cc13dfbb8c4"},
-]
+typeguard = []
types-python-dateutil = []
-types-pytz = [
- {file = "types-pytz-2021.3.8.tar.gz", hash = "sha256:41253a3a2bf028b6a3f17b58749a692d955af0f74e975de94f6f4d2d3cd01dbd"},
- {file = "types_pytz-2021.3.8-py3-none-any.whl", hash = "sha256:aef4a917ab28c585d3f474bfce4f4b44b91e95d9d47d4de29dd845e0db8e3910"},
-]
+types-pytz = []
types-pyyaml = []
-types-requests = [
- {file = "types-requests-2.28.11.2.tar.gz", hash = "sha256:fdcd7bd148139fb8eef72cf4a41ac7273872cad9e6ada14b11ff5dfdeee60ed3"},
- {file = "types_requests-2.28.11.2-py3-none-any.whl", hash = "sha256:14941f8023a80b16441b3b46caffcbfce5265fd14555844d6029697824b5a2ef"},
-]
-types-setuptools = [
- {file = "types-setuptools-57.4.18.tar.gz", hash = "sha256:8ee03d823fe7fda0bd35faeae33d35cb5c25b497263e6a58b34c4cfd05f40bcf"},
- {file = "types_setuptools-57.4.18-py3-none-any.whl", hash = "sha256:9660b8774b12cd61b448e2fd87a667c02e7ec13ce9f15171f1d49a4654c4df6a"},
-]
+types-requests = []
+types-setuptools = []
types-six = []
types-urllib3 = []
-typing-extensions = [
- {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"},
- {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"},
-]
+typing-extensions = []
tzdata = []
-tzlocal = [
- {file = "tzlocal-4.2-py3-none-any.whl", hash = "sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745"},
- {file = "tzlocal-4.2.tar.gz", hash = "sha256:ee5842fa3a795f023514ac2d801c4a81d1743bbe642e3940143326b3a00addd7"},
-]
+tzlocal = []
ujson = []
-unidecode = [
- {file = "Unidecode-1.3.6-py3-none-any.whl", hash = "sha256:547d7c479e4f377b430dd91ac1275d593308dce0fc464fb2ab7d41f82ec653be"},
- {file = "Unidecode-1.3.6.tar.gz", hash = "sha256:fed09cf0be8cf415b391642c2a5addfc72194407caee4f98719e40ec2a72b830"},
-]
-update-checker = [
- {file = "update_checker-0.18.0-py3-none-any.whl", hash = "sha256:cbba64760a36fe2640d80d85306e8fe82b6816659190993b7bdabadee4d4bbfd"},
- {file = "update_checker-0.18.0.tar.gz", hash = "sha256:6a2d45bb4ac585884a6b03f9eade9161cedd9e8111545141e9aa9058932acb13"},
-]
-urllib3 = [
- {file = "urllib3-1.26.12-py2.py3-none-any.whl", hash = "sha256:b930dd878d5a8afb066a637fbb35144fe7901e3b209d1cd4f524bd0e9deee997"},
- {file = "urllib3-1.26.12.tar.gz", hash = "sha256:3fa96cf423e6987997fc326ae8df396db2a8b7c667747d47ddd8ecba91f4a74e"},
-]
-user-agent = [
- {file = "user_agent-0.1.10.tar.gz", hash = "sha256:b86537cb2a9d3bda0e2afcc654ec15b383502836877a67520654acadf73f1723"},
-]
-vadersentiment = [
- {file = "vaderSentiment-3.3.2-py2.py3-none-any.whl", hash = "sha256:3bf1d243b98b1afad575b9f22bc2cb1e212b94ff89ca74f8a23a588d024ea311"},
- {file = "vaderSentiment-3.3.2.tar.gz", hash = "sha256:5d7c06e027fc8b99238edb0d53d970cf97066ef97654009890b83703849632f9"},
-]
+unidecode = []
+update-checker = []
+urllib3 = []
+user-agent = []
+vadersentiment = []
validators = []
-valinvest = [
- {file = "valinvest-0.0.2-py3-none-any.whl", hash = "sha256:37fadaf30c69e0487fed8d9cc93bb792ca8cf36fed0839e0e755a84738166ab9"},
- {file = "valinvest-0.0.2.tar.gz", hash = "sha256:9614aaf8019e015c20ea48867ede8a6ea10e1c6410e787314066d7b2e5aeb7dc"},
-]
-vcrpy = [
- {file = "vcrpy-4.2.1-py2.py3-none-any.whl", hash = "sha256:efac3e2e0b2af7686f83a266518180af7a048619b2f696e7bad9520f5e2eac09"},
- {file = "vcrpy-4.2.1.tar.gz", hash = "sha256:7cd3e81a2c492e01c281f180bcc2a86b520b173d2b656cb5d89d99475423e013"},
-]
+valinvest = []
+vcrpy = []
virtualenv = []
voila = []
watchdog = []
-wcwidth = [
- {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"},
- {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"},
-]
-webencodings = [
- {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
- {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
-]
+wcwidth = []
+webencodings = []
websocket-client = []
-websockets = [
- {file = "websockets-10.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:661f641b44ed315556a2fa630239adfd77bd1b11cb0b9d96ed8ad90b0b1e4978"},
- {file = "websockets-10.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b529fdfa881b69fe563dbd98acce84f3e5a67df13de415e143ef053ff006d500"},
- {file = "websockets-10.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f351c7d7d92f67c0609329ab2735eee0426a03022771b00102816a72715bb00b"},
- {file = "websockets-10.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:379e03422178436af4f3abe0aa8f401aa77ae2487843738542a75faf44a31f0c"},
- {file = "websockets-10.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:e904c0381c014b914136c492c8fa711ca4cced4e9b3d110e5e7d436d0fc289e8"},
- {file = "websockets-10.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e7e6f2d6fd48422071cc8a6f8542016f350b79cc782752de531577d35e9bd677"},
- {file = "websockets-10.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b9c77f0d1436ea4b4dc089ed8335fa141e6a251a92f75f675056dac4ab47a71e"},
- {file = "websockets-10.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e6fa05a680e35d0fcc1470cb070b10e6fe247af54768f488ed93542e71339d6f"},
- {file = "websockets-10.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2f94fa3ae454a63ea3a19f73b95deeebc9f02ba2d5617ca16f0bbdae375cda47"},
- {file = "websockets-10.3-cp310-cp310-win32.whl", hash = "sha256:6ed1d6f791eabfd9808afea1e068f5e59418e55721db8b7f3bfc39dc831c42ae"},
- {file = "websockets-10.3-cp310-cp310-win_amd64.whl", hash = "sha256:347974105bbd4ea068106ec65e8e8ebd86f28c19e529d115d89bd8cc5cda3079"},
- {file = "websockets-10.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fab7c640815812ed5f10fbee7abbf58788d602046b7bb3af9b1ac753a6d5e916"},
- {file = "websockets-10.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:994cdb1942a7a4c2e10098d9162948c9e7b235df755de91ca33f6e0481366fdb"},
- {file = "websockets-10.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:aad5e300ab32036eb3fdc350ad30877210e2f51bceaca83fb7fef4d2b6c72b79"},
- {file = "websockets-10.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e49ea4c1a9543d2bd8a747ff24411509c29e4bdcde05b5b0895e2120cb1a761d"},
- {file = "websockets-10.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:6ea6b300a6bdd782e49922d690e11c3669828fe36fc2471408c58b93b5535a98"},
- {file = "websockets-10.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ef5ce841e102278c1c2e98f043db99d6755b1c58bde475516aef3a008ed7f28e"},
- {file = "websockets-10.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d1655a6fc7aecd333b079d00fb3c8132d18988e47f19740c69303bf02e9883c6"},
- {file = "websockets-10.3-cp37-cp37m-win32.whl", hash = "sha256:83e5ca0d5b743cde3d29fda74ccab37bdd0911f25bd4cdf09ff8b51b7b4f2fa1"},
- {file = "websockets-10.3-cp37-cp37m-win_amd64.whl", hash = "sha256:da4377904a3379f0c1b75a965fff23b28315bcd516d27f99a803720dfebd94d4"},
- {file = "websockets-10.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a1e15b230c3613e8ea82c9fc6941b2093e8eb939dd794c02754d33980ba81e36"},
- {file = "websockets-10.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:31564a67c3e4005f27815634343df688b25705cccb22bc1db621c781ddc64c69"},
- {file = "websockets-10.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c8d1d14aa0f600b5be363077b621b1b4d1eb3fbf90af83f9281cda668e6ff7fd"},
- {file = "websockets-10.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8fbd7d77f8aba46d43245e86dd91a8970eac4fb74c473f8e30e9c07581f852b2"},
- {file = "websockets-10.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:210aad7fdd381c52e58777560860c7e6110b6174488ef1d4b681c08b68bf7f8c"},
- {file = "websockets-10.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6075fd24df23133c1b078e08a9b04a3bc40b31a8def4ee0b9f2c8865acce913e"},
- {file = "websockets-10.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7f6d96fdb0975044fdd7953b35d003b03f9e2bcf85f2d2cf86285ece53e9f991"},
- {file = "websockets-10.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:c7250848ce69559756ad0086a37b82c986cd33c2d344ab87fea596c5ac6d9442"},
- {file = "websockets-10.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:28dd20b938a57c3124028680dc1600c197294da5db4292c76a0b48efb3ed7f76"},
- {file = "websockets-10.3-cp38-cp38-win32.whl", hash = "sha256:54c000abeaff6d8771a4e2cef40900919908ea7b6b6a30eae72752607c6db559"},
- {file = "websockets-10.3-cp38-cp38-win_amd64.whl", hash = "sha256:7ab36e17af592eec5747c68ef2722a74c1a4a70f3772bc661079baf4ae30e40d"},
- {file = "websockets-10.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a141de3d5a92188234afa61653ed0bbd2dde46ad47b15c3042ffb89548e77094"},
- {file = "websockets-10.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:97bc9d41e69a7521a358f9b8e44871f6cdeb42af31815c17aed36372d4eec667"},
- {file = "websockets-10.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d6353ba89cfc657a3f5beabb3b69be226adbb5c6c7a66398e17809b0ce3c4731"},
- {file = "websockets-10.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec2b0ab7edc8cd4b0eb428b38ed89079bdc20c6bdb5f889d353011038caac2f9"},
- {file = "websockets-10.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:85506b3328a9e083cc0a0fb3ba27e33c8db78341b3eb12eb72e8afd166c36680"},
- {file = "websockets-10.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8af75085b4bc0b5c40c4a3c0e113fa95e84c60f4ed6786cbb675aeb1ee128247"},
- {file = "websockets-10.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07cdc0a5b2549bcfbadb585ad8471ebdc7bdf91e32e34ae3889001c1c106a6af"},
- {file = "websockets-10.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5b936bf552e4f6357f5727579072ff1e1324717902127ffe60c92d29b67b7be3"},
- {file = "websockets-10.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e4e08305bfd76ba8edab08dcc6496f40674f44eb9d5e23153efa0a35750337e8"},
- {file = "websockets-10.3-cp39-cp39-win32.whl", hash = "sha256:bb621ec2dbbbe8df78a27dbd9dd7919f9b7d32a73fafcb4d9252fc4637343582"},
- {file = "websockets-10.3-cp39-cp39-win_amd64.whl", hash = "sha256:51695d3b199cd03098ae5b42833006a0f43dc5418d3102972addc593a783bc02"},
- {file = "websockets-10.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:907e8247480f287aa9bbc9391bd6de23c906d48af54c8c421df84655eef66af7"},
- {file = "websockets-10.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b1359aba0ff810d5830d5ab8e2c4a02bebf98a60aa0124fb29aa78cfdb8031f"},
- {file = "websockets-10.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:93d5ea0b5da8d66d868b32c614d2b52d14304444e39e13a59566d4acb8d6e2e4"},
- {file = "websockets-10.3-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7934e055fd5cd9dee60f11d16c8d79c4567315824bacb1246d0208a47eca9755"},
- {file = "websockets-10.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:3eda1cb7e9da1b22588cefff09f0951771d6ee9fa8dbe66f5ae04cc5f26b2b55"},
- {file = "websockets-10.3.tar.gz", hash = "sha256:fc06cc8073c8e87072138ba1e431300e2d408f054b27047d047b549455066ff4"},
-]
-widgetsnbextension = [
- {file = "widgetsnbextension-3.6.1-py2.py3-none-any.whl", hash = "sha256:954e0faefdd414e4e013f17dbc7fd86f24cf1d243a3ac85d5f0fc2c2d2b50c66"},
- {file = "widgetsnbextension-3.6.1.tar.gz", hash = "sha256:9c84ae64c2893c7cbe2eaafc7505221a795c27d68938454034ac487319a75b10"},
-]
-win32-setctime = [
- {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"},
- {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"},
-]
-wrapt = [
- {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"},
- {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"},
- {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"},
- {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"},
- {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"},
- {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"},
- {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"},
- {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"},
- {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"},
- {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"},
- {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"},
- {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"},
- {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"},
- {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"},
- {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"},
- {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"},
- {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"},
- {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"},
- {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"},
- {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"},
- {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"},
- {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"},
- {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"},
- {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"},
- {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"},
- {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"},
- {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"},
- {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"},
- {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"},
- {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"},
- {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"},
- {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"},
- {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"},
- {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"},
- {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"},
- {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"},
- {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"},
- {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"},
- {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"},
- {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"},
- {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"},
- {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"},
- {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"},
- {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"},
- {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"},
- {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"},
- {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"},
- {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"},
- {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"},
- {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"},
- {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"},
- {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"},
- {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"},
- {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"},
- {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"},
- {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"},
- {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"},
- {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"},
- {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"},
- {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"},
- {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"},
- {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"},
- {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"},
- {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"},
-]
-xlsxwriter = [
- {file = "XlsxWriter-3.0.3-py3-none-any.whl", hash = "sha256:df0aefe5137478d206847eccf9f114715e42aaea077e6a48d0e8a2152e983010"},
- {file = "XlsxWriter-3.0.3.tar.gz", hash = "sha256:e89f4a1d2fa2c9ea15cde77de95cd3fd8b0345d0efb3964623f395c8c4988b7f"},
-]
-yarl = [
- {file = "yarl-1.8.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:abc06b97407868ef38f3d172762f4069323de52f2b70d133d096a48d72215d28"},
- {file = "yarl-1.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:07b21e274de4c637f3e3b7104694e53260b5fc10d51fb3ec5fed1da8e0f754e3"},
- {file = "yarl-1.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9de955d98e02fab288c7718662afb33aab64212ecb368c5dc866d9a57bf48880"},
- {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ec362167e2c9fd178f82f252b6d97669d7245695dc057ee182118042026da40"},
- {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:20df6ff4089bc86e4a66e3b1380460f864df3dd9dccaf88d6b3385d24405893b"},
- {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5999c4662631cb798496535afbd837a102859568adc67d75d2045e31ec3ac497"},
- {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed19b74e81b10b592084a5ad1e70f845f0aacb57577018d31de064e71ffa267a"},
- {file = "yarl-1.8.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e4808f996ca39a6463f45182e2af2fae55e2560be586d447ce8016f389f626f"},
- {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2d800b9c2eaf0684c08be5f50e52bfa2aa920e7163c2ea43f4f431e829b4f0fd"},
- {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6628d750041550c5d9da50bb40b5cf28a2e63b9388bac10fedd4f19236ef4957"},
- {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f5af52738e225fcc526ae64071b7e5342abe03f42e0e8918227b38c9aa711e28"},
- {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:76577f13333b4fe345c3704811ac7509b31499132ff0181f25ee26619de2c843"},
- {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0c03f456522d1ec815893d85fccb5def01ffaa74c1b16ff30f8aaa03eb21e453"},
- {file = "yarl-1.8.1-cp310-cp310-win32.whl", hash = "sha256:ea30a42dc94d42f2ba4d0f7c0ffb4f4f9baa1b23045910c0c32df9c9902cb272"},
- {file = "yarl-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:9130ddf1ae9978abe63808b6b60a897e41fccb834408cde79522feb37fb72fb0"},
- {file = "yarl-1.8.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0ab5a138211c1c366404d912824bdcf5545ccba5b3ff52c42c4af4cbdc2c5035"},
- {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0fb2cb4204ddb456a8e32381f9a90000429489a25f64e817e6ff94879d432fc"},
- {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85cba594433915d5c9a0d14b24cfba0339f57a2fff203a5d4fd070e593307d0b"},
- {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ca7e596c55bd675432b11320b4eacc62310c2145d6801a1f8e9ad160685a231"},
- {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0f77539733e0ec2475ddcd4e26777d08996f8cd55d2aef82ec4d3896687abda"},
- {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29e256649f42771829974e742061c3501cc50cf16e63f91ed8d1bf98242e5507"},
- {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7fce6cbc6c170ede0221cc8c91b285f7f3c8b9fe28283b51885ff621bbe0f8ee"},
- {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:59ddd85a1214862ce7c7c66457f05543b6a275b70a65de366030d56159a979f0"},
- {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:12768232751689c1a89b0376a96a32bc7633c08da45ad985d0c49ede691f5c0d"},
- {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:b19255dde4b4f4c32e012038f2c169bb72e7f081552bea4641cab4d88bc409dd"},
- {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6c8148e0b52bf9535c40c48faebb00cb294ee577ca069d21bd5c48d302a83780"},
- {file = "yarl-1.8.1-cp37-cp37m-win32.whl", hash = "sha256:de839c3a1826a909fdbfe05f6fe2167c4ab033f1133757b5936efe2f84904c07"},
- {file = "yarl-1.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:dd032e8422a52e5a4860e062eb84ac94ea08861d334a4bcaf142a63ce8ad4802"},
- {file = "yarl-1.8.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:19cd801d6f983918a3f3a39f3a45b553c015c5aac92ccd1fac619bd74beece4a"},
- {file = "yarl-1.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6347f1a58e658b97b0a0d1ff7658a03cb79bdbda0331603bed24dd7054a6dea1"},
- {file = "yarl-1.8.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c0da7e44d0c9108d8b98469338705e07f4bb7dab96dbd8fa4e91b337db42548"},
- {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5587bba41399854703212b87071c6d8638fa6e61656385875f8c6dff92b2e461"},
- {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31a9a04ecccd6b03e2b0e12e82131f1488dea5555a13a4d32f064e22a6003cfe"},
- {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:205904cffd69ae972a1707a1bd3ea7cded594b1d773a0ce66714edf17833cdae"},
- {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea513a25976d21733bff523e0ca836ef1679630ef4ad22d46987d04b372d57fc"},
- {file = "yarl-1.8.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0b51530877d3ad7a8d47b2fff0c8df3b8f3b8deddf057379ba50b13df2a5eae"},
- {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d2b8f245dad9e331540c350285910b20dd913dc86d4ee410c11d48523c4fd546"},
- {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ab2a60d57ca88e1d4ca34a10e9fb4ab2ac5ad315543351de3a612bbb0560bead"},
- {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:449c957ffc6bc2309e1fbe67ab7d2c1efca89d3f4912baeb8ead207bb3cc1cd4"},
- {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a165442348c211b5dea67c0206fc61366212d7082ba8118c8c5c1c853ea4d82e"},
- {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b3ded839a5c5608eec8b6f9ae9a62cb22cd037ea97c627f38ae0841a48f09eae"},
- {file = "yarl-1.8.1-cp38-cp38-win32.whl", hash = "sha256:c1445a0c562ed561d06d8cbc5c8916c6008a31c60bc3655cdd2de1d3bf5174a0"},
- {file = "yarl-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:56c11efb0a89700987d05597b08a1efcd78d74c52febe530126785e1b1a285f4"},
- {file = "yarl-1.8.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e80ed5a9939ceb6fda42811542f31c8602be336b1fb977bccb012e83da7e4936"},
- {file = "yarl-1.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6afb336e23a793cd3b6476c30f030a0d4c7539cd81649683b5e0c1b0ab0bf350"},
- {file = "yarl-1.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4c322cbaa4ed78a8aac89b2174a6df398faf50e5fc12c4c191c40c59d5e28357"},
- {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fae37373155f5ef9b403ab48af5136ae9851151f7aacd9926251ab26b953118b"},
- {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5395da939ffa959974577eff2cbfc24b004a2fb6c346918f39966a5786874e54"},
- {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:076eede537ab978b605f41db79a56cad2e7efeea2aa6e0fa8f05a26c24a034fb"},
- {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d1a50e461615747dd93c099f297c1994d472b0f4d2db8a64e55b1edf704ec1c"},
- {file = "yarl-1.8.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7de89c8456525650ffa2bb56a3eee6af891e98f498babd43ae307bd42dca98f6"},
- {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4a88510731cd8d4befaba5fbd734a7dd914de5ab8132a5b3dde0bbd6c9476c64"},
- {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2d93a049d29df172f48bcb09acf9226318e712ce67374f893b460b42cc1380ae"},
- {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:21ac44b763e0eec15746a3d440f5e09ad2ecc8b5f6dcd3ea8cb4773d6d4703e3"},
- {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d0272228fabe78ce00a3365ffffd6f643f57a91043e119c289aaba202f4095b0"},
- {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:99449cd5366fe4608e7226c6cae80873296dfa0cde45d9b498fefa1de315a09e"},
- {file = "yarl-1.8.1-cp39-cp39-win32.whl", hash = "sha256:8b0af1cf36b93cee99a31a545fe91d08223e64390c5ecc5e94c39511832a4bb6"},
- {file = "yarl-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:de49d77e968de6626ba7ef4472323f9d2e5a56c1d85b7c0e2a190b2173d3b9be"},
- {file = "yarl-1.8.1.tar.gz", hash = "sha256:af887845b8c2e060eb5605ff72b6f2dd2aab7a761379373fd89d314f4752abbf"},
-]
+websockets = []
+widgetsnbextension = []
+win32-setctime = []
+wrapt = []
+xlsxwriter = []
+yarl = []
yfinance = []
-zipp = [
- {file = "zipp-3.10.0-py3-none-any.whl", hash = "sha256:4fcb6f278987a6605757302a6e40e896257570d11c51628968ccb2a47e80c6c1"},
- {file = "zipp-3.10.0.tar.gz", hash = "sha256:7a7262fd930bd3e36c50b9a64897aec3fafff3dfdeec9623ae22b40e93f99bb8"},
-]
+zipp = []
"zope.interface" = []
diff --git a/pyproject.toml b/pyproject.toml
index 5f24aa7fbd3..72428346f40 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -100,6 +100,7 @@ ipyflex = "^0.2.4"
setuptools = "^65.4.1"
investiny = "^0.5.0"
numpy = "1.21.6"
+papermill = {git = "https://github.com/nteract/papermill.git", rev = "main"}
stocksera = "^0.1.21"
[tool.poetry.dev-dependencies]
diff --git a/requirements-full.txt b/requirements-full.txt
index e124655699b..3eea5dfb17a 100644
--- a/requirements-full.txt
+++ b/requirements-full.txt
@@ -38,7 +38,7 @@ cfgv==3.3.1; python_full_version >= "3.6.1" and python_version >= "3.7"
charset-normalizer==2.1.0; python_full_version >= "3.6.0"
click==8.1.3; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
codespell==2.2.2; python_version >= "3.7"
-colorama==0.4.6; python_full_version >= "3.7.2" and python_version >= "3.8" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.7.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.7" and python_full_version >= "3.7.0") and (python_version >= "2.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_full_version >= "3.7.0" and platform_system == "Windows") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") or platform_system == "Windows" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") and python_full_version >= "3.7.0") and python_full_version < "4.0.0"
+colorama==0.4.6; python_full_version >= "3.7.2" and python_version >= "3.8" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.7.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.7" and python_full_version >= "3.7.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") or platform_system == "Windows" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") and python_full_version >= "3.7.0") and python_full_version < "4.0.0"
commonmark==0.9.1; python_full_version >= "3.6.3" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
convertdate==2.4.0; python_version >= "3.7" and python_version < "4"
coverage==6.5.0; python_version >= "3.7"
@@ -164,6 +164,7 @@ pandas-market-calendars==3.2; python_full_version >= "3.7.0"
pandas-ta==0.3.14b
pandas==1.5.1; python_version >= "3.8"
pandocfilters==1.5.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
+papermill @ git+https://github.com/nteract/papermill.git@main ; python_version >= "3.7"
parso==0.8.3; python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0"
pathspec==0.10.1; python_version >= "3.7"
patsy==0.5.3; python_version >= "3.8"
@@ -277,7 +278,7 @@ stocksera==0.1.21; python_version >= "3.6"
streamlit==1.13.0; (python_version >= "3.7" and python_full_version < "3.9.7") or (python_full_version > "3.9.7")
tabulate==0.9.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
temporal-cache==0.1.4
-tenacity==8.1.0; python_version >= "3.6"
+tenacity==8.1.0; python_version >= "3.7"
terminado==0.16.0; python_version >= "3.7"
thepassiveinvestor==1.0.10
threadpoolctl==3.1.0; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
@@ -290,7 +291,7 @@ tomlkit==0.11.5; python_version >= "3.6" and python_version < "4.0" and python_f
toolz==0.12.0; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7")
torch==1.11.0; python_full_version >= "3.7.0"
tornado==6.2; python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0"
-tqdm==4.64.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0"
+tqdm==4.64.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
tradingview-ta==3.3.0; python_version >= "3.6"
traitlets==5.5.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
types-python-dateutil==2.8.19.2
diff --git a/requirements.txt b/requirements.txt
index f3a9b690a0c..23b83575637 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -140,6 +140,7 @@ pandas-market-calendars==3.2; python_full_version >= "3.7.0"
pandas-ta==0.3.14b
pandas==1.5.1; python_version >= "3.8"
pandocfilters==1.5.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
+papermill @ git+https://github.com/nteract/papermill.git@main ; python_version >= "3.7"
parso==0.8.3; python_version >= "3.8"
patsy==0.5.3; python_version >= "3.8"
pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.8"
@@ -232,7 +233,7 @@ stocksera==0.1.21; python_version >= "3.6"
streamlit==1.13.0; (python_version >= "3.7" and python_full_version < "3.9.7") or (python_full_version > "3.9.7")
tabulate==0.9.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
temporal-cache==0.1.4
-tenacity==8.1.0; python_version >= "3.6"
+tenacity==8.1.0; python_version >= "3.7"
terminado==0.16.0; python_version >= "3.7"
thepassiveinvestor==1.0.10
threadpoolctl==3.1.0; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
@@ -242,7 +243,7 @@ toml==0.10.2; python_version >= "3.7" and python_full_version < "3.0.0" or pytho
tomli==2.0.1; python_version >= "3.8"
toolz==0.12.0; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7")
tornado==6.2; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
-tqdm==4.64.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0"
+tqdm==4.64.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
tradingview-ta==3.3.0; python_version >= "3.6"
traitlets==5.5.0; python_full_version >= "3.7.0" and python_version >= "3.8"
typing-extensions==4.4.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version < "3.9" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
diff --git a/tests/openbb_terminal/reports/__init__.py b/tests/openbb_terminal/reports/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/tests/openbb_terminal/reports/test_reports_controller.py b/tests/openbb_terminal/reports/test_reports_controller.py
new file mode 100644
index 00000000000..a45942fee56
--- /dev/null
+++ b/tests/openbb_terminal/reports/test_reports_controller.py
@@ -0,0 +1,358 @@
+# IMPORTATION STANDARD
+import os
+
+# IMPORTATION THIRDPARTY
+import pytest
+
+# IMPORTATION INTERNAL
+from openbb_terminal.reports import reports_controller, reports_model
+
+
+# pylint: disable=E1101
+# pylint: disable=W0603
+# pylint: disable=E1111
+
+
+@pytest.mark.vcr(record_mode="none")
+@pytest.mark.parametrize(
+ "queue, expected",
+ [
+ (["load", "help"], ["help"]),
+ (["quit", "help"], ["help"]),
+ ],
+)
+def test_menu_with_queue(expected, mocker, queue):
+ path_controller = "openbb_terminal.reports.reports_controller"
+
+ # MOCK SWITCH
+ mocker.patch(
+ target=f"{path_controller}.ReportController.switch",
+ return_value=["quit"],
+ )
+ result_menu = reports_controller.ReportController(queue=queue).menu()
+
+ assert result_menu == expected
+
+
+@pytest.mark.vcr(record_mode="none")
+def test_menu_without_queue_completion(mocker):
+ path_controller = "openbb_terminal.reports.reports_controller"
+
+ # ENABLE AUTO-COMPLETION : HELPER_FUNCS.MENU
+ mocker.patch(
+ target="openbb_terminal.feature_flags.USE_PROMPT_TOOLKIT",
+ new=True,
+ )
+ mocker.patch(
+ target="openbb_terminal.parent_classes.session",
+ )
+ mocker.patch(
+ target="openbb_terminal.parent_classes.session.prompt",
+ return_value="quit",
+ )
+
+ # DISABLE AUTO-COMPLETION : CONTROLLER.COMPLETER
+ mocker.patch.object(
+ target=reports_controller.obbff,
+ attribute="USE_PROMPT_TOOLKIT",
+ new=True,
+ )
+ mocker.patch(
+ target=f"{path_controller}.session",
+ )
+ mocker.patch(
+ target=f"{path_controller}.session.prompt",
+ return_value="quit",
+ )
+
+ result_menu = reports_controller.ReportController(queue=None).menu()
+
+ assert result_menu == ["help"]
+
+
+@pytest.mark.vcr(record_mode="none")
+@pytest.mark.parametrize(
+ "mock_input",
+ ["help", "homee help", "home help", "mock"],
+)
+def test_menu_without_queue_sys_exit(mock_input, mocker):
+ path_controller = "openbb_terminal.reports.reports_controller"
+
+ # DISABLE AUTO-COMPLETION
+ mocker.patch.object(
+ target=reports_controller.obbff,
+ attribute="USE_PROMPT_TOOLKIT",
+ new=False,
+ )
+ mocker.patch(
+ target=f"{path_controller}.session",
+ return_value=None,
+ )
+
+ # MOCK USER INPUT
+ mocker.patch("builtins.input", return_value=mock_input)
+
+ # MOCK SWITCH
+ class SystemExitSideEffect:
+ def __init__(self):
+ self.first_call = True
+
+ def __call__(self, *args, **kwargs):
+ if self.first_call:
+ self.first_call = False
+ raise SystemExit()
+ return ["quit"]
+
+ mock_switch = mocker.Mock(side_effect=SystemExitSideEffect())
+ mocker.patch(
+ target=f"{path_controller}.ReportController.switch",
+ new=mock_switch,
+ )
+
+ result_menu = reports_controller.ReportController(queue=None).menu()
+
+ assert result_menu == ["help"]
+
+
+@pytest.mark.vcr(record_mode="none")
+@pytest.mark.record_stdout
+def test_print_help():
+ controller = reports_controller.ReportController(queue=None)
+ controller.print_help()
+
+
+@pytest.mark.vcr(record_mode="none")
+@pytest.mark.parametrize(
+ "an_input, expected_queue",
+ [
+ ("", []),
+ ("/help", ["home", "help"]),
+ ("help/help", ["help", "help"]),
+ ("q", ["quit"]),
+ ("h", []),
+ (
+ "r",
+ [
+ "quit",
+ "reset",
+ "reports",
+ ],
+ ),
+ ],
+)
+def test_switch(an_input, expected_queue):
+ controller = reports_controller.ReportController(queue=None)
+ queue = controller.switch(an_input=an_input)
+
+ assert queue == expected_queue
+
+
+@pytest.mark.vcr(record_mode="none")
+def test_call_cls(mocker):
+ mocker.patch("os.system")
+
+ controller = reports_controller.ReportController(queue=None)
+ controller.call_cls([])
+
+ assert controller.queue == []
+ os.system.assert_called_once_with("cls||clear")
+
+
+@pytest.mark.vcr(record_mode="none")
+@pytest.mark.parametrize(
+ "func, queue, expected_queue",
+ [
+ (
+ "call_exit",
+ [],
+ ["quit", "quit"],
+ ),
+ ("call_exit", ["help"], ["quit", "quit", "help"]),
+ ("call_home", [], ["quit"]),
+ ("call_help", [], []),
+ ("call_quit", [], ["quit"]),
+ ("call_quit", ["help"], ["quit", "help"]),
+ (
+ "call_reset",
+ [],
+ [
+ "quit",
+ "reset",
+ "reports",
+ ],
+ ),
+ (
+ "call_reset",
+ ["help"],
+ [
+ "quit",
+ "reset",
+ "reports",
+ "help",
+ ],
+ ),
+ ],
+)
+def test_call_func_expect_queue(expected_queue, func, queue):
+ controller = reports_controller.ReportController(queue=queue)
+ result = getattr(controller, func)([])
+
+ assert result is None
+ assert controller.queue == expected_queue
+
+
+@pytest.mark.vcr(record_mode="none")
+@pytest.mark.parametrize(
+ "tested_func, other_args, mocked_func, called_args, called_kwargs",
+ [
+ (
+ "call_etf",
+ [
+ "--symbol=SPY",
+ ],
+ "reports_model.render_report",
+ [],
+ dict(
+ input_path=str(reports_model.REPORTS_FOLDER / "etf"),
+ args_dict={"symbol": "SPY"},
+ ),
+ ),
+ (
+ "call_forex",
+ [
+ "--symbol=EURUSD",
+ ],
+ "reports_model.render_report",
+ [],
+ dict(
+ input_path=str(reports_model.REPORTS_FOLDER / "forex"),
+ args_dict={"symbol": "EURUSD"},
+ ),
+ ),
+ (
+ "call_portfolio",
+ [
+ "--orderbook=market.csv",
+ ],
+ "reports_model.render_report",
+ [],
+ dict(
+ input_path=str(reports_model.REPORTS_FOLDER / "portfolio"),
+ args_dict={"orderbook": "market.csv"},
+ ),
+ ),
+ (
+ "call_economy",
+ [],
+ "reports_model.render_report",
+ [],
+ dict(
+ input_path=str(reports_model.REPORTS_FOLDER / "economy"),
+ args_dict={},
+ ),
+ ),
+ (
+ "call_equity",
+ [
+ "--symbol=TSLA",
+ ],
+ "reports_model.render_report",
+ [],
+ dict(
+ input_path=str(reports_model.REPORTS_FOLDER / "equity"),
+ args_dict={"symbol": "TSLA"},
+ ),
+ ),
+ (
+ "call_crypto",
+ [
+ "--symbol=BTC",
+ ],
+ "reports_model.render_report",
+ [],
+ dict(
+ input_path=str(reports_model.REPORTS_FOLDER / "crypto"),
+ args_dict={"symbol": "BTC"},
+ ),
+ ),
+ ],
+)
+def test_call_func(
+ tested_func, mocked_func, other_args, called_args, called_kwargs, mocker
+):
+ path_controller = "openbb_terminal.reports.reports_controller"
+
+ # MOCK REMOVE
+ mocker.patch(target=f"{path_controller}.os.remove")
+
+ if mocked_func:
+ mock = mocker.Mock()
+ mocker.patch(
+ target=f"{path_controller}.{mocked_func}",
+ new=mock,
+ )
+
+ controller = reports_controller.ReportController(queue=None)
+ getattr(controller, tested_func)(other_args)
+
+ if called_args or called_kwargs:
+ mock.assert_called_once_with(*called_args, **called_kwargs)
+ else:
+ mock.assert_called_once()
+ else:
+ controller = reports_controller.ReportController(queue=None)
+ getattr(controller, tested_func)(other_args)
+
+
+# TODO: No test for forecast command, because it depends on darts being available
+@pytest.mark.vcr(record_mode="none")
+@pytest.mark.parametrize(
+ "tested_func, other_args, mocked_func, called_args, called_kwargs",
+ [
+ (
+ "call_forecast",
+ [
+ "--symbol=TSLA",
+ ],
+ "reports_model.render_report",
+ [],
+ dict(
+ input_path=str(reports_model.REPORTS_FOLDER / "forecast"),
+ args_dict={"symbol": "TSLA"},
+ ),
+ ),
+ ],
+)
+def test_call_func_forecast(
+ tested_func, mocked_func, other_args, called_args, called_kwargs, mocker
+):
+ path_controller = "openbb_terminal.reports.reports_controller"
+
+ # MOCK REMOVE
+ mocker.patch(target=f"{path_controller}.os.remove")
+
+ try:
+ import darts # pyright: reportMissingImports=false # noqa: F401, E501 #pylint: disable=import-outside-toplevel, unused-import
+
+ forecast = True
+ except ImportError:
+ forecast = False
+
+ if forecast:
+ if mocked_func:
+ mock = mocker.Mock()
+ mocker.patch(
+ target=f"{path_controller}.{mocked_func}",
+ new=mock,
+ )
+
+ controller = reports_controller.ReportController(queue=None)
+ getattr(controller, tested_func)(other_args)
+
+ if called_args or called_kwargs:
+ mock.assert_called_once_with(*called_args, **called_kwargs)
+ else:
+ mock.assert_called_once()
+ else:
+ controller = reports_controller.ReportController(queue=None)
+ getattr(controller, tested_func)(other_args)
diff --git a/tests/openbb_terminal/reports/txt/test_reports_controller/test_print_help.txt b/tests/openbb_terminal/reports/txt/test_reports_controller/test_print_help.txt
new file mode 100644
index 00000000000..3b82a2c2452
--- /dev/null
+++ b/tests/openbb_terminal/reports/txt/test_reports_controller/test_print_help.txt
@@ -0,0 +1,14 @@
+Build and run your custom reports or try one of our templates:
+
+OpenBB reports:
+ crypto
+ economy
+ equity
+ etf
+ forecast
+ forex
+ portfolio
+
+Custom reports:
+ run Run a Jupyter notebook from OpenBBUserData/reports/custom reports
+
diff --git a/website/content/terminal/jupyter/reports/_index.md b/website/content/terminal/jupyter/reports/_index.md
index 0519ecba6ea..eba6506f2f4 100644
--- a/website/content/terminal/jupyter/reports/_index.md
+++ b/website/content/terminal/jupyter/reports/_index.md
@@ -1 +1,6 @@
-
\ No newline at end of file
+---
+geekdocCollapseSection: true
+---
+
+**Available commands:**
+{{< toc-tree >}}
\ No newline at end of file
diff --git a/website/content/terminal/jupyter/reports/crypto/_index.md b/website/content/terminal/jupyter/reports/crypto/_index.md
new file mode 100644
index 00000000000..7944df293c8
--- /dev/null
+++ b/website/content/terminal/jupyter/reports/crypto/_index.md
@@ -0,0 +1,13 @@
+```
+usage: chains [-j] [-h]
+```
+
+Opens a voila dashboard showing option chain information for a given ticker and expiration
+
+```
+optional arguments:
+ -j, --jupyter opens in jupyterlab instead of voila (default: False)
+ -d, --dark runs voila in dark mode (default: False)
+ -n, --no-input does not ask the user if it can open a server (default: False)
+ -h, --help show this help message
+```
diff --git a/website/content/terminal/jupyter/reports/economy/_index.md b/website/content/terminal/jupyter/reports/economy/_index.md
new file mode 100644
index 00000000000..46c797072cd
--- /dev/null
+++ b/website/content/terminal/jupyter/reports/economy/_index.md
@@ -0,0 +1,8 @@
+```
+usage: economy [-h]
+
+Run economy report.
+
+optional arguments:
+ -h, --help show this help message (default: False)
+```
diff --git a/website/content/terminal/jupyter/reports/equity/_index.md b/website/content/terminal/jupyter/reports/equity/_index.md
new file mode 100644
index 00000000000..9cc4f19a7f7
--- /dev/null
+++ b/website/content/terminal/jupyter/reports/equity/_index.md
@@ -0,0 +1,9 @@
+```
+usage: equity [--symbol SYMBOL] [-h]
+
+Run equity report.
+
+optional arguments:
+ --symbol SYMBOL symbol (default: msft)
+ -h, --help show this help message (default: False)
+```
diff --git a/website/content/terminal/jupyter/reports/etf/_index.md b/website/content/terminal/jupyter/reports/etf/_index.md
new file mode 100644
index 00000000000..1639942a4e3
--- /dev/null
+++ b/website/content/terminal/jupyter/reports/etf/_index.md
@@ -0,0 +1,9 @@
+```
+usage: etf [--symbol SYMBOL] [-h]
+
+Run etf report.
+
+optional arguments:
+ --symbol SYMBOL symbol (default: VTI)
+ -h, --help show this help message (default: False)
+```
diff --git a/website/content/terminal/jupyter/reports/forecast/_index.md b/website/content/terminal/jupyter/reports/forecast/_index.md
new file mode 100644
index 00000000000..16e93e96e04
--- /dev/null
+++ b/website/content/terminal/jupyter/reports/forecast/_index.md
@@ -0,0 +1,9 @@
+```
+usage: forecast [--symbol SYMBOL] [-h]
+
+Run forecast report.
+
+optional arguments:
+ --symbol SYMBOL symbol (default: VTI)
+ -h, --help show this help message (default: False)
+```
diff --git a/website/content/terminal/jupyter/reports/forex/_index.md b/website/content/terminal/jupyter/reports/forex/_index.md
new file mode 100644
index 00000000000..afc9f462017
--- /dev/null
+++ b/website/content/terminal/jupyter/reports/forex/_index.md
@@ -0,0 +1,12 @@
+```
+usage: forex
+ [--symbol {AUDCHF,ZARPLN,DKKNZD,XAGUSD,USDRWF,MYREUR,ZAREUR,MWKGBP,USDBSD,ALLGBP,MXNZAR,HUFUSD,BRLARS,OMRAED,ZARUGX,GBPCZK,XAUCNY,MURGBP,EURLSL,EURBWP,AEDPKR,XAGBRL,XAUGBP,IDRKRW,BRICHF,VNDJPY,MADAUD,GBPBMD,USDTMT,HRKUSD,HUFPLN,HUFDKK,SGDGBP,KZTGBP,AUNUSD,EURCNY,HUFCAD,GBPSEK,ZARIDR,JPYTHB,MDLGBP,IDRCHF,KWDAED,SARJPY,GBPRON,ARSPEN,TWDCHF,INREUR,DKKCAD,USDCZK,AUDIDR,SARUSD,THBINR,XAUCAD,GHSGBP,EURKHR,ZMWZAR,ILSSEK,SGDTHB,EURKYD,USDMGA,ZARNOK,SGDCAD,SEKINR,DKKRUB,THBUSD,USDMYR,USDUZS,ZARSZL,JPYCLP,UAHUSD,JPYMXN,JPYNOK,AUDCNY,EURGYD,GBPBDT,PENUSD,ZARPHP,MXNARS,PLNCZK,GBPAUD,AEDAUD,RUBPLN,USDSDG,EURSCR,HKDMXN,RUBCHF,TRYJPY,OSOUSD,GBPMAD,EURTJS,PKREUR,EURCDF,AUDCAD,USDRSD,JPYCZK,BRLCLP,MWKUSD,ISKCHF,GBPBTN,BAMGBP,ILSZAR,SEKZAR,HUFZAR,QARAED,SARKWD,MYRHKD,RONZAR,JPYSAR,BHDPKR,DOPUSD,AUDGBP,INRHKD,XAUAUD,IDRAUD,XAUHKD,KRWSGD,AUDNZD,JPYGBP,KESUSD,KRWRUB,TNDGBP,USDEUR,BWPGBP,DKKMYR,GBPNGN,QARPKR,TWDCAD,BMDGBP,HUFJPY,GBPSCR,EURMVR,KHRGBP,LKRZAR,ZARBWP,EURIDR,GBPUAH,GBPGYD,ZARTND,KRWUSD,AUDMAD,ZARPKR,NZDGBP,AEDSAR,MYRIDR,XPTEUR,GHSZAR,SGDSEK,PENCAD,HKDZAR,SGDJPY,TRYUSD,GBPAMD,EURCOP,NZDZAR,DKKSGD,IDRTHB,AEDSEK,BDTGBP,AUDTHB,XAUKRW,GBPRUB,GBPYER,USDMVR,BRLMXN,TTDGBP,GBPBBD,EURPLN,SGDUSD,AUDILS,EURAED,NSOUSD,VRLCHF,SCRUSD,RWFUSD,ZARHKD,EURNZD,IDRZAR,TWDINR,KRWZAR,ZARNAD,HRKPLN,BAMUSD,EUREGP,NPRUSD,KRWTWD,XAUJPY,USDBHD,BNDGBP,EURBMD,EURNOK,MXNUSD,USDEGP,XPTGBP,ARSCOP,NZDCHF,NZDJPY,KRWCAD,EURBRL,DKKSEK,MALCHF,SOSUSD,GBPCUP,AUDCLP,EURUYU,EURUZS,UYUUSD,EURUSD,BWPZAR,NZDPLN,GBPLRD,IDRMYR,PABUSD,USDPKR,ARSCHF,MYRNZD,JODUSD,ARSHKD,EURMKD,EURLYD,XAGARS,ISKUSD,HKDSEK,USDTRY,RSDUSD,DKKAED,ZARMYR,KMFUSD,NGNZAR,IDRJPY,SARPKR,GBPMYR,ILSAUD,IDREUR,JPYAUD,QARUSD,GBPSLL,GBPEUR,PHPUSD,THBEUR,RUBEUR,USDMMK,XAGGBP,ZARARS,USDKMF,BZDUSD,SEKPLN,PLNJPY,GBPLBP,EURHNL,AUDPKR,KYDCAD,XAUZAR,MGAGBP,LRDUSD,NZDTRY,AUDHUF,USDLKR,EURNGN,BNDUSD,SGDIDR,MYRCAD,HKDPLN,EUROMR,EURSAR,GBPJPY,IDRHKD,MXNPEN,USDXPF,IQDGBP,USDPGK,INRCHF,NZDHKD,AUDHKD,BBDGBP,USDGTQ,NGNJPY,ARSSGD,GBPMOP,TWDMYR,BMDCAD,XPDUSD,USDDZD,EURBSD,SGDZAR,AUNCHF,ARSMXN,AUDFJD,UGXZAR,AUDARS,IQDUSD,MXNEUR,HKDAUD,XAGEUR,RONGBP,USDZMW,TRYSGD,INRSGD,GBPLAK,GBPMWK,EURKES,USDCUP,USDUYU,AUDJPY,XAGCAD,DKKCNY,USDJMD,MADGBP,ILSNOK,MUREUR,THBHKD,INRTHB,SAREUR,MYRGBP,AMDGBP,HKDARS,GBPARS,SGDAUD,INRTWD,BHDUSD,LRDGBP,GBPPAB,RONUSD,IDRNZD,MYRKRW,KMFGBP,ZARGHS,PLNMXN,USDHUF,ARECHF,BMDEUR,KYDGBP,AUDNOK,AUDCNH,TWDNZD,KWDEUR,EURZMW,KZTUSD,GBPBOB,GBPJMD,DKKCHF,EURCNH,SEKILS,AUDKRW,AWGGBP,HNLGBP,XAUEUR,NSOCHF,GBPLSL,USDBZD,ZARKES,SLLUSD,THBCHF,NOKUSD,EURCZK,HKDGBP,GBPTTD,MMKGBP,PGKGBP,BRLAUD,AEDDKK,EURBHD,JMDUSD,USDNGN,NOKRUB,SVCUSD,GBPQAR,LTLAUD,JPYTWD,USDRON,KRUCHF,SGDBRL,EGPPKR,EURJMD,MXNDKK,NZDMYR,USDLBP,MWKZAR,HRKAUD,MYRJPY,USDKWD,AUDBRL,EURYER,PLNGBP,IDRTWD,EGPEUR,EURPYG,ILSAED,EURKZT,DKKZAR,FJDUSD,NBLUSD,AEDEUR,PLNNOK,XPTUSD,MXNBRL,USDNAD,ZARUSD,NOKINR,ARSZAR,BOBGBP,RWFZAR,GBPLYD,USDUGX,GBPCHF,DKKAUD,PLNCHF,USDBIF,AUDSGD,MXNCZK,PENGBP,NOKAED,USDMKD,MKDGBP,PKRUSD,EURPGK,THBPKR,HTGUSD,SGDPKR,LKRGBP,EURPKR,ZARMXN,USDMXN,USDHRK,INRJPY,FRNCHF,MXNCLP,GBPNOK,SGDPLN,USDARS,OMRUSD,DKKBGN,INRSEK,USDCAD,XPDGBP,KESZAR,JPYPKR,BDTJPY,NPRGBP,EURZAR,MYRPKR,PGKAUD,KYDEUR,DKKISK,SGDEUR,MYRZAR,PLNDKK,BRLPEN,ZMWUSD,TNDUSD,GHSEUR,PGKUSD,KYDBMD,SZLGBP,DKKMXN,BGNCAD,BRLCHF,INRMYR,GBPISK,SGDNOK,HKDTHB,TWDPKR,GBPPYG,NOKDKK,GBPTHB,EURJOD,EURUAH,RUBZAR,PENMXN,SGDNZD,HKDPKR,USDDOP,NZDHUF,KYDUSD,GBPBZD,EGPZAR,NZDUSD,KWDGBP,USDBAM,EURTTD,ZARCAD,AEDINR,EURTND,USDCDF,ZARCOP,KRWEUR,ILSEUR,SVCGBP,GBPBAM,IDRINR,DOECHF,ZARNGN,DOEUSD,THBCNY,GBPTND,MGAUSD,THBZAR,TWDJPY,SZLEUR,EURLAK,EURUGX,KRWCNY,DZDEUR,EURCHF,ZARGBP,MYRCHF,HKDINR,EURHRK,USDKRW,SEKEUR,MDLEUR,AEDBHD,RUBKRW,USDBND,NIOGBP,DKKUSD,NIOUSD,BDTUSD,USDILS,GBPSZL,NOKZAR,BRLRSD,HTGGBP,RUBSEK,EURLKR,SEKGBP,DKKCZK,THBCAD,EURVND,USDGNF,GBPPHP,MXNSGD,AUDMYR,EURGNF,USDKES,ETBGBP,EURBZD,GBPUGX,USDPAB,HNLUSD,ARSAUD,SGDARS,JODILS,GBPKHR,USDFJD,DKKNOK,GBPPEN,DKKINR,JPYKRW,ZARAUD,VNDCAD,TWDEUR,JPYSEK,ZARDKK,INRCAD,EURLBP,XCDGBP,HUFCHF,XAUMXN,XAUINR,GBPMKD,THBMYR,KWDPKR,USDJPY,DKKTHB,TWDHKD,NZDIDR,AEDNOK,PKRGBP,MXNRUB,ZARCZK,INRKRW,MYRTHB,NZDPKR,EURBBD,MYRSGD,JPYDKK,USDMWK,USDTND,NOKCHF,TWDAUD,NGNUSD,AUDZAR,SGDMXN,KRWHKD,MVRUSD,THBTWD,EURFJD,GBPUSD,GBPILS,GBPXCD,INRNZD,EURNIO,USDSLL,USDAUD,USDNZD,KRWINR,JPYMYR,ZARRUB,EURSEK,JPYARS,AEDCAD,MXNCOP,AUDMXN,XPDEUR,EURMDL,TWDKRW,XAGTRY,BRLSGD,USDSEK,AUDHRK,DKKPLN,DKKGBP,ZARKRW,BGNUSD,AEDGBP,EURILS,USDLRD,AUDSEK,ZARRON,VNDEUR,SCRGBP,AUDAED,GNFUSD,INRZAR,DKKEUR,ARSBRL,MXNCHF,GBPDOP,LYDUSD,EURSOS,EURMAD,USDPLN,USDCHF,DKKHUF,DJFGBP,EURAFN,TRYCHF,GBPGNF,PHPJPY,EURCAD,USDPYG,EURDOP,PENARS,EGPJPY,GBPVND,USDBWP,DKKTWD,PENCLP,GBPBHD,SEKCHF,PLNEUR,XAGRUB,MYRINR,THBGBP,EURPAB,USDMDL,EURTRY,USDHKD,EURRUB,ZARAED,AUDPLN,SGDCHF,ILSJPY,KRWAUD,OSOCHF,GBPMMK,SZLCHF,GBPKMF,KRWNZD,ARSCAD,JMDGBP,THBAUD,USDCOP,ZARRWF,SEKNOK,HKDCHF,ZARTHB,ALLUSD,SOSGBP,EURINR,EURMMK,USDBDT,AUDPGK,USDKHR,USDBOB,EURAUD,TWDDKK,XAGMXN,SGDKRW,USDSCR,XPFGBP,XAGHKD,GBPKWD,USDAED,MMKUSD,PENBRL,GBPAED,HKDTWD,TWDSGD,NOKILS,EURPHP,USDRUB,SLLGBP,RUBMXN,GBPMXN,EURDKK,GBPPLN,IDRSGD,DZDUSD,MXNHKD,AUDPHP,SEKJPY,USDPEN,SGDCNY,ZARJPY,NZDINR,SGDINR,HKDKRW,GBPMUR,ZAREGP,OMRGBP,USDVND,GBPRWF,ETBUSD,TWDZAR,GBPGTQ,XAURUB,MKDUSD,EURCUP,GBPNPR,SEKUSD,ZARCNY,EURMYR,USDZAR,NZDEUR,EURDZD,GBPKZT,GBPPGK,ZARCYP,RONCHF,AEDCHF,MXNGBP,MXNJPY,GBPBWP,EURALL,JPYILS,INRGBP,GBPFJD,GBPHRK,JODAED,KWDUSD,USDLSL,HKDJPY,AUDUSD,ARSCLP,KRWSEK,NZDCZK,USDMUR,SHPUSD,GBPKES,AUDTWD,HKDBRL,GTQUSD,GBPETB,USDCVE,GHSUSD,ZARSEK,BGNCNY,ILSPLN,GBPAFN,GBPCNH,BRIUSD,ZARBRL,GBPBND,GBPKYD,JPYHKD,EURMZN,DKKCOP,BOBUSD,ZARHUF,EURHUF,ZARINR,MURUSD,USDSAR,EURTHB,EURDJF,EURMGA,ZARSGD,NZDAUD,XAGKRW,EURNPR,BWPCHF,YERUSD,ALLEUR,TRYPLN,MYRCNY,AEDNZD,AWGUSD,JPYCAD,EURRON,EURBOB,USDHNL,GBPCAD,THBSGD,SGDTRY,USDIDR,BBDUSD,EURNAD,EURGTQ,GBPALL,NOKEUR,NZDTWD,BRLZAR,USDBBD,BRLEUR,LKRUSD,EURBTN,JPYRUB,USDQAR,LYDGBP,BBDEUR,GBPUYU,USDTHB,GBPINR,BRLUSD,VNDUSD,UZSUSD,ILSUSD,MXNAUD,GBPTRY,JPYINR,KRUUSD,XAUUSD,EURMXN,USDPHP,GBPJOD,AFNGBP,SGDTWD,EURHKD,AEDZAR,GBPNIO,USDNOK,SGDDKK,ZARTWD,BIFUSD,GYDGBP,PKRZAR,JPYPLN,XAUBRL,USDETB,BMDKYD,ZARTRY,GBPRSD,USDAWG,PENCOP,USDTTD,RSDGBP,GBPMGA,GBPNZD,DKKPKR,ZARNZD,QARZAR,DKKJPY,GBPKRW,TZSUSD,GBPGHS,AUDDKK,NBLCHF,BMDBBD,THBIDR,NZDAED,MYRUSD,EURMOP,TWDSEK,AUDBGN,BHDEUR,GBPBGN,EURBIF,USDCLP,GTQGBP,JPYIDR,XAGAUD,EURCLP,UYUGBP,DKKPHP,USDCNH,USDKZT,EURETB,EURPEN,BGNAUD,INRUSD,IDRCAD,EURMUR,INRCNY,OMRZAR,HKDCAD,GBPHKD,HKDUSD,TJSUSD,DKKHKD,AUDCZK,GBPEGP,EURSLL,GBPCNY,EURGBP,ZARILS,GBPTWD,XAUARS,USDBRL,BWPUSD,BSDUSD,EURGHS,NZDTHB,NZDKRW,JPYEUR,USDOMR,EURBDT,HKDMYR,PYGUSD,GYDUSD,SEKDKK,EURRSD,EURBGN,GBPLKR,DKKUAH,XAGINR,ILSJOD,RUBAUD,LSLGBP,SEKCZK,ARSGBP,GBPIQD,GBPMVR,USDSZL,GBPHNL,ARSUSD,GBPIDR,USDDJF,EURQAR,JPYZAR,KRWIDR,RUBUSD,UAHDKK,JPYNZD,TWDIDR,USDALL,PLNUSD,PHPGBP,USDGBP,SGDHKD,GBPOMR,KRWTHB,ARSEUR,USDJOD,GBPSOS,SZLZAR,USDHTG,NOKPLN,GBPXPF,EURKWD,SZLUSD,MADZAR,SEKAUD,NOKGBP,ILSCHF,GBPSAR,GBPBIF,DKKTRY,EGPUSD,USDYER,MADUSD,TRYZAR,XAUTHB,XAUSAR,AEDJPY,USDISK,USDDKK,AUDTRY,USDBGN,PLNSEK,NZDCNY,THBJPY,JPYBRL,RUBJPY,AEDUSD,USDGHS,TTDUSD,USDKYD,EURRWF,GBPSGD,FJDGBP,HRKEUR,BSDGBP,INRAUD,USDINR,USDCNY,GBPCLP,XAGZAR,KRWBRL,DOPGBP,USDNIO,USDIQD,HKDEUR,AUDINR,BTNGBP,JPYCHF,USDLYD,EURSDG,USDSGD,GBPDKK,JPYRSD,EURBND,HKDNZD,TRYDKK,XAGJPY,GNFGBP,RWFGBP,GBPDZD,EURSGD,HKDSGD,IDRUSD,IDRCNY,SEKCAD,USDMAD,NOKJPY,ARSJPY,SGDAED,NZDCAD,RUBNOK,EURTZS,HKDDKK,XAUTRY,USDLAK,PLNHUF,THBKRW,THBNZD,EURSZL,MYRAUD,EURARS,SGDMYR,TWDCNY,MDLUSD,GBPDJF,HRKCAD,GBPHTG,EURTWD,ILSCAD,NGNGBP,KRWMYR,EURHTG,LBPUSD,BRLJPY,GBPCOP,NOKSEK,NZDDKK,PLNILS,EURMWK,USDUAH,KRWJPY,PHPDKK,USDTJS,EURIQD,HUFEUR,MXNPLN,GBPBRL,USDTZS,PENEUR,EURAMD,ZARMWK,TZSZAR,USDTWD,HKDCNY,LSLUSD,ZARMAD,EURKRW,TWDTHB,BRLCAD,BRLCOP,XAGCNY,JPYCNY,JPYAED,YERGBP,EURLRD,JPYUSD,BRLSEK,USDNPR,NZDNOK,MOPUSD,MYRDKK,GBPBSD,EURISK,USDGYD,AUDLTL,NZDMXN,TWDUSD,MYRTWD,GBPCDF,NZDSEK,IDRGBP,AUDEUR,USDMOP,RUBGBP,VRNCHF,BWPEUR,EURJPY,GBPHUF,KRWCHF,MALUSD,BGNDKK,BRLKRW,AUDRUB,NZDSGD,ZARCHF,HKDIDR,MXNCAD,GBPZAR,XAGSAR,BRLHKD,UYUEUR}]
+ [-h]
+
+Run forex report.
+
+optional arguments:
+ --symbol {AUDCHF,ZARPLN,DKKNZD,XAGUSD,USDRWF,MYREUR,ZAREUR,MWKGBP,USDBSD,ALLGBP,MXNZAR,HUFUSD,BRLARS,OMRAED,ZARUGX,GBPCZK,XAUCNY,MURGBP,EURLSL,EURBWP,AEDPKR,XAGBRL,XAUGBP,IDRKRW,BRICHF,VNDJPY,MADAUD,GBPBMD,USDTMT,HRKUSD,HUFPLN,HUFDKK,SGDGBP,KZTGBP,AUNUSD,EURCNY,HUFCAD,GBPSEK,ZARIDR,JPYTHB,MDLGBP,IDRCHF,KWDAED,SARJPY,GBPRON,ARSPEN,TWDCHF,INREUR,DKKCAD,USDCZK,AUDIDR,SARUSD,THBINR,XAUCAD,GHSGBP,EURKHR,ZMWZAR,ILSSEK,SGDTHB,EURKYD,USDMGA,ZARNOK,SGDCAD,SEKINR,DKKRUB,THBUSD,USDMYR,USDUZS,ZARSZL,JPYCLP,UAHUSD,JPYMXN,JPYNOK,AUDCNY,EURGYD,GBPBDT,PENUSD,ZARPHP,MXNARS,PLNCZK,GBPAUD,AEDAUD,RUBPLN,USDSDG,EURSCR,HKDMXN,RUBCHF,TRYJPY,OSOUSD,GBPMAD,EURTJS,PKREUR,EURCDF,AUDCAD,USDRSD,JPYCZK,BRLCLP,MWKUSD,ISKCHF,GBPBTN,BAMGBP,ILSZAR,SEKZAR,HUFZAR,QARAED,SARKWD,MYRHKD,RONZAR,JPYSAR,BHDPKR,DOPUSD,AUDGBP,INRHKD,XAUAUD,IDRAUD,XAUHKD,KRWSGD,AUDNZD,JPYGBP,KESUSD,KRWRUB,TNDGBP,USDEUR,BWPGBP,DKKMYR,GBPNGN,QARPKR,TWDCAD,BMDGBP,HUFJPY,GBPSCR,EURMVR,KHRGBP,LKRZAR,ZARBWP,EURIDR,GBPUAH,GBPGYD,ZARTND,KRWUSD,AUDMAD,ZARPKR,NZDGBP,AEDSAR,MYRIDR,XPTEUR,GHSZAR,SGDSEK,PENCAD,HKDZAR,SGDJPY,TRYUSD,GBPAMD,EURCOP,NZDZAR,DKKSGD,IDRTHB,AEDSEK,BDTGBP,AUDTHB,XAUKRW,GBPRUB,GBPYER,USDMVR,BRLMXN,TTDGBP,GBPBBD,EURPLN,SGDUSD,AUDILS,EURAED,NSOUSD,VRLCHF,SCRUSD,RWFUSD,ZARHKD,EURNZD,IDRZAR,TWDINR,KRWZAR,ZARNAD,HRKPLN,BAMUSD,EUREGP,NPRUSD,KRWTWD,XAUJPY,USDBHD,BNDGBP,EURBMD,EURNOK,MXNUSD,USDEGP,XPTGBP,ARSCOP,NZDCHF,NZDJPY,KRWCAD,EURBRL,DKKSEK,MALCHF,SOSUSD,GBPCUP,AUDCLP,EURUYU,EURUZS,UYUUSD,EURUSD,BWPZAR,NZDPLN,GBPLRD,IDRMYR,PABUSD,USDPKR,ARSCHF,MYRNZD,JODUSD,ARSHKD,EURMKD,EURLYD,XAGARS,ISKUSD,HKDSEK,USDTRY,RSDUSD,DKKAED,ZARMYR,KMFUSD,NGNZAR,IDRJPY,SARPKR,GBPMYR,ILSAUD,IDREUR,JPYAUD,QARUSD,GBPSLL,GBPEUR,PHPUSD,THBEUR,RUBEUR,USDMMK,XAGGBP,ZARARS,USDKMF,BZDUSD,SEKPLN,PLNJPY,GBPLBP,EURHNL,AUDPKR,KYDCAD,XAUZAR,MGAGBP,LRDUSD,NZDTRY,AUDHUF,USDLKR,EURNGN,BNDUSD,SGDIDR,MYRCAD,HKDPLN,EUROMR,EURSAR,GBPJPY,IDRHKD,MXNPEN,USDXPF,IQDGBP,USDPGK,INRCHF,NZDHKD,AUDHKD,BBDGBP,USDGTQ,NGNJPY,ARSSGD,GBPMOP,TWDMYR,BMDCAD,XPDUSD,USDDZD,EURBSD,SGDZAR,AUNCHF,ARSMXN,AUDFJD,UGXZAR,AUDARS,IQDUSD,MXNEUR,HKDAUD,XAGEUR,RONGBP,USDZMW,TRYSGD,INRSGD,GBPLAK,GBPMWK,EURKES,USDCUP,USDUYU,AUDJPY,XAGCAD,DKKCNY,USDJMD,MADGBP,ILSNOK,MUREUR,THBHKD,INRTHB,SAREUR,MYRGBP,AMDGBP,HKDARS,GBPARS,SGDAUD,INRTWD,BHDUSD,LRDGBP,GBPPAB,RONUSD,IDRNZD,MYRKRW,KMFGBP,ZARGHS,PLNMXN,USDHUF,ARECHF,BMDEUR,KYDGBP,AUDNOK,AUDCNH,TWDNZD,KWDEUR,EURZMW,KZTUSD,GBPBOB,GBPJMD,DKKCHF,EURCNH,SEKILS,AUDKRW,AWGGBP,HNLGBP,XAUEUR,NSOCHF,GBPLSL,USDBZD,ZARKES,SLLUSD,THBCHF,NOKUSD,EURCZK,HKDGBP,GBPTTD,MMKGBP,PGKGBP,BRLAUD,AEDDKK,EURBHD,JMDUSD,USDNGN,NOKRUB,SVCUSD,GBPQAR,LTLAUD,JPYTWD,USDRON,KRUCHF,SGDBRL,EGPPKR,EURJMD,MXNDKK,NZDMYR,USDLBP,MWKZAR,HRKAUD,MYRJPY,USDKWD,AUDBRL,EURYER,PLNGBP,IDRTWD,EGPEUR,EURPYG,ILSAED,EURKZT,DKKZAR,FJDUSD,NBLUSD,AEDEUR,PLNNOK,XPTUSD,MXNBRL,USDNAD,ZARUSD,NOKINR,ARSZAR,BOBGBP,RWFZAR,GBPLYD,USDUGX,GBPCHF,DKKAUD,PLNCHF,USDBIF,AUDSGD,MXNCZK,PENGBP,NOKAED,USDMKD,MKDGBP,PKRUSD,EURPGK,THBPKR,HTGUSD,SGDPKR,LKRGBP,EURPKR,ZARMXN,USDMXN,USDHRK,INRJPY,FRNCHF,MXNCLP,GBPNOK,SGDPLN,USDARS,OMRUSD,DKKBGN,INRSEK,USDCAD,XPDGBP,KESZAR,JPYPKR,BDTJPY,NPRGBP,EURZAR,MYRPKR,PGKAUD,KYDEUR,DKKISK,SGDEUR,MYRZAR,PLNDKK,BRLPEN,ZMWUSD,TNDUSD,GHSEUR,PGKUSD,KYDBMD,SZLGBP,DKKMXN,BGNCAD,BRLCHF,INRMYR,GBPISK,SGDNOK,HKDTHB,TWDPKR,GBPPYG,NOKDKK,GBPTHB,EURJOD,EURUAH,RUBZAR,PENMXN,SGDNZD,HKDPKR,USDDOP,NZDHUF,KYDUSD,GBPBZD,EGPZAR,NZDUSD,KWDGBP,USDBAM,EURTTD,ZARCAD,AEDINR,EURTND,USDCDF,ZARCOP,KRWEUR,ILSEUR,SVCGBP,GBPBAM,IDRINR,DOECHF,ZARNGN,DOEUSD,THBCNY,GBPTND,MGAUSD,THBZAR,TWDJPY,SZLEUR,EURLAK,EURUGX,KRWCNY,DZDEUR,EURCHF,ZARGBP,MYRCHF,HKDINR,EURHRK,USDKRW,SEKEUR,MDLEUR,AEDBHD,RUBKRW,USDBND,NIOGBP,DKKUSD,NIOUSD,BDTUSD,USDILS,GBPSZL,NOKZAR,BRLRSD,HTGGBP,RUBSEK,EURLKR,SEKGBP,DKKCZK,THBCAD,EURVND,USDGNF,GBPPHP,MXNSGD,AUDMYR,EURGNF,USDKES,ETBGBP,EURBZD,GBPUGX,USDPAB,HNLUSD,ARSAUD,SGDARS,JODILS,GBPKHR,USDFJD,DKKNOK,GBPPEN,DKKINR,JPYKRW,ZARAUD,VNDCAD,TWDEUR,JPYSEK,ZARDKK,INRCAD,EURLBP,XCDGBP,HUFCHF,XAUMXN,XAUINR,GBPMKD,THBMYR,KWDPKR,USDJPY,DKKTHB,TWDHKD,NZDIDR,AEDNOK,PKRGBP,MXNRUB,ZARCZK,INRKRW,MYRTHB,NZDPKR,EURBBD,MYRSGD,JPYDKK,USDMWK,USDTND,NOKCHF,TWDAUD,NGNUSD,AUDZAR,SGDMXN,KRWHKD,MVRUSD,THBTWD,EURFJD,GBPUSD,GBPILS,GBPXCD,INRNZD,EURNIO,USDSLL,USDAUD,USDNZD,KRWINR,JPYMYR,ZARRUB,EURSEK,JPYARS,AEDCAD,MXNCOP,AUDMXN,XPDEUR,EURMDL,TWDKRW,XAGTRY,BRLSGD,USDSEK,AUDHRK,DKKPLN,DKKGBP,ZARKRW,BGNUSD,AEDGBP,EURILS,USDLRD,AUDSEK,ZARRON,VNDEUR,SCRGBP,AUDAED,GNFUSD,INRZAR,DKKEUR,ARSBRL,MXNCHF,GBPDOP,LYDUSD,EURSOS,EURMAD,USDPLN,USDCHF,DKKHUF,DJFGBP,EURAFN,TRYCHF,GBPGNF,PHPJPY,EURCAD,USDPYG,EURDOP,PENARS,EGPJPY,GBPVND,USDBWP,DKKTWD,PENCLP,GBPBHD,SEKCHF,PLNEUR,XAGRUB,MYRINR,THBGBP,EURPAB,USDMDL,EURTRY,USDHKD,EURRUB,ZARAED,AUDPLN,SGDCHF,ILSJPY,KRWAUD,OSOCHF,GBPMMK,SZLCHF,GBPKMF,KRWNZD,ARSCAD,JMDGBP,THBAUD,USDCOP,ZARRWF,SEKNOK,HKDCHF,ZARTHB,ALLUSD,SOSGBP,EURINR,EURMMK,USDBDT,AUDPGK,USDKHR,USDBOB,EURAUD,TWDDKK,XAGMXN,SGDKRW,USDSCR,XPFGBP,XAGHKD,GBPKWD,USDAED,MMKUSD,PENBRL,GBPAED,HKDTWD,TWDSGD,NOKILS,EURPHP,USDRUB,SLLGBP,RUBMXN,GBPMXN,EURDKK,GBPPLN,IDRSGD,DZDUSD,MXNHKD,AUDPHP,SEKJPY,USDPEN,SGDCNY,ZARJPY,NZDINR,SGDINR,HKDKRW,GBPMUR,ZAREGP,OMRGBP,USDVND,GBPRWF,ETBUSD,TWDZAR,GBPGTQ,XAURUB,MKDUSD,EURCUP,GBPNPR,SEKUSD,ZARCNY,EURMYR,USDZAR,NZDEUR,EURDZD,GBPKZT,GBPPGK,ZARCYP,RONCHF,AEDCHF,MXNGBP,MXNJPY,GBPBWP,EURALL,JPYILS,INRGBP,GBPFJD,GBPHRK,JODAED,KWDUSD,USDLSL,HKDJPY,AUDUSD,ARSCLP,KRWSEK,NZDCZK,USDMUR,SHPUSD,GBPKES,AUDTWD,HKDBRL,GTQUSD,GBPETB,USDCVE,GHSUSD,ZARSEK,BGNCNY,ILSPLN,GBPAFN,GBPCNH,BRIUSD,ZARBRL,GBPBND,GBPKYD,JPYHKD,EURMZN,DKKCOP,BOBUSD,ZARHUF,EURHUF,ZARINR,MURUSD,USDSAR,EURTHB,EURDJF,EURMGA,ZARSGD,NZDAUD,XAGKRW,EURNPR,BWPCHF,YERUSD,ALLEUR,TRYPLN,MYRCNY,AEDNZD,AWGUSD,JPYCAD,EURRON,EURBOB,USDHNL,GBPCAD,THBSGD,SGDTRY,USDIDR,BBDUSD,EURNAD,EURGTQ,GBPALL,NOKEUR,NZDTWD,BRLZAR,USDBBD,BRLEUR,LKRUSD,EURBTN,JPYRUB,USDQAR,LYDGBP,BBDEUR,GBPUYU,USDTHB,GBPINR,BRLUSD,VNDUSD,UZSUSD,ILSUSD,MXNAUD,GBPTRY,JPYINR,KRUUSD,XAUUSD,EURMXN,USDPHP,GBPJOD,AFNGBP,SGDTWD,EURHKD,AEDZAR,GBPNIO,USDNOK,SGDDKK,ZARTWD,BIFUSD,GYDGBP,PKRZAR,JPYPLN,XAUBRL,USDETB,BMDKYD,ZARTRY,GBPRSD,USDAWG,PENCOP,USDTTD,RSDGBP,GBPMGA,GBPNZD,DKKPKR,ZARNZD,QARZAR,DKKJPY,GBPKRW,TZSUSD,GBPGHS,AUDDKK,NBLCHF,BMDBBD,THBIDR,NZDAED,MYRUSD,EURMOP,TWDSEK,AUDBGN,BHDEUR,GBPBGN,EURBIF,USDCLP,GTQGBP,JPYIDR,XAGAUD,EURCLP,UYUGBP,DKKPHP,USDCNH,USDKZT,EURETB,EURPEN,BGNAUD,INRUSD,IDRCAD,EURMUR,INRCNY,OMRZAR,HKDCAD,GBPHKD,HKDUSD,TJSUSD,DKKHKD,AUDCZK,GBPEGP,EURSLL,GBPCNY,EURGBP,ZARILS,GBPTWD,XAUARS,USDBRL,BWPUSD,BSDUSD,EURGHS,NZDTHB,NZDKRW,JPYEUR,USDOMR,EURBDT,HKDMYR,PYGUSD,GYDUSD,SEKDKK,EURRSD,EURBGN,GBPLKR,DKKUAH,XAGINR,ILSJOD,RUBAUD,LSLGBP,SEKCZK,ARSGBP,GBPIQD,GBPMVR,USDSZL,GBPHNL,ARSUSD,GBPIDR,USDDJF,EURQAR,JPYZAR,KRWIDR,RUBUSD,UAHDKK,JPYNZD,TWDIDR,USDALL,PLNUSD,PHPGBP,USDGBP,SGDHKD,GBPOMR,KRWTHB,ARSEUR,USDJOD,GBPSOS,SZLZAR,USDHTG,NOKPLN,GBPXPF,EURKWD,SZLUSD,MADZAR,SEKAUD,NOKGBP,ILSCHF,GBPSAR,GBPBIF,DKKTRY,EGPUSD,USDYER,MADUSD,TRYZAR,XAUTHB,XAUSAR,AEDJPY,USDISK,USDDKK,AUDTRY,USDBGN,PLNSEK,NZDCNY,THBJPY,JPYBRL,RUBJPY,AEDUSD,USDGHS,TTDUSD,USDKYD,EURRWF,GBPSGD,FJDGBP,HRKEUR,BSDGBP,INRAUD,USDINR,USDCNY,GBPCLP,XAGZAR,KRWBRL,DOPGBP,USDNIO,USDIQD,HKDEUR,AUDINR,BTNGBP,JPYCHF,USDLYD,EURSDG,USDSGD,GBPDKK,JPYRSD,EURBND,HKDNZD,TRYDKK,XAGJPY,GNFGBP,RWFGBP,GBPDZD,EURSGD,HKDSGD,IDRUSD,IDRCNY,SEKCAD,USDMAD,NOKJPY,ARSJPY,SGDAED,NZDCAD,RUBNOK,EURTZS,HKDDKK,XAUTRY,USDLAK,PLNHUF,THBKRW,THBNZD,EURSZL,MYRAUD,EURARS,SGDMYR,TWDCNY,MDLUSD,GBPDJF,HRKCAD,GBPHTG,EURTWD,ILSCAD,NGNGBP,KRWMYR,EURHTG,LBPUSD,BRLJPY,GBPCOP,NOKSEK,NZDDKK,PLNILS,EURMWK,USDUAH,KRWJPY,PHPDKK,USDTJS,EURIQD,HUFEUR,MXNPLN,GBPBRL,USDTZS,PENEUR,EURAMD,ZARMWK,TZSZAR,USDTWD,HKDCNY,LSLUSD,ZARMAD,EURKRW,TWDTHB,BRLCAD,BRLCOP,XAGCNY,JPYCNY,JPYAED,YERGBP,EURLRD,JPYUSD,BRLSEK,USDNPR,NZDNOK,MOPUSD,MYRDKK,GBPBSD,EURISK,USDGYD,AUDLTL,NZDMXN,TWDUSD,MYRTWD,GBPCDF,NZDSEK,IDRGBP,AUDEUR,USDMOP,RUBGBP,VRNCHF,BWPEUR,EURJPY,GBPHUF,KRWCHF,MALUSD,BGNDKK,BRLKRW,AUDRUB,NZDSGD,ZARCHF,HKDIDR,MXNCAD,GBPZAR,XAGSAR,BRLHKD,UYUEUR}
+ symbol (default: EURUSD)
+ -h, --help show this help message (default: False)
+```
diff --git a/website/content/terminal/jupyter/reports/portfolio/_index.md b/website/content/terminal/jupyter/reports/portfolio/_index.md
new file mode 100644
index 00000000000..06f5ef0c7ea
--- /dev/null
+++ b/website/content/terminal/jupyter/reports/portfolio/_index.md
@@ -0,0 +1,13 @@
+```
+usage: portfolio
+ [--orderbook {Public_Equity_Orderbook.xlsx,Public_Equity_Orderbook_No_Categorization.xlsx,market.csv,example.csv,bitcoin.csv}]
+ [-h]
+
+Run portfolio report.
+
+optional arguments:
+ --orderbook {Public_Equity_Orderbook.xlsx,Public_Equity_Orderbook_No_Categorization.xlsx,market.csv,example.csv,bitcoin.csv}
+ orderbook (default:
+ Public_Equity_Orderbook.xlsx)
+ -h, --help show this help message (default: False)
+```
diff --git a/website/content/terminal/jupyter/reports/run/_index.md b/website/content/terminal/jupyter/reports/run/_index.md
new file mode 100644
index 00000000000..80d3b6900c7
--- /dev/null
+++ b/website/content/terminal/jupyter/reports/run/_index.md
@@ -0,0 +1,16 @@
+```
+usage: run [-f {test.ipynb}] [-p PARAMETERS [PARAMETERS ...]] [-h]
+
+Run a notebook from this folder:
+'/Users/diogosousa/OpenBBUserData/reports'.
+
+optional arguments:
+ -f {test.ipynb}, --file {test.ipynb}
+ The file to be loaded (default: None)
+ -p PARAMETERS [PARAMETERS ...], --parameters PARAMETERS [PARAMETERS ...]
+ Report parameters with format 'name:value'.
+ (default: None)
+ -h, --help show this help message (default: False)
+
+For more information and examples, use 'about run' to access the related guide.
+```
diff --git a/website/data/menu/main.yml b/website/data/menu/main.yml
index a9f3732b147..bc80c839567 100644
--- a/website/data/menu/main.yml
+++ b/website/data/menu/main.yml
@@ -883,6 +883,23 @@ main:
ref: /terminal/jupyter/dashboards/vsurf
- name: reports
ref: /terminal/jupyter/reports
+ sub:
+ - name: crypto
+ ref: /terminal/jupyter/reports/crypto
+ - name: economy
+ ref: /terminal/jupyter/reports/economy
+ - name: equity
+ ref: /terminal/jupyter/reports/equity
+ - name: etf
+ ref: /terminal/jupyter/reports/etf
+ - name: forecast
+ ref: /terminal/jupyter/reports/forecast
+ - name: forex
+ ref: /terminal/jupyter/reports/forex
+ - name: portfolio
+ ref: /terminal/jupyter/reports/portfolio
+ - name: run
+ ref: /terminal/jupyter/reports/run
- name: portfolio
ref: /terminal/portfolio
sub: