From 228bbfa2e7b160542076b52f66fa15a568dc6112 Mon Sep 17 00:00:00 2001 From: Theodore Aptekarev Date: Tue, 25 Jul 2023 17:09:09 +0300 Subject: [PATCH 1/9] Update readme --- openbb_sdk/README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/openbb_sdk/README.md b/openbb_sdk/README.md index 862203e5bb6..1220341f618 100644 --- a/openbb_sdk/README.md +++ b/openbb_sdk/README.md @@ -37,16 +37,6 @@ pip install ./openbb_sdk This will install the SDK and all the dependencies into the site-packages folder of the virtual environment. -While we're still developing it is required to create the static python interface: - -```python -import openbb -openbb._rebuild_python_interface() -exit() -``` - -Right now you need to do this before the first launch and every time you install or uninstall a new extension. - ## API keys To connect to APIs you need to provide the API keys. Here 3 options how you can provide them: @@ -143,3 +133,13 @@ From the root of the OpenBB Terminal repo run: When developing a specific extension cd into the extension folder and run: `pip install -U -e .` + +While we're still developing it is required to create the static python interface: + +```python +import openbb +openbb._rebuild_python_interface() +exit() +``` + +Right now you need to do this before the first launch and every time you install or uninstall a new extension. From 068b472e4def849784be30acde9e90db52ab9334 Mon Sep 17 00:00:00 2001 From: Diogo Sousa Date: Tue, 25 Jul 2023 16:09:16 +0100 Subject: [PATCH 2/9] fix fred helpers --- openbb_sdk/providers/fred/openbb_fred/utils/fred_helpers.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/openbb_sdk/providers/fred/openbb_fred/utils/fred_helpers.py b/openbb_sdk/providers/fred/openbb_fred/utils/fred_helpers.py index aba13a2ff24..08b13e6823f 100644 --- a/openbb_sdk/providers/fred/openbb_fred/utils/fred_helpers.py +++ b/openbb_sdk/providers/fred/openbb_fred/utils/fred_helpers.py @@ -1,4 +1,6 @@ import csv +import os +from pathlib import Path from typing import List, Literal CPI_COUNTRIES = Literal[ @@ -61,8 +63,10 @@ CPI_FREQUENCY = Literal["monthly", "quarterly", "annual"] def all_cpi_options(harmonized: bool = False) -> List[dict]: data = [] + current_dir = os.path.dirname(os.path.realpath(__file__)) file = "harmonized_cpi.csv" if harmonized else "cpi.csv" - with open(file, encoding="utf-8") as csv_file_handler: + + with open(Path(current_dir, file), encoding="utf-8") as csv_file_handler: csv_reader = csv.DictReader(csv_file_handler) for rows in csv_reader: row = {key.lstrip("\ufeff"): value for key, value in rows.items()} From 3af4be30c92895ecb26ec30f1b680a8cf61e59c8 Mon Sep 17 00:00:00 2001 From: Danglewood <85772166+deeleeramone@users.noreply.github.com> Date: Tue, 25 Jul 2023 11:03:45 -0700 Subject: [PATCH 3/9] fix headTitle (#5253) --- website/content/sdk/usage/basics/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/sdk/usage/basics/index.md b/website/content/sdk/usage/basics/index.md index bbc8a69a2f5..87c25e50c26 100644 --- a/website/content/sdk/usage/basics/index.md +++ b/website/content/sdk/usage/basics/index.md @@ -6,7 +6,7 @@ keywords: [basics, installation, commands, menus, your own data, introduction, o --- import HeadTitle from '@site/src/components/General/HeadTitle.tsx'; -`` + ## Overview From aca982e721029187163ac3b8bd5dc5b7906c277f Mon Sep 17 00:00:00 2001 From: Danglewood <85772166+deeleeramone@users.noreply.github.com> Date: Tue, 25 Jul 2023 11:08:51 -0700 Subject: [PATCH 4/9] fix duplicated table (#5252) --- openbb_terminal/reports/templates/economy.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openbb_terminal/reports/templates/economy.ipynb b/openbb_terminal/reports/templates/economy.ipynb index ad97ce6c8f2..b63d6d276dd 100644 --- a/openbb_terminal/reports/templates/economy.ipynb +++ b/openbb_terminal/reports/templates/economy.ipynb @@ -659,7 +659,7 @@ " [widgets.h(3, \"Valuation (source: Finviz)\") + valuation.to_html()]\n", ")\n", "htmlcode += widgets.row(\n", - " [widgets.h(3, \"Performance (source: Finviz)\") + valuation.to_html()]\n", + " [widgets.h(3, \"Performance (source: Finviz)\") + performance.to_html()]\n", ")\n", "htmlcode += widgets.row([widgets.h(3, \"US markets (source: YahooFinance)\") + eqty_0])\n", "htmlcode += widgets.row(\n", @@ -711,7 +711,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.11" + "version": "3.10.8" }, "vscode": { "interpreter": { From ff31d9ab876c537bd6166c92b43729a8dfe3523c Mon Sep 17 00:00:00 2001 From: Diogo Sousa Date: Wed, 26 Jul 2023 12:52:54 +0100 Subject: [PATCH 5/9] check sdk token expiration on login --- .../openbb_core/app/service/hub_service.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/openbb_sdk/sdk/core/openbb_core/app/service/hub_service.py b/openbb_sdk/sdk/core/openbb_core/app/service/hub_service.py index 9611f0f9220..58108102d05 100644 --- a/openbb_sdk/sdk/core/openbb_core/app/service/hub_service.py +++ b/openbb_sdk/sdk/core/openbb_core/app/service/hub_service.py @@ -2,6 +2,7 @@ from typing import Optional import requests from fastapi import HTTPException +from jose import JWTError, jwt from openbb_core.app.model.credentials import Credentials from openbb_core.app.model.hub.features_keys import FeaturesKeys from openbb_core.app.model.hub.hub_session import HubSession @@ -113,12 +114,30 @@ class HubService: detail = response.json().get("detail", None) raise HTTPException(status_code, detail) + @classmethod + def check_token_expiration(cls, token: str) -> None: + """Check token expiration.""" + try: + header_data = jwt.get_unverified_header(token) + jwt.decode( + token, + key="secret", + algorithms=[header_data["alg"]], + options={"verify_signature": False, "verify_exp": True}, + ) + except jwt.ExpiredSignatureError as e: + raise OpenBBError("SDK personal access token expired.") from e + except JWTError as e: + raise OpenBBError("Failed to decode SDK token.") from e + @classmethod def get_session_from_sdk_token(cls, token: str) -> HubSession: """Get session from SDK personal access token.""" if not token: raise OpenBBError("SDK personal access token not found.") + cls.check_token_expiration(token) + response = requests.post( url=cls.BASE_URL + "/sdk/login", json={ From cc1a84b4d07704c4db3fef631f17a57139cb96c2 Mon Sep 17 00:00:00 2001 From: Diogo Sousa Date: Wed, 26 Jul 2023 13:15:55 +0100 Subject: [PATCH 6/9] change method description --- openbb_sdk/sdk/core/openbb_core/app/service/hub_service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openbb_sdk/sdk/core/openbb_core/app/service/hub_service.py b/openbb_sdk/sdk/core/openbb_core/app/service/hub_service.py index 58108102d05..9846cb0f925 100644 --- a/openbb_sdk/sdk/core/openbb_core/app/service/hub_service.py +++ b/openbb_sdk/sdk/core/openbb_core/app/service/hub_service.py @@ -116,7 +116,7 @@ class HubService: @classmethod def check_token_expiration(cls, token: str) -> None: - """Check token expiration.""" + """Check token expiration, raises exception if expired.""" try: header_data = jwt.get_unverified_header(token) jwt.decode( From 531fa104c8ddd6dcaa28d9dcf4e4f418fd19e65c Mon Sep 17 00:00:00 2001 From: Diogo Sousa Date: Wed, 26 Jul 2023 14:32:00 +0100 Subject: [PATCH 7/9] rename method and add description --- openbb_sdk/sdk/core/openbb_core/app/command_runner.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/openbb_sdk/sdk/core/openbb_core/app/command_runner.py b/openbb_sdk/sdk/core/openbb_core/app/command_runner.py index 8f7db8c6eff..d8244b5c3be 100644 --- a/openbb_sdk/sdk/core/openbb_core/app/command_runner.py +++ b/openbb_sdk/sdk/core/openbb_core/app/command_runner.py @@ -242,9 +242,10 @@ class StaticCommandRunner: return result @classmethod - def __execute( + def __command( cls, system_settings: SystemSettings, func: Callable, kwargs: Dict[str, Any] ) -> CommandOutput: + """Run a command and return the output""" try: context_manager: Union[warnings.catch_warnings, ContextManager[None]] = ( warnings.catch_warnings(record=True) @@ -283,6 +284,7 @@ class StaticCommandRunner: route: str, **kwargs, ) -> None: + """Create a chart from the command output""" try: command_output.chart = cls.charting_manager.chart( user_settings=user_settings, @@ -305,6 +307,7 @@ class StaticCommandRunner: func: Callable, kwargs: Dict[str, Any], ) -> CommandOutput: + """Execute a function and return the output""" user_settings = execution_context.user_settings system_settings = execution_context.system_settings @@ -329,7 +332,7 @@ class StaticCommandRunner: # commands.py and the function signature does not expect "chart" kwargs.pop("chart", None) - command_output = cls.__execute( + command_output = cls.__command( system_settings=system_settings, func=func, kwargs=kwargs, From afe4c480a2c06c4f7a68a63383c124f25c71885a Mon Sep 17 00:00:00 2001 From: Diogo Sousa Date: Wed, 26 Jul 2023 14:33:37 +0100 Subject: [PATCH 8/9] fix comment --- openbb_sdk/sdk/core/openbb_core/app/command_runner.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openbb_sdk/sdk/core/openbb_core/app/command_runner.py b/openbb_sdk/sdk/core/openbb_core/app/command_runner.py index d8244b5c3be..5186bc22168 100644 --- a/openbb_sdk/sdk/core/openbb_core/app/command_runner.py +++ b/openbb_sdk/sdk/core/openbb_core/app/command_runner.py @@ -312,8 +312,8 @@ class StaticCommandRunner: system_settings = execution_context.system_settings # If we're on Jupyter we need to pop here because we will lose "chart" after - # ParametersBuilder.build. This needs to be fixed in a way that chart is not - # is added to the function signature and shared for jupyter and api + # ParametersBuilder.build. This needs to be fixed in a way that chart is + # added to the function signature and shared for jupyter and api # We can check in the router decorator if the given function has a chart # in the charting extension then we add it there. This way we can remove # the chart parameter from the commands.py and package_builder, it will be From 41d13592023b23e55d1f738649d6c869832b71e0 Mon Sep 17 00:00:00 2001 From: montezdesousa <79287829+montezdesousa@users.noreply.github.com> Date: Wed, 26 Jul 2023 20:28:36 +0100 Subject: [PATCH 9/9] Check token expiration before request (#5255) * check token expiration before request * move to jose instead * ruff * Reqs * update requirements files * Print expiration time on login * console.print * too fast, let the token expire... * fix create token date * point expired key to hub * hard code tokens, works? * ok it passed --------- Co-authored-by: James Maslek --- openbb_terminal/core/session/hub_model.py | 23 + openbb_terminal/requirements-full.txt | 444 +++++++++++++++ openbb_terminal/requirements.txt | 298 ++++++++++ poetry.lock | 524 +++++++++++++++++- pyproject.toml | 1 + requirements-full.txt | 8 +- requirements.txt | 10 +- .../openbb_terminal/session/test_hub_model.py | 45 +- 8 files changed, 1330 insertions(+), 23 deletions(-) create mode 100644 openbb_terminal/requirements-full.txt create mode 100644 openbb_terminal/requirements.txt diff --git a/openbb_terminal/core/session/hub_model.py b/openbb_terminal/core/session/hub_model.py index f3de9d62566..b180671d199 100644 --- a/openbb_terminal/core/session/hub_model.py +++ b/openbb_terminal/core/session/hub_model.py @@ -1,7 +1,9 @@ +import datetime import json from typing import Any, Dict, List, Literal, Optional import requests +from jose import jwt from openbb_terminal.core.session.constants import ( BASE_URL, @@ -53,6 +55,20 @@ def create_session( return None +def check_token_expiration(token: str): + """Raises ExpiredSignatureError if the token is expired.""" + header_data = jwt.get_unverified_header(token) + + tok = jwt.decode( + token, + key="", + algorithms=[header_data["alg"]], + options={"verify_signature": False, "verify_exp": True}, + ) + expiration_time = datetime.datetime.fromtimestamp(tok["exp"]) + console.print(f"Token expires at {expiration_time}") + + def create_session_from_token( token: str, base_url: str = BASE_URL, timeout: int = TIMEOUT ): @@ -67,11 +83,18 @@ def create_session_from_token( timeout : int The timeout, by default TIMEOUT """ + try: + check_token_expiration(token) data = { "token": token, } return requests.post(url=base_url + "sdk/login", json=data, timeout=timeout) + except jwt.ExpiredSignatureError: + console.print( + "\n[red]Token expired. Please regenerate on the OpenBB Hub (my.openbb.co).[/red]" + ) + return None except requests.exceptions.ConnectionError: console.print("\n[red]Connection error.[/red]") return None diff --git a/openbb_terminal/requirements-full.txt b/openbb_terminal/requirements-full.txt new file mode 100644 index 00000000000..19987f21814 --- /dev/null +++ b/openbb_terminal/requirements-full.txt @@ -0,0 +1,444 @@ +absl-py==1.4.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +adagio==0.2.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +aiodns==3.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +aiofiles==22.1.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +aiohttp==3.8.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +aiosignal==1.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +aiosqlite==0.19.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +alabaster==0.7.13 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +alpha-vantage==2.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +altair==5.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +altgraph==0.17.3 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +ansi2html==1.8.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +ansiwrap==0.8.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +antlr4-python3-runtime==4.11.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +anyio==3.7.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +appdirs==1.4.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +appnope==0.1.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin" or python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and platform_system == "Darwin" +arch==5.6.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +argon2-cffi-bindings==21.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +argon2-cffi==21.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +arrow==1.2.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ascii-magic==1.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +astor==0.8.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +astroid==2.15.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +astropy==5.2.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +asttokens==2.2.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +async-timeout==4.0.2 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +atomicwrites==1.4.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "win32" +attrs==21.4.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +babel==2.12.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +backcall==0.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +backoff==2.2.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +backports-zoneinfo==0.2.1 ; python_full_version >= "3.8.1" and python_version < "3.9" +bandit==1.7.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +base58==2.1.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +beautifulsoup4==4.12.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +black==23.7.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +bleach==6.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +blinker==1.6.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +brotli==1.0.9 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and platform_python_implementation == "CPython" +brotlicffi==1.0.9.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and platform_python_implementation != "CPython" +bs4==0.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +bt==0.2.9 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cachetools==5.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +catboost==1.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ccxt==4.0.33 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +certifi==2023.5.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cffi==1.15.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cfgv==3.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +charset-normalizer==3.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +click==8.1.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cloudpickle==2.2.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cmdstanpy==1.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +codespell==2.2.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +colorama==0.4.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +comm==0.1.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +commonmark==0.9.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +contourpy==1.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +convertdate==2.4.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +coverage==7.2.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +coverage[toml]==7.2.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cryptography==41.0.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cssselect2==0.7.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cssselect==1.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cvxpy==1.2.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cycler==0.11.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cython==3.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +dash-core-components==2.0.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +dash-html-components==2.0.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +dash-table==5.0.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +dash==2.9.3 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +dataclasses-json==0.5.12 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +dateparser==1.1.8 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +datetime==5.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +debugpy==1.6.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +decorator==5.1.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +defusedxml==0.7.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +degiro-connector==2.0.21 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +detecta==0.0.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +dill==0.3.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +distlib==0.3.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +dnspython==2.4.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +docutils==0.17.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ecdsa==0.18.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ecos==2.0.12 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +entrypoints==0.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ephem==4.1.4 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +et-xmlfile==1.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +exceptiongroup==1.1.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +exchange-calendars==4.2.8 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +execnet==2.0.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +executing==1.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +fastjsonschema==2.17.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +feedparser==6.0.10 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ffmpeg-python==0.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ffn==0.3.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +filelock==3.12.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +financedatabase==2.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +finnhub-python==2.4.18 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +finviz==1.4.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +finvizfinance==0.14.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +flake8==6.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +flask==2.3.2 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +fonttools==4.41.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +formulaic==0.6.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +fqdn==1.5.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +fred==3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +fredapi==0.4.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +freezegun==1.2.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +frozendict==2.3.8 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +frozenlist==1.4.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +fs==2.4.16 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +fsspec==2023.6.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +fsspec[http]==2023.6.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +fugue-sql-antlr==0.1.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +fugue==0.8.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +fundamentalanalysis==0.2.14 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +future==0.18.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +gitdb==4.0.10 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +gitpython==3.1.32 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +google-auth-oauthlib==1.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +google-auth==2.22.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +graphlib-backport==1.0.3 ; python_full_version >= "3.8.1" and python_version < "3.9" +graphviz==0.20.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +greenlet==2.0.2 ; python_full_version >= "3.8.1" and platform_machine == "aarch64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "ppc64le" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "x86_64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "amd64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "AMD64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "win32" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "WIN32" and python_full_version != "3.9.7" and python_version < "3.11" +grpcio==1.56.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +h11==0.14.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +hijri-converter==2.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +holidays==0.14.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +html5lib==1.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +httpcore==0.17.3 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +huggingface-hub==0.16.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +identify==2.5.25 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +idna==3.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +imagesize==1.4.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +importlib-metadata==6.8.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +importlib-resources==6.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +inflection==0.5.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +iniconfig==2.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +interface-meta==1.3.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +intrinio-sdk==6.24.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ipykernel==6.24.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ipympl==0.8.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ipython-genutils==0.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ipython==8.11.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ipywidgets==8.0.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +iso8601==0.1.16 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +isodate==0.6.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +isoduration==20.11.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +isort==5.12.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +itsdangerous==2.1.2 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +jedi==0.18.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jinja2==3.1.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +joblib==1.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +json5==0.9.14 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jsonpointer==2.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jsonschema==4.17.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jsonschema[format-nongpl]==4.17.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyter-client==7.4.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyter-core==5.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyter-dash==0.4.2 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +jupyter-events==0.6.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyter-server-fileid==0.9.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyter-server-ydoc==0.8.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyter-server==1.23.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyter-ydoc==0.2.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyterlab-pygments==0.2.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyterlab-server==2.23.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyterlab-widgets==3.0.8 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyterlab==3.6.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +kiwisolver==1.4.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +korean-lunar-calendar==0.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +langchain==0.0.237 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +langsmith==0.0.10 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +lazy-object-proxy==1.9.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +lightgbm==3.3.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +lightning-utilities==0.9.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +linearmodels==4.31 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +llama-index==0.7.11 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +llvmlite==0.40.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +loguru==0.7.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +lunarcalendar==0.0.9 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +lxml==4.9.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +macholib==1.16.2 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" and sys_platform == "darwin" +markdown-it-py==1.1.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +markdown==3.4.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +markupsafe==2.1.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +marshmallow==3.19.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +matplotlib-inline==0.1.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +matplotlib==3.7.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +mccabe==0.7.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +mdit-py-plugins==0.2.8 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +mistune==3.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +mock==4.0.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +monotonic==1.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +more-itertools==9.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +mplfinance==0.12.9b7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +mstarpy==0.0.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +multidict==6.0.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +multitasking==0.0.11 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +mutagen==1.46.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +mypy-extensions==1.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +mypy==1.4.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +myst-parser==0.15.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +nbclassic==1.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +nbclient==0.6.8 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +nbconvert==7.7.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +nbformat==5.9.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +nbmake==1.4.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +nest-asyncio==1.5.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +networkx==3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +nfoursid==1.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +nodeenv==1.8.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +notebook-shim==0.2.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +notebook==6.5.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +numba==0.57.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +numexpr==2.8.4 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +numpy==1.23.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +oandapyv20==0.6.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +oauthlib==3.2.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +onetimepass==1.0.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +openai-whisper==20230124 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +openai==0.27.8 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +openapi-schema-pydantic==1.2.4 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +openpyxl==3.1.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +orjson==3.9.2 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +osqp==0.6.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +packaging==23.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pandas-datareader==0.10.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pandas-market-calendars==3.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pandas-ta==0.3.14b ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pandas==1.5.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pandocfilters==1.5.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +papermill==2.4.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +parso==0.8.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pathspec==0.11.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +patsy==0.5.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pbr==5.11.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pefile==2023.2.7 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" and sys_platform == "win32" +pexpect==4.8.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform != "win32" +pickleshare==0.7.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pillow==9.5.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pkgutil-resolve-name==1.3.10 ; python_full_version >= "3.8.1" and python_version < "3.9" +platformdirs==3.9.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +plotly-resampler==0.8.3.2 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +plotly==5.15.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pluggy==1.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pmaw==3.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pmdarima==2.0.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +posthog==3.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +praw==7.7.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +prawcore==2.3.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +pre-commit==2.21.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +prometheus-client==0.17.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +prompt-toolkit==3.0.39 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +property-cached==1.6.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +prophet==1.1.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +protobuf==3.20.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +psutil==5.9.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ptyprocess==0.7.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform != "win32" or python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and os_name != "nt" +pure-eval==0.2.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +py==1.11.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyarrow==12.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyasn1-modules==0.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyasn1==0.5.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pycares==4.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pycodestyle==2.10.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pycoingecko==3.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pycparser==2.21 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pycryptodome==3.18.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pycryptodomex==3.18.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pydantic==1.10.11 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pydeck==0.8.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pydeprecate==0.3.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pydocstyle==6.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyerfa==2.0.0.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyflakes==3.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pygments==2.15.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyhdfe==0.1.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyinstaller-hooks-contrib==2023.6 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +pyinstaller==4.10 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +pylint==2.17.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyluach==2.2.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +pymeeus==0.5.12 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +pympler==1.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyobjc-core==9.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin" +pyobjc-framework-cocoa==9.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin" +pyod==1.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyotp==2.8.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyparsing==3.0.9 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyprind==2.11.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyrsistent==0.19.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pytest-cov==3.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pytest-mock==3.11.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pytest-recorder==0.2.3 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +pytest-recording==0.12.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pytest-timeout==2.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pytest-xdist==3.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pytest==6.2.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pythclient==0.1.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-binance==1.0.17 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-coinmarketcap==0.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-dateutil==2.8.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-dotenv==1.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-i18n==0.3.9 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-jose==3.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-json-logger==2.0.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pytorch-lightning==1.6.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pytrends==4.9.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pytz-deprecation-shim==0.1.0.post0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pytz==2023.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pywin32-ctypes==0.2.2 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" and sys_platform == "win32" +pywin32==306 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pywinpty==2.0.11 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and os_name == "nt" +pywry==0.5.13 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyyaml==6.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyzmq==25.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +qdldl==0.1.7.post0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +qpd==0.4.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +quandl==3.7.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +rdflib==6.3.2 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +regex==2023.6.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +reportlab==3.6.13 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +requests-futures==1.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +requests-oauthlib==1.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +requests==2.31.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +retrying==1.3.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +rfc3339-validator==0.1.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +rfc3986-validator==0.1.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +rich==12.6.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +riskfolio-lib==3.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +robin-stocks==2.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +rsa==4.9 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +ruamel-yaml-clib==0.2.7 ; platform_python_implementation == "CPython" and python_version < "3.11" and python_full_version >= "3.8.1" and python_full_version != "3.9.7" +ruamel-yaml==0.17.32 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ruff==0.0.256 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +scikit-learn==1.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +scipy==1.10.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +screeninfo==0.6.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +scs==3.2.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +seaborn==0.11.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +semantic-version==2.10.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +send2trash==1.8.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +setproctitle==1.3.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +setuptools-rust==1.6.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +setuptools-scm[toml]==7.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +setuptools==65.4.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sgmllib3k==1.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +shap==0.42.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +six==1.16.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +slicer==0.0.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +smmap==5.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sniffio==1.3.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +snowballstemmer==2.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +soupsieve==2.4.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sparqlwrapper==2.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sphinx==4.5.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sphinxcontrib-applehelp==1.0.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sphinxcontrib-devhelp==1.0.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sphinxcontrib-htmlhelp==2.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sphinxcontrib-jsmath==1.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sphinxcontrib-qthelp==1.0.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sphinxcontrib-serializinghtml==1.1.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sqlalchemy==2.0.19 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sqlglot==17.6.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +squarify==0.4.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +stack-data==0.6.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +statsforecast==1.5.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +statsmodels==0.13.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +stevedore==5.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +stocksera==0.1.21 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +streamlit==1.24.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +svglib==1.5.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tabulate==0.9.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tbats==1.1.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tenacity==8.2.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tensorboard-data-server==0.7.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tensorboard==2.13.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +terminado==0.17.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +textwrap3==0.9.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +thepassiveinvestor==1.2.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +threadpoolctl==3.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tiktoken==0.4.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +time-machine==2.11.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +tinycss2==1.2.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tokenizers==0.13.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tokenterminal==1.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +toml==0.10.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tomli==2.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tomlkit==0.11.8 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +toolz==0.12.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +torch==1.11.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +torchmetrics==1.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tornado==6.3.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tqdm==4.65.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +trace-updater==0.0.9.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +tradingview-ta==3.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +traitlets==5.9.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +transformers==4.27.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +triad==0.9.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +types-python-dateutil==2.8.19.14 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +types-pytz==2021.3.8 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +types-pyyaml==6.0.12.11 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +types-requests==2.31.0.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +types-setuptools==57.4.18 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +types-six==1.16.21.9 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +types-urllib3==1.26.25.14 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +typing-extensions==4.7.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +typing-inspect==0.9.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tzdata==2023.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tzlocal==4.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +u8darts[torch]==0.23.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ujson==5.8.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +update-checker==0.18.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +uri-template==1.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +urllib3==1.26.16 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +user-agent==0.1.10 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +vadersentiment==3.3.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +validators==0.20.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +valinvest==0.0.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +vcrpy==4.4.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +virtualenv==20.24.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +watchdog==2.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +wcwidth==0.2.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +webcolors==1.13 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +webencodings==0.5.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +websocket-client==1.6.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +websockets==11.0.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +werkzeug==2.3.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +wheel==0.40.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +widgetsnbextension==4.0.8 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +win32-setctime==1.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "win32" +wrapt==1.15.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +xarray==2023.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +xgboost==1.7.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +xlsxwriter==3.1.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +y-py==0.6.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +yahooquery==2.3.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +yarl==1.9.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +yfinance==0.2.25 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ypy-websocket==0.8.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +yt-dlp==2023.7.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +zipp==3.16.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +zope-interface==6.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" diff --git a/openbb_terminal/requirements.txt b/openbb_terminal/requirements.txt new file mode 100644 index 00000000000..115a934a9a7 --- /dev/null +++ b/openbb_terminal/requirements.txt @@ -0,0 +1,298 @@ +aiodns==3.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +aiofiles==22.1.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +aiohttp==3.8.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +aiosignal==1.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +aiosqlite==0.19.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +alpha-vantage==2.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +altair==5.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ansiwrap==0.8.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +anyio==3.7.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +appdirs==1.4.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +appnope==0.1.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin" or python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and platform_system == "Darwin" +arch==5.6.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +argon2-cffi-bindings==21.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +argon2-cffi==21.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +arrow==1.2.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ascii-magic==1.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +astor==0.8.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +asttokens==2.2.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +async-timeout==4.0.2 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +attrs==21.4.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +babel==2.12.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +backcall==0.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +backoff==2.2.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +backports-zoneinfo==0.2.1 ; python_full_version >= "3.8.1" and python_version < "3.9" +base58==2.1.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +beautifulsoup4==4.12.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +bleach==6.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +blinker==1.6.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +bs4==0.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +bt==0.2.9 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cachetools==5.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ccxt==4.0.33 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +certifi==2023.5.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cffi==1.15.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +charset-normalizer==3.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +click==8.1.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +colorama==0.4.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +comm==0.1.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +commonmark==0.9.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +contourpy==1.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +convertdate==2.4.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +cryptography==41.0.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cssselect2==0.7.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cssselect==1.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cycler==0.11.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +cython==3.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +dataclasses-json==0.5.12 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +dateparser==1.1.8 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +datetime==5.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +debugpy==1.6.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +decorator==5.1.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +defusedxml==0.7.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +degiro-connector==2.0.21 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +detecta==0.0.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +dnspython==2.4.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +ecdsa==0.18.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +entrypoints==0.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +et-xmlfile==1.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +exceptiongroup==1.1.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +exchange-calendars==4.2.8 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +executing==1.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +fastjsonschema==2.17.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +feedparser==6.0.10 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ffn==0.3.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +financedatabase==2.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +finnhub-python==2.4.18 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +finviz==1.4.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +finvizfinance==0.14.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +flake8==6.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +fonttools==4.41.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +formulaic==0.6.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +fqdn==1.5.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +fred==3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +fredapi==0.4.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +frozendict==2.3.8 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +frozenlist==1.4.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +fsspec==2023.6.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +fundamentalanalysis==0.2.14 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +future==0.18.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +gitdb==4.0.10 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +gitpython==3.1.32 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +graphlib-backport==1.0.3 ; python_full_version >= "3.8.1" and python_version < "3.9" +greenlet==2.0.2 ; python_full_version >= "3.8.1" and platform_machine == "aarch64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "ppc64le" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "x86_64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "amd64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "AMD64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "win32" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "WIN32" and python_full_version != "3.9.7" and python_version < "3.11" +grpcio==1.56.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +h11==0.14.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +hijri-converter==2.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +holidays==0.14.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +html5lib==1.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +httpcore==0.17.3 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +idna==3.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +importlib-metadata==6.8.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +importlib-resources==6.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.10" +inflection==0.5.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +interface-meta==1.3.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +intrinio-sdk==6.24.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ipykernel==6.24.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ipympl==0.8.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ipython-genutils==0.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ipython==8.11.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ipywidgets==8.0.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +iso8601==0.1.16 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +isodate==0.6.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +isoduration==20.11.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jedi==0.18.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jinja2==3.1.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +joblib==1.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +json5==0.9.14 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jsonpointer==2.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jsonschema==4.17.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jsonschema[format-nongpl]==4.17.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyter-client==7.4.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyter-core==5.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyter-events==0.6.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyter-server-fileid==0.9.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyter-server-ydoc==0.8.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyter-server==1.23.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyter-ydoc==0.2.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyterlab-pygments==0.2.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyterlab-server==2.23.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyterlab-widgets==3.0.8 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +jupyterlab==3.6.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +kiwisolver==1.4.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +korean-lunar-calendar==0.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +langchain==0.0.237 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +langsmith==0.0.10 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +linearmodels==4.31 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +llama-index==0.7.11 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +loguru==0.7.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +lxml==4.9.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +markupsafe==2.1.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +marshmallow==3.19.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +matplotlib-inline==0.1.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +matplotlib==3.7.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +mccabe==0.7.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +mistune==3.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +monotonic==1.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +more-itertools==9.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +mplfinance==0.12.9b7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +mstarpy==0.0.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +multidict==6.0.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +multitasking==0.0.11 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +mypy-extensions==1.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +nbclassic==1.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +nbclient==0.6.8 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +nbconvert==7.7.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +nbformat==5.9.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +nest-asyncio==1.5.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +notebook-shim==0.2.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +notebook==6.5.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +numexpr==2.8.4 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +numpy==1.23.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +oandapyv20==0.6.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +onetimepass==1.0.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +openai==0.27.8 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +openapi-schema-pydantic==1.2.4 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +openpyxl==3.1.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +packaging==23.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pandas-datareader==0.10.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pandas-market-calendars==3.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pandas-ta==0.3.14b ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pandas==1.5.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pandocfilters==1.5.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +papermill==2.4.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +parso==0.8.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +patsy==0.5.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pexpect==4.8.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform != "win32" +pickleshare==0.7.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pillow==9.5.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pkgutil-resolve-name==1.3.10 ; python_full_version >= "3.8.1" and python_version < "3.9" +platformdirs==3.9.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +plotly==5.15.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pmaw==3.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +posthog==3.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +praw==7.7.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +prawcore==2.3.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +prometheus-client==0.17.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +prompt-toolkit==3.0.39 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +property-cached==1.6.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +protobuf==3.20.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +psutil==5.9.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ptyprocess==0.7.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform != "win32" or python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and os_name != "nt" +pure-eval==0.2.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyarrow==12.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyasn1==0.5.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pycares==4.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pycodestyle==2.10.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pycoingecko==3.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pycparser==2.21 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pycryptodome==3.18.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pydantic==1.10.11 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pydeck==0.8.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyflakes==3.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pygments==2.15.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyhdfe==0.1.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyluach==2.2.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +pymeeus==0.5.12 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +pympler==1.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyobjc-core==9.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin" +pyobjc-framework-cocoa==9.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin" +pyotp==2.8.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyparsing==3.0.9 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyprind==2.11.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyrsistent==0.19.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pythclient==0.1.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-binance==1.0.17 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-coinmarketcap==0.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-dateutil==2.8.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-dotenv==1.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-i18n==0.3.9 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-jose==3.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-json-logger==2.0.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pytrends==4.9.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pytz-deprecation-shim==0.1.0.post0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pytz==2023.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pywin32==306 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pywinpty==2.0.11 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and os_name == "nt" +pywry==0.5.13 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyyaml==6.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyzmq==25.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +quandl==3.7.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +rdflib==6.3.2 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +regex==2023.6.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +reportlab==3.6.13 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +requests-futures==1.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +requests==2.31.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +retrying==1.3.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +rfc3339-validator==0.1.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +rfc3986-validator==0.1.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +rich==12.6.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +robin-stocks==2.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +rsa==4.9 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +ruamel-yaml-clib==0.2.7 ; platform_python_implementation == "CPython" and python_version < "3.11" and python_full_version >= "3.8.1" and python_full_version != "3.9.7" +ruamel-yaml==0.17.32 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +scikit-learn==1.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +scipy==1.10.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +screeninfo==0.6.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +seaborn==0.11.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +send2trash==1.8.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +setproctitle==1.3.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +setuptools-scm[toml]==7.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +setuptools==65.4.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sgmllib3k==1.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +six==1.16.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +smmap==5.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sniffio==1.3.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +soupsieve==2.4.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sparqlwrapper==2.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +sqlalchemy==2.0.19 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +squarify==0.4.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +stack-data==0.6.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +statsmodels==0.13.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +stocksera==0.1.21 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +streamlit==1.24.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +svglib==1.5.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tabulate==0.9.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tenacity==8.2.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +terminado==0.17.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +textwrap3==0.9.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +thepassiveinvestor==1.2.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +threadpoolctl==3.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tiktoken==0.4.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tinycss2==1.2.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tokenterminal==1.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +toml==0.10.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tomli==2.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +toolz==0.12.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +tornado==6.3.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tqdm==4.65.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tradingview-ta==3.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +traitlets==5.9.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +typing-extensions==4.7.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +typing-inspect==0.9.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tzdata==2023.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +tzlocal==4.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ujson==5.8.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +update-checker==0.18.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +uri-template==1.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +urllib3==1.26.16 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +user-agent==0.1.10 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +vadersentiment==3.3.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +validators==0.20.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +valinvest==0.0.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +watchdog==2.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +wcwidth==0.2.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +webcolors==1.13 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +webencodings==0.5.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +websocket-client==1.6.1 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +websockets==11.0.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +widgetsnbextension==4.0.8 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +win32-setctime==1.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "win32" +wrapt==1.15.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +y-py==0.6.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +yahooquery==2.3.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +yarl==1.9.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +yfinance==0.2.25 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ypy-websocket==0.8.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +zipp==3.16.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +zope-interface==6.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" diff --git a/poetry.lock b/poetry.lock index 59dcbd99fc7..943196d1e9b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,9 +1,10 @@ -# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. [[package]] name = "absl-py" version = "1.4.0" description = "Abseil Python Common Libraries, see https://github.com/abseil/abseil-py." +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -15,6 +16,7 @@ files = [ name = "adagio" version = "0.2.4" description = "The Dag IO Framework for Fugue projects" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -29,6 +31,7 @@ triad = ">=0.6.1" name = "aiodns" version = "3.0.0" description = "Simple DNS resolver for asyncio" +category = "main" optional = false python-versions = "*" files = [ @@ -43,6 +46,7 @@ pycares = ">=4.0.0" name = "aiofiles" version = "22.1.0" description = "File support for asyncio." +category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -54,6 +58,7 @@ files = [ name = "aiohttp" version = "3.8.5" description = "Async http client/server framework (asyncio)" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -162,6 +167,7 @@ speedups = ["Brotli", "aiodns", "cchardet"] name = "aiosignal" version = "1.3.1" description = "aiosignal: a list of registered asynchronous callbacks" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -176,6 +182,7 @@ frozenlist = ">=1.1.0" name = "aiosqlite" version = "0.19.0" description = "asyncio bridge to the standard sqlite3 module" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -191,6 +198,7 @@ docs = ["sphinx (==6.1.3)", "sphinx-mdinclude (==0.5.3)"] name = "alabaster" version = "0.7.13" description = "A configurable sidebar-enabled Sphinx theme" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -202,6 +210,7 @@ files = [ name = "alpha-vantage" version = "2.3.1" description = "Python module to get stock data from the Alpha Vantage Api" +category = "main" optional = false python-versions = "*" files = [ @@ -217,6 +226,7 @@ requests = "*" name = "altair" version = "5.0.1" description = "Vega-Altair: A declarative statistical visualization library for Python." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -240,6 +250,7 @@ doc = ["docutils", "geopandas", "jinja2", "myst-parser", "numpydoc", "pillow", " name = "altgraph" version = "0.17.3" description = "Python graph (network) package" +category = "main" optional = true python-versions = "*" files = [ @@ -251,6 +262,7 @@ files = [ name = "ansi2html" version = "1.8.0" description = "" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -266,6 +278,7 @@ test = ["pytest", "pytest-cov"] name = "ansiwrap" version = "0.8.4" description = "textwrap, but savvy to ANSI colors and styles" +category = "main" optional = false python-versions = "*" files = [ @@ -280,6 +293,7 @@ textwrap3 = ">=0.9.2" name = "antlr4-python3-runtime" version = "4.11.1" description = "ANTLR 4.11.1 runtime for Python 3" +category = "main" optional = true python-versions = "*" files = [ @@ -291,6 +305,7 @@ files = [ name = "anyio" version = "3.7.1" description = "High level compatibility layer for multiple asynchronous event loop implementations" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -312,6 +327,7 @@ trio = ["trio (<0.22)"] name = "appdirs" version = "1.4.4" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "main" optional = false python-versions = "*" files = [ @@ -323,6 +339,7 @@ files = [ name = "appnope" version = "0.1.3" description = "Disable App Nap on macOS >= 10.9" +category = "main" optional = false python-versions = "*" files = [ @@ -334,6 +351,7 @@ files = [ name = "arch" version = "5.6.0" description = "ARCH for Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -373,6 +391,7 @@ statsmodels = ">=0.11" name = "argon2-cffi" version = "21.3.0" description = "The secure Argon2 password hashing algorithm." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -392,6 +411,7 @@ tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"] name = "argon2-cffi-bindings" version = "21.2.0" description = "Low-level CFFI bindings for Argon2" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -429,6 +449,7 @@ tests = ["pytest"] name = "arrow" version = "1.2.3" description = "Better dates & times for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -443,6 +464,7 @@ python-dateutil = ">=2.7.0" name = "ascii-magic" version = "1.6" description = "Converts pictures into ASCII art" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -458,6 +480,7 @@ Pillow = "*" name = "astor" version = "0.8.1" description = "Read/rewrite/write Python ASTs" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" files = [ @@ -469,6 +492,7 @@ files = [ name = "astroid" version = "2.15.6" description = "An abstract syntax tree for Python with inference support." +category = "dev" optional = false python-versions = ">=3.7.2" files = [ @@ -485,6 +509,7 @@ wrapt = {version = ">=1.11,<2", markers = "python_version < \"3.11\""} name = "astropy" version = "5.2.2" description = "Astronomy and astrophysics core library" +category = "main" optional = true python-versions = ">=3.8" files = [ @@ -538,6 +563,7 @@ test-all = ["coverage[toml]", "ipython (>=4.2)", "objgraph", "pytest (>=7.0)", " name = "asttokens" version = "2.2.1" description = "Annotate AST trees with source code positions" +category = "main" optional = false python-versions = "*" files = [ @@ -555,6 +581,7 @@ test = ["astroid", "pytest"] name = "async-timeout" version = "4.0.2" description = "Timeout context manager for asyncio programs" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -566,6 +593,7 @@ files = [ name = "atomicwrites" version = "1.4.1" description = "Atomic file writes." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -576,6 +604,7 @@ files = [ name = "attrs" version = "21.4.0" description = "Classes Without Boilerplate" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -593,6 +622,7 @@ tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy" name = "babel" version = "2.12.1" description = "Internationalization utilities" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -607,6 +637,7 @@ pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} name = "backcall" version = "0.2.0" description = "Specifications for callback functions passed in to an API" +category = "main" optional = false python-versions = "*" files = [ @@ -618,6 +649,7 @@ files = [ name = "backoff" version = "2.2.1" description = "Function decoration for backoff and retry" +category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -629,6 +661,7 @@ files = [ name = "backports-zoneinfo" version = "0.2.1" description = "Backport of the standard library zoneinfo module" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -657,6 +690,7 @@ tzdata = ["tzdata"] name = "bandit" version = "1.7.5" description = "Security oriented static analyser for python code." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -680,6 +714,7 @@ yaml = ["PyYAML"] name = "base58" version = "2.1.1" description = "Base58 and Base58Check implementation." +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -694,6 +729,7 @@ tests = ["PyHamcrest (>=2.0.2)", "mypy", "pytest (>=4.6)", "pytest-benchmark", " name = "beautifulsoup4" version = "4.12.2" description = "Screen-scraping library" +category = "main" optional = false python-versions = ">=3.6.0" files = [ @@ -712,6 +748,7 @@ lxml = ["lxml"] name = "black" version = "23.7.0" description = "The uncompromising code formatter." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -758,6 +795,7 @@ uvloop = ["uvloop (>=0.15.2)"] name = "bleach" version = "6.0.0" description = "An easy safelist-based HTML-sanitizing tool." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -776,6 +814,7 @@ css = ["tinycss2 (>=1.1.0,<1.2)"] name = "blinker" version = "1.6.2" description = "Fast, simple object-to-object and broadcast signaling" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -787,6 +826,7 @@ files = [ name = "brotli" version = "1.0.9" description = "Python bindings for the Brotli compression library" +category = "main" optional = true python-versions = "*" files = [ @@ -878,6 +918,7 @@ files = [ name = "brotlicffi" version = "1.0.9.2" description = "Python CFFI bindings to the Brotli library" +category = "main" optional = true python-versions = "*" files = [ @@ -920,6 +961,7 @@ cffi = ">=1.0.0" name = "bs4" version = "0.0.1" description = "Dummy package for Beautiful Soup" +category = "main" optional = false python-versions = "*" files = [ @@ -933,6 +975,7 @@ beautifulsoup4 = "*" name = "bt" version = "0.2.9" description = "A flexible backtesting framework for Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -958,6 +1001,7 @@ dev = ["black (>=20.8b1)", "codecov", "coverage", "cython (>=0.25)", "ffn (>=0.3 name = "cachetools" version = "5.3.1" description = "Extensible memoizing collections and decorators" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -969,6 +1013,7 @@ files = [ name = "catboost" version = "1.2" description = "CatBoost Python Package" +category = "main" optional = true python-versions = "*" files = [ @@ -1011,6 +1056,7 @@ widget = ["ipython", "ipywidgets (>=7.0,<9.0)", "traitlets"] name = "cattrs" version = "23.1.2" description = "Composable complex class support for attrs and dataclasses." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1036,6 +1082,7 @@ ujson = ["ujson (>=5.4.0,<6.0.0)"] name = "ccxt" version = "4.0.33" description = "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges" +category = "main" optional = false python-versions = "*" files = [ @@ -1059,6 +1106,7 @@ qa = ["flake8 (==3.7.9)"] name = "certifi" version = "2023.5.7" description = "Python package for providing Mozilla's CA Bundle." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1070,6 +1118,7 @@ files = [ name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." +category = "main" optional = false python-versions = "*" files = [ @@ -1146,6 +1195,7 @@ pycparser = "*" name = "cfgv" version = "3.3.1" description = "Validate configuration and produce human readable error messages." +category = "dev" optional = false python-versions = ">=3.6.1" files = [ @@ -1157,6 +1207,7 @@ files = [ name = "charset-normalizer" version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -1241,6 +1292,7 @@ files = [ name = "click" version = "8.1.6" description = "Composable command line interface toolkit" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1255,6 +1307,7 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "cloudpickle" version = "2.2.1" description = "Extended pickling support for Python objects" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -1266,6 +1319,7 @@ files = [ name = "cmdstanpy" version = "1.1.0" description = "Python interface to CmdStan" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1287,6 +1341,7 @@ tests = ["flake8", "mypy", "pylint", "pytest", "pytest-cov", "pytest-order", "tq name = "codespell" version = "2.2.5" description = "Codespell" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1304,6 +1359,7 @@ types = ["chardet (>=5.1.0)", "mypy", "pytest", "pytest-cov", "pytest-dependency name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -1315,6 +1371,7 @@ files = [ name = "comm" version = "0.1.3" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1334,6 +1391,7 @@ typing = ["mypy (>=0.990)"] name = "commonmark" version = "0.9.1" description = "Python parser for the CommonMark Markdown spec" +category = "main" optional = false python-versions = "*" files = [ @@ -1348,6 +1406,7 @@ test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] name = "contourpy" version = "1.1.0" description = "Python library for calculating contours of 2D quadrilateral grids" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1406,6 +1465,7 @@ test-no-images = ["pytest", "pytest-cov", "wurlitzer"] name = "convertdate" version = "2.4.0" description = "Converts between Gregorian dates and other calendar systems" +category = "main" optional = false python-versions = "<4,>=3.7" files = [ @@ -1425,6 +1485,7 @@ tests = ["coverage"] name = "coverage" version = "7.2.7" description = "Code coverage measurement for Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1500,6 +1561,7 @@ toml = ["tomli"] name = "cryptography" version = "41.0.2" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1545,6 +1607,7 @@ test-randomorder = ["pytest-randomly"] name = "cssselect" version = "1.2.0" description = "cssselect parses CSS3 Selectors and translates them to XPath 1.0" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1556,6 +1619,7 @@ files = [ name = "cssselect2" version = "0.7.0" description = "CSS selectors for Python ElementTree" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1575,6 +1639,7 @@ test = ["flake8", "isort", "pytest"] name = "cvxpy" version = "1.2.2" description = "A domain-specific language for modeling convex optimization problems in Python." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -1607,6 +1672,7 @@ scs = ">=1.1.6" name = "cycler" version = "0.11.0" description = "Composable style cycles" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1618,6 +1684,7 @@ files = [ name = "cython" version = "3.0.0" description = "The Cython compiler for writing C extensions in the Python language." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1685,6 +1752,7 @@ files = [ name = "dash" version = "2.9.3" description = "A Python framework for building reactive web-apps. Developed by Plotly." +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -1711,6 +1779,7 @@ testing = ["beautifulsoup4 (>=4.8.2)", "cryptography (<3.4)", "dash-testing-stub name = "dash-core-components" version = "2.0.0" description = "Core component suite for Dash" +category = "main" optional = true python-versions = "*" files = [ @@ -1722,6 +1791,7 @@ files = [ name = "dash-html-components" version = "2.0.0" description = "Vanilla HTML components for Dash" +category = "main" optional = true python-versions = "*" files = [ @@ -1733,6 +1803,7 @@ files = [ name = "dash-table" version = "5.0.0" description = "Dash table" +category = "main" optional = true python-versions = "*" files = [ @@ -1744,6 +1815,7 @@ files = [ name = "dataclasses-json" version = "0.5.12" description = "Easily serialize dataclasses to and from JSON." +category = "main" optional = false python-versions = ">=3.7,<3.12" files = [ @@ -1759,6 +1831,7 @@ typing-inspect = ">=0.4.0,<1" name = "dateparser" version = "1.1.8" description = "Date parsing library designed to parse dates from HTML pages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1781,6 +1854,7 @@ langdetect = ["langdetect"] name = "datetime" version = "5.2" description = "This package provides a DateTime data type, as known from Zope. Unless you need to communicate with Zope APIs, you're probably better off using Python's built-in datetime module." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1796,6 +1870,7 @@ pytz = "*" name = "debugpy" version = "1.6.7" description = "An implementation of the Debug Adapter Protocol for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1823,6 +1898,7 @@ files = [ name = "decorator" version = "5.1.1" description = "Decorators for Humans" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1834,6 +1910,7 @@ files = [ name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1845,6 +1922,7 @@ files = [ name = "degiro-connector" version = "2.0.21" description = "This is yet another library to access Degiro's API." +category = "main" optional = false python-versions = ">=3.7.1,<4.0.0" files = [ @@ -1864,6 +1942,7 @@ wrapt = ">=1.12.1,<2.0.0" name = "detecta" version = "0.0.5" description = "Detect events in data" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1875,6 +1954,7 @@ files = [ name = "dill" version = "0.3.6" description = "serialize all of python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1889,6 +1969,7 @@ graph = ["objgraph (>=1.7.2)"] name = "distlib" version = "0.3.7" description = "Distribution utilities" +category = "dev" optional = false python-versions = "*" files = [ @@ -1900,6 +1981,7 @@ files = [ name = "dnspython" version = "2.4.0" description = "DNS toolkit" +category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -1923,6 +2005,7 @@ wmi = ["wmi (>=1.5.1,<2.0.0)"] name = "docstring-parser" version = "0.15" description = "Parse Python docstrings in reST, Google and Numpydoc format" +category = "main" optional = true python-versions = ">=3.6,<4.0" files = [ @@ -1934,6 +2017,7 @@ files = [ name = "docstring-to-markdown" version = "0.12" description = "On the fly conversion of Python docstrings to markdown" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -1945,6 +2029,7 @@ files = [ name = "docutils" version = "0.17.1" description = "Docutils -- Python Documentation Utilities" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -1952,10 +2037,30 @@ files = [ {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, ] +[[package]] +name = "ecdsa" +version = "0.18.0" +description = "ECDSA cryptographic signature library (pure python)" +category = "main" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "ecdsa-0.18.0-py2.py3-none-any.whl", hash = "sha256:80600258e7ed2f16b9aa1d7c295bd70194109ad5a30fdee0eaeefef1d4c559dd"}, + {file = "ecdsa-0.18.0.tar.gz", hash = "sha256:190348041559e21b22a1d65cee485282ca11a6f81d503fddb84d5017e9ed1e49"}, +] + +[package.dependencies] +six = ">=1.9.0" + +[package.extras] +gmpy = ["gmpy"] +gmpy2 = ["gmpy2"] + [[package]] name = "ecos" version = "2.0.12" description = "This is the Python package for ECOS: Embedded Cone Solver. See Github page for more information." +category = "main" optional = true python-versions = "*" files = [ @@ -1985,6 +2090,7 @@ scipy = ">=0.9" name = "entrypoints" version = "0.4" description = "Discover and load entry points from installed packages." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1996,6 +2102,7 @@ files = [ name = "ephem" version = "4.1.4" description = "Compute positions of the planets and stars" +category = "main" optional = true python-versions = "*" files = [ @@ -2072,6 +2179,7 @@ files = [ name = "et-xmlfile" version = "1.1.0" description = "An implementation of lxml.xmlfile for the standard library" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2083,6 +2191,7 @@ files = [ name = "exceptiongroup" version = "1.1.2" description = "Backport of PEP 654 (exception groups)" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2097,6 +2206,7 @@ test = ["pytest (>=6)"] name = "exchange-calendars" version = "4.2.8" description = "Calendars for securities exchanges" +category = "main" optional = false python-versions = "~=3.8" files = [ @@ -2120,6 +2230,7 @@ dev = ["flake8", "hypothesis", "pip-tools", "pytest", "pytest-benchmark", "pytes name = "execnet" version = "2.0.2" description = "execnet: rapid multi-Python deployment" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2134,6 +2245,7 @@ testing = ["hatch", "pre-commit", "pytest", "tox"] name = "executing" version = "1.2.0" description = "Get the currently executing AST node of a frame, and other information" +category = "main" optional = false python-versions = "*" files = [ @@ -2148,6 +2260,7 @@ tests = ["asttokens", "littleutils", "pytest", "rich"] name = "fastjsonschema" version = "2.17.1" description = "Fastest Python implementation of JSON schema" +category = "main" optional = false python-versions = "*" files = [ @@ -2162,6 +2275,7 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc name = "feedparser" version = "6.0.10" description = "Universal feed parser, handles RSS 0.9x, RSS 1.0, RSS 2.0, CDF, Atom 0.3, and Atom 1.0 feeds" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2176,6 +2290,7 @@ sgmllib3k = "*" name = "ffmpeg-python" version = "0.2.0" description = "Python bindings for FFmpeg - with complex filtering support" +category = "main" optional = true python-versions = "*" files = [ @@ -2193,6 +2308,7 @@ dev = ["Sphinx (==2.1.0)", "future (==0.17.1)", "numpy (==1.16.4)", "pytest (==4 name = "ffn" version = "0.3.6" description = "Financial functions for Python" +category = "main" optional = false python-versions = "*" files = [ @@ -2218,6 +2334,7 @@ dev = ["black (>=20.8b1)", "codecov", "coverage", "flake8", "flake8-black", "fut name = "filelock" version = "3.12.2" description = "A platform independent file lock." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2233,6 +2350,7 @@ testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "p name = "financedatabase" version = "2.1.0" description = "This is a database of 300.000+ symbols containing Equities, ETFs, Funds, Indices, Currencies, Cryptocurrencies and Money Markets." +category = "main" optional = false python-versions = "*" files = [ @@ -2247,6 +2365,7 @@ pandas = "*" name = "finnhub-python" version = "2.4.18" description = "Finnhub API" +category = "main" optional = false python-versions = "*" files = [ @@ -2261,6 +2380,7 @@ requests = ">=2.22.0" name = "finviz" version = "1.4.6" description = "Unofficial API for FinViz.com" +category = "main" optional = false python-versions = "*" files = [ @@ -2282,6 +2402,7 @@ user_agent = "*" name = "finvizfinance" version = "0.14.5" description = "Finviz Finance. Information downloader." +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -2300,6 +2421,7 @@ requests = "*" name = "flake8" version = "6.0.0" description = "the modular source code checker: pep8 pyflakes and co" +category = "main" optional = false python-versions = ">=3.8.1" files = [ @@ -2316,6 +2438,7 @@ pyflakes = ">=3.0.0,<3.1.0" name = "flask" version = "2.3.2" description = "A simple framework for building complex web applications." +category = "main" optional = true python-versions = ">=3.8" files = [ @@ -2339,6 +2462,7 @@ dotenv = ["python-dotenv"] name = "fonttools" version = "4.41.0" description = "Tools to manipulate font files" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2396,6 +2520,7 @@ woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] name = "formulaic" version = "0.6.4" description = "An implementation of Wilkinson formulas." +category = "main" optional = false python-versions = ">=3.7.2" files = [ @@ -2421,6 +2546,7 @@ calculus = ["sympy (>=1.3,!=1.10)"] name = "fqdn" version = "1.5.1" description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" +category = "main" optional = false python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" files = [ @@ -2432,6 +2558,7 @@ files = [ name = "fred" version = "3.1" description = "St. Louis Federal Reserve FRED API" +category = "main" optional = false python-versions = "*" files = [ @@ -2445,6 +2572,7 @@ requests = "*" name = "fredapi" version = "0.4.3" description = "Python API for Federal Reserve Economic Data (FRED) from St. Louis Fed" +category = "main" optional = false python-versions = "*" files = [ @@ -2459,6 +2587,7 @@ pandas = "*" name = "freezegun" version = "1.2.2" description = "Let your Python tests travel through time" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2473,6 +2602,7 @@ python-dateutil = ">=2.7" name = "frozendict" version = "2.3.8" description = "A simple immutable dictionary" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2519,6 +2649,7 @@ files = [ name = "frozenlist" version = "1.4.0" description = "A list-like structure which implements collections.abc.MutableSequence" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2589,6 +2720,7 @@ files = [ name = "fs" version = "2.4.16" description = "Python's filesystem abstraction layer" +category = "main" optional = true python-versions = "*" files = [ @@ -2608,6 +2740,7 @@ scandir = ["scandir (>=1.5,<2.0)"] name = "fsspec" version = "2023.6.0" description = "File-system specification" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2647,6 +2780,7 @@ tqdm = ["tqdm"] name = "fugue" version = "0.8.5" description = "An abstraction layer for distributed computation" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -2680,6 +2814,7 @@ sql = ["fugue-sql-antlr (>=0.1.6)", "jinja2", "qpd (>=0.4.3)", "sqlglot"] name = "fugue-sql-antlr" version = "0.1.6" description = "Fugue SQL Antlr Parser" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -2699,6 +2834,7 @@ test = ["speedy_antlr_tool"] name = "fundamentalanalysis" version = "0.2.14" description = "Fully-fledged Fundamental Analysis package capable of collecting 20 years of Company Profiles, Financial Statements, Ratios and Stock Data of 20.000+ companies." +category = "main" optional = false python-versions = "*" files = [ @@ -2710,6 +2846,7 @@ files = [ name = "future" version = "0.18.3" description = "Clean single-source support for Python 3 and 2" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -2720,6 +2857,7 @@ files = [ name = "gitdb" version = "4.0.10" description = "Git Object Database" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2734,6 +2872,7 @@ smmap = ">=3.0.1,<6" name = "gitpython" version = "3.1.32" description = "GitPython is a Python library used to interact with Git repositories" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2748,6 +2887,7 @@ gitdb = ">=4.0.1,<5" name = "google-auth" version = "2.22.0" description = "Google Authentication Library" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -2773,6 +2913,7 @@ requests = ["requests (>=2.20.0,<3.0.0.dev0)"] name = "google-auth-oauthlib" version = "1.0.0" description = "Google Authentication Library" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -2791,6 +2932,7 @@ tool = ["click (>=6.0.0)"] name = "graphlib-backport" version = "1.0.3" description = "Backport of the Python 3.9 graphlib module for Python 3.6+" +category = "main" optional = false python-versions = ">=3.6,<4.0" files = [ @@ -2802,6 +2944,7 @@ files = [ name = "graphviz" version = "0.20.1" description = "Simple Python interface for Graphviz" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -2818,6 +2961,7 @@ test = ["coverage", "mock (>=4)", "pytest (>=7)", "pytest-cov", "pytest-mock (>= name = "greenlet" version = "2.0.2" description = "Lightweight in-process concurrent programming" +category = "main" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*" files = [ @@ -2891,6 +3035,7 @@ test = ["objgraph", "psutil"] name = "grpcio" version = "1.56.2" description = "HTTP/2-based RPC framework" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2948,6 +3093,7 @@ protobuf = ["grpcio-tools (>=1.56.2)"] name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2959,6 +3105,7 @@ files = [ name = "hijri-converter" version = "2.3.1" description = "Accurate Hijri-Gregorian dates converter based on the Umm al-Qura calendar" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2970,6 +3117,7 @@ files = [ name = "holidays" version = "0.14.2" description = "Generate and work with holidays in Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2987,6 +3135,7 @@ python-dateutil = "*" name = "html5lib" version = "1.1" description = "HTML parser based on the WHATWG HTML specification" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -3008,6 +3157,7 @@ lxml = ["lxml"] name = "httpcore" version = "0.17.3" description = "A minimal low-level HTTP client." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3019,16 +3169,17 @@ files = [ anyio = ">=3.0,<5.0" certifi = "*" h11 = ">=0.13,<0.15" -sniffio = "==1.*" +sniffio = ">=1.0.0,<2.0.0" [package.extras] http2 = ["h2 (>=3,<5)"] -socks = ["socksio (==1.*)"] +socks = ["socksio (>=1.0.0,<2.0.0)"] [[package]] name = "huggingface-hub" version = "0.16.4" description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" +category = "main" optional = true python-versions = ">=3.7.0" files = [ @@ -3061,6 +3212,7 @@ typing = ["pydantic", "types-PyYAML", "types-requests", "types-simplejson", "typ name = "identify" version = "2.5.25" description = "File identification library for Python" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3075,6 +3227,7 @@ license = ["ukkonen"] name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -3086,6 +3239,7 @@ files = [ name = "imagesize" version = "1.4.1" description = "Getting image size from png/jpeg/jpeg2000/gif file" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3097,6 +3251,7 @@ files = [ name = "importlib-metadata" version = "6.8.0" description = "Read metadata from Python packages" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3116,6 +3271,7 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs name = "importlib-resources" version = "6.0.0" description = "Read resources from Python packages" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3134,6 +3290,7 @@ testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", name = "inflection" version = "0.5.1" description = "A port of Ruby on Rails inflector to Python" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -3145,6 +3302,7 @@ files = [ name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3156,6 +3314,7 @@ files = [ name = "interface-meta" version = "1.3.0" description = "`interface_meta` provides a convenient way to expose an extensible API with enforced method signatures and consistent documentation." +category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -3167,6 +3326,7 @@ files = [ name = "intrinio-sdk" version = "6.24.1" description = "Intrinio API" +category = "main" optional = false python-versions = "*" files = [ @@ -3185,6 +3345,7 @@ urllib3 = ">=1.15" name = "ipykernel" version = "6.24.0" description = "IPython Kernel for Jupyter" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3198,7 +3359,7 @@ comm = ">=0.1.1" debugpy = ">=1.6.5" ipython = ">=7.23.1" jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" matplotlib-inline = ">=0.1" nest-asyncio = "*" packaging = "*" @@ -3218,6 +3379,7 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio" name = "ipympl" version = "0.8.4" description = "Matplotlib Jupyter Extension" +category = "main" optional = false python-versions = "*" files = [ @@ -3234,6 +3396,7 @@ matplotlib = ">=2.0.0" name = "ipython" version = "8.11.0" description = "IPython: Productive Interactive Computing" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3272,6 +3435,7 @@ test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pa name = "ipython-genutils" version = "0.2.0" description = "Vestigial utilities from IPython" +category = "main" optional = false python-versions = "*" files = [ @@ -3283,6 +3447,7 @@ files = [ name = "ipywidgets" version = "8.0.7" description = "Jupyter interactive widgets" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3304,6 +3469,7 @@ test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] name = "iso8601" version = "0.1.16" description = "Simple module to parse ISO 8601 dates" +category = "main" optional = false python-versions = "*" files = [ @@ -3315,6 +3481,7 @@ files = [ name = "isodate" version = "0.6.1" description = "An ISO 8601 date/time/duration parser and formatter" +category = "main" optional = false python-versions = "*" files = [ @@ -3329,6 +3496,7 @@ six = "*" name = "isoduration" version = "20.11.0" description = "Operations with ISO 8601 durations" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3343,6 +3511,7 @@ arrow = ">=0.15.0" name = "isort" version = "5.12.0" description = "A Python utility / library to sort Python imports." +category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -3360,6 +3529,7 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "itsdangerous" version = "2.1.2" description = "Safely pass data to untrusted environments and back." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -3371,6 +3541,7 @@ files = [ name = "jedi" version = "0.18.2" description = "An autocompletion tool for Python that can be used for text editors." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3390,6 +3561,7 @@ testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] name = "jedi-language-server" version = "0.40.0" description = "A language server for Jedi!" +category = "main" optional = true python-versions = ">=3.7,<3.12" files = [ @@ -3408,6 +3580,7 @@ pygls = ">=1.0.0,<2.0.0" name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3425,6 +3598,7 @@ i18n = ["Babel (>=2.7)"] name = "joblib" version = "1.3.1" description = "Lightweight pipelining with Python functions" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3436,6 +3610,7 @@ files = [ name = "json5" version = "0.9.14" description = "A Python implementation of the JSON5 data format." +category = "main" optional = false python-versions = "*" files = [ @@ -3450,6 +3625,7 @@ dev = ["hypothesis"] name = "jsonpointer" version = "2.4" description = "Identify specific nodes in a JSON document (RFC 6901)" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" files = [ @@ -3461,6 +3637,7 @@ files = [ name = "jsonschema" version = "4.17.3" description = "An implementation of JSON Schema validation for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3490,6 +3667,7 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- name = "jupyter-client" version = "7.4.1" description = "Jupyter protocol implementation and client libraries" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3514,6 +3692,7 @@ test = ["codecov", "coverage", "ipykernel (>=6.5)", "ipython", "mypy", "pre-comm name = "jupyter-core" version = "5.3.1" description = "Jupyter core package. A base package on which Jupyter projects rely." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3534,6 +3713,7 @@ test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] name = "jupyter-dash" version = "0.4.2" description = "Dash support for the Jupyter notebook interface" +category = "main" optional = true python-versions = ">=3.5" files = [ @@ -3558,6 +3738,7 @@ dev = ["jupyter-server-proxy", "jupyterlab (>=2.0)", "notebook (>=6.0)"] name = "jupyter-events" version = "0.6.3" description = "Jupyter Event System library" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3582,6 +3763,7 @@ test = ["click", "coverage", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>= name = "jupyter-lsp" version = "2.2.0" description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" +category = "main" optional = true python-versions = ">=3.8" files = [ @@ -3597,6 +3779,7 @@ jupyter-server = ">=1.1.2" name = "jupyter-server" version = "1.23.6" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3609,7 +3792,7 @@ anyio = ">=3.1.0,<4" argon2-cffi = "*" jinja2 = "*" jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" nbconvert = ">=6.4.4" nbformat = ">=5.2.0" packaging = "*" @@ -3629,6 +3812,7 @@ test = ["coverage", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console name = "jupyter-server-fileid" version = "0.9.0" description = "" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3648,6 +3832,7 @@ test = ["jupyter-server[test] (>=1.15,<3)", "pytest", "pytest-cov"] name = "jupyter-server-ydoc" version = "0.8.0" description = "A Jupyter Server Extension Providing Y Documents." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3667,6 +3852,7 @@ test = ["coverage", "jupyter-server[test] (>=2.0.0a0)", "pytest (>=7.0)", "pytes name = "jupyter-ydoc" version = "0.2.5" description = "Document structures for collaborative editing using Ypy" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3686,6 +3872,7 @@ test = ["pre-commit", "pytest", "pytest-asyncio", "websockets (>=10.0)", "ypy-we name = "jupyterlab" version = "3.6.5" description = "JupyterLab computational environment" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3714,6 +3901,7 @@ test = ["check-manifest", "coverage", "jupyterlab-server[test]", "pre-commit", " name = "jupyterlab-code-formatter" version = "1.6.1" description = "Code formatter for JupyterLab" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -3728,6 +3916,7 @@ jupyterlab = ">=3.0,<4.0" name = "jupyterlab-lsp" version = "3.10.2" description = "Coding assistance for JupyterLab with Language Server Protocol" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -3743,6 +3932,7 @@ jupyterlab = ">=3.1.0,<4.0.0a0" name = "jupyterlab-pygments" version = "0.2.2" description = "Pygments theme using JupyterLab CSS variables" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3754,6 +3944,7 @@ files = [ name = "jupyterlab-server" version = "2.23.0" description = "A set of server components for JupyterLab and JupyterLab like applications." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3780,6 +3971,7 @@ test = ["hatch", "ipykernel", "jupyterlab-server[openapi]", "openapi-spec-valida name = "jupyterlab-widgets" version = "3.0.8" description = "Jupyter interactive widgets for JupyterLab" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3791,6 +3983,7 @@ files = [ name = "kiwisolver" version = "1.4.4" description = "A fast implementation of the Cassowary constraint solver" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3868,6 +4061,7 @@ files = [ name = "korean-lunar-calendar" version = "0.3.1" description = "Korean Lunar Calendar" +category = "main" optional = false python-versions = "*" files = [ @@ -3879,6 +4073,7 @@ files = [ name = "langchain" version = "0.0.237" description = "Building applications with LLMs through composability" +category = "main" optional = false python-versions = ">=3.8.1,<4.0" files = [ @@ -3918,6 +4113,7 @@ text-helpers = ["chardet (>=5.1.0,<6.0.0)"] name = "langsmith" version = "0.0.10" description = "Client library to connect to the LangSmith LLM Tracing and Evaluation Platform." +category = "main" optional = false python-versions = ">=3.8.1,<4.0" files = [ @@ -3933,6 +4129,7 @@ requests = ">=2,<3" name = "lazy-object-proxy" version = "1.9.0" description = "A fast and thorough lazy object proxy." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3978,6 +4175,7 @@ files = [ name = "lightgbm" version = "3.3.5" description = "LightGBM Python Package" +category = "main" optional = true python-versions = "*" files = [ @@ -4001,6 +4199,7 @@ dask = ["dask[array] (>=2.0.0)", "dask[dataframe] (>=2.0.0)", "dask[distributed] name = "lightning-utilities" version = "0.9.0" description = "PyTorch Lightning Sample project." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -4021,6 +4220,7 @@ typing = ["mypy (>=1.0.0)"] name = "linearmodels" version = "4.31" description = "Linear Panel, Instrumental Variable, Asset Pricing, and System Regression models for Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -4065,6 +4265,7 @@ statsmodels = ">=0.11" name = "llama-index" version = "0.7.11" description = "Interface between LLMs and your data" +category = "main" optional = false python-versions = "*" files = [ @@ -4092,6 +4293,7 @@ urllib3 = "<2" name = "llvmlite" version = "0.40.1" description = "lightweight wrapper around basic LLVM functionality" +category = "main" optional = true python-versions = ">=3.8" files = [ @@ -4125,6 +4327,7 @@ files = [ name = "loguru" version = "0.7.0" description = "Python logging made (stupidly) simple" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -4143,6 +4346,7 @@ dev = ["Sphinx (==5.3.0)", "colorama (==0.4.5)", "colorama (==0.4.6)", "freezegu name = "lsprotocol" version = "2023.0.0a2" description = "Python implementation of the Language Server Protocol." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -4158,6 +4362,7 @@ cattrs = "*" name = "lunarcalendar" version = "0.0.9" description = "A lunar calendar converter, including a number of lunar and solar holidays, mainly from China." +category = "main" optional = true python-versions = ">=2.7, <4" files = [ @@ -4174,6 +4379,7 @@ pytz = "*" name = "lxml" version = "4.9.3" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, != 3.4.*" files = [ @@ -4281,6 +4487,7 @@ source = ["Cython (>=0.29.35)"] name = "macholib" version = "1.16.2" description = "Mach-O header analysis and editing" +category = "main" optional = true python-versions = "*" files = [ @@ -4295,6 +4502,7 @@ altgraph = ">=0.17" name = "markdown" version = "3.4.3" description = "Python implementation of John Gruber's Markdown." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -4312,6 +4520,7 @@ testing = ["coverage", "pyyaml"] name = "markdown-it-py" version = "1.1.0" description = "Python port of markdown-it. Markdown parsing, done right!" +category = "dev" optional = false python-versions = "~=3.6" files = [ @@ -4334,6 +4543,7 @@ testing = ["coverage", "psutil", "pytest (>=3.6,<4)", "pytest-benchmark (>=3.2,< name = "markupsafe" version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4393,6 +4603,7 @@ files = [ name = "marshmallow" version = "3.19.0" description = "A lightweight library for converting complex datatypes to and from native Python datatypes." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4413,6 +4624,7 @@ tests = ["pytest", "pytz", "simplejson"] name = "matplotlib" version = "3.7.2" description = "Python plotting package" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -4475,6 +4687,7 @@ python-dateutil = ">=2.7" name = "matplotlib-inline" version = "0.1.6" description = "Inline Matplotlib backend for Jupyter" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -4489,6 +4702,7 @@ traitlets = "*" name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -4500,6 +4714,7 @@ files = [ name = "mdit-py-plugins" version = "0.2.8" description = "Collection of plugins for markdown-it-py" +category = "dev" optional = false python-versions = "~=3.6" files = [ @@ -4519,6 +4734,7 @@ testing = ["coverage", "pytest (>=3.6,<4)", "pytest-cov", "pytest-regressions"] name = "mistune" version = "3.0.1" description = "A sane and fast Markdown parser with useful plugins and renderers" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4530,6 +4746,7 @@ files = [ name = "mock" version = "4.0.3" description = "Rolling backport of unittest.mock for all Pythons" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -4546,6 +4763,7 @@ test = ["pytest (<5.4)", "pytest-cov"] name = "monotonic" version = "1.6" description = "An implementation of time.monotonic() for Python 2 & < 3.3" +category = "main" optional = false python-versions = "*" files = [ @@ -4557,6 +4775,7 @@ files = [ name = "more-itertools" version = "9.1.0" description = "More routines for operating on iterables, beyond itertools" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4568,6 +4787,7 @@ files = [ name = "mplfinance" version = "0.12.9b7" description = "Utilities for the visualization, and visual analysis, of financial data" +category = "main" optional = false python-versions = "*" files = [ @@ -4583,6 +4803,7 @@ pandas = "*" name = "mstarpy" version = "0.0.4" description = "Mutual funds data extraction from MorningStar with Python" +category = "main" optional = false python-versions = "*" files = [ @@ -4599,6 +4820,7 @@ requests = ">=2.28.1" name = "multidict" version = "6.0.4" description = "multidict implementation" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4682,6 +4904,7 @@ files = [ name = "multitasking" version = "0.0.11" description = "Non-blocking Python methods using decorators" +category = "main" optional = false python-versions = "*" files = [ @@ -4693,6 +4916,7 @@ files = [ name = "mutagen" version = "1.46.0" description = "read and write audio tags for many formats" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -4704,6 +4928,7 @@ files = [ name = "mypy" version = "1.4.1" description = "Optional static typing for Python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -4750,6 +4975,7 @@ reports = ["lxml"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -4761,6 +4987,7 @@ files = [ name = "myst-parser" version = "0.15.2" description = "An extended commonmark compliant parser, with bridges to docutils & sphinx." +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -4786,6 +5013,7 @@ testing = ["beautifulsoup4", "coverage", "docutils (>=0.17.0,<0.18.0)", "pytest name = "nbclassic" version = "1.0.0" description = "Jupyter Notebook as a Jupyter Server extension." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4821,6 +5049,7 @@ test = ["coverage", "nbval", "pytest", "pytest-cov", "pytest-jupyter", "pytest-p name = "nbclient" version = "0.6.8" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -4842,6 +5071,7 @@ test = ["black", "check-manifest", "flake8", "ipykernel", "ipython", "ipywidgets name = "nbconvert" version = "7.7.2" description = "Converting Jupyter Notebooks" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -4880,6 +5110,7 @@ webpdf = ["playwright"] name = "nbformat" version = "5.9.1" description = "The Jupyter Notebook format" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -4901,6 +5132,7 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] name = "nbmake" version = "1.4.1" description = "Pytest plugin for testing notebooks" +category = "dev" optional = false python-versions = ">=3.7.0,<4.0.0" files = [ @@ -4920,6 +5152,7 @@ pytest = ">=6.1.0" name = "nest-asyncio" version = "1.5.6" description = "Patch asyncio to allow nested event loops" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -4931,6 +5164,7 @@ files = [ name = "networkx" version = "3.1" description = "Python package for creating and manipulating graphs and networks" +category = "main" optional = true python-versions = ">=3.8" files = [ @@ -4949,6 +5183,7 @@ test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] name = "nfoursid" version = "1.0.1" description = "Implementation of N4SID, Kalman filtering and state-space models" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -4965,6 +5200,7 @@ pandas = ">=1.1" name = "nodeenv" version = "1.8.0" description = "Node.js virtual environment builder" +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" files = [ @@ -4979,6 +5215,7 @@ setuptools = "*" name = "notebook" version = "6.5.4" description = "A web-based notebook environment for interactive computing" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -5013,6 +5250,7 @@ test = ["coverage", "nbval", "pytest", "pytest-cov", "requests", "requests-unixs name = "notebook-shim" version = "0.2.3" description = "A shim layer for notebook traits and config" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -5030,6 +5268,7 @@ test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync" name = "numba" version = "0.57.1" description = "compiling Python code using LLVM" +category = "main" optional = true python-versions = ">=3.8" files = [ @@ -5061,13 +5300,14 @@ files = [ [package.dependencies] importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} -llvmlite = "==0.40.*" +llvmlite = ">=0.40.0dev0,<0.41" numpy = ">=1.21,<1.25" [[package]] name = "numexpr" version = "2.8.4" description = "Fast numerical expression evaluator for NumPy" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -5110,6 +5350,7 @@ numpy = ">=1.13.3" name = "numpy" version = "1.23.4" description = "NumPy is the fundamental package for array computing with Python." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -5147,6 +5388,7 @@ files = [ name = "oandapyv20" version = "0.6.3" description = "Python wrapper for the OANDA REST-V20 API" +category = "main" optional = false python-versions = "*" files = [ @@ -5157,6 +5399,7 @@ files = [ name = "oauthlib" version = "3.2.2" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -5173,6 +5416,7 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] name = "onetimepass" version = "1.0.1" description = "Module for generating and validating HOTP and TOTP tokens" +category = "main" optional = false python-versions = "*" files = [ @@ -5186,6 +5430,7 @@ six = "*" name = "openai" version = "0.27.8" description = "Python client library for the OpenAI API" +category = "main" optional = false python-versions = ">=3.7.1" files = [ @@ -5200,7 +5445,7 @@ tqdm = "*" [package.extras] datalib = ["numpy", "openpyxl (>=3.0.7)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)"] -dev = ["black (>=21.6b0,<22.0)", "pytest (==6.*)", "pytest-asyncio", "pytest-mock"] +dev = ["black (>=21.6b0,<22.0)", "pytest (>=6.0.0,<7.0.0)", "pytest-asyncio", "pytest-mock"] embeddings = ["matplotlib", "numpy", "openpyxl (>=3.0.7)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)", "plotly", "scikit-learn (>=1.0.2)", "scipy", "tenacity (>=8.0.1)"] wandb = ["numpy", "openpyxl (>=3.0.7)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1.0.11)", "wandb"] @@ -5208,6 +5453,7 @@ wandb = ["numpy", "openpyxl (>=3.0.7)", "pandas (>=1.2.3)", "pandas-stubs (>=1.1 name = "openai-whisper" version = "20230124" description = "Robust Speech Recognition via Large-Scale Weak Supervision" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -5229,6 +5475,7 @@ dev = ["pytest"] name = "openapi-schema-pydantic" version = "1.2.4" description = "OpenAPI (v3) specification schema as pydantic class" +category = "main" optional = false python-versions = ">=3.6.1" files = [ @@ -5243,6 +5490,7 @@ pydantic = ">=1.8.2" name = "openpyxl" version = "3.1.2" description = "A Python library to read/write Excel 2010 xlsx/xlsm files" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -5257,6 +5505,7 @@ et-xmlfile = "*" name = "orjson" version = "3.9.2" description = "Fast, correct Python JSON library supporting dataclasses, datetimes, and numpy" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -5312,6 +5561,7 @@ files = [ name = "osqp" version = "0.6.3" description = "OSQP: The Operator Splitting QP Solver" +category = "main" optional = true python-versions = "*" files = [ @@ -5351,6 +5601,7 @@ scipy = ">=0.13.2" name = "packaging" version = "23.1" description = "Core utilities for Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -5362,6 +5613,7 @@ files = [ name = "pandas" version = "1.5.3" description = "Powerful data structures for data analysis, time series, and statistics" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -5409,6 +5661,7 @@ test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] name = "pandas-datareader" version = "0.10.0" description = "Data readers extracted from the pandas codebase,should be compatible with recent pandas versions" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -5425,6 +5678,7 @@ requests = ">=2.19.0" name = "pandas-market-calendars" version = "3.2" description = "Market and exchange trading calendars for pandas" +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -5442,6 +5696,7 @@ pytz = "*" name = "pandas-ta" version = "0.3.14b" description = "An easy to use Python 3 Pandas Extension with 130+ Technical Analysis Indicators. Can be called from a Pandas DataFrame or standalone like TA-Lib. Correlation tested with TA-Lib." +category = "main" optional = false python-versions = "*" files = [ @@ -5459,6 +5714,7 @@ test = ["ta-lib"] name = "pandocfilters" version = "1.5.0" description = "Utilities for writing pandoc filters in python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -5470,6 +5726,7 @@ files = [ name = "papermill" version = "2.4.0" description = "Parametrize and run Jupyter and nteract Notebooks" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -5503,6 +5760,7 @@ test = ["attrs (>=17.4.0)", "azure-datalake-store (>=0.0.30)", "azure-storage-bl name = "parso" version = "0.8.3" description = "A Python Parser" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -5518,6 +5776,7 @@ testing = ["docopt", "pytest (<6.0.0)"] name = "pathspec" version = "0.11.1" description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -5529,6 +5788,7 @@ files = [ name = "patsy" version = "0.5.3" description = "A Python package for describing statistical models and for building design matrices." +category = "main" optional = false python-versions = "*" files = [ @@ -5547,6 +5807,7 @@ test = ["pytest", "pytest-cov", "scipy"] name = "pbr" version = "5.11.1" description = "Python Build Reasonableness" +category = "dev" optional = false python-versions = ">=2.6" files = [ @@ -5558,6 +5819,7 @@ files = [ name = "pefile" version = "2023.2.7" description = "Python PE parsing module" +category = "main" optional = true python-versions = ">=3.6.0" files = [ @@ -5569,6 +5831,7 @@ files = [ name = "pexpect" version = "4.8.0" description = "Pexpect allows easy control of interactive console applications." +category = "main" optional = false python-versions = "*" files = [ @@ -5583,6 +5846,7 @@ ptyprocess = ">=0.5" name = "pickleshare" version = "0.7.5" description = "Tiny 'shelve'-like database with concurrency support" +category = "main" optional = false python-versions = "*" files = [ @@ -5594,6 +5858,7 @@ files = [ name = "pillow" version = "9.5.0" description = "Python Imaging Library (Fork)" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -5673,6 +5938,7 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa name = "pkgutil-resolve-name" version = "1.3.10" description = "Resolve a name to an object." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -5684,6 +5950,7 @@ files = [ name = "platformdirs" version = "3.9.1" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -5699,6 +5966,7 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.3.1)", "pytest- name = "plotly" version = "5.15.0" description = "An open-source, interactive data visualization library for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -5714,6 +5982,7 @@ tenacity = ">=6.2.0" name = "plotly-resampler" version = "0.8.3.2" description = "Visualizing large time series with plotly" +category = "main" optional = true python-versions = ">=3.7.1,<4.0.0" files = [ @@ -5737,6 +6006,7 @@ inline-persistent = ["Flask-Cors (>=3.0.10,<4.0.0)", "kaleido (==0.2.1)"] name = "pluggy" version = "1.2.0" description = "plugin and hook calling mechanisms for python" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -5752,6 +6022,7 @@ testing = ["pytest", "pytest-benchmark"] name = "pmaw" version = "3.0.0" description = "A multithread Pushshift.io API Wrapper for reddit.com comment and submission searches." +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -5767,6 +6038,7 @@ requests = "*" name = "pmdarima" version = "2.0.3" description = "Python's forecast::auto.arima equivalent" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -5812,6 +6084,7 @@ urllib3 = "*" name = "posthog" version = "3.0.1" description = "Integrate PostHog into any python application." +category = "main" optional = false python-versions = "*" files = [ @@ -5835,6 +6108,7 @@ test = ["coverage", "flake8", "freezegun (==0.3.15)", "mock (>=2.0.0)", "pylint" name = "praw" version = "7.7.1" description = "PRAW, an acronym for \"Python Reddit API Wrapper\", is a Python package that allows for simple access to Reddit's API." +category = "main" optional = false python-versions = "~=3.7" files = [ @@ -5849,15 +6123,16 @@ websocket-client = ">=0.54.0" [package.extras] ci = ["coveralls"] -dev = ["betamax (>=0.8,<0.9)", "betamax-matchers (>=0.3.0,<0.5)", "furo", "packaging", "pre-commit", "pytest (>=2.7.3)", "requests (>=2.20.1,<3)", "sphinx", "urllib3 (==1.26.*)"] +dev = ["betamax (>=0.8,<0.9)", "betamax-matchers (>=0.3.0,<0.5)", "furo", "packaging", "pre-commit", "pytest (>=2.7.3)", "requests (>=2.20.1,<3)", "sphinx", "urllib3 (>=1.26.0,<1.27.0)"] lint = ["furo", "pre-commit", "sphinx"] readthedocs = ["furo", "sphinx"] -test = ["betamax (>=0.8,<0.9)", "betamax-matchers (>=0.3.0,<0.5)", "pytest (>=2.7.3)", "requests (>=2.20.1,<3)", "urllib3 (==1.26.*)"] +test = ["betamax (>=0.8,<0.9)", "betamax-matchers (>=0.3.0,<0.5)", "pytest (>=2.7.3)", "requests (>=2.20.1,<3)", "urllib3 (>=1.26.0,<1.27.0)"] [[package]] name = "prawcore" version = "2.3.0" description = "Low-level communication layer for PRAW 4+." +category = "main" optional = false python-versions = "~=3.6" files = [ @@ -5878,6 +6153,7 @@ test = ["betamax (>=0.8,<0.9)", "betamax-matchers (>=0.4.0,<0.5)", "betamax-seri name = "pre-commit" version = "2.21.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -5896,6 +6172,7 @@ virtualenv = ">=20.10.0" name = "prometheus-client" version = "0.17.1" description = "Python client for the Prometheus monitoring system." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -5910,6 +6187,7 @@ twisted = ["twisted"] name = "prompt-toolkit" version = "3.0.39" description = "Library for building powerful interactive command lines in Python" +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -5924,6 +6202,7 @@ wcwidth = "*" name = "property-cached" version = "1.6.4" description = "A decorator for caching properties in classes (forked from cached-property)." +category = "main" optional = false python-versions = ">= 3.5" files = [ @@ -5935,6 +6214,7 @@ files = [ name = "prophet" version = "1.1.3" description = "Automatic Forecasting Procedure" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -5965,6 +6245,7 @@ parallel = ["dask[dataframe]", "distributed"] name = "protobuf" version = "3.20.1" description = "Protocol Buffers" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -5998,6 +6279,7 @@ files = [ name = "psutil" version = "5.9.5" description = "Cross-platform lib for process and system monitoring in Python." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -6024,6 +6306,7 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" +category = "main" optional = false python-versions = "*" files = [ @@ -6035,6 +6318,7 @@ files = [ name = "pure-eval" version = "0.2.2" description = "Safely evaluate AST nodes without side effects" +category = "main" optional = false python-versions = "*" files = [ @@ -6049,6 +6333,7 @@ tests = ["pytest"] name = "py" version = "1.11.0" description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -6060,6 +6345,7 @@ files = [ name = "pyarrow" version = "12.0.1" description = "Python library for Apache Arrow" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -6097,7 +6383,8 @@ numpy = ">=1.16.6" name = "pyasn1" version = "0.5.0" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" -optional = true +category = "main" +optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ {file = "pyasn1-0.5.0-py2.py3-none-any.whl", hash = "sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57"}, @@ -6108,6 +6395,7 @@ files = [ name = "pyasn1-modules" version = "0.3.0" description = "A collection of ASN.1-based protocols modules" +category = "main" optional = true python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -6122,6 +6410,7 @@ pyasn1 = ">=0.4.6,<0.6.0" name = "pycares" version = "4.3.0" description = "Python interface for c-ares" +category = "main" optional = false python-versions = "*" files = [ @@ -6189,6 +6478,7 @@ idna = ["idna (>=2.1)"] name = "pycodestyle" version = "2.10.0" description = "Python style guide checker" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -6200,6 +6490,7 @@ files = [ name = "pycoingecko" version = "3.1.0" description = "Python wrapper around the CoinGecko API" +category = "main" optional = false python-versions = "*" files = [ @@ -6214,6 +6505,7 @@ requests = "*" name = "pycparser" version = "2.21" description = "C parser in Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -6225,6 +6517,7 @@ files = [ name = "pycryptodome" version = "3.18.0" description = "Cryptographic library for Python" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -6266,6 +6559,7 @@ files = [ name = "pycryptodomex" version = "3.18.0" description = "Cryptographic library for Python" +category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -6307,6 +6601,7 @@ files = [ name = "pydantic" version = "1.10.11" description = "Data validation and settings management using python type hints" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -6359,6 +6654,7 @@ email = ["email-validator (>=1.0.3)"] name = "pydeck" version = "0.8.0" description = "Widget for deck.gl maps" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -6378,6 +6674,7 @@ jupyter = ["ipykernel (>=5.1.2)", "ipython (>=5.8.0)", "ipywidgets (>=7,<8)", "t name = "pydeprecate" version = "0.3.2" description = "Deprecation tooling" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -6389,6 +6686,7 @@ files = [ name = "pydocstyle" version = "6.3.0" description = "Python docstring style checker" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -6406,6 +6704,7 @@ toml = ["tomli (>=1.2.3)"] name = "pyerfa" version = "2.0.0.3" description = "Python bindings for ERFA" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -6462,6 +6761,7 @@ test = ["pytest", "pytest-doctestplus (>=0.7)"] name = "pyflakes" version = "3.0.1" description = "passive checker of Python programs" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -6473,6 +6773,7 @@ files = [ name = "pygls" version = "1.0.2" description = "a pythonic generic language server (pronounced like \"pie glass\")." +category = "main" optional = true python-versions = "<4,>=3.7" files = [ @@ -6488,12 +6789,13 @@ typeguard = ">=3,<4" dev = ["bandit (==1.7.4)", "flake8 (==4.0.1)", "mypy (==0.961)"] docs = ["sphinx (==5.0.1)", "sphinx-rtd-theme (==1.0.0)"] test = ["pytest (==7.1.2)", "pytest-asyncio (==0.18.3)"] -ws = ["websockets (==10.*)"] +ws = ["websockets (>=10.0.0,<11.0.0)"] [[package]] name = "pygments" version = "2.15.1" description = "Pygments is a syntax highlighting package written in Python." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -6508,6 +6810,7 @@ plugins = ["importlib-metadata"] name = "pyhdfe" version = "0.1.2" description = "High dimensional fixed effect absorption with Python 3" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -6527,6 +6830,7 @@ tests = ["pytest", "pytest-xdist"] name = "pyinstaller" version = "4.10" description = "PyInstaller bundles a Python application and all its dependencies into a single package." +category = "main" optional = true python-versions = "<3.11,>=3.6" files = [ @@ -6559,6 +6863,7 @@ hook-testing = ["execnet (>=1.5.0)", "psutil", "pytest (>=2.7.3)"] name = "pyinstaller-hooks-contrib" version = "2023.6" description = "Community maintained hooks for PyInstaller" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -6570,6 +6875,7 @@ files = [ name = "pylint" version = "2.17.0" description = "python code static checker" +category = "dev" optional = false python-versions = ">=3.7.2" files = [ @@ -6596,6 +6902,7 @@ testutils = ["gitpython (>3)"] name = "pyluach" version = "2.2.0" description = "A Python package for dealing with Hebrew (Jewish) calendar dates." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -6611,6 +6918,7 @@ test = ["beautifulsoup4", "flake8", "pytest", "pytest-cov"] name = "pymeeus" version = "0.5.12" description = "Python implementation of Jean Meeus astronomical routines" +category = "main" optional = false python-versions = "*" files = [ @@ -6621,6 +6929,7 @@ files = [ name = "pympler" version = "1.0.1" description = "A development tool to measure, monitor and analyze the memory behavior of Python objects." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -6632,6 +6941,7 @@ files = [ name = "pyobjc-core" version = "9.2" description = "Python<->ObjC Interoperability Module" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -6649,6 +6959,7 @@ files = [ name = "pyobjc-framework-cocoa" version = "9.2" description = "Wrappers for the Cocoa frameworks on macOS" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -6669,6 +6980,7 @@ pyobjc-core = ">=9.2" name = "pyod" version = "1.1.0" description = "A Comprehensive and Scalable Python Library for Outlier Detection (Anomaly Detection)" +category = "main" optional = true python-versions = "*" files = [ @@ -6688,6 +7000,7 @@ six = "*" name = "pyotp" version = "2.8.0" description = "Python One Time Password Library" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -6699,6 +7012,7 @@ files = [ name = "pyparsing" version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" optional = false python-versions = ">=3.6.8" files = [ @@ -6713,6 +7027,7 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pyprind" version = "2.11.3" description = "Python Progress Bar and Percent Indicator Utility" +category = "main" optional = false python-versions = "*" files = [ @@ -6724,6 +7039,7 @@ files = [ name = "pyrsistent" version = "0.19.3" description = "Persistent/Functional/Immutable data structures" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -6760,6 +7076,7 @@ files = [ name = "pytest" version = "6.2.5" description = "pytest: simple powerful testing with Python" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -6784,6 +7101,7 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xm name = "pytest-cov" version = "3.0.0" description = "Pytest plugin for measuring coverage." +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -6802,6 +7120,7 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale name = "pytest-mock" version = "3.11.1" description = "Thin-wrapper around the mock package for easier use with pytest" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -6819,6 +7138,7 @@ dev = ["pre-commit", "pytest-asyncio", "tox"] name = "pytest-recorder" version = "0.2.3" description = "Pytest plugin, meant to facilitate unit tests writing for tools consumming Web APIs." +category = "dev" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -6834,6 +7154,7 @@ vcrpy = ">=4.2.1,<5.0.0" name = "pytest-recording" version = "0.12.2" description = "A pytest plugin that allows you recording of network interactions via VCR.py" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -6850,6 +7171,7 @@ vcrpy = ">=2.0.1" name = "pytest-timeout" version = "2.1.0" description = "pytest plugin to abort hanging tests" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -6864,6 +7186,7 @@ pytest = ">=5.0.0" name = "pytest-xdist" version = "3.3.1" description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -6884,6 +7207,7 @@ testing = ["filelock"] name = "pythclient" version = "0.1.6" description = "A library to retrieve Pyth account structures off the Solana blockchain." +category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -6909,6 +7233,7 @@ testing = ["aiodns", "aiohttp (>=3.7.4)", "backoff", "base58", "dnspython", "fla name = "python-binance" version = "1.0.17" description = "Binance REST API python implementation" +category = "main" optional = false python-versions = "*" files = [ @@ -6929,6 +7254,7 @@ websockets = "*" name = "python-coinmarketcap" version = "0.2" description = "CoinMarketCap Python API Wrapper" +category = "main" optional = false python-versions = "*" files = [ @@ -6941,6 +7267,7 @@ files = [ name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -6955,6 +7282,7 @@ six = ">=1.5" name = "python-dotenv" version = "1.0.0" description = "Read key-value pairs from a .env file and set them as environment variables" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -6969,6 +7297,7 @@ cli = ["click (>=5.0)"] name = "python-i18n" version = "0.3.9" description = "Translation library for Python" +category = "main" optional = false python-versions = "*" files = [ @@ -6979,10 +7308,33 @@ files = [ [package.extras] yaml = ["pyyaml (>=3.10)"] +[[package]] +name = "python-jose" +version = "3.3.0" +description = "JOSE implementation in Python" +category = "main" +optional = false +python-versions = "*" +files = [ + {file = "python-jose-3.3.0.tar.gz", hash = "sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a"}, + {file = "python_jose-3.3.0-py2.py3-none-any.whl", hash = "sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a"}, +] + +[package.dependencies] +ecdsa = "!=0.15" +pyasn1 = "*" +rsa = "*" + +[package.extras] +cryptography = ["cryptography (>=3.4.0)"] +pycrypto = ["pyasn1", "pycrypto (>=2.6.0,<2.7.0)"] +pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"] + [[package]] name = "python-json-logger" version = "2.0.7" description = "A python library adding a json log formatter" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -6994,6 +7346,7 @@ files = [ name = "pytorch-lightning" version = "1.6.5" description = "PyTorch Lightning is the lightweight PyTorch wrapper for ML researchers. Scale your models. Write less boilerplate." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -7031,6 +7384,7 @@ test = ["cloudpickle (>=1.3)", "codecov (>=2.1)", "coverage (>=6.4)", "flake8 (> name = "pytrends" version = "4.9.2" description = "Pseudo API for Google Trends" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -7047,6 +7401,7 @@ requests = ">=2.0" name = "pytz" version = "2023.3" description = "World timezone definitions, modern and historical" +category = "main" optional = false python-versions = "*" files = [ @@ -7058,6 +7413,7 @@ files = [ name = "pytz-deprecation-shim" version = "0.1.0.post0" description = "Shims to make deprecation of pytz easier" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ @@ -7073,6 +7429,7 @@ tzdata = {version = "*", markers = "python_version >= \"3.6\""} name = "pywin32" version = "306" description = "Python for Window Extensions" +category = "main" optional = false python-versions = "*" files = [ @@ -7096,6 +7453,7 @@ files = [ name = "pywin32-ctypes" version = "0.2.2" description = "A (partial) reimplementation of pywin32 using ctypes/cffi" +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -7107,6 +7465,7 @@ files = [ name = "pywinpty" version = "2.0.11" description = "Pseudo terminal support for Windows from Python." +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -7121,6 +7480,7 @@ files = [ name = "pywry" version = "0.5.13" description = "" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -7149,6 +7509,7 @@ dev = ["auditwheel", "wheel"] name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -7198,6 +7559,7 @@ files = [ name = "pyzmq" version = "25.1.0" description = "Python bindings for 0MQ" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -7287,6 +7649,7 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} name = "qdldl" version = "0.1.7.post0" description = "QDLDL, a free LDL factorization routine." +category = "main" optional = true python-versions = "*" files = [ @@ -7319,6 +7682,7 @@ scipy = ">=0.13.2" name = "qpd" version = "0.4.4" description = "Query Pandas Using SQL" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -7340,6 +7704,7 @@ dask = ["cloudpickle (>=1.4.0)", "dask[dataframe,distributed]"] name = "quandl" version = "3.7.0" description = "Package for quandl API access" +category = "main" optional = false python-versions = ">= 3.6" files = [ @@ -7360,6 +7725,7 @@ six = "*" name = "rdflib" version = "6.3.2" description = "RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information." +category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -7381,6 +7747,7 @@ networkx = ["networkx (>=2.0.0,<3.0.0)"] name = "regex" version = "2023.6.3" description = "Alternative regular expression module, to replace re." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -7478,6 +7845,7 @@ files = [ name = "reportlab" version = "3.6.13" description = "The Reportlab Toolkit" +category = "main" optional = false python-versions = ">=3.7,<4" files = [ @@ -7539,6 +7907,7 @@ rlpycairo = ["rlPyCairo (>=0.1.0)"] name = "requests" version = "2.31.0" description = "Python HTTP for Humans." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -7560,6 +7929,7 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-futures" version = "1.0.1" description = "Asynchronous Python HTTP for Humans." +category = "main" optional = false python-versions = "*" files = [ @@ -7577,6 +7947,7 @@ dev = ["black (>=22.3.0)", "build (>=0.7.0)", "isort (>=5.11.4)", "pyflakes (>=2 name = "requests-oauthlib" version = "1.3.1" description = "OAuthlib authentication support for Requests." +category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -7595,6 +7966,7 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] name = "retrying" version = "1.3.4" description = "Retrying" +category = "main" optional = false python-versions = "*" files = [ @@ -7609,6 +7981,7 @@ six = ">=1.7.0" name = "rfc3339-validator" version = "0.1.4" description = "A pure python RFC3339 validator" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -7623,6 +7996,7 @@ six = "*" name = "rfc3986-validator" version = "0.1.1" description = "Pure python rfc3986 validator" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -7634,6 +8008,7 @@ files = [ name = "rich" version = "12.6.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +category = "main" optional = false python-versions = ">=3.6.3,<4.0.0" files = [ @@ -7653,6 +8028,7 @@ jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] name = "riskfolio-lib" version = "3.3.0" description = "Portfolio Optimization and Quantitative Strategic Asset Allocation in Python" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -7677,6 +8053,7 @@ xlsxwriter = ">=1.3.7" name = "robin-stocks" version = "2.1.0" description = "A Python wrapper around the Robinhood API" +category = "main" optional = false python-versions = ">=3" files = [ @@ -7694,7 +8071,8 @@ requests = "*" name = "rsa" version = "4.9" description = "Pure-Python RSA implementation" -optional = true +category = "main" +optional = false python-versions = ">=3.6,<4" files = [ {file = "rsa-4.9-py3-none-any.whl", hash = "sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7"}, @@ -7708,6 +8086,7 @@ pyasn1 = ">=0.1.3" name = "ruamel-yaml" version = "0.17.32" description = "ruamel.yaml is a YAML parser/emitter that supports roundtrip preservation of comments, seq/map flow style, and map key order" +category = "main" optional = false python-versions = ">=3" files = [ @@ -7726,6 +8105,7 @@ jinja2 = ["ruamel.yaml.jinja2 (>=0.2)"] name = "ruamel-yaml-clib" version = "0.2.7" description = "C version of reader, parser and emitter for ruamel.yaml derived from libyaml" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -7772,6 +8152,7 @@ files = [ name = "ruff" version = "0.0.256" description = "An extremely fast Python linter, written in Rust." +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -7798,6 +8179,7 @@ files = [ name = "scikit-learn" version = "1.3.0" description = "A set of python modules for machine learning and data mining" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -7840,6 +8222,7 @@ tests = ["black (>=23.3.0)", "matplotlib (>=3.1.3)", "mypy (>=1.3)", "numpydoc ( name = "scipy" version = "1.10.1" description = "Fundamental algorithms for scientific computing in Python" +category = "main" optional = false python-versions = "<3.12,>=3.8" files = [ @@ -7878,6 +8261,7 @@ test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeo name = "screeninfo" version = "0.6.7" description = "Fetch location and size of physical screens." +category = "main" optional = false python-versions = "*" files = [ @@ -7892,6 +8276,7 @@ pyobjc-framework-Cocoa = {version = "*", markers = "sys_platform == \"darwin\""} name = "scs" version = "3.2.3" description = "scs: splitting conic solver" +category = "main" optional = true python-versions = "*" files = [ @@ -7921,6 +8306,7 @@ scipy = ">=0.13.2" name = "seaborn" version = "0.11.2" description = "seaborn: statistical data visualization" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -7938,6 +8324,7 @@ scipy = ">=1.0" name = "semantic-version" version = "2.10.0" description = "A library implementing the 'SemVer' scheme." +category = "main" optional = true python-versions = ">=2.7" files = [ @@ -7953,6 +8340,7 @@ doc = ["Sphinx", "sphinx-rtd-theme"] name = "send2trash" version = "1.8.2" description = "Send file to trash natively under Mac OS X, Windows and Linux" +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -7969,6 +8357,7 @@ win32 = ["pywin32"] name = "setproctitle" version = "1.3.2" description = "A Python module to customize the process title" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -8053,6 +8442,7 @@ test = ["pytest"] name = "setuptools" version = "65.4.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -8069,6 +8459,7 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs ( name = "setuptools-rust" version = "1.6.0" description = "Setuptools Rust extension plugin" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -8085,6 +8476,7 @@ typing-extensions = ">=3.7.4.3" name = "setuptools-scm" version = "7.1.0" description = "the blessed package to manage your versions by scm tags" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -8109,6 +8501,7 @@ toml = ["setuptools (>=42)"] name = "sgmllib3k" version = "1.0.0" description = "Py3k port of sgmllib." +category = "main" optional = false python-versions = "*" files = [ @@ -8119,6 +8512,7 @@ files = [ name = "shap" version = "0.42.1" description = "A unified approach to explain the output of any machine learning model." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -8171,6 +8565,7 @@ test-core = ["pytest", "pytest-cov", "pytest-mpl"] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -8182,6 +8577,7 @@ files = [ name = "slicer" version = "0.0.7" description = "A small package for big slicing." +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -8193,6 +8589,7 @@ files = [ name = "smmap" version = "5.0.0" description = "A pure Python implementation of a sliding window memory map manager" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -8204,6 +8601,7 @@ files = [ name = "sniffio" version = "1.3.0" description = "Sniff out which async library your code is running under" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -8215,6 +8613,7 @@ files = [ name = "snowballstemmer" version = "2.2.0" description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "dev" optional = false python-versions = "*" files = [ @@ -8226,6 +8625,7 @@ files = [ name = "soupsieve" version = "2.4.1" description = "A modern CSS selector implementation for Beautiful Soup." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -8237,6 +8637,7 @@ files = [ name = "sparqlwrapper" version = "2.0.0" description = "SPARQL Endpoint interface to Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -8257,6 +8658,7 @@ pandas = ["pandas (>=1.3.5)"] name = "sphinx" version = "4.5.0" description = "Python documentation generator" +category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -8292,6 +8694,7 @@ test = ["cython", "html5lib", "pytest", "pytest-cov", "typed-ast"] name = "sphinxcontrib-applehelp" version = "1.0.4" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -8307,6 +8710,7 @@ test = ["pytest"] name = "sphinxcontrib-devhelp" version = "1.0.2" description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -8322,6 +8726,7 @@ test = ["pytest"] name = "sphinxcontrib-htmlhelp" version = "2.0.1" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -8337,6 +8742,7 @@ test = ["html5lib", "pytest"] name = "sphinxcontrib-jsmath" version = "1.0.1" description = "A sphinx extension which renders display math in HTML via JavaScript" +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -8351,6 +8757,7 @@ test = ["flake8", "mypy", "pytest"] name = "sphinxcontrib-qthelp" version = "1.0.3" description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -8366,6 +8773,7 @@ test = ["pytest"] name = "sphinxcontrib-serializinghtml" version = "1.1.5" description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." +category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -8381,6 +8789,7 @@ test = ["pytest"] name = "sqlalchemy" version = "2.0.19" description = "Database Abstraction Library" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -8428,7 +8837,7 @@ files = [ ] [package.dependencies] -greenlet = {version = "!=0.4.17", markers = "platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\""} +greenlet = {version = "!=0.4.17", markers = "platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\""} typing-extensions = ">=4.2.0" [package.extras] @@ -8459,6 +8868,7 @@ sqlcipher = ["sqlcipher3-binary"] name = "sqlglot" version = "17.6.0" description = "An easily customizable SQL parser and transpiler" +category = "main" optional = true python-versions = "*" files = [ @@ -8473,6 +8883,7 @@ dev = ["autoflake", "black", "duckdb (>=0.6)", "isort", "mypy (>=0.990)", "panda name = "squarify" version = "0.4.3" description = "Pure Python implementation of the squarify treemap layout algorithm" +category = "main" optional = false python-versions = "*" files = [ @@ -8484,6 +8895,7 @@ files = [ name = "stack-data" version = "0.6.2" description = "Extract data from python stack frames and tracebacks for informative displays" +category = "main" optional = false python-versions = "*" files = [ @@ -8503,6 +8915,7 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] name = "statsforecast" version = "1.5.0" description = "Time series forecasting suite using statistical models" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -8530,6 +8943,7 @@ ray = ["fugue[ray] (>=0.8.1)", "protobuf (>=3.15.3,<4.0.0)"] name = "statsmodels" version = "0.13.2" description = "Statistical computations and models for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -8574,6 +8988,7 @@ docs = ["ipykernel", "jupyter-client", "matplotlib", "nbconvert", "nbformat", "n name = "statsmodels" version = "0.13.3" description = "Statistical computations and models for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -8609,7 +9024,7 @@ numpy = {version = ">=1.17", markers = "python_version != \"3.10\" or platform_s packaging = ">=21.3" pandas = ">=0.25" patsy = ">=0.5.2" -scipy = {version = ">=1.3", markers = "(python_version > \"3.7\" or platform_system != \"Windows\" or platform_machine != \"x86\") and python_version < \"3.12\""} +scipy = {version = ">=1.3", markers = "python_version > \"3.7\" and python_version < \"3.12\" or platform_system != \"Windows\" and python_version < \"3.12\" or platform_machine != \"x86\" and python_version < \"3.12\""} [package.extras] build = ["cython (>=0.29.32)"] @@ -8620,6 +9035,7 @@ docs = ["ipykernel", "jupyter-client", "matplotlib", "nbconvert", "nbformat", "n name = "statsmodels" version = "0.13.5" description = "Statistical computations and models for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -8658,7 +9074,7 @@ numpy = [ packaging = ">=21.3" pandas = ">=0.25" patsy = ">=0.5.2" -scipy = {version = ">=1.3", markers = "(python_version > \"3.9\" or platform_system != \"Windows\" or platform_machine != \"x86\") and python_version < \"3.12\""} +scipy = {version = ">=1.3", markers = "python_version > \"3.9\" and python_version < \"3.12\" or platform_system != \"Windows\" and python_version < \"3.12\" or platform_machine != \"x86\" and python_version < \"3.12\""} [package.extras] build = ["cython (>=0.29.32)"] @@ -8669,6 +9085,7 @@ docs = ["ipykernel", "jupyter-client", "matplotlib", "nbconvert", "nbformat", "n name = "stevedore" version = "5.1.0" description = "Manage dynamic plugins for Python applications" +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -8683,6 +9100,7 @@ pbr = ">=2.0.0,<2.1.0 || >2.1.0" name = "stocksera" version = "0.1.21" description = "Official Stocksera API" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -8698,6 +9116,7 @@ requests = "*" name = "streamlit" version = "1.24.1" description = "A faster way to build and share data apps" +category = "main" optional = false python-versions = ">=3.8, !=3.9.7" files = [ @@ -8738,6 +9157,7 @@ snowflake = ["snowflake-snowpark-python"] name = "svglib" version = "1.5.1" description = "A pure-Python library for reading and converting SVG" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -8754,6 +9174,7 @@ tinycss2 = ">=0.6.0" name = "tabulate" version = "0.9.0" description = "Pretty-print tabular data" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -8768,6 +9189,7 @@ widechars = ["wcwidth"] name = "tbats" version = "1.1.3" description = "BATS and TBATS for time series forecasting" +category = "main" optional = true python-versions = "*" files = [ @@ -8788,6 +9210,7 @@ dev = ["pip-tools", "pytest", "rpy2"] name = "tenacity" version = "8.2.2" description = "Retry code until it succeeds" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -8802,6 +9225,7 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"] name = "tensorboard" version = "2.13.0" description = "TensorBoard lets you watch Tensors Flow" +category = "main" optional = true python-versions = ">=3.8" files = [ @@ -8826,6 +9250,7 @@ wheel = ">=0.26" name = "tensorboard-data-server" version = "0.7.1" description = "Fast data loading for TensorBoard" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -8838,6 +9263,7 @@ files = [ name = "terminado" version = "0.17.1" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -8858,6 +9284,7 @@ test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] name = "textwrap3" version = "0.9.2" description = "textwrap from Python 3.6 backport (plus a few tweaks)" +category = "main" optional = false python-versions = "*" files = [ @@ -8869,6 +9296,7 @@ files = [ name = "thepassiveinvestor" version = "1.2.1" description = "Passive Investing for the Average Joe." +category = "main" optional = false python-versions = "*" files = [ @@ -8885,6 +9313,7 @@ yahooquery = "*" name = "threadpoolctl" version = "3.2.0" description = "threadpoolctl" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -8896,6 +9325,7 @@ files = [ name = "tiktoken" version = "0.4.0" description = "tiktoken is a fast BPE tokeniser for use with OpenAI's models" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -8941,6 +9371,7 @@ blobfile = ["blobfile (>=2)"] name = "time-machine" version = "2.11.0" description = "Travel through time in your tests." +category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -8998,6 +9429,7 @@ python-dateutil = "*" name = "tinycss2" version = "1.2.1" description = "A tiny CSS parser" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -9016,6 +9448,7 @@ test = ["flake8", "isort", "pytest"] name = "tokenizers" version = "0.13.3" description = "Fast and Customizable Tokenizers" +category = "main" optional = true python-versions = "*" files = [ @@ -9070,6 +9503,7 @@ testing = ["black (==22.3)", "datasets", "numpy", "pytest", "requests"] name = "tokenterminal" version = "1.0.1" description = "Unofficial Token Terminal API client." +category = "main" optional = false python-versions = "*" files = [ @@ -9084,6 +9518,7 @@ requests = ">=2.18.4" name = "toml" version = "0.10.2" description = "Python Library for Tom's Obvious, Minimal Language" +category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -9095,6 +9530,7 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -9106,6 +9542,7 @@ files = [ name = "tomlkit" version = "0.11.8" description = "Style preserving TOML library" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -9117,6 +9554,7 @@ files = [ name = "toolz" version = "0.12.0" description = "List processing tools and functional utilities" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -9128,6 +9566,7 @@ files = [ name = "torch" version = "1.11.0" description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" +category = "main" optional = true python-versions = ">=3.7.0" files = [ @@ -9159,6 +9598,7 @@ typing-extensions = "*" name = "torchmetrics" version = "1.0.1" description = "PyTorch native Metrics" +category = "main" optional = true python-versions = ">=3.8" files = [ @@ -9188,6 +9628,7 @@ visual = ["SciencePlots (>=2.0.0)", "matplotlib (>=3.2.0)"] name = "tornado" version = "6.3.2" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +category = "main" optional = false python-versions = ">= 3.8" files = [ @@ -9208,6 +9649,7 @@ files = [ name = "tqdm" version = "4.65.0" description = "Fast, Extensible Progress Meter" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -9228,6 +9670,7 @@ telegram = ["requests"] name = "trace-updater" version = "0.0.9.1" description = "Dash component which allows to update a dcc.Graph its traces. This component is data efficient as it (1) only sends the to-be-updated traces (and not the whole) from the back-end to the client-side and (2) only updates the traces that have changed (and does not redraw the whole figure)." +category = "main" optional = true python-versions = "*" files = [ @@ -9239,6 +9682,7 @@ files = [ name = "tradingview-ta" version = "3.3.0" description = "Unofficial TradingView technical analysis API wrapper." +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -9253,6 +9697,7 @@ requests = "*" name = "traitlets" version = "5.9.0" description = "Traitlets Python configuration system" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -9268,6 +9713,7 @@ test = ["argcomplete (>=2.0)", "pre-commit", "pytest", "pytest-mock"] name = "transformers" version = "4.27.1" description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow" +category = "main" optional = true python-versions = ">=3.7.0" files = [ @@ -9335,6 +9781,7 @@ vision = ["Pillow"] name = "triad" version = "0.9.1" description = "A collection of python utils for Fugue projects" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -9357,6 +9804,7 @@ ciso8601 = ["ciso8601"] name = "typeguard" version = "3.0.2" description = "Run-time type checker for Python" +category = "main" optional = true python-versions = ">=3.7.4" files = [ @@ -9376,6 +9824,7 @@ test = ["mypy (>=0.991)", "pytest (>=7)"] name = "types-python-dateutil" version = "2.8.19.14" description = "Typing stubs for python-dateutil" +category = "dev" optional = false python-versions = "*" files = [ @@ -9387,6 +9836,7 @@ files = [ name = "types-pytz" version = "2021.3.8" description = "Typing stubs for pytz" +category = "dev" optional = false python-versions = "*" files = [ @@ -9398,6 +9848,7 @@ files = [ name = "types-pyyaml" version = "6.0.12.11" description = "Typing stubs for PyYAML" +category = "dev" optional = false python-versions = "*" files = [ @@ -9409,6 +9860,7 @@ files = [ name = "types-requests" version = "2.31.0.2" description = "Typing stubs for requests" +category = "dev" optional = false python-versions = "*" files = [ @@ -9423,6 +9875,7 @@ types-urllib3 = "*" name = "types-setuptools" version = "57.4.18" description = "Typing stubs for setuptools" +category = "dev" optional = false python-versions = "*" files = [ @@ -9434,6 +9887,7 @@ files = [ name = "types-six" version = "1.16.21.9" description = "Typing stubs for six" +category = "dev" optional = false python-versions = "*" files = [ @@ -9445,6 +9899,7 @@ files = [ name = "types-urllib3" version = "1.26.25.14" description = "Typing stubs for urllib3" +category = "dev" optional = false python-versions = "*" files = [ @@ -9456,6 +9911,7 @@ files = [ name = "typing-extensions" version = "4.7.1" description = "Backported and Experimental Type Hints for Python 3.7+" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -9467,6 +9923,7 @@ files = [ name = "typing-inspect" version = "0.9.0" description = "Runtime inspection utilities for typing module." +category = "main" optional = false python-versions = "*" files = [ @@ -9482,6 +9939,7 @@ typing-extensions = ">=3.7.4" name = "tzdata" version = "2023.3" description = "Provider of IANA time zone data" +category = "main" optional = false python-versions = ">=2" files = [ @@ -9493,6 +9951,7 @@ files = [ name = "tzlocal" version = "4.3.1" description = "tzinfo object for the local timezone" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -9512,6 +9971,7 @@ devenv = ["black", "check-manifest", "flake8", "pyroma", "pytest (>=4.3)", "pyte name = "u8darts" version = "0.23.0" description = "A python library for easy manipulation and forecasting of time series." +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -9552,6 +10012,7 @@ torch = ["pytorch-lightning (>=1.5.0)", "torch (>=1.8.0)"] name = "ujson" version = "5.8.0" description = "Ultra fast JSON encoder and decoder for Python" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -9622,6 +10083,7 @@ files = [ name = "update-checker" version = "0.18.0" description = "A python module that will check for package updates." +category = "main" optional = false python-versions = "*" files = [ @@ -9641,6 +10103,7 @@ test = ["pytest (>=2.7.3)"] name = "uri-template" version = "1.3.0" description = "RFC 6570 URI Template Processor" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -9655,6 +10118,7 @@ dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake name = "urllib3" version = "1.26.16" description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -9671,6 +10135,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] name = "user-agent" version = "0.1.10" description = "User-Agent generator" +category = "main" optional = false python-versions = "*" files = [ @@ -9684,6 +10149,7 @@ six = "*" name = "vadersentiment" version = "3.3.2" description = "VADER Sentiment Analysis. VADER (Valence Aware Dictionary and sEntiment Reasoner) is a lexicon and rule-based sentiment analysis tool that is specifically attuned to sentiments expressed in social media, and works well on texts from other domains." +category = "main" optional = false python-versions = "*" files = [ @@ -9698,6 +10164,7 @@ requests = "*" name = "validators" version = "0.20.0" description = "Python Data Validation for Humans™." +category = "main" optional = false python-versions = ">=3.4" files = [ @@ -9714,6 +10181,7 @@ test = ["flake8 (>=2.4.0)", "isort (>=4.2.2)", "pytest (>=2.2.3)"] name = "valinvest" version = "0.0.2" description = "A value investing tool based on Warren Buffett, Joseph Piotroski and Benjamin Graham thoughts" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -9725,6 +10193,7 @@ files = [ name = "vcrpy" version = "4.4.0" description = "Automatically mock your HTTP interactions to simplify and speed up testing" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -9743,6 +10212,7 @@ yarl = "*" name = "virtualenv" version = "20.24.1" description = "Virtual Python Environment builder" +category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -9763,6 +10233,7 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "watchdog" version = "2.3.1" description = "Filesystem events monitoring" +category = "main" optional = false python-versions = ">=3.6" files = [ @@ -9803,6 +10274,7 @@ watchmedo = ["PyYAML (>=3.10)"] name = "wcwidth" version = "0.2.6" description = "Measures the displayed width of unicode strings in a terminal" +category = "main" optional = false python-versions = "*" files = [ @@ -9814,6 +10286,7 @@ files = [ name = "webcolors" version = "1.13" description = "A library for working with the color formats defined by HTML and CSS." +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -9829,6 +10302,7 @@ tests = ["pytest", "pytest-cov"] name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" +category = "main" optional = false python-versions = "*" files = [ @@ -9840,6 +10314,7 @@ files = [ name = "websocket-client" version = "1.6.1" description = "WebSocket client for Python with low level API options" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -9856,6 +10331,7 @@ test = ["websockets"] name = "websockets" version = "11.0.3" description = "An implementation of the WebSocket Protocol (RFC 6455 & 7692)" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -9935,6 +10411,7 @@ files = [ name = "werkzeug" version = "2.3.6" description = "The comprehensive WSGI web application library." +category = "main" optional = true python-versions = ">=3.8" files = [ @@ -9952,6 +10429,7 @@ watchdog = ["watchdog (>=2.3)"] name = "wheel" version = "0.40.0" description = "A built-package format for Python" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -9966,6 +10444,7 @@ test = ["pytest (>=6.0.0)"] name = "widgetsnbextension" version = "4.0.8" description = "Jupyter interactive widgets for Jupyter Notebook" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -9977,6 +10456,7 @@ files = [ name = "win32-setctime" version = "1.1.0" description = "A small Python utility to set file creation time on Windows" +category = "main" optional = false python-versions = ">=3.5" files = [ @@ -9991,6 +10471,7 @@ dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] name = "wrapt" version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." +category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -10075,6 +10556,7 @@ files = [ name = "xarray" version = "2023.1.0" description = "N-D labeled arrays and datasets in Python" +category = "main" optional = true python-versions = ">=3.8" files = [ @@ -10099,6 +10581,7 @@ viz = ["matplotlib", "nc-time-axis", "seaborn"] name = "xgboost" version = "1.7.6" description = "XGBoost Python Package" +category = "main" optional = true python-versions = ">=3.8" files = [ @@ -10126,6 +10609,7 @@ scikit-learn = ["scikit-learn"] name = "xlsxwriter" version = "3.1.2" description = "A Python module for creating Excel XLSX files." +category = "main" optional = true python-versions = ">=3.6" files = [ @@ -10137,6 +10621,7 @@ files = [ name = "y-py" version = "0.6.0" description = "Python bindings for the Y-CRDT built from yrs (Rust)" +category = "main" optional = false python-versions = "*" files = [ @@ -10212,6 +10697,7 @@ files = [ name = "yahooquery" version = "2.3.2" description = "Python interface to unofficial Yahoo Finance API endpoints" +category = "main" optional = false python-versions = "*" files = [ @@ -10234,6 +10720,7 @@ test = ["coverage (==5.2.1)", "pytest (==6.0.2)", "pytest-cov (==2.10.1)", "sele name = "yarl" version = "1.9.2" description = "Yet another URL library" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -10321,6 +10808,7 @@ multidict = ">=4.0" name = "yfinance" version = "0.2.25" description = "Download market data from Yahoo! Finance API" +category = "main" optional = false python-versions = "*" files = [ @@ -10344,6 +10832,7 @@ requests = ">=2.26" name = "ypy-websocket" version = "0.8.4" description = "WebSocket connector for Ypy" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -10363,6 +10852,7 @@ test = ["mypy", "pre-commit", "pytest", "pytest-asyncio", "websockets (>=10.0)"] name = "yt-dlp" version = "2023.7.6" description = "A youtube-dl fork with additional features and patches" +category = "main" optional = true python-versions = ">=3.7" files = [ @@ -10382,6 +10872,7 @@ websockets = "*" name = "zipp" version = "3.16.2" description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" optional = false python-versions = ">=3.8" files = [ @@ -10397,6 +10888,7 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p name = "zope-interface" version = "6.0" description = "Interfaces for Python" +category = "main" optional = false python-versions = ">=3.7" files = [ @@ -10451,4 +10943,4 @@ optimization = ["Riskfolio-Lib"] [metadata] lock-version = "2.0" python-versions = "^3.8.1,<3.11, !=3.9.7" -content-hash = "09a307f72efb6144c29754ed42e716d70a29dc61607c082b0bd067fede7bdb87" +content-hash = "10cccda4c8b51c57241490d53d46268092e6ffe9054c8ef22b7e58477ad3b98c" diff --git a/pyproject.toml b/pyproject.toml index 4a08b390c82..e99652e0ee5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -121,6 +121,7 @@ langchain = "0.0.237" ffn = "0.3.6" jupyter-client = "7.4.1" jupyter-server = "1.23.6" +python-jose = "^3.3.0" diff --git a/requirements-full.txt b/requirements-full.txt index b320112f8fa..19987f21814 100644 --- a/requirements-full.txt +++ b/requirements-full.txt @@ -14,7 +14,7 @@ ansiwrap==0.8.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9 antlr4-python3-runtime==4.11.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" anyio==3.7.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" appdirs==1.4.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" -appnope==0.1.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and (sys_platform == "darwin" or platform_system == "Darwin") +appnope==0.1.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin" or python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and platform_system == "Darwin" arch==5.6.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" argon2-cffi-bindings==21.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" argon2-cffi==21.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" @@ -81,6 +81,7 @@ dill==0.3.6 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" distlib==0.3.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" dnspython==2.4.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" docutils==0.17.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +ecdsa==0.18.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" ecos==2.0.12 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" entrypoints==0.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" ephem==4.1.4 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" @@ -121,7 +122,7 @@ google-auth-oauthlib==1.0.0 ; python_full_version >= "3.8.1" and python_full_ver google-auth==2.22.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" graphlib-backport==1.0.3 ; python_full_version >= "3.8.1" and python_version < "3.9" graphviz==0.20.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" -greenlet==2.0.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and (platform_machine == "win32" or platform_machine == "WIN32" or platform_machine == "AMD64" or platform_machine == "amd64" or platform_machine == "x86_64" or platform_machine == "ppc64le" or platform_machine == "aarch64") +greenlet==2.0.2 ; python_full_version >= "3.8.1" and platform_machine == "aarch64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "ppc64le" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "x86_64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "amd64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "AMD64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "win32" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "WIN32" and python_full_version != "3.9.7" and python_version < "3.11" grpcio==1.56.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" h11==0.14.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" hijri-converter==2.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" @@ -256,7 +257,7 @@ property-cached==1.6.4 ; python_full_version >= "3.8.1" and python_full_version prophet==1.1.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" protobuf==3.20.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" psutil==5.9.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" -ptyprocess==0.7.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and (sys_platform != "win32" or os_name != "nt") +ptyprocess==0.7.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform != "win32" or python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and os_name != "nt" pure-eval==0.2.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" py==1.11.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" pyarrow==12.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" @@ -302,6 +303,7 @@ python-coinmarketcap==0.2 ; python_full_version >= "3.8.1" and python_full_versi python-dateutil==2.8.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" python-dotenv==1.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" python-i18n==0.3.9 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-jose==3.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" python-json-logger==2.0.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" pytorch-lightning==1.6.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" pytrends==4.9.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" diff --git a/requirements.txt b/requirements.txt index ebb336be0d3..115a934a9a7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ altair==5.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7 ansiwrap==0.8.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" anyio==3.7.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" appdirs==1.4.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" -appnope==0.1.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and (sys_platform == "darwin" or platform_system == "Darwin") +appnope==0.1.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform == "darwin" or python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and platform_system == "Darwin" arch==5.6.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" argon2-cffi-bindings==21.2.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" argon2-cffi==21.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" @@ -53,6 +53,7 @@ defusedxml==0.7.1 ; python_full_version >= "3.8.1" and python_full_version != "3 degiro-connector==2.0.21 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" detecta==0.0.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" dnspython==2.4.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" +ecdsa==0.18.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" entrypoints==0.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" et-xmlfile==1.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" exceptiongroup==1.1.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" @@ -79,7 +80,7 @@ future==0.18.3 ; python_full_version >= "3.8.1" and python_full_version != "3.9. gitdb==4.0.10 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" gitpython==3.1.32 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" graphlib-backport==1.0.3 ; python_full_version >= "3.8.1" and python_version < "3.9" -greenlet==2.0.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and (platform_machine == "win32" or platform_machine == "WIN32" or platform_machine == "AMD64" or platform_machine == "amd64" or platform_machine == "x86_64" or platform_machine == "ppc64le" or platform_machine == "aarch64") +greenlet==2.0.2 ; python_full_version >= "3.8.1" and platform_machine == "aarch64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "ppc64le" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "x86_64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "amd64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "AMD64" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "win32" and python_full_version != "3.9.7" and python_version < "3.11" or python_full_version >= "3.8.1" and platform_machine == "WIN32" and python_full_version != "3.9.7" and python_version < "3.11" grpcio==1.56.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" h11==0.14.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" hijri-converter==2.3.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" @@ -177,9 +178,10 @@ prompt-toolkit==3.0.39 ; python_full_version >= "3.8.1" and python_full_version property-cached==1.6.4 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" protobuf==3.20.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" psutil==5.9.5 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" -ptyprocess==0.7.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and (sys_platform != "win32" or os_name != "nt") +ptyprocess==0.7.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and sys_platform != "win32" or python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" and os_name != "nt" pure-eval==0.2.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" pyarrow==12.0.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +pyasn1==0.5.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" pycares==4.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" pycodestyle==2.10.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" pycoingecko==3.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" @@ -205,6 +207,7 @@ python-coinmarketcap==0.2 ; python_full_version >= "3.8.1" and python_full_versi python-dateutil==2.8.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" python-dotenv==1.0.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" python-i18n==0.3.9 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +python-jose==3.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" python-json-logger==2.0.7 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" pytrends==4.9.2 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" pytz-deprecation-shim==0.1.0.post0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" @@ -225,6 +228,7 @@ rfc3339-validator==0.1.4 ; python_full_version >= "3.8.1" and python_full_versio rfc3986-validator==0.1.1 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" rich==12.6.0 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" robin-stocks==2.1.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" +rsa==4.9 ; python_full_version >= "3.8.1" and python_version < "3.11" and python_full_version != "3.9.7" ruamel-yaml-clib==0.2.7 ; platform_python_implementation == "CPython" and python_version < "3.11" and python_full_version >= "3.8.1" and python_full_version != "3.9.7" ruamel-yaml==0.17.32 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" scikit-learn==1.3.0 ; python_full_version >= "3.8.1" and python_full_version != "3.9.7" and python_version < "3.11" diff --git a/tests/openbb_terminal/session/test_hub_model.py b/tests/openbb_terminal/session/test_hub_model.py index a028a592156..92e78bc694d 100644 --- a/tests/openbb_terminal/session/test_hub_model.py +++ b/tests/openbb_terminal/session/test_hub_model.py @@ -1,8 +1,10 @@ import json +from datetime import datetime, timedelta from unittest.mock import MagicMock, patch import pytest import requests +from jose import JWTError, jwt from openbb_terminal.core.session import hub_model @@ -24,6 +26,18 @@ TEST_HEADER_TOKEN = [ ] +def create_token(delta: int = 0): + """Create a JWT token with a payload that expires in `delta` days.""" + return jwt.encode( + claims={ + "some": "claim", + "exp": (datetime.today() + timedelta(days=delta)).timestamp(), + }, + key="secret", + algorithm="HS256", + ) + + @pytest.mark.parametrize("email, password", TEST_EMAIL_PASSWORD) def test_create_session_success(email, password): with patch("requests.post") as mock_post: @@ -62,10 +76,39 @@ def test_create_session_exception(email, password): assert response is None +# Github actions fails this test so I hard coded the test tokens +# expired: create_token(-10) +# valid: create_token(3600) this will fail in 2033 contact me by then +@pytest.mark.parametrize( + ("test_type", "token"), + [ + ("invalid", "random"), + ( + "expired", + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzb21lIjoiY2xhaW0iLCJleHAiOjE2ODk1MjgyMTEuMTQ3MjgxfQ.W6ElBpX19SToo3vAwfV7U9S-LdKELXzvoTD6grMVh9I", + ), + ( + "valid", + "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzb21lIjoiY2xhaW0iLCJleHAiOjIwMDE0MzIyMDkuNzEzODIxfQ.lSS9OAtwpzqma7xiP3vMDdrDaeCj8vsWKwRC1lSiRFA", + ), + ], +) +def test_check_token_expiration(test_type, token): + if test_type == "invalid": + with pytest.raises(JWTError): + hub_model.check_token_expiration(token) + elif test_type == "expired": + with pytest.raises(jwt.ExpiredSignatureError): + hub_model.check_token_expiration(token) + elif test_type == "valid": + hub_model.check_token_expiration(token) + + @pytest.mark.parametrize("token", [("test_token")]) -def test_create_session_from_token_success(token): +def test_create_session_from_token_success(mocker, token): with patch("requests.post") as mock_post: mock_post.return_value.json.return_value = TEST_RESPONSE + mocker.patch("openbb_terminal.core.session.hub_model.check_token_expiration") response = hub_model.create_session_from_token(token) assert response.json() == TEST_RESPONSE