Merge branch 'develop' into feature/remove-dd-docs

This commit is contained in:
jeroen
2023-02-08 09:44:34 +01:00
23 changed files with 2916 additions and 3422 deletions

View File

@@ -43,16 +43,14 @@ jobs:
restore-keys: ${{ runner.os }}-linting-${{ hashFiles('**/poetry.lock') }}
- run: |
pip install bandit black codespell mypy==0.982 pyupgrade safety pylint==2.15.2 packaging==22 ruff==0.0.236
pip install bandit black codespell mypy==0.982 safety pylint==2.15.2 packaging==22 ruff==0.0.243
pip install types-pytz types-requests types-termcolor types-tabulate types-PyYAML types-python-dateutil types-setuptools types-six
- run: bandit -x ./tests -r . || true
- run: black --diff --check .
- run: codespell --ignore-words-list=commun,statics,ro,zar,zlot,jewl,ba,buil,coo,ether,hist,hsi,mape,navagation,operatio,pres,ser,yeld,shold,ist,varian,datas,ake,creat,vie,hel,ket,toke,certi,buidl,ot,te --quiet-level=2 --skip=./tests,.git,*.css,*.csv,*.html,*.ini,*.ipynb,*.js,*.json,*.lock,*.scss,*.txt,*.yaml,./build/pyinstaller,./website/config.toml
- run: ruff .
- run: mypy --ignore-missing-imports openbb_terminal
- run: shopt -s globstar && pyupgrade --py38-plus **/*.py
- run: |
pylint terminal.py openbb_terminal tests
- run: pylint terminal.py openbb_terminal tests
markdown-link-check:
name: Markdown Linting

View File

@@ -30,17 +30,15 @@ jobs:
key: ${{ runner.os }}-linting-${{ hashFiles('**/poetry.lock') }}
restore-keys: ${{ runner.os }}-linting-${{ hashFiles('**/poetry.lock') }}
- run: pip install bandit black codespell mypy==0.982 pyupgrade safety pylint==2.15.2 packaging==22 ruff==0.0.212
- run: pip install bandit black codespell mypy==0.982 safety pylint==2.15.2 packaging==22 ruff==0.0.243
- run: pip install types-pytz types-requests types-termcolor types-tabulate types-PyYAML types-python-dateutil types-setuptools types-six
- run: bandit -x ./tests -r . || true
- run: black --diff --check .
- run: codespell --ignore-words-list=commun,statics,ro,zar,zlot,jewl,ba,buil,coo,ether,hist,hsi,mape,navagation,operatio,pres,ser,yeld,shold,ist,varian,datas,ake,creat,vie,hel,ket,toke,certi,buidl,ot,te --quiet-level=2 --skip=./tests,.git,*.css,*.csv,*.html,*.ini,*.ipynb,*.js,*.json,*.lock,*.scss,*.txt,*.yaml,./build/pyinstaller,./website/config.toml
- run: ruff .
- run: mypy --ignore-missing-imports openbb_terminal
- run: shopt -s globstar && pyupgrade --py38-plus **/*.py
- run: safety check
- run: |
pylint terminal.py openbb_terminal tests
- run: pylint terminal.py openbb_terminal tests
test:
name: Base Tests - Ubuntu-latest - Python 3.9
runs-on: ubuntu-latest

View File

@@ -14,7 +14,7 @@ repos:
hooks:
- id: black
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: 'v0.0.236'
rev: 'v0.0.243'
hooks:
- id: ruff
- repo: https://github.com/codespell-project/codespell
@@ -64,11 +64,6 @@ repos:
"website/content/api/*",
]
exclude: package.lock.json
- repo: https://github.com/asottile/pyupgrade
rev: v3.3.1
hooks:
- id: pyupgrade
args: [--py38-plus]
- repo: local
hooks:
- id: reserved_args

3
CONTRIBUTING.md vendored
View File

@@ -1100,9 +1100,8 @@ The following linters are used by our codebase:
| bandit | security analyzer |
| black | code formatter |
| codespell | spelling checker |
| flake8 | style guide enforcer |
| ruff | a fast python linter |
| mypy | static typing checker |
| pyupgrade | upgrade syntax for newer versions |
| safety | checks security vulnerabilities |
| pylint | bug and quality checker |
| markdownlint | markdown linter |

View File

@@ -19,7 +19,10 @@ from openbb_terminal.cryptocurrency.discovery import (
)
from openbb_terminal.custom_prompt_toolkit import NestedCompleter
from openbb_terminal.decorators import log_start_end
from openbb_terminal.helper_funcs import EXPORT_ONLY_RAW_DATA_ALLOWED, check_positive
from openbb_terminal.helper_funcs import (
EXPORT_ONLY_RAW_DATA_ALLOWED,
check_positive,
)
from openbb_terminal.menu import session
from openbb_terminal.parent_classes import BaseController
from openbb_terminal.rich_config import MenuText, console, get_ordered_list_sources
@@ -52,6 +55,16 @@ class DiscoveryController(BaseController):
if session and obbff.USE_PROMPT_TOOLKIT:
choices: dict = self.choices_default
ordered_list_sources_top = get_ordered_list_sources(f"{self.PATH}top")
if ordered_list_sources_top and ordered_list_sources_top[0] == "CoinGecko":
choices["top"]["--sort"] = {
c: {} for c in pycoingecko_view.COINS_COLUMNS
}
else:
choices["top"]["--sort"] = {c: {} for c in coinmarketcap_model.FILTERS}
choices["top"]["-s"] = choices["top"]["--sort"]
self.completer = NestedCompleter.from_nested_dict(choices)
def print_help(self):
@@ -78,11 +91,6 @@ class DiscoveryController(BaseController):
else:
argument_sort_default = "CMC_Rank"
if ordered_list_sources_top and ordered_list_sources_top[0] == "CoinGecko":
argument_sort_choices = pycoingecko_view.COINS_COLUMNS
else:
argument_sort_choices = coinmarketcap_model.FILTERS
parser = argparse.ArgumentParser(
prog="top",
add_help=False,
@@ -121,7 +129,6 @@ class DiscoveryController(BaseController):
nargs="+",
help="Sort by given column. Default: Market Cap Rank",
default=argument_sort_default,
choices=argument_sort_choices,
metavar="SORTBY",
)
parser.add_argument(

View File

@@ -1335,6 +1335,8 @@ def ask_file_overwrite(file_path: str) -> Tuple[bool, bool]:
# Jeroen asked for a flag to overwrite no matter what
if obbff.FILE_OVERWITE:
return False, True
if os.environ.get("TEST_MODE") == "True":
return False, True
if os.path.exists(file_path):
overwrite = input("\nFile already exists. Overwrite? [y/n]: ").lower()
if overwrite == "y":
@@ -1415,6 +1417,9 @@ def export_data(
df.reset_index(drop=True, inplace=True)
df.to_json(saved_path)
elif exp_type.endswith("xlsx"):
# since xlsx does not support datetimes with timezones we need to remove it
df = remove_timezone_from_dataframe(df)
if sheet_name is None:
exists, overwrite = ask_file_overwrite(saved_path)
if exists and not overwrite:
@@ -1461,9 +1466,9 @@ def export_data(
return
plt.savefig(saved_path)
else:
console.print("\nWrong export file specified.")
console.print("Wrong export file specified.")
console.print(f"\nSaved file: {saved_path}")
console.print(f"Saved file: {saved_path}")
def get_rf() -> float:
@@ -2017,3 +2022,45 @@ def request(url: str, method="GET", **kwargs) -> requests.Response:
url, headers=headers, timeout=cfg.REQUEST_TIMEOUT, **kwargs
)
raise ValueError("Method must be GET or POST")
def remove_timezone_from_dataframe(df: pd.DataFrame) -> pd.DataFrame:
"""
Remove timezone information from a dataframe.
Parameters
----------
df : pd.DataFrame
The dataframe to remove timezone information from
Returns
-------
pd.DataFrame
The dataframe with timezone information removed
"""
date_cols = []
index_is_date = False
# Find columns and index containing date data
if (
df.index.dtype.kind == "M"
and hasattr(df.index.dtype, "tz")
and df.index.dtype.tz is not None
):
index_is_date = True
for col, dtype in df.dtypes.items():
if dtype.kind == "M" and hasattr(df.index.dtype, "tz") and dtype.tz is not None:
date_cols.append(col)
# Remove the timezone information
for col in date_cols:
df[col] = df[col].dt.date
if index_is_date:
index_name = df.index.name
df.index = df.index.date
df.index.name = index_name
return df

View File

@@ -972,12 +972,12 @@ en:
portfolio/bro/cb/history: show history of your account
portfolio/bro/cb/deposits: show all your deposits or internal transfers
portfolio/bro/cb/orders: show all your orders
portfolio/po/file: file that contains portfolio risk parameters
portfolio/po/file: file that contains portfolio risk parameters (use about for the parameter template)
portfolio/po/load: load tickers and categories from .xlsx or .csv file (use load --example for an example)
portfolio/po/_loaded: Portfolio loaded
portfolio/po/_tickers: Tickers
portfolio/po/_categories: Categories
portfolio/po/params/load: select portfolio parameter file
portfolio/po/params/load: select portfolio parameter file (use about for the parameter template)
portfolio/po/params: specify and show portfolio risk parameters
portfolio/po/_parameter: Parameter file
portfolio/po/_mean_risk_optimization_: Mean Risk Optimization

View File

@@ -279,13 +279,49 @@ class PortfolioController(BaseController):
if OPTIMIZATION_TOOLKIT_ENABLED:
if self.portfolio is None:
tickers = []
categories = None
else:
tickers = self.portfolio.tickers_list
transactions = self.portfolio.get_transactions()
categories = {
"ASSET_CLASS": {},
"SECTOR": {},
"INDUSTRY": {},
"COUNTRY": {},
"CURRENT_INVESTED_AMOUNT": {},
"CURRENCY": {},
}
for _, transaction in transactions.iterrows():
if transaction["Ticker"] not in categories["ASSET_CLASS"]:
categories["ASSET_CLASS"][transaction["Ticker"]] = transaction[
"Type"
]
categories["SECTOR"][transaction["Ticker"]] = transaction[
"Sector"
]
categories["INDUSTRY"][transaction["Ticker"]] = transaction[
"Industry"
]
categories["COUNTRY"][transaction["Ticker"]] = transaction[
"Country"
]
categories["CURRENT_INVESTED_AMOUNT"][
transaction["Ticker"]
] = transactions[
transactions["Ticker"] == transaction["Ticker"]
][
"Investment"
].sum()
categories["CURRENCY"][transaction["Ticker"]] = transaction[
"Currency"
]
self.queue = self.load_class(
po_controller.PortfolioOptimizationController,
tickers,
None,
None,
categories,
self.queue,
)
else:

View File

@@ -302,14 +302,12 @@ def get_property_weights(
prop = {}
prop_sum = 0
for stock in symbols:
stock_prop = yf.Ticker(stock).info[s_property]
if stock_prop is None:
stock_prop = 0
stock_prop = get_prop(symbol=stock, prop=s_property)
prop[stock] = stock_prop
prop_sum += stock_prop
if prop_sum == 0:
console.print(f"No {s_property} was found on list of tickers provided", "\n")
console.print(f"No '{s_property}' was found on list of tickers provided", "\n")
return None, None
weights = {k: value * v / prop_sum for k, v in prop.items()}
@@ -317,6 +315,48 @@ def get_property_weights(
return weights, stock_returns
@log_start_end(log=logger)
def get_prop(symbol, prop) -> float:
"""Get property from yfinance
Parameters
----------
symbol : str
Stock ticker
prop : str
Property to get
Returns
-------
dict
Ticker info
"""
prop = yahoo_finance_model.fast_info_map.get(prop, prop)
try:
info = yf.Ticker(symbol).info
except Exception as _: # noqa
info = None
try:
fast_info = yf.Ticker(symbol).fast_info
except Exception as _: # noqa
fast_info = None
info_dict = {}
if info:
info_dict.update(dict(info))
if fast_info:
info_dict.update(dict(fast_info))
if info_dict:
value = info_dict.get(prop, 0.0)
if not value:
return 0.0
return value
return 0.0
@log_start_end(log=logger)
def get_mean_risk_portfolio(
symbols: List[str],
@@ -1365,6 +1405,9 @@ def get_black_litterman_portfolio(
value=value,
)
if benchmark is None:
return None, stock_returns
factor = time_factor[freq.upper()]
risk_free_rate = risk_free_rate / factor

View File

@@ -235,6 +235,9 @@ class PortfolioOptimizationController(BaseController):
if categories:
self.categories = dict(categories)
self.available_categories = list(self.categories.keys())
if "CURRENT_INVESTED_AMOUNT" in self.available_categories:
self.available_categories.remove("CURRENT_INVESTED_AMOUNT")
else:
self.categories = dict()
self.available_categories = list()

View File

@@ -19,9 +19,29 @@ logger = logging.getLogger(__name__)
# pylint: disable=R0912, E1101
fast_info_map = {
"previousClose": "previous_close",
"twoHundredDayAverage": "two_hundred_day_average",
"regularMarketDayHigh": "day_high",
"averageDailyVolume10Day": "ten_day_average_volume",
"regularMarketPreviousClose": "regular_market_previous_close",
"fiftyDayAverage": "fifty_day_average",
"open": "open",
"averageVolume10days": "ten_day_average_volume",
"regularMarketDayLow": "day_low",
"currency": "currency",
"marketCap": "market_cap",
"averageVolume": "three_month_average_volume",
"dayLow": "day_low",
"volume": "last_volume",
"fiftyTwoWeekHigh": "year_high",
"fiftyTwoWeekLow": "year_low",
"dayHigh": "day_high",
"regularMarketPrice": "last_price",
}
yf_info_choices = [
"previousClose",
"regularMarketOpen",
"twoHundredDayAverage",
"trailingAnnualDividendYield",
"payoutRatio",
@@ -30,7 +50,6 @@ yf_info_choices = [
"navPrice",
"averageDailyVolume10Day",
"totalAssets",
"regularMarketPreviousClose",
"fiftyDayAverage",
"trailingAnnualDividendRate",
"open",
@@ -47,11 +66,9 @@ yf_info_choices = [
"priceHint",
"currency",
"trailingPE",
"regularMarketVolume",
"lastMarket",
"maxSupply",
"openInterest",
"marketCap",
"volumeAllCurrencies",
"strikePrice",
"averageVolume",

23
poetry.lock generated vendored
View File

@@ -3499,17 +3499,6 @@ python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7"
"backports.zoneinfo" = {version = "*", markers = "python_version >= \"3.6\" and python_version < \"3.9\""}
tzdata = {version = "*", markers = "python_version >= \"3.6\""}
[[package]]
name = "pyupgrade"
version = "2.38.4"
description = "A tool to automatically upgrade syntax for newer versions."
category = "dev"
optional = false
python-versions = ">=3.7"
[package.dependencies]
tokenize-rt = "<5"
[[package]]
name = "pywin32"
version = "305"
@@ -4458,14 +4447,6 @@ webencodings = ">=0.4"
doc = ["sphinx", "sphinx-rtd-theme"]
test = ["pytest", "isort", "flake8"]
[[package]]
name = "tokenize-rt"
version = "4.2.1"
description = "A wrapper around the stdlib `tokenize` which roundtrips."
category = "dev"
optional = false
python-versions = ">=3.6.1"
[[package]]
name = "tokenterminal"
version = "1.0.1"
@@ -5083,7 +5064,7 @@ prediction = ["torch", "pytorch-lightning", "u8darts"]
[metadata]
lock-version = "1.1"
python-versions = "^3.8,<3.11, !=3.9.7"
content-hash = "6082422c6e0601e87e9df33daa3393f6d4afffdb867ecf6db74e33622ecf41fd"
content-hash = "8b59d3adb985f6b1586d40087f128c9f0224a0bc8d1152ece42f304be8ae3483"
[metadata.files]
absl-py = []
@@ -5351,7 +5332,6 @@ pytorch-lightning = []
pytrends = []
pytz = []
pytz-deprecation-shim = []
pyupgrade = []
pywin32 = []
pywin32-ctypes = []
pywinpty = []
@@ -5418,7 +5398,6 @@ textwrap3 = []
thepassiveinvestor = []
threadpoolctl = []
tinycss2 = []
tokenize-rt = []
tokenterminal = []
toml = []
tomli = []

12
pyproject.toml vendored
View File

@@ -117,7 +117,6 @@ pylint = "2.15.2"
mypy = "^0.930"
mock = "^4.0.3"
codespell = "^2.0.0"
pyupgrade = "^2.11.0"
sphinx = "^4.5.0"
myst-parser = "^0.15.2"
black = "^23.1.0"
@@ -160,8 +159,9 @@ target-version = "py38"
# This is an introductory addition of ruff. We should look to adding:
# D: pydocstyle, PD: pandas-vet
# All options here: https://github.com/charliermarsh/ruff#supported-rules
select = ["E", "W", "F", "Q", "W", "S", "UP", "I"]
ignore = ["S105", "S106", "S107"]
select = ["E", "W", "F", "Q", "S", "UP", "I", "PLC", "PLE", "PLR", "PLW"]
# These ignores should be seen as temporary solutions to problems that will NEED fixed
ignore = ["S105", "S106", "S107", "S110", "PLR2004", "PLR0911", "PLR0913", "PLR0912", "PLR0915"]
[tool.ruff.per-file-ignores]
"tests/*" = ["S101"]
@@ -176,6 +176,12 @@ seaborn = "sns"
combine-as-imports = true
force-wrap-aliases = true
[tool.ruff.pylint]
max-args=8
max-branches=25
max-returns=9
max-statements=30
[tool.isort]
profile = "black"
line_length = 122

15
requirements-full.txt vendored
View File

@@ -9,13 +9,11 @@ ansiwrap==0.8.4; python_version >= "3.7"
anyio==3.6.2; python_full_version >= "3.6.2" and python_version >= "3.8" and python_version < "4.0"
appdirs==1.4.4
appnope==0.1.3; sys_platform == "darwin" and python_version >= "3.8" and platform_system == "Darwin" and python_full_version >= "3.7.0" and python_full_version < "4.0.0"
arch==5.3.1; python_version >= "3.7"
argon2-cffi-bindings==21.2.0; python_version >= "3.7"
argon2-cffi==21.3.0; python_version >= "3.7"
ascii-magic==1.6; python_version >= "3.5"
astor==0.8.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
astroid==2.13.5; python_full_version >= "3.7.2"
astropy==5.2.1; python_version >= "3.8"
asttokens==2.2.1; python_version >= "3.8"
async-timeout==4.0.2; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
atomicwrites==1.4.1; sys_platform == "win32" and python_version >= "3.7" and python_full_version >= "3.7.0" and python_full_version < "4.0.0"
@@ -51,7 +49,6 @@ convertdate==2.4.0; python_version >= "3.7" and python_version < "4"
coverage==7.1.0; python_version >= "3.7"
cryptography==39.0.0; python_version >= "3.6"
cssselect==1.2.0; python_version >= "3.8" and python_version < "4.0"
cvxpy==1.3.0; python_version >= "3.7"
cycler==0.11.0; python_version >= "3.7"
cython==0.29.33; python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "darwin" or python_full_version >= "3.3.0" and sys_platform == "darwin" and python_version >= "3.8"
dateparser==1.1.7; python_version >= "3.7"
@@ -66,7 +63,6 @@ dill==0.3.6; python_version >= "3.7" and python_full_version >= "3.7.2"
distlib==0.3.6; python_version >= "3.7"
dnspython==2.3.0; python_version >= "3.7" and python_version < "4.0"
docutils==0.17.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
ecos==2.0.12; python_version >= "3.7"
entrypoints==0.4; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7")
ephem==4.1.4; python_version >= "3.7" and python_version < "4"
et-xmlfile==1.1.0; python_version >= "3.6"
@@ -164,7 +160,6 @@ nbconvert==7.2.9; python_version >= "3.7"
nbformat==5.7.3; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
nbmake==1.3.5; python_full_version >= "3.7.0" and python_full_version < "4.0.0"
nest-asyncio==1.5.6; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
networkx==3.0; python_version >= "3.8"
nfoursid==1.0.1; python_version >= "3.7"
nodeenv==1.7.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.7.0" and python_version >= "3.7"
notebook-shim==0.2.2; python_version >= "3.7"
@@ -175,7 +170,6 @@ oandapyv20==0.6.3
oauthlib==3.2.2; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
onetimepass==1.0.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
openpyxl==3.1.0; python_version >= "3.6"
osqp==0.6.2.post8; python_version >= "3.7"
packaging==23.0; python_version >= "3.7"
pandas-datareader==0.10.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
pandas-market-calendars==3.2; python_full_version >= "3.7.0"
@@ -218,7 +212,6 @@ pycparser==2.21; python_version >= "3.6" and python_full_version < "3.0.0" or py
pydantic==1.10.4; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
pydeck==0.8.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
pydeprecate==0.3.2; python_version >= "3.7"
pyerfa==2.0.0.1; python_version >= "3.8"
pyex==0.5.0
pyflakes==2.5.0; python_version >= "3.6" and python_full_version >= "3.7.0"
pygments==2.14.0; python_version >= "3.6"
@@ -248,12 +241,10 @@ pytorch-lightning==1.6.5; python_version >= "3.7"
pytrends==4.9.0; python_version >= "3.7"
pytz-deprecation-shim==0.1.0.post0; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.7"
pytz==2022.7.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8" and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and python_version < "4.0"
pyupgrade==2.38.4; python_version >= "3.7"
pywin32==305; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.8"
pywinpty==2.0.10; os_name == "nt" and python_version >= "3.7"
pyyaml==6.0; python_version >= "3.8"
pyyaml==6.0; python_version >= "3.7"
pyzmq==25.0.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
qdldl==0.1.5.post3; python_version >= "3.7"
quandl==3.7.0; python_version >= "3.6"
rapidfuzz==1.9.1; python_version >= "2.7"
rdflib==6.2.0; python_version >= "3.7"
@@ -262,7 +253,6 @@ requests-oauthlib==1.3.1; python_version >= "3.7" and python_full_version < "3.0
requests==2.28.2; python_version >= "3.7" and python_version < "4"
rfc3986==1.5.0; python_version >= "3.8" and python_version < "4.0"
rich==12.6.0; python_full_version >= "3.6.3" and python_full_version < "4.0.0"
riskfolio-lib==3.3.0; python_version >= "3.7"
robin-stocks==2.1.0; python_version >= "3"
rsa==4.9; python_version >= "3.6" and python_version < "4" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7")
ruamel.yaml.clib==0.2.7; platform_python_implementation == "CPython" and python_version < "3.11" and python_version >= "3.5"
@@ -271,7 +261,6 @@ ruff==0.0.236; python_version >= "3.7"
scikit-learn==1.2.1; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
scipy==1.10.0; python_version >= "3.8" and python_version < "3.12"
screeninfo==0.6.7
scs==3.2.2; python_version >= "3.7"
seaborn==0.11.2; python_version >= "3.6"
semver==2.13.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.4.0" or python_full_version > "3.9.7"
send2trash==1.8.0; python_version >= "3.7"
@@ -314,7 +303,6 @@ textwrap3==0.9.2; python_version >= "3.7"
thepassiveinvestor==1.1.2
threadpoolctl==3.1.0; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
tinycss2==1.2.1; python_version >= "3.7"
tokenize-rt==4.2.1; python_full_version >= "3.6.1" and python_version >= "3.7"
tokenterminal==1.0.1
toml==0.10.2; python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0"
tomli==2.0.1; python_version < "3.11" and python_full_version >= "3.7.2" and python_version >= "3.8" and python_full_version <= "3.11.0a6"
@@ -359,7 +347,6 @@ win32-setctime==1.1.0; python_version >= "3.5" and python_full_version >= "3.7.0
wrapt==1.14.1; python_full_version >= "3.7.2" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7") and python_version >= "3.8" and python_version < "3.11"
xarray==2023.1.0; python_version >= "3.8"
xgboost==1.7.3; python_version >= "3.8"
xlsxwriter==3.0.8; python_version >= "3.7"
yarl==1.8.2; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
yfinance==0.2.9
zipp==3.12.0; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.10" or python_full_version > "3.9.7" and python_version >= "3.7" and python_version < "3.10"

111
requirements.txt vendored
View File

@@ -1,31 +1,26 @@
aiodns==3.0.0; python_version >= "3.5.2" and python_full_version >= "3.7.0"
aiohttp==3.8.3; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
aiosignal==1.3.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
alabaster==0.7.13; python_version >= "3.6"
alpha-vantage==2.3.1
altair==4.2.2; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
ansiwrap==0.8.4; python_version >= "3.7"
anyio==3.6.2; python_full_version >= "3.6.2" and python_version >= "3.8" and python_version < "4.0"
appdirs==1.4.4
appnope==0.1.3; sys_platform == "darwin" and python_version >= "3.8" and platform_system == "Darwin" and python_full_version >= "3.7.0" and python_full_version < "4.0.0"
appnope==0.1.3; sys_platform == "darwin" and python_version >= "3.8" and platform_system == "Darwin"
argon2-cffi-bindings==21.2.0; python_version >= "3.7"
argon2-cffi==21.3.0; python_version >= "3.7"
ascii-magic==1.6; python_version >= "3.5"
astor==0.8.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
astroid==2.13.5; python_full_version >= "3.7.2"
asttokens==2.2.1; python_version >= "3.8"
async-timeout==4.0.2; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
atomicwrites==1.4.1; sys_platform == "win32" and python_version >= "3.7" and python_full_version >= "3.7.0" and python_full_version < "4.0.0"
attrs==21.4.0; python_full_version >= "3.7.0" and python_version >= "3.8" and python_version < "4.0" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.6" and python_version < "4.0" and python_full_version >= "3.5.0") and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0")
attrs==21.4.0; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0" and (python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7")
babel==2.11.0; python_version >= "3.7"
backcall==0.2.0; python_version >= "3.8"
backoff==2.2.1; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.7.0"
backports.zoneinfo==0.2.1; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.9" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.7") or python_full_version > "3.9.7" and python_version >= "3.7" and python_version < "3.9" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.7")
bandit==1.7.4; python_version >= "3.7"
base58==2.1.1; python_version >= "3.5" and python_full_version >= "3.7.0"
beartype==0.7.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
beautifulsoup4==4.11.2; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
black==23.1.0; python_version >= "3.7"
bleach==6.0.0; python_version >= "3.7"
blinker==1.5; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.5.0" or python_full_version > "3.9.7"
bs4==0.0.1
@@ -33,40 +28,33 @@ bt==0.2.9; (python_version >= "2.7" and python_full_version < "3.0.0") or (pytho
cachetools==5.3.0; python_version >= "3.7" and python_version < "4.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
ccxt==2.7.36
certifi==2022.12.7; python_version >= "3.8" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
cffi==1.15.1; implementation_name == "pypy" and python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0"
cfgv==3.3.1; python_full_version >= "3.6.1" and python_version >= "3.7"
cffi==1.15.1; implementation_name == "pypy" and python_version >= "3.8" and python_full_version >= "3.7.0"
charset-normalizer==2.1.1; python_full_version >= "3.6.0"
click==8.1.3; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
codespell==2.2.2; python_version >= "3.7"
colorama==0.4.6; python_full_version >= "3.7.2" and python_version >= "3.8" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.7.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.7" and python_full_version >= "3.7.0") and (python_version >= "3.8" and python_full_version < "3.0.0" and python_version < "4.0" and platform_system == "Windows" or python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0" and platform_system == "Windows") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") or platform_system == "Windows" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") and python_full_version >= "3.7.0") and (python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.8" and python_full_version >= "3.7.0") and python_full_version < "4.0.0"
comm==0.1.2; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
colorama==0.4.6; python_full_version >= "3.7.0" and python_version >= "3.8" and sys_platform == "win32" and python_version < "4.0" and platform_system == "Windows" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7")
comm==0.1.2; python_version >= "3.8"
commonmark==0.9.1; python_full_version >= "3.6.3" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
convertdate==2.4.0; python_version >= "3.7" and python_version < "4"
coverage==7.1.0; python_version >= "3.7"
cryptography==39.0.0; python_version >= "3.6"
cssselect==1.2.0; python_version >= "3.8" and python_version < "4.0"
cycler==0.11.0; python_version >= "3.7"
cython==0.29.33; python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "darwin" or python_full_version >= "3.3.0" and sys_platform == "darwin" and python_version >= "3.8"
dateparser==1.1.7; python_version >= "3.7"
datetime==5.0; python_version >= "3.5"
debugpy==1.6.6; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
debugpy==1.6.6; python_version >= "3.8"
decorator==5.1.1; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8"
defusedxml==0.7.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7"
degiro-connector==2.0.21; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
deprecation==2.1.0
detecta==0.0.5; python_version >= "3.6"
dill==0.3.6; python_version >= "3.7" and python_full_version >= "3.7.2"
distlib==0.3.6; python_version >= "3.7"
dnspython==2.3.0; python_version >= "3.7" and python_version < "4.0"
docutils==0.17.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
entrypoints==0.4; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7")
entrypoints==0.4; python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8"
et-xmlfile==1.1.0; python_version >= "3.6"
exchange-calendars==4.2.5; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
executing==1.2.0; python_version >= "3.8"
fastjsonschema==2.16.2; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
fastjsonschema==2.16.2; python_full_version >= "3.7.0" and python_version >= "3.7"
feedparser==6.0.10; python_version >= "3.6"
ffn==0.3.6; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
filelock==3.9.0; python_version >= "3.7"
financedatabase==1.0.2
finnhub-python==2.4.16
finviz==1.4.5; python_version >= "3.8" and python_version < "4.0"
@@ -89,31 +77,27 @@ holidays==0.14.2; python_version >= "3.7"
html5lib==1.1; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
httpcore==0.16.3; python_version >= "3.8" and python_version < "4.0"
httpx==0.23.3; python_version >= "3.8" and python_version < "4.0"
identify==2.5.17; python_version >= "3.7"
idna==3.4; python_version >= "3.8" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
imagesize==1.4.1; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
importlib-metadata==6.0.0; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.10" or python_full_version > "3.9.7" and python_version >= "3.7" and python_version < "3.10"
inflection==0.5.1; python_version >= "3.6"
iniconfig==2.0.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
interface-meta==1.3.0; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.1" and python_full_version < "4.0.0"
investiny==0.5.0; python_version >= "3.8" and python_version < "4.0"
investpy==1.0.8; python_version >= "3.7"
ipyflex==0.2.6; python_version >= "3.6"
ipykernel==6.21.1; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
ipykernel==6.21.1; python_version >= "3.8"
ipympl==0.8.4
ipython-genutils==0.2.0; python_version >= "3.7"
ipython==8.5.0; python_version >= "3.8"
ipywidgets==8.0.4; python_version >= "3.7"
iso8601==0.1.16
isodate==0.6.1; python_version >= "3.7"
isort==5.12.0; python_full_version >= "3.8.0"
jedi==0.18.2; python_version >= "3.8"
jinja2==3.1.2; python_version >= "3.7"
joblib==1.2.0; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
json5==0.9.11; python_version >= "3.7"
jsonschema==3.2.0
jupyter-client==7.4.1; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
jupyter-core==5.2.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
jupyter-client==7.4.1; python_full_version >= "3.7.0" and python_version >= "3.8"
jupyter-core==5.2.0; python_full_version >= "3.7.0" and python_version >= "3.8"
jupyter-server==1.23.5; python_version >= "3.7"
jupyterlab-pygments==0.2.2; python_version >= "3.7"
jupyterlab-server==2.16.6; python_version >= "3.7"
@@ -121,33 +105,25 @@ jupyterlab-widgets==3.0.5; python_version >= "3.7"
jupyterlab==3.5.3; python_version >= "3.7"
kiwisolver==1.4.4; python_version >= "3.7"
korean-lunar-calendar==0.3.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
lazy-object-proxy==1.9.0; python_version >= "3.7" and python_full_version >= "3.7.2"
linearmodels==4.27; python_version >= "3.8"
loguru==0.6.0; python_version >= "3.5" and python_full_version >= "3.7.0"
lxml==4.9.2; python_version >= "3.8" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
markdown-it-py==1.1.0; python_version >= "3.6" and python_version < "4.0"
markupsafe==2.1.2; python_version >= "3.7"
matplotlib-inline==0.1.6; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
matplotlib-inline==0.1.6; python_version >= "3.8"
matplotlib==3.5.3; python_version >= "3.7"
mccabe==0.7.0; python_version >= "3.6" and python_full_version >= "3.7.2"
mdit-py-plugins==0.2.8; python_version >= "3.6" and python_version < "4.0"
mccabe==0.7.0; python_version >= "3.6" and python_full_version >= "3.7.0"
mistune==2.0.4; python_version >= "3.7"
mock==4.0.3; python_version >= "3.6"
more-itertools==9.0.0; python_version >= "3.7"
mplfinance==0.12.9b7
mstarpy==0.0.4
multidict==6.0.4; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
multitasking==0.0.11
mypy-extensions==0.4.3; python_version >= "3.8"
mypy==0.930; python_version >= "3.6"
myst-parser==0.15.2; python_version >= "3.6"
nbclassic==0.5.1; python_version >= "3.7"
nbclient==0.6.8; python_full_version >= "3.7.0" and python_version >= "3.7" and python_full_version < "4.0.0"
nbclient==0.6.8; python_full_version >= "3.7.0" and python_version >= "3.7"
nbconvert==7.2.9; python_version >= "3.7"
nbformat==5.7.3; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
nbmake==1.3.5; python_full_version >= "3.7.0" and python_full_version < "4.0.0"
nest-asyncio==1.5.6; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
nodeenv==1.7.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.7.0" and python_version >= "3.7"
nbformat==5.7.3; python_full_version >= "3.7.0" and python_version >= "3.7"
nest-asyncio==1.5.6; python_full_version >= "3.7.0" and python_version >= "3.8"
notebook-shim==0.2.2; python_version >= "3.7"
notebook==6.5.2; python_version >= "3.7"
numpy==1.23.4; python_version >= "3.8"
@@ -163,40 +139,33 @@ pandas==1.5.3; python_version >= "3.8"
pandocfilters==1.5.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7"
papermill==2.4.0; python_version >= "3.7"
parso==0.8.3; python_version >= "3.8"
pathspec==0.11.0; python_version >= "3.7"
patsy==0.5.3; python_version >= "3.8"
pbr==5.11.1; python_version >= "3.8"
pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.8"
pickleshare==0.7.5; python_version >= "3.8"
pillow==9.4.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
platformdirs==2.6.2; python_version >= "3.8" and python_full_version >= "3.7.2"
platformdirs==2.6.2; python_version >= "3.8"
plotly==5.13.0; python_version >= "3.6"
pluggy==1.0.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
praw==7.6.1; python_version >= "3.7" and python_version < "4.0"
prawcore==2.3.0; python_version >= "3.7" and python_version < "4.0"
pre-commit==2.21.0; python_version >= "3.7"
prometheus-client==0.16.0; python_version >= "3.7"
prompt-toolkit==3.0.36; python_full_version >= "3.6.2"
property-cached==1.6.4; python_version >= "3.8"
protobuf==3.20.1; python_version >= "3.7"
psaw==0.0.12; python_version >= "3"
psutil==5.9.4; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
psutil==5.9.4; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.8"
ptyprocess==0.7.0; sys_platform != "win32" and python_version >= "3.8" and os_name != "nt"
pure-eval==0.2.2; python_version >= "3.8"
py==1.11.0; python_full_version >= "3.7.0" and python_version >= "3.7" and python_full_version < "4.0.0"
pyally==1.1.2
pyarrow==11.0.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
pycares==4.3.0; python_version >= "3.5.2" and python_full_version >= "3.7.0"
pycodestyle==2.9.1; python_version >= "3.6" and python_full_version >= "3.7.0"
pycoingecko==2.3.0
pycparser==2.21; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
pydantic==1.10.4; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7"
pydeck==0.8.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
pyex==0.5.0
pyflakes==2.5.0; python_version >= "3.6" and python_full_version >= "3.7.0"
pygments==2.14.0; python_version >= "3.6"
pyhdfe==0.1.2; python_version >= "3.8"
pylint==2.15.2; python_full_version >= "3.7.2"
pyluach==2.0.2; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
pymeeus==0.5.12; python_version >= "3.7" and python_version < "4"
pympler==1.0.1; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.6"
@@ -206,24 +175,19 @@ pyotp==2.8.0; python_version >= "3.7"
pyparsing==3.0.9; python_full_version >= "3.6.8" and python_version >= "3.7"
pyprind==2.11.3; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
pyrsistent==0.18.1; python_version >= "3.7"
pytest-cov==3.0.0; python_version >= "3.6"
pytest-mock==3.10.0; python_version >= "3.7"
pytest-recording==0.12.1; python_version >= "3.5"
pytest==6.2.5; python_version >= "3.6"
pythclient==0.1.4; python_full_version >= "3.7.0"
python-binance==1.0.16
python-coinmarketcap==0.2
python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.8" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7") and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and python_version < "4.0"
python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.8" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7") and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and python_version < "4.0" and (python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.8")
python-dotenv==0.19.2; python_version >= "3.5"
python-i18n==0.3.9
pytrends==4.9.0; python_version >= "3.7"
pytz-deprecation-shim==0.1.0.post0; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.7"
pytz==2022.7.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8" and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and python_version < "4.0"
pyupgrade==2.38.4; python_version >= "3.7"
pywin32==305; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.8"
pywinpty==2.0.10; os_name == "nt" and python_version >= "3.7"
pyyaml==6.0; python_version >= "3.7"
pyzmq==25.0.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
pyzmq==25.0.0; python_version >= "3.8"
quandl==3.7.0; python_version >= "3.6"
rapidfuzz==1.9.1; python_version >= "2.7"
rdflib==6.2.0; python_version >= "3.7"
@@ -235,7 +199,6 @@ rich==12.6.0; python_full_version >= "3.6.3" and python_full_version < "4.0.0"
robin-stocks==2.1.0; python_version >= "3"
ruamel.yaml.clib==0.2.7; platform_python_implementation == "CPython" and python_version < "3.11" and python_version >= "3.5"
ruamel.yaml==0.17.21; python_version >= "3"
ruff==0.0.236; python_version >= "3.7"
scikit-learn==1.2.1; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
scipy==1.10.0; python_version >= "3.8" and python_version < "3.12"
screeninfo==0.6.7
@@ -245,25 +208,16 @@ send2trash==1.8.0; python_version >= "3.7"
sentiment-investor==2.1.0; python_version >= "3.8" and python_version < "4.0"
setuptools-scm==6.4.2; python_version >= "3.8"
sgmllib3k==1.0.0; python_version >= "3.6"
six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.8" and python_version < "4.0" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7") and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and (python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0") and (python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.8")
six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.8" and python_version < "4.0" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7") and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and (python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7") and (python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.8")
smmap==5.0.0; python_version >= "3.7"
sniffio==1.3.0; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.2"
snowballstemmer==2.2.0; python_version >= "3.6"
socketio-client-nexus==0.7.6
soupsieve==2.3.2.post1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
sparqlwrapper==2.0.0; python_version >= "3.7"
sphinx==4.5.0; python_version >= "3.6"
sphinxcontrib-applehelp==1.0.4; python_version >= "3.8"
sphinxcontrib-devhelp==1.0.2; python_version >= "3.6"
sphinxcontrib-htmlhelp==2.0.1; python_version >= "3.8"
sphinxcontrib-jsmath==1.0.1; python_version >= "3.6"
sphinxcontrib-qthelp==1.0.3; python_version >= "3.6"
sphinxcontrib-serializinghtml==1.1.5; python_version >= "3.6"
squarify==0.4.3
sseclient==0.0.27
stack-data==0.6.2; python_version >= "3.8"
statsmodels==0.13.2; python_version >= "3.7"
stevedore==4.1.1; python_version >= "3.8"
stocksera==0.1.21; python_version >= "3.6"
streamlit==1.17.0; (python_version >= "3.7" and python_full_version < "3.9.7") or (python_full_version > "3.9.7")
tabulate==0.9.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
@@ -274,24 +228,15 @@ textwrap3==0.9.2; python_version >= "3.7"
thepassiveinvestor==1.1.2
threadpoolctl==3.1.0; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8"
tinycss2==1.2.1; python_version >= "3.7"
tokenize-rt==4.2.1; python_full_version >= "3.6.1" and python_version >= "3.7"
tokenterminal==1.0.1
toml==0.10.2; python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0"
tomli==2.0.1; python_version < "3.11" and python_full_version >= "3.7.2" and python_version >= "3.8" and python_full_version <= "3.11.0a6"
tomlkit==0.11.6; python_version >= "3.6" and python_full_version >= "3.7.2"
toml==0.10.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7"
tomli==2.0.1; python_version >= "3.8"
toolz==0.12.0; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7")
tornado==6.2; python_version >= "3.8" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.8" and python_full_version < "4.0.0"
tornado==6.2; python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8"
tqdm==4.64.1; python_version >= "3.8" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.4.0"
tradingview-ta==3.3.0; python_version >= "3.6"
traitlets==5.9.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8"
types-python-dateutil==2.8.19.6
types-pytz==2021.3.8
types-pyyaml==6.0.12.4
types-requests==2.28.11.8
types-setuptools==57.4.18
types-six==1.16.21.4
types-urllib3==1.26.25.4
typing-extensions==4.4.0; python_full_version >= "3.7.2" and python_full_version < "4.0.0" and python_version < "3.9" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
traitlets==5.9.0; python_full_version >= "3.7.0" and python_version >= "3.8"
typing-extensions==4.4.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version < "3.9" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7")
tzdata==2022.7; python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or python_version >= "3.7" and python_full_version < "3.9.7" and platform_system == "Windows" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.7" and platform_system == "Windows"
tzlocal==4.2; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7"
ujson==5.7.0; python_version >= "3.7"
@@ -302,8 +247,6 @@ user-agent==0.1.10; python_version >= "3.8" and python_version < "4.0"
vadersentiment==3.3.2
validators==0.20.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.4"
valinvest==0.0.2; python_version >= "3.6"
vcrpy==4.2.1; python_version >= "3.7"
virtualenv==20.17.1; python_version >= "3.7"
voila==0.4.0; python_version >= "3.7"
watchdog==2.2.1; python_version >= "3.6"
wcwidth==0.2.6; python_full_version >= "3.6.2" and python_version >= "3.8"
@@ -312,7 +255,7 @@ websocket-client==1.5.0; python_version >= "3.8" and python_version < "4.0"
websockets==10.4; python_version >= "3.7"
widgetsnbextension==4.0.5; python_version >= "3.7"
win32-setctime==1.1.0; python_version >= "3.5" and python_full_version >= "3.7.0" and sys_platform == "win32"
wrapt==1.14.1; python_full_version >= "3.7.2" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7") and python_version >= "3.8" and python_version < "3.11"
wrapt==1.14.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8"
yarl==1.8.2; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0"
yfinance==0.2.9
zipp==3.12.0; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.10" or python_full_version > "3.9.7" and python_version >= "3.7" and python_version < "3.10"

View File

@@ -5,7 +5,7 @@ Portfolio loaded:
Tickers:
Categories:
file file that contains portfolio risk parameters
file file that contains portfolio risk parameters (use about for the parameter template)
> params specify and show portfolio risk parameters
Parameter file:

View File

@@ -1,4 +1,4 @@
Loading Daily data for TSLA with starting period 2020-02-03.
Loading Daily data for TSLA with starting period 2020-02-04.
Company Rating Price Target
Date
2023-02-06 Wedbush Morgan Securities Inc. BUY 225.000000

View File

@@ -1,4 +1,5 @@
# IMPORTATION STANDARD
import datetime
from pathlib import Path
# IMPORTATION THIRDPARTY
@@ -6,7 +7,11 @@ import pandas as pd
import pytest
# IMPORTATION INTERNAL
from openbb_terminal.helper_funcs import check_start_less_than_end, export_data
from openbb_terminal.helper_funcs import (
check_start_less_than_end,
export_data,
remove_timezone_from_dataframe,
)
# pylint: disable=E1101
# pylint: disable=W0603
@@ -107,3 +112,47 @@ def test_start_less_than_end():
assert check_start_less_than_end(None, "2022-01-01") is False
assert check_start_less_than_end("2022-01-02", None) is False
assert check_start_less_than_end(None, None) is False
@pytest.mark.parametrize(
"df, df_expected",
[
(
pd.DataFrame(
{
"date1": pd.date_range("2021-01-01", periods=5, tz="Europe/London"),
"date2": pd.date_range("2022-01-01", periods=5, tz="Europe/London"),
"value1": [1, 2, 3, 4, 5],
"value2": [6, 7, 8, 9, 10],
}
),
pd.DataFrame(
{
"date1": [
datetime.date(2021, 1, 1),
datetime.date(2021, 1, 2),
datetime.date(2021, 1, 3),
datetime.date(2021, 1, 4),
datetime.date(2021, 1, 5),
],
"date2": [
datetime.date(2022, 1, 1),
datetime.date(2022, 1, 2),
datetime.date(2022, 1, 3),
datetime.date(2022, 1, 4),
datetime.date(2022, 1, 5),
],
"value1": [1, 2, 3, 4, 5],
"value2": [6, 7, 8, 9, 10],
}
),
),
],
)
def test_remove_timezone_from_dataframe(df, df_expected):
# set date1 as index
df.set_index("date1", inplace=True)
df_expected.set_index("date1", inplace=True)
df_result = remove_timezone_from_dataframe(df)
assert df_result.equals(df_expected)

View File

@@ -26,7 +26,7 @@ Note that the Excel sheet requires the following columns:
- **Date** - The date the trade occurred
- **Name** - The name of the security
- **Type** - The type of the security. Use Cash/Stock/Crypto/ETF as appropriate
- **Type** - The type of the security. Use Stock/Crypto/ETF as appropriate
- **Price** - The price the security was added or removed at, on a per-unit
basis
- **Quantity** - How much of the security in question was added or removed

276
website/package-lock.json generated vendored
View File

@@ -14,7 +14,7 @@
"@docusaurus/plugin-content-docs": "^2.2.0",
"@docusaurus/preset-classic": "2.3.1",
"@mdx-js/react": "^1.6.22",
"@radix-ui/react-popover": "^1.0.2",
"@radix-ui/react-popover": "^1.0.3",
"clsx": "^1.2.1",
"prism-react-renderer": "^1.3.5",
"react": "^17.0.2",
@@ -5718,19 +5718,6 @@
"@floating-ui/core": "^0.7.3"
}
},
"node_modules/@floating-ui/react-dom": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz",
"integrity": "sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==",
"dependencies": {
"@floating-ui/dom": "^0.5.3",
"use-isomorphic-layout-effect": "^1.1.1"
},
"peerDependencies": {
"react": ">=16.8.0",
"react-dom": ">=16.8.0"
}
},
"node_modules/@hapi/hoek": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
@@ -6010,19 +5997,6 @@
"@babel/runtime": "^7.13.10"
}
},
"node_modules/@radix-ui/react-arrow": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz",
"integrity": "sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA==",
"dependencies": {
"@babel/runtime": "^7.13.10",
"@radix-ui/react-primitive": "1.0.1"
},
"peerDependencies": {
"react": "^16.8 || ^17.0 || ^18.0",
"react-dom": "^16.8 || ^17.0 || ^18.0"
}
},
"node_modules/@radix-ui/react-compose-refs": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz",
@@ -6034,17 +6008,6 @@
"react": "^16.8 || ^17.0 || ^18.0"
}
},
"node_modules/@radix-ui/react-context": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz",
"integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==",
"dependencies": {
"@babel/runtime": "^7.13.10"
},
"peerDependencies": {
"react": "^16.8 || ^17.0 || ^18.0"
}
},
"node_modules/@radix-ui/react-dismissable-layer": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.2.tgz",
@@ -6101,9 +6064,9 @@
}
},
"node_modules/@radix-ui/react-popover": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.2.tgz",
"integrity": "sha512-4tqZEl9w95R5mlZ/sFdgBnfhCBOEPepLIurBA5kt/qaAhldJ1tNQd0ngr0ET0AHbPotT4mwxMPr7a+MA/wbK0g==",
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.3.tgz",
"integrity": "sha512-YwedSukfWsyJs3/yP3yXUq44k4/JBe3jqU63Z8v2i19qZZ3dsx32oma17ztgclWPNuqp3A+Xa9UiDlZHyVX8Vg==",
"dependencies": {
"@babel/runtime": "^7.13.10",
"@radix-ui/primitive": "1.0.0",
@@ -6113,7 +6076,7 @@
"@radix-ui/react-focus-guards": "1.0.0",
"@radix-ui/react-focus-scope": "1.0.1",
"@radix-ui/react-id": "1.0.0",
"@radix-ui/react-popper": "1.0.1",
"@radix-ui/react-popper": "1.1.0",
"@radix-ui/react-portal": "1.0.1",
"@radix-ui/react-presence": "1.0.0",
"@radix-ui/react-primitive": "1.0.1",
@@ -6127,10 +6090,21 @@
"react-dom": "^16.8 || ^17.0 || ^18.0"
}
},
"node_modules/@radix-ui/react-popper": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.1.tgz",
"integrity": "sha512-J4Vj7k3k+EHNWgcKrE+BLlQfpewxA7Zd76h5I0bIa+/EqaIZ3DuwrbPj49O3wqN+STnXsBuxiHLiF0iU3yfovw==",
"node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-context": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz",
"integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==",
"dependencies": {
"@babel/runtime": "^7.13.10"
},
"peerDependencies": {
"react": "^16.8 || ^17.0 || ^18.0"
}
},
"node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-popper": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.0.tgz",
"integrity": "sha512-07U7jpI0dZcLRAxT7L9qs6HecSoPhDSJybF7mEGHJDBDv+ZoGCvIlva0s+WxMXwJEav+ckX3hAlXBtnHmuvlCQ==",
"dependencies": {
"@babel/runtime": "^7.13.10",
"@floating-ui/react-dom": "0.7.2",
@@ -6138,6 +6112,7 @@
"@radix-ui/react-compose-refs": "1.0.0",
"@radix-ui/react-context": "1.0.0",
"@radix-ui/react-primitive": "1.0.1",
"@radix-ui/react-use-callback-ref": "1.0.0",
"@radix-ui/react-use-layout-effect": "1.0.0",
"@radix-ui/react-use-rect": "1.0.0",
"@radix-ui/react-use-size": "1.0.0",
@@ -6148,6 +6123,56 @@
"react-dom": "^16.8 || ^17.0 || ^18.0"
}
},
"node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-popper/node_modules/@floating-ui/react-dom": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz",
"integrity": "sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==",
"dependencies": {
"@floating-ui/dom": "^0.5.3",
"use-isomorphic-layout-effect": "^1.1.1"
},
"peerDependencies": {
"react": ">=16.8.0",
"react-dom": ">=16.8.0"
}
},
"node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-arrow": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz",
"integrity": "sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA==",
"dependencies": {
"@babel/runtime": "^7.13.10",
"@radix-ui/react-primitive": "1.0.1"
},
"peerDependencies": {
"react": "^16.8 || ^17.0 || ^18.0",
"react-dom": "^16.8 || ^17.0 || ^18.0"
}
},
"node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-use-rect": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz",
"integrity": "sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==",
"dependencies": {
"@babel/runtime": "^7.13.10",
"@radix-ui/rect": "1.0.0"
},
"peerDependencies": {
"react": "^16.8 || ^17.0 || ^18.0"
}
},
"node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-use-size": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz",
"integrity": "sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==",
"dependencies": {
"@babel/runtime": "^7.13.10",
"@radix-ui/react-use-layout-effect": "1.0.0"
},
"peerDependencies": {
"react": "^16.8 || ^17.0 || ^18.0"
}
},
"node_modules/@radix-ui/react-portal": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.1.tgz",
@@ -6246,30 +6271,6 @@
"react": "^16.8 || ^17.0 || ^18.0"
}
},
"node_modules/@radix-ui/react-use-rect": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz",
"integrity": "sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==",
"dependencies": {
"@babel/runtime": "^7.13.10",
"@radix-ui/rect": "1.0.0"
},
"peerDependencies": {
"react": "^16.8 || ^17.0 || ^18.0"
}
},
"node_modules/@radix-ui/react-use-size": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz",
"integrity": "sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==",
"dependencies": {
"@babel/runtime": "^7.13.10",
"@radix-ui/react-use-layout-effect": "1.0.0"
},
"peerDependencies": {
"react": "^16.8 || ^17.0 || ^18.0"
}
},
"node_modules/@radix-ui/rect": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.0.tgz",
@@ -20542,15 +20543,6 @@
"@floating-ui/core": "^0.7.3"
}
},
"@floating-ui/react-dom": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz",
"integrity": "sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==",
"requires": {
"@floating-ui/dom": "^0.5.3",
"use-isomorphic-layout-effect": "^1.1.1"
}
},
"@hapi/hoek": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
@@ -20773,15 +20765,6 @@
"@babel/runtime": "^7.13.10"
}
},
"@radix-ui/react-arrow": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz",
"integrity": "sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA==",
"requires": {
"@babel/runtime": "^7.13.10",
"@radix-ui/react-primitive": "1.0.1"
}
},
"@radix-ui/react-compose-refs": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz",
@@ -20790,14 +20773,6 @@
"@babel/runtime": "^7.13.10"
}
},
"@radix-ui/react-context": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz",
"integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==",
"requires": {
"@babel/runtime": "^7.13.10"
}
},
"@radix-ui/react-dismissable-layer": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.2.tgz",
@@ -20840,9 +20815,9 @@
}
},
"@radix-ui/react-popover": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.2.tgz",
"integrity": "sha512-4tqZEl9w95R5mlZ/sFdgBnfhCBOEPepLIurBA5kt/qaAhldJ1tNQd0ngr0ET0AHbPotT4mwxMPr7a+MA/wbK0g==",
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.3.tgz",
"integrity": "sha512-YwedSukfWsyJs3/yP3yXUq44k4/JBe3jqU63Z8v2i19qZZ3dsx32oma17ztgclWPNuqp3A+Xa9UiDlZHyVX8Vg==",
"requires": {
"@babel/runtime": "^7.13.10",
"@radix-ui/primitive": "1.0.0",
@@ -20852,7 +20827,7 @@
"@radix-ui/react-focus-guards": "1.0.0",
"@radix-ui/react-focus-scope": "1.0.1",
"@radix-ui/react-id": "1.0.0",
"@radix-ui/react-popper": "1.0.1",
"@radix-ui/react-popper": "1.1.0",
"@radix-ui/react-portal": "1.0.1",
"@radix-ui/react-presence": "1.0.0",
"@radix-ui/react-primitive": "1.0.1",
@@ -20860,23 +20835,72 @@
"@radix-ui/react-use-controllable-state": "1.0.0",
"aria-hidden": "^1.1.1",
"react-remove-scroll": "2.5.5"
}
},
"@radix-ui/react-popper": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.0.1.tgz",
"integrity": "sha512-J4Vj7k3k+EHNWgcKrE+BLlQfpewxA7Zd76h5I0bIa+/EqaIZ3DuwrbPj49O3wqN+STnXsBuxiHLiF0iU3yfovw==",
"requires": {
"@babel/runtime": "^7.13.10",
"@floating-ui/react-dom": "0.7.2",
"@radix-ui/react-arrow": "1.0.1",
"@radix-ui/react-compose-refs": "1.0.0",
"@radix-ui/react-context": "1.0.0",
"@radix-ui/react-primitive": "1.0.1",
"@radix-ui/react-use-layout-effect": "1.0.0",
"@radix-ui/react-use-rect": "1.0.0",
"@radix-ui/react-use-size": "1.0.0",
"@radix-ui/rect": "1.0.0"
},
"dependencies": {
"@radix-ui/react-context": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.0.tgz",
"integrity": "sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==",
"requires": {
"@babel/runtime": "^7.13.10"
}
},
"@radix-ui/react-popper": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.0.tgz",
"integrity": "sha512-07U7jpI0dZcLRAxT7L9qs6HecSoPhDSJybF7mEGHJDBDv+ZoGCvIlva0s+WxMXwJEav+ckX3hAlXBtnHmuvlCQ==",
"requires": {
"@babel/runtime": "^7.13.10",
"@floating-ui/react-dom": "0.7.2",
"@radix-ui/react-arrow": "1.0.1",
"@radix-ui/react-compose-refs": "1.0.0",
"@radix-ui/react-context": "1.0.0",
"@radix-ui/react-primitive": "1.0.1",
"@radix-ui/react-use-callback-ref": "1.0.0",
"@radix-ui/react-use-layout-effect": "1.0.0",
"@radix-ui/react-use-rect": "1.0.0",
"@radix-ui/react-use-size": "1.0.0",
"@radix-ui/rect": "1.0.0"
},
"dependencies": {
"@floating-ui/react-dom": {
"version": "0.7.2",
"resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-0.7.2.tgz",
"integrity": "sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==",
"requires": {
"@floating-ui/dom": "^0.5.3",
"use-isomorphic-layout-effect": "^1.1.1"
}
},
"@radix-ui/react-arrow": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz",
"integrity": "sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA==",
"requires": {
"@babel/runtime": "^7.13.10",
"@radix-ui/react-primitive": "1.0.1"
}
},
"@radix-ui/react-use-rect": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz",
"integrity": "sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==",
"requires": {
"@babel/runtime": "^7.13.10",
"@radix-ui/rect": "1.0.0"
}
},
"@radix-ui/react-use-size": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz",
"integrity": "sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==",
"requires": {
"@babel/runtime": "^7.13.10",
"@radix-ui/react-use-layout-effect": "1.0.0"
}
}
}
}
}
},
"@radix-ui/react-portal": {
@@ -20950,24 +20974,6 @@
"@babel/runtime": "^7.13.10"
}
},
"@radix-ui/react-use-rect": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz",
"integrity": "sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==",
"requires": {
"@babel/runtime": "^7.13.10",
"@radix-ui/rect": "1.0.0"
}
},
"@radix-ui/react-use-size": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz",
"integrity": "sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==",
"requires": {
"@babel/runtime": "^7.13.10",
"@radix-ui/react-use-layout-effect": "1.0.0"
}
},
"@radix-ui/rect": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.0.tgz",

View File

@@ -22,7 +22,7 @@
"@docusaurus/plugin-content-docs": "^2.2.0",
"@docusaurus/preset-classic": "2.3.1",
"@mdx-js/react": "^1.6.22",
"@radix-ui/react-popover": "^1.0.2",
"@radix-ui/react-popover": "^1.0.3",
"clsx": "^1.2.1",
"prism-react-renderer": "^1.3.5",
"react": "^17.0.2",