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.
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()}
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..5186bc22168 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,12 +307,13 @@ 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
# 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
@@ -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,
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..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
@@ -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, raises exception if expired."""
+ 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={
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/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": {
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
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