From a9787dd2d1c1a1f06744ec0f3774fe7ddbf33e3b Mon Sep 17 00:00:00 2001 From: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Date: Wed, 26 Oct 2022 21:27:30 +0100 Subject: [PATCH] Refactor reports menu and make it work on installer (#2878) * start papermill rollback * move reports to templates folder * comment some stuff * refactor reports controller * change var names * clean ctrl class vars * small refactoring on metadata search * relocate some func * breaking changes * revert some changes * destroying changes * change menu appearance * change menu appeaerance again * update choices * change some assets locations * remove unused vars * change some docstrings * rename vars * its working * forgot one dash * omg its working * clean some code and doc * change func name * fix a bug and add some comments * fix economy report startup * add custom reports * allow custom reports * forgot to delete this * unused import * make somestuff more explicit, 5 min rule * add helper func * supress errors--no-verify * add some type checks * fix check ipynb func * check inputs in run * rewrite some integration tests * remove unused import * add some docs to website * add auto completion * warn if no forecast * add to do * add arg name if 1 arg * add papermill pointing to github main * add notebooks * fix terminal spec * relocated choices files * merge main * relocate website docs for reports * limit user choices * fix portfolio auto completion * limit choices fix * clean som edocstrings * limit user choices in run command * improve run parser * fix msg * add reports controller tests * relax crypto choices limit * contain commands * pass pre commit * flake8 * flake8 * ignore mypy * pylint * website * move docs to jupyter tab * add installer dep * remove etf * remove reports * update reports to main * handle events erros * rever reports to previous commits before main merge * add papermill installer strategies * add flags to terminal * avoid sdk crash * execute notebook in thread * remove unused sys * execute report in a child process * fix some notebook stuff * fix portfolio report * fix reports controller volatility * change api to sdk * move images * remove som unucessary installer imports * remove debugger warning * move ipykernel launcher * supress notebook crash * remove portfolio decorator * fix run command * forgot to change this * add images * fix portfolio report * fix crypto report * linting and tests * add run integration test * pylint * hide reports module args * try at supressing args * try at supreccing warning * solve some os issues * handle pm errors * fix warning unrecognized arguments * change comment * avoid crash when parameters not found * fix etf commands * minor cleanup * update forecasting check * fix some linting * fix futures test * pylint * limit user choices to prompt * limit user choices to prompt * supress warnings * revert poetry lock back to main * papermill pointing to main * flake8 * forgot requirements * Update helper_funcs.py * Update reports_model.py * choices Co-authored-by: hjoaquim Co-authored-by: James Simmons <53658028+simmonsj330@users.noreply.github.com> --- .gitignore | 2 +- build/pyinstaller/hooks/hook-debugpy.py | 8 + build/pyinstaller/terminal.spec | 4 +- openbb_terminal/core/config/paths.py | 2 + openbb_terminal/core/config/paths_helper.py | 3 +- openbb_terminal/helper_funcs.py | 2 +- openbb_terminal/menu.py | 20 +- openbb_terminal/miscellaneous/i18n/en.yml | 13 +- .../reports/test_reports_crypto.openbb | 9 +- .../reports/test_reports_economy.openbb | 3 +- .../reports/test_reports_equity.openbb | 9 +- .../scripts/reports/test_reports_etf.openbb | 9 +- .../scripts/reports/test_reports_forex.openbb | 9 +- .../scripts/test_reports_run.openbb | 10 + openbb_terminal/portfolio/portfolio_helper.py | 2 +- openbb_terminal/portfolio/portfolio_model.py | 36 +- openbb_terminal/reports/crypto.ipynb | 1245 ----- .../reports/data/crypto_tickers.csv | 100 + openbb_terminal/reports/data/etf_tickers.csv | 101 + .../reports/data/stocks_tickers.csv | 52 + openbb_terminal/reports/reports_controller.py | 475 +- openbb_terminal/reports/reports_model.py | 420 ++ .../{ => templates}/OpenBB_reports_logo.png | Bin .../reports/templates/crypto.ipynb | 4231 +++++++++++++++++ .../reports/{ => templates}/economy.ipynb | 113 +- .../reports/{ => templates}/equity.ipynb | 45 +- .../reports/{ => templates}/etf.ipynb | 26 +- .../reports/{ => templates}/floppy-disc.png | Bin .../reports/{ => templates}/forecast.ipynb | 26 +- .../reports/{ => templates}/forex.ipynb | 21 +- .../reports/{ => templates}/portfolio.ipynb | 34 +- openbb_terminal/sdk.py | 15 +- openbb_terminal/terminal_controller.py | 53 +- poetry.lock | 2614 ++-------- pyproject.toml | 1 + requirements-full.txt | 7 +- requirements.txt | 5 +- tests/openbb_terminal/reports/__init__.py | 0 .../reports/test_reports_controller.py | 358 ++ .../test_print_help.txt | 14 + .../terminal/jupyter/reports/_index.md | 7 +- .../terminal/jupyter/reports/crypto/_index.md | 13 + .../jupyter/reports/economy/_index.md | 8 + .../terminal/jupyter/reports/equity/_index.md | 9 + .../terminal/jupyter/reports/etf/_index.md | 9 + .../jupyter/reports/forecast/_index.md | 9 + .../terminal/jupyter/reports/forex/_index.md | 12 + .../jupyter/reports/portfolio/_index.md | 13 + .../terminal/jupyter/reports/run/_index.md | 16 + website/data/menu/main.yml | 17 + 50 files changed, 6274 insertions(+), 3936 deletions(-) create mode 100644 build/pyinstaller/hooks/hook-debugpy.py create mode 100644 openbb_terminal/miscellaneous/scripts/test_reports_run.openbb delete mode 100644 openbb_terminal/reports/crypto.ipynb create mode 100644 openbb_terminal/reports/data/crypto_tickers.csv create mode 100644 openbb_terminal/reports/data/etf_tickers.csv create mode 100644 openbb_terminal/reports/data/stocks_tickers.csv create mode 100644 openbb_terminal/reports/reports_model.py rename openbb_terminal/reports/{ => templates}/OpenBB_reports_logo.png (100%) create mode 100644 openbb_terminal/reports/templates/crypto.ipynb rename openbb_terminal/reports/{ => templates}/economy.ipynb (91%) rename openbb_terminal/reports/{ => templates}/equity.ipynb (97%) rename openbb_terminal/reports/{ => templates}/etf.ipynb (90%) rename openbb_terminal/reports/{ => templates}/floppy-disc.png (100%) rename openbb_terminal/reports/{ => templates}/forecast.ipynb (90%) rename openbb_terminal/reports/{ => templates}/forex.ipynb (96%) rename openbb_terminal/reports/{ => templates}/portfolio.ipynb (94%) create mode 100644 tests/openbb_terminal/reports/__init__.py create mode 100644 tests/openbb_terminal/reports/test_reports_controller.py create mode 100644 tests/openbb_terminal/reports/txt/test_reports_controller/test_print_help.txt create mode 100644 website/content/terminal/jupyter/reports/crypto/_index.md create mode 100644 website/content/terminal/jupyter/reports/economy/_index.md create mode 100644 website/content/terminal/jupyter/reports/equity/_index.md create mode 100644 website/content/terminal/jupyter/reports/etf/_index.md create mode 100644 website/content/terminal/jupyter/reports/forecast/_index.md create mode 100644 website/content/terminal/jupyter/reports/forex/_index.md create mode 100644 website/content/terminal/jupyter/reports/portfolio/_index.md create mode 100644 website/content/terminal/jupyter/reports/run/_index.md 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'\"OpenBB\"'\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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
titlelink
published
2022-10-21 18:01:55+00:00Free BTC Faucet: What Is It And What Are Its B...<a href=\"https://news.google.com/__i/rss/rd/ar...
2022-10-21 17:37:15+00:00Bitcoin Predictions: Why 55 Crypto Pros See BT...<a href=\"https://news.google.com/__i/rss/rd/ar...
2022-10-21 17:30:47+00:00These Bitcoin [BTC] liquidation stats can help...<a href=\"https://news.google.com/__i/rss/rd/ar...
2022-10-21 17:01:50+00:00Bitcoin Adoption: Relai Builds With Checkout.c...<a href=\"https://news.google.com/__i/rss/rd/ar...
2022-10-21 16:55:41+00:00Tesla Holds On to $218,000,000 Bitcoin (BTC) P...<a href=\"https://news.google.com/__i/rss/rd/ar...
2022-10-21 16:08:17+00:00Will ETH Continue in Its Five-Year Downtrend V...<a href=\"https://news.google.com/__i/rss/rd/ar...
2022-10-21 15:10:00+00:003 historically accurate Bitcoin on-chain metri...<a href=\"https://news.google.com/__i/rss/rd/ar...
2022-10-21 15:04:11+00:00SUSHI to BTC prediction | SushiSwap Showing Si...<a href=\"https://news.google.com/__i/rss/rd/ar...
2022-10-21 14:44:31+00:00Investment Giant Fidelity Plans Crypto Expansi...<a href=\"https://news.google.com/__i/rss/rd/ar...
2022-10-21 14:34:00+00:00Bitcoin, ether slipping even with stock market...<a href=\"https://news.google.com/__i/rss/rd/ar...
\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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
OpenHighLowCloseVolumeAdj Close
date
2021-10-2262193.1500063732.3900060000.0000060688.2200052119.3588660688.22000
2021-10-2360688.2300061747.6400059562.1500061286.7500027626.9367861286.75000
2021-10-2461286.7500061500.0000059510.6300060852.2200031226.5767660852.22000
2021-10-2560852.2200063710.6300060650.0000063078.7800036853.8380663078.78000
2021-10-2663078.7800063293.4800059817.5500060328.8100040217.5008360328.81000
.....................
2022-10-1719262.9800019676.9600019152.0300019549.86000222813.8763419549.86000
2022-10-1819548.4800019706.6600019091.0000019327.44000260313.0784819327.44000
2022-10-1919327.4400019360.1600019065.9700019123.97000186137.2953819123.97000
2022-10-2019123.3500019347.8200018900.0000019041.92000223530.1306819041.92000
2022-10-2119041.9200019229.0000018650.0000019139.03000231923.8289819139.03000
\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", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
date_tonamedescriptionis_conferencelink
date
2021-06-11\\n00:00:00NoneAsk El Salvador for advice: Cuba suspends doll...False<a href=\"https://www.rt.com/business/526265-cu...
2021-06-11\\n00:00:00NoneOne of the Richest Bitcoin Whales in History B...False<a href=\"https://aronboss.com/one-of-the-riche...
2021-05-10\\n00:00:00NoneBitcoin’s upcoming Taproot upgrade and why it ...False<a href=\"https://cointelegraph.com/news/bitcoi...
2021-03-24\\n08:00:002021-03-26\\n23:00:00THE CRYPTO GATHERINGFalse<a href=\"https://www.realvision.com/refer?grsf...
2018-10-09\\n09:00:002018-10-09\\n18:00:00Blockchain & Bitcoin Conference SwitzerlandThe second conference organized by\\nSmile-Expo...True<a href=\"https://switzerland.bc.events/?utm_so...
2018-09-28\\n20:00:002018-09-30\\n16:00:00Super ConferenceKWIC, Kitchener - Waterloo, ON, Canada.\\n29 Se...True<a href=\"https://blockchainsuperconference.com...
2018-07-10\\n12:00:00NoneSEC- ETF VanEck decisionFalse<a href=\"https://www.criptonoticias.com/mercad...
\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'\"OpenBB\"'\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: