mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 12:40:35 +00:00
improve usage of timezone in terminal (#1126)
* improve usage of timezone in terminal * lint * update dependencies * address James review comments * remove seconds from time on cmd line * skip test
This commit is contained in:
committed by
GitHub
parent
8f8147c3af
commit
d5d581b59b
@@ -19,6 +19,9 @@ USE_COLOR = strtobool(os.getenv("GTFF_USE_COLOR", "True"))
|
||||
# Select console flair (choose from config_terminal.py list)
|
||||
USE_FLAIR = os.getenv("GTFF_USE_FLAIR") or "stars"
|
||||
|
||||
# Add date and time to command line
|
||||
USE_DATETIME = strtobool(os.getenv("GTFF_USE_DATETIME", "True"))
|
||||
|
||||
# Enable interactive matplotlib mode
|
||||
USE_ION = strtobool(os.getenv("GTFF_USE_ION", "True"))
|
||||
|
||||
|
||||
@@ -4,14 +4,14 @@ import argparse
|
||||
import functools
|
||||
import logging
|
||||
from typing import List
|
||||
from datetime import datetime, timedelta, time as Time
|
||||
from datetime import datetime, timedelta
|
||||
import os
|
||||
import random
|
||||
import re
|
||||
import sys
|
||||
import pytz
|
||||
import pandas as pd
|
||||
from rich.table import Table
|
||||
from pytz import timezone
|
||||
import iso8601
|
||||
|
||||
import matplotlib
|
||||
@@ -362,26 +362,6 @@ def us_market_holidays(years) -> list:
|
||||
return valid_holidays
|
||||
|
||||
|
||||
def b_is_stock_market_open() -> bool:
|
||||
"""Checks if the stock market is open"""
|
||||
# Get current US time
|
||||
now = datetime.now(timezone("US/Eastern"))
|
||||
# Check if it is a weekend
|
||||
if now.date().weekday() > 4:
|
||||
return False
|
||||
# Check if it is a holiday
|
||||
if now.strftime("%Y-%m-%d") in us_market_holidays(now.year):
|
||||
return False
|
||||
# Check if it hasn't open already
|
||||
if now.time() < Time(hour=9, minute=30, second=0):
|
||||
return False
|
||||
# Check if it has already closed
|
||||
if now.time() > Time(hour=16, minute=0, second=0):
|
||||
return False
|
||||
# Otherwise, Stock Market is open!
|
||||
return True
|
||||
|
||||
|
||||
def long_number_format(num) -> str:
|
||||
"""Format a long number"""
|
||||
if isinstance(num, float):
|
||||
@@ -704,11 +684,88 @@ def get_flair() -> str:
|
||||
}
|
||||
|
||||
if flair.get(gtff.USE_FLAIR):
|
||||
if gtff.USE_DATETIME and get_user_timezone_or_invalid() != "INVALID":
|
||||
dtime = datetime.now(pytz.timezone(get_user_timezone())).strftime(
|
||||
"%Y %b %d, %H:%m"
|
||||
)
|
||||
return f"{dtime} {flair[gtff.USE_FLAIR]}"
|
||||
return flair[gtff.USE_FLAIR]
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
def is_timezone_valid(user_tz: str) -> bool:
|
||||
"""Check whether user timezone is valid
|
||||
|
||||
Parameters
|
||||
----------
|
||||
user_tz: str
|
||||
Timezone to check for validity
|
||||
|
||||
Returns
|
||||
-------
|
||||
bool
|
||||
True if timezone provided is valid
|
||||
"""
|
||||
return user_tz in pytz.all_timezones
|
||||
|
||||
|
||||
def get_user_timezone() -> str:
|
||||
"""Get user timezone if it is a valid one
|
||||
|
||||
Returns
|
||||
-------
|
||||
str
|
||||
user timezone based on timezone.gst file
|
||||
"""
|
||||
filename = os.path.join(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"timezone.gst",
|
||||
)
|
||||
if os.path.isfile(filename):
|
||||
with open(filename) as f:
|
||||
return f.read()
|
||||
return ""
|
||||
|
||||
|
||||
def get_user_timezone_or_invalid() -> str:
|
||||
"""Get user timezone if it is a valid one
|
||||
|
||||
Returns
|
||||
-------
|
||||
str
|
||||
user timezone based on timezone.gst file or INVALID
|
||||
"""
|
||||
user_tz = get_user_timezone()
|
||||
if is_timezone_valid(user_tz):
|
||||
return f"{user_tz}"
|
||||
return "INVALID"
|
||||
|
||||
|
||||
def replace_user_timezone(user_tz: str) -> None:
|
||||
"""Replace user timezone
|
||||
|
||||
Parameters
|
||||
----------
|
||||
user_tz: str
|
||||
User timezone to set
|
||||
"""
|
||||
filename = os.path.join(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"timezone.gst",
|
||||
)
|
||||
if os.path.isfile(filename):
|
||||
with open(filename, "w") as f:
|
||||
if is_timezone_valid(user_tz):
|
||||
if f.write(user_tz):
|
||||
print("Timezone successfully updated", "\n")
|
||||
else:
|
||||
print("Timezone not set successfully", "\n")
|
||||
else:
|
||||
print("Timezone selected is not valid", "\n")
|
||||
else:
|
||||
print("timezone.gst file does not exist", "\n")
|
||||
|
||||
|
||||
def str_to_bool(value) -> bool:
|
||||
"""Match a string to a boolean value"""
|
||||
if isinstance(value, bool):
|
||||
|
||||
@@ -17,7 +17,6 @@ from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.common import newsapi_view
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
EXPORT_ONLY_RAW_DATA_ALLOWED,
|
||||
b_is_stock_market_open,
|
||||
check_positive,
|
||||
export_data,
|
||||
get_flair,
|
||||
@@ -102,6 +101,7 @@ class StocksController:
|
||||
self.ticker = ticker
|
||||
self.start = ""
|
||||
self.interval = "1440min"
|
||||
self.add_info = stocks_helper.additional_info_about_ticker("")
|
||||
if queue:
|
||||
self.queue = queue
|
||||
else:
|
||||
@@ -109,7 +109,6 @@ class StocksController:
|
||||
|
||||
def print_help(self):
|
||||
"""Print help"""
|
||||
|
||||
s_intraday = (f"Intraday {self.interval}", "Daily")[self.interval == "1440min"]
|
||||
if self.ticker and self.start:
|
||||
stock_text = f"{s_intraday} Stock: {self.ticker} (from {self.start.strftime('%Y-%m-%d')})"
|
||||
@@ -119,11 +118,11 @@ class StocksController:
|
||||
reset_style_if_no_ticker = Style.RESET_ALL if not self.ticker else ""
|
||||
help_text = f"""
|
||||
search search a specific stock ticker for analysis
|
||||
load load a specific stock ticker for analysis
|
||||
|
||||
{stock_text}
|
||||
Market {('CLOSED', 'OPEN')[b_is_stock_market_open()]}
|
||||
load load a specific stock ticker and additional info for analysis
|
||||
{dim_if_no_ticker}
|
||||
{stock_text}
|
||||
{self.add_info}
|
||||
|
||||
quote view the current price for a specific stock ticker
|
||||
candle view a candle chart for a specific stock ticker
|
||||
news latest news of the company [News API]
|
||||
@@ -220,6 +219,11 @@ Stocks Menus:
|
||||
|
||||
def call_reset(self, _):
|
||||
"""Process reset command"""
|
||||
if self.ticker:
|
||||
if self.suffix:
|
||||
self.queue.insert(0, f"load {self.ticker}.{self.suffix}")
|
||||
else:
|
||||
self.queue.insert(0, f"load {self.ticker}")
|
||||
self.queue.insert(0, "stocks")
|
||||
self.queue.insert(0, "reset")
|
||||
self.queue.insert(0, "quit")
|
||||
@@ -341,6 +345,10 @@ Stocks Menus:
|
||||
)
|
||||
if not df_stock_candidate.empty:
|
||||
self.stock = df_stock_candidate
|
||||
self.add_info = stocks_helper.additional_info_about_ticker(
|
||||
ns_parser.ticker
|
||||
)
|
||||
print(self.add_info)
|
||||
if "." in ns_parser.ticker:
|
||||
self.ticker, self.suffix = ns_parser.ticker.upper().split(".")
|
||||
else:
|
||||
@@ -352,6 +360,7 @@ Stocks Menus:
|
||||
else:
|
||||
self.start = ns_parser.start
|
||||
self.interval = f"{ns_parser.interval}min"
|
||||
print("")
|
||||
|
||||
def call_quote(self, other_args: List[str]):
|
||||
"""Process quote command"""
|
||||
|
||||
@@ -8,6 +8,7 @@ from typing import List, Union
|
||||
import matplotlib.pyplot as plt
|
||||
import mplfinance as mpf
|
||||
import pandas as pd
|
||||
import pandas_market_calendars as mcal
|
||||
import plotly.graph_objects as go
|
||||
import pyEX
|
||||
import pytz
|
||||
@@ -25,6 +26,7 @@ from gamestonk_terminal.helper_funcs import (
|
||||
parse_known_args_and_warn,
|
||||
plot_autoscale,
|
||||
try_except,
|
||||
get_user_timezone_or_invalid,
|
||||
)
|
||||
|
||||
# pylint: disable=no-member,too-many-branches,C0302
|
||||
@@ -259,7 +261,7 @@ def load(
|
||||
|
||||
print(
|
||||
f"Loading {s_intraday} {ticker.upper()} stock "
|
||||
f"with starting period {s_start.strftime('%Y-%m-%d')} for analysis.\n"
|
||||
f"with starting period {s_start.strftime('%Y-%m-%d')} for analysis."
|
||||
)
|
||||
|
||||
return df_stock_candidate
|
||||
@@ -644,10 +646,8 @@ def find_trendline(
|
||||
----------
|
||||
df_data : DataFrame
|
||||
The stock ticker data frame with at least date_id, y_key columns.
|
||||
|
||||
y_key : str
|
||||
Column name to base the trend line on.
|
||||
|
||||
high_low: str, optional
|
||||
Either "high" or "low". High is the default.
|
||||
|
||||
@@ -691,3 +691,78 @@ def find_trendline(
|
||||
df_data[f"{y_key}_trend"] = reg[0] * df_data["date_id"] + reg[1]
|
||||
|
||||
return df_data
|
||||
|
||||
|
||||
def additional_info_about_ticker(ticker: str) -> str:
|
||||
"""Additional information about trading the ticker such as exchange, currency, timezone and market status
|
||||
|
||||
Parameters
|
||||
----------
|
||||
ticker : str
|
||||
The stock ticker to extract if stock market is open or not
|
||||
|
||||
Returns
|
||||
-------
|
||||
str
|
||||
Additional information about trading the ticker
|
||||
"""
|
||||
extra_info = ""
|
||||
if ticker:
|
||||
ticker_info = yf.Ticker(ticker).info
|
||||
|
||||
extra_info += "\nDatetime: "
|
||||
if (
|
||||
"exchangeTimezoneName" in ticker_info
|
||||
and ticker_info["exchangeTimezoneName"]
|
||||
):
|
||||
dtime = datetime.now(
|
||||
pytz.timezone(ticker_info["exchangeTimezoneName"])
|
||||
).strftime("%Y %b %d %H:%m:%S")
|
||||
extra_info += dtime
|
||||
extra_info += "\nTimezone: "
|
||||
extra_info += ticker_info["exchangeTimezoneName"]
|
||||
else:
|
||||
extra_info += "\nDatetime: "
|
||||
extra_info += "\nTimezone: "
|
||||
|
||||
extra_info += "\nExchange: "
|
||||
if "exchange" in ticker_info and ticker_info["exchange"]:
|
||||
exchange_name = ticker_info["exchange"]
|
||||
extra_info += exchange_name
|
||||
exchange_name = exchange_name.replace("NMS", "NASDAQ")
|
||||
|
||||
extra_info += "\nCurrency: "
|
||||
if "currency" in ticker_info and ticker_info["currency"]:
|
||||
extra_info += ticker_info["currency"]
|
||||
|
||||
extra_info += "\nMarket: "
|
||||
if "exchange" in ticker_info and ticker_info["exchange"]:
|
||||
if exchange_name in mcal.get_calendar_names():
|
||||
calendar = mcal.get_calendar(exchange_name)
|
||||
sch = calendar.schedule(
|
||||
start_date=(datetime.now() - timedelta(days=3)).strftime(
|
||||
"%Y-%m-%d"
|
||||
),
|
||||
end_date=(datetime.now() + timedelta(days=3)).strftime("%Y-%m-%d"),
|
||||
)
|
||||
user_tz = get_user_timezone_or_invalid()
|
||||
if user_tz != "INVALID":
|
||||
is_market_open = calendar.open_at_time(
|
||||
sch,
|
||||
pd.Timestamp(
|
||||
datetime.now().strftime("%Y-%m-%d %H:%M"), tz=user_tz
|
||||
),
|
||||
)
|
||||
if is_market_open:
|
||||
extra_info += "OPEN"
|
||||
else:
|
||||
extra_info += "CLOSED"
|
||||
|
||||
else:
|
||||
extra_info += "\nDatetime: "
|
||||
extra_info += "\nTimezone: "
|
||||
extra_info += "\nExchange: "
|
||||
extra_info += "\nMarket: "
|
||||
extra_info += "\nCurrency: "
|
||||
|
||||
return extra_info
|
||||
|
||||
1
gamestonk_terminal/timezone.gst
vendored
Normal file
1
gamestonk_terminal/timezone.gst
vendored
Normal file
@@ -0,0 +1 @@
|
||||
America/New_York
|
||||
149
poetry.lock
generated
vendored
149
poetry.lock
generated
vendored
@@ -463,7 +463,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||
|
||||
[[package]]
|
||||
name = "cvxpy"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "A domain-specific language for modeling convex optimization problems in Python."
|
||||
category = "main"
|
||||
optional = false
|
||||
@@ -684,6 +684,26 @@ category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[[package]]
|
||||
name = "exchange-calendars"
|
||||
version = "3.5"
|
||||
description = "exchange_calendars is a Python library with securities exchange calendars"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
|
||||
[package.dependencies]
|
||||
korean_lunar_calendar = "*"
|
||||
numpy = "*"
|
||||
pandas = ">=1.1"
|
||||
pyluach = "*"
|
||||
python-dateutil = "*"
|
||||
pytz = "*"
|
||||
toolz = "*"
|
||||
|
||||
[package.extras]
|
||||
dev = ["flake8", "pytest", "pytest-benchmark", "pytest-xdist", "pip-tools", "hypothesis"]
|
||||
|
||||
[[package]]
|
||||
name = "fear-greed-index"
|
||||
version = "0.1.3"
|
||||
@@ -1938,6 +1958,20 @@ lxml = "*"
|
||||
pandas = ">=0.23"
|
||||
requests = ">=2.19.0"
|
||||
|
||||
[[package]]
|
||||
name = "pandas-market-calendars"
|
||||
version = "3.2"
|
||||
description = "Market and exchange trading calendars for pandas"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.7.0"
|
||||
|
||||
[package.dependencies]
|
||||
exchange-calendars = ">=3.3"
|
||||
pandas = ">=0.18"
|
||||
python-dateutil = "*"
|
||||
pytz = "*"
|
||||
|
||||
[[package]]
|
||||
name = "pandas-ta"
|
||||
version = "0.3.14b"
|
||||
@@ -2367,6 +2401,14 @@ platformdirs = ">=2.2.0"
|
||||
toml = ">=0.9.2"
|
||||
typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
|
||||
|
||||
[[package]]
|
||||
name = "pyluach"
|
||||
version = "1.3.0"
|
||||
description = "Pyluach is a Python package for manipulating Hebrew dates, Gregorian-Hebrew calendar conversions, getting the weekly parsha, and other Jewish calendar related calculations."
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.4"
|
||||
|
||||
[[package]]
|
||||
name = "pymeeus"
|
||||
version = "0.5.11"
|
||||
@@ -2593,7 +2635,7 @@ tzdata = {version = "*", markers = "python_version >= \"3.6\""}
|
||||
|
||||
[[package]]
|
||||
name = "pyupgrade"
|
||||
version = "2.30.1"
|
||||
version = "2.31.0"
|
||||
description = "A tool to automatically upgrade syntax for newer versions."
|
||||
category = "dev"
|
||||
optional = false
|
||||
@@ -2771,7 +2813,7 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "rich"
|
||||
version = "10.16.1"
|
||||
version = "10.16.2"
|
||||
description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal"
|
||||
category = "main"
|
||||
optional = false
|
||||
@@ -2855,7 +2897,7 @@ pyobjc-framework-Cocoa = {version = "*", markers = "sys_platform == \"darwin\""}
|
||||
|
||||
[[package]]
|
||||
name = "scs"
|
||||
version = "3.0.0"
|
||||
version = "3.0.1"
|
||||
description = "scs: splitting conic solver"
|
||||
category = "main"
|
||||
optional = false
|
||||
@@ -3352,6 +3394,14 @@ category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[[package]]
|
||||
name = "toolz"
|
||||
version = "0.11.2"
|
||||
description = "List processing tools and functional utilities"
|
||||
category = "dev"
|
||||
optional = false
|
||||
python-versions = ">=3.5"
|
||||
|
||||
[[package]]
|
||||
name = "tornado"
|
||||
version = "6.1"
|
||||
@@ -3570,7 +3620,7 @@ yarl = {version = "*", markers = "python_version >= \"3.6\""}
|
||||
|
||||
[[package]]
|
||||
name = "virtualenv"
|
||||
version = "20.12.0"
|
||||
version = "20.13.0"
|
||||
description = "Virtual Python Environment builder"
|
||||
category = "dev"
|
||||
optional = false
|
||||
@@ -3712,7 +3762,7 @@ prediction = ["tensorflow"]
|
||||
[metadata]
|
||||
lock-version = "1.1"
|
||||
python-versions = "^3.8,<3.10"
|
||||
content-hash = "1d15aef6409a8e00f1570f98276997208c7ceb877cc7a611101fc8720b611a4e"
|
||||
content-hash = "a3cf2a88480398985f7a1009d8e01d90cd8363597a7813b40a53b2f211f9087b"
|
||||
|
||||
[metadata.files]
|
||||
absl-py = [
|
||||
@@ -4057,19 +4107,22 @@ cssselect = [
|
||||
{file = "cssselect-1.1.0.tar.gz", hash = "sha256:f95f8dedd925fd8f54edb3d2dfb44c190d9d18512377d3c1e2388d16126879bc"},
|
||||
]
|
||||
cvxpy = [
|
||||
{file = "cvxpy-1.1.17-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f612f2a07550eaf286dc79ddbafde74504d10e218d5efab0e8e4c022b97d90b5"},
|
||||
{file = "cvxpy-1.1.17-cp36-cp36m-manylinux_2_24_x86_64.whl", hash = "sha256:8af6aaae658471f05856555847363e68140169f164c5b0b184e85bc296b69a20"},
|
||||
{file = "cvxpy-1.1.17-cp36-cp36m-win_amd64.whl", hash = "sha256:4fec0b03c2b995d6191b9176f51b1f1fdd057c89d5b5ca12ef4263ad19214a03"},
|
||||
{file = "cvxpy-1.1.17-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6ae101311b28a9e7c501ff6aefb03c588d5cce6803865b6df1bfbd80b969f9f8"},
|
||||
{file = "cvxpy-1.1.17-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:5d217c25e970c2f2a55ee607822823e91aaa07522913f7c61c7f9d4d0d1de885"},
|
||||
{file = "cvxpy-1.1.17-cp37-cp37m-win_amd64.whl", hash = "sha256:8269bf471f5e015cec6289dfad64e5f7c50e7f35d2d0823490a4c3ea278f1a20"},
|
||||
{file = "cvxpy-1.1.17-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1fa6768bcefe4b5c8e413e20547f914b8e3c908f06fc833a003dde0ea1aeb56d"},
|
||||
{file = "cvxpy-1.1.17-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:472c1fb6568a7bedc874f10b234d569cd16290fb9467dc2768d06dfa1c2dbc7f"},
|
||||
{file = "cvxpy-1.1.17-cp38-cp38-win_amd64.whl", hash = "sha256:c0f23c57c4afe9ab5afa9bf408d8b0c8ffc3c8c57d54e81ab56b7dfe0bf9c34b"},
|
||||
{file = "cvxpy-1.1.17-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:06136af30d1ea605ca8093a8664edc8f963155a8765214a430973259450b489e"},
|
||||
{file = "cvxpy-1.1.17-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:ea4381c55dd4f7c0a140a59dfa777c7bb09d6fa513d14a7f5381948d1540b966"},
|
||||
{file = "cvxpy-1.1.17-cp39-cp39-win_amd64.whl", hash = "sha256:cdd9cfb864bcae5233a52fa4060bbeb7c81b29a23d82acafa071e372b23f6f0b"},
|
||||
{file = "cvxpy-1.1.17.tar.gz", hash = "sha256:3397d3b89d770ea9f0fc359b1c9b3afede6a0d3bea1cff20e2653b13451cdb8a"},
|
||||
{file = "cvxpy-1.1.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80018d9a4478253cc27d6d87677c4ba35908bf52e71a94e4beba5639c39f283d"},
|
||||
{file = "cvxpy-1.1.18-cp310-cp310-manylinux_2_24_x86_64.whl", hash = "sha256:d3c35f47032ba15af0ae5b7d4b44ed8dd287e27101f1a264295dd4885f8aea70"},
|
||||
{file = "cvxpy-1.1.18-cp310-cp310-win_amd64.whl", hash = "sha256:20b9f214f092ff5dec8e8b56ddb365690d8e02f6bd005ee9b59367150e3efd05"},
|
||||
{file = "cvxpy-1.1.18-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d853b73aca9223901b1de4dcd8c71d9732e7d38e915008956aa13fa2920d2652"},
|
||||
{file = "cvxpy-1.1.18-cp36-cp36m-manylinux_2_24_x86_64.whl", hash = "sha256:254683742bcd4427eaa17ca44675b540690e043782d467c4c68d1d4ef003c062"},
|
||||
{file = "cvxpy-1.1.18-cp36-cp36m-win_amd64.whl", hash = "sha256:6d2dd80550b9ab5f36a3961c64b51d70f364bd375565400534af65b5cf590787"},
|
||||
{file = "cvxpy-1.1.18-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e634c5afa8d4c7db9691d2fb9f982fcf9be41bf3fb8c781e47816fa290acbdbb"},
|
||||
{file = "cvxpy-1.1.18-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:d84fb6de19c998a4db8e442d2d5d5c155b983ca4f1833fd79fb6ad47c092f349"},
|
||||
{file = "cvxpy-1.1.18-cp37-cp37m-win_amd64.whl", hash = "sha256:d21d81ab76f6fae44090c19b9a802e42e8af440d9a505be892c1e6766621e4a6"},
|
||||
{file = "cvxpy-1.1.18-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ec5371c339cd35cb47fc8e9f7e6dff22e20612fdfa6b17dc508fc513130337ba"},
|
||||
{file = "cvxpy-1.1.18-cp38-cp38-manylinux_2_24_x86_64.whl", hash = "sha256:2699db1cc889fd2e0ea459f022866fcc1182241f4520c5550ca5136ef06c5246"},
|
||||
{file = "cvxpy-1.1.18-cp38-cp38-win_amd64.whl", hash = "sha256:022c8d9c82d2f00535e1d08761e88aa5c1729ee685dfb2ea60465693f54550c1"},
|
||||
{file = "cvxpy-1.1.18-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f82ca609e34577062940d5c32bc1f687fcf83d39ca92ec0d04fb1f290b43355"},
|
||||
{file = "cvxpy-1.1.18-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:569f7298539a2bd8704209628af11ecf1bca0cff2d5e27c46b57ffea921a01cf"},
|
||||
{file = "cvxpy-1.1.18-cp39-cp39-win_amd64.whl", hash = "sha256:2eb079877d23f03494141102d6cf9d3139edf5e1dc07bfa3f767f4c79e837ecb"},
|
||||
{file = "cvxpy-1.1.18.tar.gz", hash = "sha256:5baefe1f2ed6937749b293586c6ce4f42ed30e7890223f7661ccb2bb7df70bef"},
|
||||
]
|
||||
cycler = [
|
||||
{file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"},
|
||||
@@ -4199,13 +4252,24 @@ docutils = [
|
||||
{file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"},
|
||||
]
|
||||
ecos = [
|
||||
{file = "ecos-2.0.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:daddb8c86bbf9d8ddd8143de4ea1c49e348f06965e62a6af606428615e5383de"},
|
||||
{file = "ecos-2.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:301e7243cdb4fd5554ea31f353a6ef579b053ed841e341b26fea0046688770b5"},
|
||||
{file = "ecos-2.0.8-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:425bdcbe56f6439b80f04771933bb1a0b9bd9dd4b0c793c5a8fc163aed90f42f"},
|
||||
{file = "ecos-2.0.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6800afed16f7948f855acf971caa31e0d521c8a0e657a38b491d629f5920d51d"},
|
||||
{file = "ecos-2.0.8-cp310-cp310-win_amd64.whl", hash = "sha256:6112488f6dcc0b20a8b48d34697990c9151dc872031a95900acac01876dc0d89"},
|
||||
{file = "ecos-2.0.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f87d00e55c660c4a832bbc2ff2737fb0692416da1395602b902131db7f009bc6"},
|
||||
{file = "ecos-2.0.8-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:642df202f99366c757f08661219f900f5fc2a52c92763d33d6a2f03870cca5d1"},
|
||||
{file = "ecos-2.0.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:53c66b39aaa1f0b81fa4d53a465ecd70df5bdbe46b5501fadbbc21b914e7684c"},
|
||||
{file = "ecos-2.0.8-cp36-cp36m-manylinux_2_24_x86_64.whl", hash = "sha256:5cbee91c94c57652b539f3bc08e6a1e3bd83001563ac714c48e3f6aa71c87dd5"},
|
||||
{file = "ecos-2.0.8-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6ff997f5159f3d5006fa6ea3e4ad021ed254d17789e74d6c617b77d2282ea865"},
|
||||
{file = "ecos-2.0.8-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:9f13e49236d04c0fbd470c0a09d794fef1b3b26414199d1375902e5d3a44ff9f"},
|
||||
{file = "ecos-2.0.8-cp36-cp36m-win_amd64.whl", hash = "sha256:5aabb2455cf71431565343ce89ad2cbe26bf3c48fbc25bdf4bd58d024b2760d7"},
|
||||
{file = "ecos-2.0.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:99dfdc91b228ab274ad34b7b1fa852baf3c16e75ac27559dc285d630e77fdd0c"},
|
||||
{file = "ecos-2.0.8-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:f4b19afb3c3820252876d442a2dabf45bb1ee6c543e4032d9889cc991e3f81ce"},
|
||||
{file = "ecos-2.0.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:98f56db0ceee6670a2c1a7b819b1b52e1b5a40021745ff69274eea06017671ac"},
|
||||
{file = "ecos-2.0.8-cp37-cp37m-manylinux_2_24_x86_64.whl", hash = "sha256:f5fc6534ec6bd685663cf441160bfdd3273cd7fa8151855e82b433f1bb5cfbaf"},
|
||||
{file = "ecos-2.0.8-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:1144df5be066e1a3f062a6980b990d7c1521cd9756ee33d29b24c6e74f9d40e0"},
|
||||
{file = "ecos-2.0.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:acb04a59091d6ffcd3a13264787dc35d33f0fdbfa43a4971bcb5f80f40201b03"},
|
||||
{file = "ecos-2.0.8-cp37-cp37m-win_amd64.whl", hash = "sha256:23686273b2b605971f390a78b6e6fa5d330f082483f681b144c318eaf4ef7861"},
|
||||
{file = "ecos-2.0.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fb47cd6680f28eee7eaaf93d25fa5f1446d2ef9840fa4af6ea1971c229ecbfdc"},
|
||||
{file = "ecos-2.0.8-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:539329054b2af511dabe1f39b3f5aac3d2b4319bb6c9efeacd8c5dd71a3845b8"},
|
||||
@@ -4213,7 +4277,10 @@ ecos = [
|
||||
{file = "ecos-2.0.8-cp38-cp38-win_amd64.whl", hash = "sha256:0b93020d6ab7ca50f144e1391ae0a9d2f9c193746cb1e7eb79179bdd8393c2d6"},
|
||||
{file = "ecos-2.0.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a1be3894962b3a0dc97266e13fbb6a749db1e78a6991f6631e436ec5b3836b7e"},
|
||||
{file = "ecos-2.0.8-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:0310f9cec0262b2a4bb5bad98f1c47afbca5f42a894059a0cbbea2ed93165db5"},
|
||||
{file = "ecos-2.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:6bc3356c7503e4b4ee530248ecaa02f4b75301a376808f9edc3534b67338dc6f"},
|
||||
{file = "ecos-2.0.8-cp39-cp39-manylinux_2_24_x86_64.whl", hash = "sha256:252a2b0873a730ae6e56f66349667d61202a9cf8a326164b4f9466a55d971f26"},
|
||||
{file = "ecos-2.0.8-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ed7c80b3da2e1a30f6120be48da8e244e221a703982944222a456f11e9d43aef"},
|
||||
{file = "ecos-2.0.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b67f5d9e3c0d1e09c80e49cb39273e0e92f46fbfcf0d6877d3e6884cdbf21cf6"},
|
||||
{file = "ecos-2.0.8-cp39-cp39-win_amd64.whl", hash = "sha256:980442422f99a766be6b625904f772d792126aba0e5889eefcd3391a6d2ef2a8"},
|
||||
{file = "ecos-2.0.8.tar.gz", hash = "sha256:0b8e3f6468c15d62967bfa4f9ef5bbd62fd0b455d547eacc0afc15aceb65197b"},
|
||||
]
|
||||
@@ -4225,6 +4292,9 @@ et-xmlfile = [
|
||||
{file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"},
|
||||
{file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"},
|
||||
]
|
||||
exchange-calendars = [
|
||||
{file = "exchange_calendars-3.5.tar.gz", hash = "sha256:1c132a9cf744ce27ce1e70c631810bbb881a64cbb1c28a166b984e383d434e41"},
|
||||
]
|
||||
fear-greed-index = [
|
||||
{file = "fear-greed-index-0.1.3.tar.gz", hash = "sha256:5ba5286ee29b2b35147a93da353899e30abf1715decf943183399e4f057a2d87"},
|
||||
{file = "fear_greed_index-0.1.3-py3-none-any.whl", hash = "sha256:0bdccdce61a408172187254dced6e1033c6126620d4694aaccc5ce09f4001921"},
|
||||
@@ -5038,6 +5108,10 @@ pandas-datareader = [
|
||||
{file = "pandas-datareader-0.10.0.tar.gz", hash = "sha256:9fc3c63d39bc0c10c2683f1c6d503ff625020383e38f6cbe14134826b454d5a6"},
|
||||
{file = "pandas_datareader-0.10.0-py3-none-any.whl", hash = "sha256:0b95ff3635bc3ee1a6073521b557ab0e3c39d219f4a3b720b6b0bc6e8cdb4bb7"},
|
||||
]
|
||||
pandas-market-calendars = [
|
||||
{file = "pandas_market_calendars-3.2-py3-none-any.whl", hash = "sha256:bf7509d1d40c918b6b91d261adde1e8ac7bf640f4403f45a8ac9f4d4fe47154b"},
|
||||
{file = "pandas_market_calendars-3.2.tar.gz", hash = "sha256:5c67ec7158c298aa3efc6913d0c53b82239de779611d5eec23333ff5a2927cf2"},
|
||||
]
|
||||
pandas-ta = [
|
||||
{file = "pandas_ta-0.3.14b.tar.gz", hash = "sha256:0fa35aec831d2815ea30b871688a8d20a76b288a7be2d26cc00c35cd8c09a993"},
|
||||
]
|
||||
@@ -5274,6 +5348,10 @@ pylint = [
|
||||
{file = "pylint-2.12.2-py3-none-any.whl", hash = "sha256:daabda3f7ed9d1c60f52d563b1b854632fd90035bcf01443e234d3dc794e3b74"},
|
||||
{file = "pylint-2.12.2.tar.gz", hash = "sha256:9d945a73640e1fec07ee34b42f5669b770c759acd536ec7b16d7e4b87a9c9ff9"},
|
||||
]
|
||||
pyluach = [
|
||||
{file = "pyluach-1.3.0-py3-none-any.whl", hash = "sha256:43977d47c86695d66789f3d24c411c4d110363f760331136009e43ac9af61b1e"},
|
||||
{file = "pyluach-1.3.0.tar.gz", hash = "sha256:9cf95eaa600cc904d1adb015036ab135e0d732ca2a30253db92b676ee3415dea"},
|
||||
]
|
||||
pymeeus = [
|
||||
{file = "PyMeeus-0.5.11.tar.gz", hash = "sha256:bb9d670818d8b0594317b48a7dadea02a0594e5344263bf2054e1a011c8fed55"},
|
||||
]
|
||||
@@ -5430,8 +5508,8 @@ pytz-deprecation-shim = [
|
||||
{file = "pytz_deprecation_shim-0.1.0.post0.tar.gz", hash = "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d"},
|
||||
]
|
||||
pyupgrade = [
|
||||
{file = "pyupgrade-2.30.1-py2.py3-none-any.whl", hash = "sha256:803c4e7631f0596e5d991b671014ce8f4f1e76b52b27dca11ea8bf0110808dfa"},
|
||||
{file = "pyupgrade-2.30.1.tar.gz", hash = "sha256:dc38f1613c50fd7baae3475f2afa5b8c933709df619494dd98773e91a5a2755e"},
|
||||
{file = "pyupgrade-2.31.0-py2.py3-none-any.whl", hash = "sha256:0a62c5055f854d7f36e155b7ee8920561bf0399c53edd975cf02436eef8937fc"},
|
||||
{file = "pyupgrade-2.31.0.tar.gz", hash = "sha256:80e2308cae2b11c3fdd091137495d99abf7e0cd98b501aa5758974991497c24c"},
|
||||
]
|
||||
pywin32 = [
|
||||
{file = "pywin32-303-cp310-cp310-win32.whl", hash = "sha256:6fed4af057039f309263fd3285d7b8042d41507343cd5fa781d98fcc5b90e8bb"},
|
||||
@@ -5755,8 +5833,8 @@ requests-oauthlib = [
|
||||
{file = "requests_oauthlib-1.3.0-py3.7.egg", hash = "sha256:fa6c47b933f01060936d87ae9327fead68768b69c6c9ea2109c48be30f2d4dbc"},
|
||||
]
|
||||
rich = [
|
||||
{file = "rich-10.16.1-py3-none-any.whl", hash = "sha256:bbe04dd6ac09e4b00d22cb1051aa127beaf6e16c3d8687b026e96d3fca6aad52"},
|
||||
{file = "rich-10.16.1.tar.gz", hash = "sha256:4949e73de321784ef6664ebbc854ac82b20ff60b2865097b93f3b9b41e30da27"},
|
||||
{file = "rich-10.16.2-py3-none-any.whl", hash = "sha256:c59d73bd804c90f747c8d7b1d023b88f2a9ac2454224a4aeaf959b21eeb42d03"},
|
||||
{file = "rich-10.16.2.tar.gz", hash = "sha256:720974689960e06c2efdb54327f8bf0cdbdf4eae4ad73b6c94213cad405c371b"},
|
||||
]
|
||||
robin-stocks = [
|
||||
{file = "robin_stocks-2.1.0-py3-none-any.whl", hash = "sha256:f746640e08d138fda2e1da42444e2881c3fb1ce43485f332e5079a42b0a78d57"},
|
||||
@@ -5835,7 +5913,22 @@ screeninfo = [
|
||||
{file = "screeninfo-0.6.7.tar.gz", hash = "sha256:1c4bac1ca329da3f68cbc4d2fbc92256aa9bb8ff8583ee3e14f91f0a7baa69cb"},
|
||||
]
|
||||
scs = [
|
||||
{file = "scs-3.0.0.tar.gz", hash = "sha256:b29b6ae469041fd8e5831905dee5a10335c985e2d0e6a1c78c8a81c3bb974c2b"},
|
||||
{file = "scs-3.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2663a42dfed0646886e937293de8bb8f81c7ff577db10f7899a0a49eddd465ff"},
|
||||
{file = "scs-3.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:255f513d67a51f52e2387909ee1e7859c45ef0ba96b3ae45029d79b13a1d8c3f"},
|
||||
{file = "scs-3.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:ee2a3868f01a5d380fcbf68e7e081202040819de221b73267f205c2e2ac926a0"},
|
||||
{file = "scs-3.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:23d34ba5f0c47138619ed7c220d75442ca17ef2b526281c40d81d0f5e9b046ef"},
|
||||
{file = "scs-3.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:712491f06951c4345148d2c675eabebeb5bb8fe7f994a58b03c562ca167b66a4"},
|
||||
{file = "scs-3.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8eed60b18a661a7253f2e869e6b59f70413a13306111175ff4eb940ae4b6ff93"},
|
||||
{file = "scs-3.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:26913e794abf7f2e224d79e6a285d5b0d6d74c4ae7be79e206b90c573c6c6b84"},
|
||||
{file = "scs-3.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8ca92b4637a0df380355582ef967251e9df788a2668a2539e6660ca7978a546"},
|
||||
{file = "scs-3.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:5ffe01fbea3aea1ece0d6609e669b2bdc76d6b3e28ff9b6939a3cd2c58d3dfc8"},
|
||||
{file = "scs-3.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5b948a8d3f54d6eeda7e354bf1c58046e24f9d6de19b2e5e247e02a6e1b7511"},
|
||||
{file = "scs-3.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f578c1b1d2faa45f728f9f10e866662093df8a446be649f61bf08332a0fad0fb"},
|
||||
{file = "scs-3.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:9386469f96ad7bb0f2c0e76b96e6464fc72ee5803460fa29c18074e859ebdce5"},
|
||||
{file = "scs-3.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:555e6a34cf305b6f37902b52b45d365fd5c6f2f5696a8d6b0b14d3191fb5340e"},
|
||||
{file = "scs-3.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c4dd78fc5b824c6f683f1ed887f363ca1e5f034cb7b22f281d2e49d9bb786341"},
|
||||
{file = "scs-3.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:12ede49041f51b7a5f3308df8e8418a35c76dd2b9de6e6ef0cf6b350fcd969bf"},
|
||||
{file = "scs-3.0.1.tar.gz", hash = "sha256:22a8f319b989a5c4048e6313ccacf7d0dc4687af87ac1916c5750651b38f0623"},
|
||||
]
|
||||
seaborn = [
|
||||
{file = "seaborn-0.11.2-py3-none-any.whl", hash = "sha256:85a6baa9b55f81a0623abddc4a26b334653ff4c6b18c418361de19dbba0ef283"},
|
||||
@@ -6029,6 +6122,10 @@ tomli = [
|
||||
{file = "tomli-1.2.3-py3-none-any.whl", hash = "sha256:e3069e4be3ead9668e21cb9b074cd948f7b3113fd9c8bba083f48247aab8b11c"},
|
||||
{file = "tomli-1.2.3.tar.gz", hash = "sha256:05b6166bff487dc068d322585c7ea4ef78deed501cc124060e0f238e89a9231f"},
|
||||
]
|
||||
toolz = [
|
||||
{file = "toolz-0.11.2-py3-none-any.whl", hash = "sha256:a5700ce83414c64514d82d60bcda8aabfde092d1c1a8663f9200c07fdcc6da8f"},
|
||||
{file = "toolz-0.11.2.tar.gz", hash = "sha256:6b312d5e15138552f1bda8a4e66c30e236c831b612b2bf0005f8a1df10a4bc33"},
|
||||
]
|
||||
tornado = [
|
||||
{file = "tornado-6.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32"},
|
||||
{file = "tornado-6.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:0d321a39c36e5f2c4ff12b4ed58d41390460f798422c4504e09eb5678e09998c"},
|
||||
@@ -6200,8 +6297,8 @@ vcrpy = [
|
||||
{file = "vcrpy-4.1.1.tar.gz", hash = "sha256:57095bf22fc0a2d99ee9674cdafebed0f3ba763018582450706f7d3a74fff599"},
|
||||
]
|
||||
virtualenv = [
|
||||
{file = "virtualenv-20.12.0-py2.py3-none-any.whl", hash = "sha256:e41ee6238f7f857c75041d069b0f6e4084752d1ecc2d96b2e2614626a8337062"},
|
||||
{file = "virtualenv-20.12.0.tar.gz", hash = "sha256:03dbbd4b2a85872a859dfabafc351d702a0b8ace8603da6eb2b90afdfb8fb91b"},
|
||||
{file = "virtualenv-20.13.0-py2.py3-none-any.whl", hash = "sha256:339f16c4a86b44240ba7223d0f93a7887c3ca04b5f9c8129da7958447d079b09"},
|
||||
{file = "virtualenv-20.13.0.tar.gz", hash = "sha256:d8458cf8d59d0ea495ad9b34c2599487f8a7772d796f9910858376d1600dd2dd"},
|
||||
]
|
||||
wcwidth = [
|
||||
{file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"},
|
||||
|
||||
1
pyproject.toml
vendored
1
pyproject.toml
vendored
@@ -108,6 +108,7 @@ types-tabulate = "^0.8.3"
|
||||
types-PyYAML = "^6.0.1"
|
||||
types-python-dateutil = "^2.8.3"
|
||||
pre-commit = "^2.16.0"
|
||||
pandas-market-calendars = "^3.2"
|
||||
|
||||
[tool.poetry.extras]
|
||||
prediction = ["tensorflow"]
|
||||
|
||||
68
requirements-full.txt
vendored
68
requirements-full.txt
vendored
@@ -12,23 +12,23 @@ astroid==2.9.1; python_full_version >= "3.6.2"
|
||||
astunparse==1.6.3
|
||||
async-timeout==3.0.1; python_full_version >= "3.5.3" and python_version >= "3.6"
|
||||
atomicwrites==1.4.0; 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.4.0"
|
||||
attrs==21.4.0; python_full_version >= "3.6.1" and python_version >= "3.6" and python_version < "4.0"
|
||||
attrs==21.4.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4.0" or python_full_version >= "3.5.0" and python_version >= "3.6" and python_version < "4.0"
|
||||
babel==2.9.1; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6")
|
||||
backcall==0.2.0; python_version >= "3.7"
|
||||
backports.zoneinfo==0.2.1; python_version < "3.9" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
|
||||
bandit==1.7.1; python_version >= "3.5"
|
||||
beartype==0.7.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
|
||||
beautifulsoup4==4.10.0; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.5"
|
||||
beautifulsoup4==4.10.0; python_full_version > "3.0.0" and python_version >= "3.5"
|
||||
black==21.7b0; python_full_version >= "3.6.2"
|
||||
bleach==4.1.0; python_version >= "3.7"
|
||||
bs4==0.0.1
|
||||
bt==0.2.9; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0")
|
||||
cachetools==4.2.4; python_version >= "3.5" and python_version < "4.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
|
||||
certifi==2021.10.8; python_full_version >= "3.7.1" and python_version >= "3.6" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (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") and (python_version >= "3" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3")
|
||||
cffi==1.15.0; implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.6.1"
|
||||
certifi==2021.10.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
|
||||
cffi==1.15.0; implementation_name == "pypy" and python_version >= "3.6"
|
||||
cfgv==3.3.1; python_full_version >= "3.6.1"
|
||||
chardet==4.0.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
|
||||
charset-normalizer==2.0.9; python_full_version >= "3.7.1" and python_version >= "3.6" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (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") and (python_version >= "3" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3")
|
||||
charset-normalizer==2.0.9; python_full_version >= "3.6.0" and python_version >= "3"
|
||||
click==8.0.3; python_full_version >= "3.6.2" and python_version >= "3.6"
|
||||
codespell==2.1.0; python_version >= "3.5"
|
||||
colorama==0.4.4; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
|
||||
@@ -37,8 +37,8 @@ convertdate==2.3.2; python_version >= "3.6"
|
||||
coverage==6.2; python_version >= "3.6"
|
||||
cryptography==36.0.1; python_version >= "3.6"
|
||||
cssselect==1.1.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0"
|
||||
cvxpy==1.1.17; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
cycler==0.11.0; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
cvxpy==1.1.18; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
cycler==0.11.0; python_version >= "3.7"
|
||||
cython==0.29.26; python_version >= "3.6" 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.6"
|
||||
dateparser==1.1.0; python_version >= "3.5"
|
||||
datetime==4.3; python_version >= "3.5"
|
||||
@@ -54,6 +54,7 @@ docutils==0.16; python_full_version >= "3.6.8" and python_full_version < "4.0.0"
|
||||
ecos==2.0.8; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
entrypoints==0.3; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
et-xmlfile==1.1.0; python_version >= "3.6"
|
||||
exchange-calendars==3.5; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
fear-greed-index==0.1.3; python_full_version >= "3.6.8" and python_full_version < "4.0.0"
|
||||
ffn==0.3.6; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
|
||||
filelock==3.4.2; python_version >= "3.7" and python_full_version >= "3.6.1"
|
||||
@@ -62,7 +63,7 @@ finviz==1.4.3
|
||||
finvizfinance==0.9.10; python_version >= "3.5"
|
||||
flake8==3.9.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
|
||||
flatbuffers==2.0
|
||||
fonttools==4.28.5; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
fonttools==4.28.5; python_version >= "3.7"
|
||||
fred==3.1
|
||||
fredapi==0.4.3
|
||||
frozendict==2.1.3; python_version >= "3.6"
|
||||
@@ -79,7 +80,7 @@ h5py==3.6.0; python_version >= "3.7"
|
||||
hijri-converter==2.2.2; python_version >= "3.6"
|
||||
holidays==0.11.3.1; python_version >= "3.6"
|
||||
identify==2.4.1; python_full_version >= "3.6.1"
|
||||
idna==3.3; python_full_version >= "3.7.1" and python_version >= "3.6" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (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") and (python_version >= "3" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3")
|
||||
idna==3.3; python_full_version >= "3.6.2" and python_version >= "3.6"
|
||||
imagesize==1.3.0; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
importlib-metadata==4.10.0; python_version < "3.10" and python_version >= "3.7"
|
||||
inflection==0.5.1; python_version >= "3.6"
|
||||
@@ -87,14 +88,14 @@ iniconfig==1.1.1; python_version >= "3.6"
|
||||
investpy==1.0.7; python_version >= "3"
|
||||
ipykernel==6.6.0; python_version >= "3.7"
|
||||
ipympl==0.8.4
|
||||
ipython-genutils==0.2.0; python_full_version >= "3.6.1" and python_version >= "3.6"
|
||||
ipython-genutils==0.2.0; python_version >= "3.6"
|
||||
ipython==7.30.1; python_version >= "3.7"
|
||||
ipywidgets==7.6.5
|
||||
iso8601==0.1.16
|
||||
isort==5.10.1; python_full_version >= "3.6.2" and python_version < "4.0"
|
||||
jedi==0.18.1; python_version >= "3.7"
|
||||
jinja2==3.0.3; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
joblib==1.1.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
joblib==1.1.0; python_version >= "3.7"
|
||||
json5==0.9.6; python_version >= "3.6"
|
||||
jsonschema==3.2.0
|
||||
jupyter-client==7.1.0; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
@@ -108,15 +109,15 @@ jupyterlab-widgets==1.0.2; python_version >= "3.6"
|
||||
jupyterlab==3.2.5; python_version >= "3.6"
|
||||
keras-preprocessing==1.1.2
|
||||
keras==2.7.0
|
||||
kiwisolver==1.3.2; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
korean-lunar-calendar==0.2.1; python_version >= "3.6"
|
||||
kiwisolver==1.3.2; python_version >= "3.7"
|
||||
korean-lunar-calendar==0.2.1; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
lazy-object-proxy==1.7.1; python_version >= "3.6" and python_full_version >= "3.6.2"
|
||||
libclang==12.0.0
|
||||
lxml==4.7.1; python_full_version >= "3.6.8" and python_version >= "3.5" and python_full_version < "4.0.0" and (python_version >= "3" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
|
||||
m2r2==0.2.8; python_full_version >= "3.6.8" and python_full_version < "4.0.0"
|
||||
markdown-it-py==1.1.0; python_version >= "3.6" and python_version < "4.0"
|
||||
markdown==3.3.6; python_version >= "3.6"
|
||||
markupsafe==2.0.1; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
markupsafe==2.0.1; python_version >= "3.6"
|
||||
matplotlib-inline==0.1.3; python_version >= "3.7"
|
||||
matplotlib==3.5.1; python_version >= "3.7"
|
||||
mccabe==0.6.1; python_full_version >= "3.6.2"
|
||||
@@ -134,7 +135,7 @@ nbclassic==0.3.4; python_version >= "3.6"
|
||||
nbclient==0.5.9; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
nbconvert==6.3.0; python_version >= "3.7"
|
||||
nbformat==5.1.3; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
nest-asyncio==1.5.4; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
nest-asyncio==1.5.4; python_full_version >= "3.6.1" and python_version >= "3.6"
|
||||
nodeenv==1.6.0; python_full_version >= "3.6.1"
|
||||
notebook==6.4.6; python_version >= "3.6"
|
||||
numpy==1.21.2; python_version >= "3.7" and python_version < "3.11"
|
||||
@@ -146,6 +147,7 @@ opt-einsum==3.3.0; python_version >= "3.5"
|
||||
osqp==0.6.2.post4; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
packaging==21.3; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and 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"
|
||||
pandas-ta==0.3.14b
|
||||
pandas==1.3.5; python_full_version >= "3.7.1"
|
||||
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"
|
||||
@@ -170,23 +172,24 @@ prompt-toolkit==3.0.24; python_full_version >= "3.6.2"
|
||||
protobuf==3.19.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
psaw==0.0.12; python_version >= "3"
|
||||
ptyprocess==0.7.0; os_name != "nt" and python_version >= "3.7" and sys_platform != "win32"
|
||||
py==1.11.0; python_full_version >= "3.6.1" and python_version >= "3.7" and implementation_name == "pypy"
|
||||
py==1.11.0; python_version >= "3.6" and python_full_version < "3.0.0" and implementation_name == "pypy" or python_full_version >= "3.5.0" and python_version >= "3.6" and implementation_name == "pypy"
|
||||
pyally==1.1.2
|
||||
pyasn1-modules==0.2.8; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
|
||||
pyasn1==0.4.8; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6") or python_full_version >= "3.6.0" and python_version >= "3.6" and python_version < "4" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
|
||||
pycodestyle==2.7.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
|
||||
pycoingecko==1.4.1
|
||||
pycparser==2.21; implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.6.1"
|
||||
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"
|
||||
pyex==0.5.0
|
||||
pyflakes==2.3.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
|
||||
pygments==2.11.1; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
pylint==2.12.2; python_full_version >= "3.6.2"
|
||||
pyluach==1.3.0; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
pymeeus==0.5.11; python_version >= "3.6"
|
||||
pymongo==3.11.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
|
||||
pyobjc-core==8.1; python_version >= "3.6" and sys_platform == "darwin"
|
||||
pyobjc-framework-cocoa==8.1; python_version >= "3.6" and sys_platform == "darwin"
|
||||
pyotp==2.6.0; python_version >= "3"
|
||||
pyparsing==3.0.6; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
pyparsing==3.0.6; python_version >= "3.7"
|
||||
pyportfolioopt==1.5.1; python_full_version >= "3.6.1" and python_full_version < "4.0.0"
|
||||
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.0; python_version >= "3.6"
|
||||
@@ -195,16 +198,16 @@ pytest-recording==0.12.0; python_version >= "3.5"
|
||||
pytest==6.2.5; python_version >= "3.6"
|
||||
python-binance==1.0.15
|
||||
python-coinmarketcap==0.2
|
||||
python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.7" and python_full_version < "4.0.0" and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5")
|
||||
python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.7" 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 >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5")
|
||||
python-dotenv==0.19.2; python_version >= "3.5"
|
||||
pytrends==4.7.3
|
||||
pytz-deprecation-shim==0.1.0.post0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
|
||||
pytz==2021.3; python_full_version >= "3.7.1" and python_version >= "3.6" and python_full_version < "4.0.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6")
|
||||
pyupgrade==2.30.1; python_full_version >= "3.6.1"
|
||||
pywin32==303; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.7" and python_full_version >= "3.6.1"
|
||||
pytz==2021.3; python_full_version >= "3.7.1" and python_version >= "3.7" and python_full_version < "4.0.0"
|
||||
pyupgrade==2.31.0; python_full_version >= "3.6.1"
|
||||
pywin32==303; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.6"
|
||||
pywinpty==1.1.6; os_name == "nt" and python_version >= "3.6"
|
||||
pyyaml==6.0; python_version >= "3.6" and python_full_version >= "3.6.1"
|
||||
pyzmq==22.3.0; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
pyzmq==22.3.0; python_full_version >= "3.6.1" and python_version >= "3.6"
|
||||
qdldl==0.1.5.post0; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
qtconsole==5.2.2; python_version >= "3.6"
|
||||
qtpy==2.0.0; python_version >= "3.6"
|
||||
@@ -214,19 +217,19 @@ regex==2021.11.10; python_full_version >= "3.6.2" and python_version >= "3.6"
|
||||
reportlab==3.6.5; python_version >= "3.6" and python_version < "4"
|
||||
requests-oauthlib==1.3.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
|
||||
requests==2.26.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0")
|
||||
rich==10.16.1; python_full_version >= "3.6.2" and python_full_version < "4.0.0"
|
||||
rich==10.16.2; python_full_version >= "3.6.2" and python_full_version < "4.0.0"
|
||||
robin-stocks==2.1.0; python_version >= "3"
|
||||
rsa==4.8; python_version >= "3.6" and python_version < "4" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
|
||||
scikit-learn==1.0.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
scipy==1.7.3; python_version >= "3.7" and python_version < "3.11" and python_full_version >= "3.6.1" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7")
|
||||
scipy==1.7.3; python_version >= "3.7" and python_version < "3.11" and python_full_version >= "3.6.1" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0")
|
||||
screeninfo==0.6.7
|
||||
scs==3.0.0; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
scs==3.0.1; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
seaborn==0.11.2; python_version >= "3.6"
|
||||
selenium==3.141.0
|
||||
send2trash==1.8.0; python_version >= "3.6"
|
||||
sentiment-investor==2.1.0; python_version >= "3.8" and python_version < "4.0"
|
||||
setuptools-scm==6.3.2; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.7" and python_full_version < "4.0.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5") 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 >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
|
||||
setuptools-scm==6.3.2; python_version >= "3.7"
|
||||
six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.6" and python_full_version < "4.0.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5") 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 >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
|
||||
smmap==5.0.0; python_version >= "3.7"
|
||||
sniffio==1.2.0; python_full_version >= "3.6.2" and python_version >= "3.6"
|
||||
snowballstemmer==2.2.0; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
@@ -257,10 +260,11 @@ terminado==0.12.1; python_version >= "3.6"
|
||||
testpath==0.5.0; python_version >= "3.7"
|
||||
textwrap3==0.9.2; python_version >= "3.6"
|
||||
thepassiveinvestor==1.0.10
|
||||
threadpoolctl==3.0.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
threadpoolctl==3.0.0; python_version >= "3.7"
|
||||
tokenize-rt==4.2.1; python_full_version >= "3.6.1"
|
||||
toml==0.10.2; python_full_version >= "3.6.2" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6")
|
||||
tomli==1.2.3; python_full_version >= "3.6.2" and python_version >= "3.7"
|
||||
toolz==0.11.2; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
tornado==6.1; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
tqdm==4.62.3; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
|
||||
tradingview-ta==3.2.10; python_version >= "3.6"
|
||||
@@ -277,13 +281,13 @@ tzlocal==4.1; python_version >= "3.6"
|
||||
ujson==5.1.0; python_version >= "3.7"
|
||||
unidecode==1.3.2; python_version >= "3.5"
|
||||
update-checker==0.18.0; python_version >= "3.6" and python_version < "4.0"
|
||||
urllib3==1.26.7; python_full_version >= "3.7.1" and python_version < "4" and python_version >= "3.6" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (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") and (python_version >= "3" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3")
|
||||
urllib3==1.26.7; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.6"
|
||||
user-agent==0.1.10
|
||||
vadersentiment==3.3.2
|
||||
valinvest==0.0.2; python_version >= "3.6"
|
||||
vcrpy==4.1.1; python_version >= "3.5"
|
||||
virtualenv==20.12.0; python_full_version >= "3.6.1"
|
||||
wcwidth==0.2.5; python_version >= "3.7" and python_full_version >= "3.6.2"
|
||||
virtualenv==20.13.0; python_full_version >= "3.6.1"
|
||||
wcwidth==0.2.5; python_version >= "3.6" and python_full_version >= "3.6.2"
|
||||
webencodings==0.5.1; python_version >= "3.7"
|
||||
websocket-client==1.2.3; python_version >= "3.8" and python_version < "4.0"
|
||||
websockets==9.1; python_full_version >= "3.6.1"
|
||||
|
||||
113
requirements.txt
vendored
113
requirements.txt
vendored
@@ -7,29 +7,35 @@ appdirs==1.4.4; python_full_version >= "3.6.2" and python_version >= "3.6"
|
||||
appnope==0.1.2; platform_system == "Darwin" and python_version >= "3.7" and sys_platform == "darwin"
|
||||
argon2-cffi-bindings==21.2.0; python_version >= "3.6"
|
||||
argon2-cffi==21.3.0; python_version >= "3.6"
|
||||
astroid==2.9.1; python_full_version >= "3.6.2"
|
||||
async-timeout==3.0.1; python_full_version >= "3.5.3" and python_version >= "3.6"
|
||||
attrs==21.4.0; python_full_version >= "3.6.1" and python_version >= "3.6"
|
||||
atomicwrites==1.4.0; 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.4.0"
|
||||
attrs==21.4.0; python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4.0" or python_full_version >= "3.5.0" and python_version >= "3.6" and python_version < "4.0"
|
||||
babel==2.9.1; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6")
|
||||
backcall==0.2.0; python_version >= "3.7"
|
||||
backports.zoneinfo==0.2.1; python_version < "3.9" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
|
||||
bandit==1.7.1; python_version >= "3.5"
|
||||
beartype==0.7.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.0"
|
||||
beautifulsoup4==4.10.0; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.5"
|
||||
beautifulsoup4==4.10.0; python_full_version > "3.0.0" and python_version >= "3.5"
|
||||
black==21.7b0; python_full_version >= "3.6.2"
|
||||
bleach==4.1.0; python_version >= "3.7"
|
||||
bs4==0.0.1
|
||||
bt==0.2.9; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0")
|
||||
certifi==2021.10.8; python_full_version >= "3.7.1" and python_version >= "3.6" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (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") and (python_version >= "3" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3")
|
||||
cffi==1.15.0; implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.6.1"
|
||||
certifi==2021.10.8; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
|
||||
cffi==1.15.0; implementation_name == "pypy" and python_version >= "3.6"
|
||||
cfgv==3.3.1; python_full_version >= "3.6.1"
|
||||
chardet==4.0.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.6"
|
||||
charset-normalizer==2.0.9; python_full_version >= "3.7.1" and python_version >= "3.6" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (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") and (python_version >= "3" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3")
|
||||
charset-normalizer==2.0.9; python_full_version >= "3.6.0" and python_version >= "3"
|
||||
click==8.0.3; python_full_version >= "3.6.2" and python_version >= "3.6"
|
||||
codespell==2.1.0; python_version >= "3.5"
|
||||
colorama==0.4.4; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
|
||||
commonmark==0.9.1; python_full_version >= "3.6.2" and python_full_version < "4.0.0"
|
||||
convertdate==2.3.2; python_version >= "3.6"
|
||||
coverage==6.2; python_version >= "3.6"
|
||||
cryptography==36.0.1; python_version >= "3.6"
|
||||
cssselect==1.1.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0"
|
||||
cvxpy==1.1.17; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
cycler==0.11.0; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
cvxpy==1.1.18; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
cycler==0.11.0; python_version >= "3.7"
|
||||
cython==0.29.26; python_version >= "3.6" 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.6"
|
||||
dateparser==1.1.0; python_version >= "3.5"
|
||||
datetime==4.3; python_version >= "3.5"
|
||||
@@ -39,17 +45,21 @@ defusedxml==0.7.1; python_version >= "3.7" and python_full_version < "3.0.0" or
|
||||
degiro-connector==2.0.13; 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"
|
||||
distlib==0.3.4; python_full_version >= "3.6.1"
|
||||
dnspython==2.1.0; python_version >= "3.6"
|
||||
docutils==0.16; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
docutils==0.16; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6" and (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.8; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
entrypoints==0.3; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
et-xmlfile==1.1.0; python_version >= "3.6"
|
||||
exchange-calendars==3.5; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
fear-greed-index==0.1.3; python_full_version >= "3.6.8" and python_full_version < "4.0.0"
|
||||
ffn==0.3.6; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0"
|
||||
filelock==3.4.2; python_version >= "3.7" and python_full_version >= "3.6.1"
|
||||
financedatabase==1.0.2
|
||||
finviz==1.4.3
|
||||
finvizfinance==0.9.10; python_version >= "3.5"
|
||||
fonttools==4.28.5; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
flake8==3.9.2; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.5.0")
|
||||
fonttools==4.28.5; python_version >= "3.7"
|
||||
fred==3.1
|
||||
fredapi==0.4.3
|
||||
frozendict==2.1.3; python_version >= "3.6"
|
||||
@@ -60,19 +70,22 @@ gitpython==3.1.24; python_version >= "3.7"
|
||||
grpcio==1.43.0; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
hijri-converter==2.2.2; python_version >= "3.6"
|
||||
holidays==0.11.3.1; python_version >= "3.6"
|
||||
idna==3.3; python_full_version >= "3.7.1" and python_version >= "3.6" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (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") and (python_version >= "3" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3")
|
||||
identify==2.4.1; python_full_version >= "3.6.1"
|
||||
idna==3.3; python_full_version >= "3.6.2" and python_version >= "3.6"
|
||||
imagesize==1.3.0; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
inflection==0.5.1; python_version >= "3.6"
|
||||
iniconfig==1.1.1; python_version >= "3.6"
|
||||
investpy==1.0.7; python_version >= "3"
|
||||
ipykernel==6.6.0; python_version >= "3.7"
|
||||
ipympl==0.8.4
|
||||
ipython-genutils==0.2.0; python_full_version >= "3.6.1" and python_version >= "3.6"
|
||||
ipython-genutils==0.2.0; python_version >= "3.6"
|
||||
ipython==7.30.1; python_version >= "3.7"
|
||||
ipywidgets==7.6.5
|
||||
iso8601==0.1.16
|
||||
isort==5.10.1; python_full_version >= "3.6.2" and python_version < "4.0"
|
||||
jedi==0.18.1; python_version >= "3.7"
|
||||
jinja2==3.0.3; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
joblib==1.1.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
joblib==1.1.0; python_version >= "3.7"
|
||||
json5==0.9.6; python_version >= "3.6"
|
||||
jsonschema==3.2.0
|
||||
jupyter-client==7.1.0; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
@@ -84,25 +97,32 @@ jupyterlab-pygments==0.1.2; python_version >= "3.7"
|
||||
jupyterlab-server==2.10.2; python_version >= "3.6"
|
||||
jupyterlab-widgets==1.0.2; python_version >= "3.6"
|
||||
jupyterlab==3.2.5; python_version >= "3.6"
|
||||
kiwisolver==1.3.2; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
korean-lunar-calendar==0.2.1; python_version >= "3.6"
|
||||
kiwisolver==1.3.2; python_version >= "3.7"
|
||||
korean-lunar-calendar==0.2.1; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
lazy-object-proxy==1.7.1; python_version >= "3.6" and python_full_version >= "3.6.2"
|
||||
lxml==4.7.1; python_full_version >= "3.6.8" and python_version >= "3.5" and python_full_version < "4.0.0" and (python_version >= "3" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
|
||||
m2r2==0.2.8; python_full_version >= "3.6.8" and python_full_version < "4.0.0"
|
||||
markupsafe==2.0.1; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
markdown-it-py==1.1.0; python_version >= "3.6" and python_version < "4.0"
|
||||
markupsafe==2.0.1; python_version >= "3.6"
|
||||
matplotlib-inline==0.1.3; python_version >= "3.7"
|
||||
matplotlib==3.5.1; python_version >= "3.7"
|
||||
mccabe==0.6.1; python_full_version >= "3.6.2"
|
||||
mdit-py-plugins==0.2.8; python_version >= "3.6" and python_version < "4.0"
|
||||
mistune==0.8.4; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
mock==4.0.3; python_version >= "3.6"
|
||||
more-itertools==8.12.0; python_version >= "3.6"
|
||||
mplfinance==0.12.8b6
|
||||
multidict==5.2.0; python_version >= "3.6"
|
||||
multitasking==0.0.10
|
||||
mypy-extensions==0.4.3; python_full_version >= "3.6.2" and python_version >= "3.6"
|
||||
mypy==0.930; python_version >= "3.6"
|
||||
myst-parser==0.15.2; python_version >= "3.6"
|
||||
nbclassic==0.3.4; python_version >= "3.6"
|
||||
nbclient==0.5.9; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
nbconvert==6.3.0; python_version >= "3.7"
|
||||
nbformat==5.1.3; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
nest-asyncio==1.5.4; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
nest-asyncio==1.5.4; python_full_version >= "3.6.1" and python_version >= "3.6"
|
||||
nodeenv==1.6.0; python_full_version >= "3.6.1"
|
||||
notebook==6.4.6; python_version >= "3.6"
|
||||
numpy==1.21.2; python_version >= "3.7" and python_version < "3.11"
|
||||
oandapyv20==0.6.3
|
||||
@@ -112,6 +132,7 @@ openpyxl==3.0.9; python_version >= "3.6"
|
||||
osqp==0.6.2.post4; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
packaging==21.3; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and 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"
|
||||
pandas-ta==0.3.14b
|
||||
pandas==1.3.5; python_full_version >= "3.7.1"
|
||||
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"
|
||||
@@ -119,45 +140,57 @@ papermill==2.3.3; python_version >= "3.6"
|
||||
parso==0.8.3; python_version >= "3.7"
|
||||
pathspec==0.9.0; python_full_version >= "3.6.2" and python_version >= "3.6"
|
||||
patsy==0.5.2; python_version >= "3.6"
|
||||
pbr==5.8.0; python_version >= "3.6"
|
||||
pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.7"
|
||||
pickleshare==0.7.5; python_version >= "3.7"
|
||||
pillow==8.4.0; python_version >= "3.6"
|
||||
platformdirs==2.4.1; python_version >= "3.7" and python_full_version >= "3.6.2"
|
||||
plotly==5.5.0; python_version >= "3.6"
|
||||
pluggy==1.0.0; python_version >= "3.6"
|
||||
pmdarima==1.8.4; python_version >= "3.6"
|
||||
praw==7.5.0; python_version >= "3.6" and python_version < "4.0"
|
||||
prawcore==2.3.0; python_version >= "3.6" and python_version < "4.0"
|
||||
pre-commit==2.16.0; python_full_version >= "3.6.1"
|
||||
prettytable==2.5.0; python_version >= "3.6"
|
||||
prometheus-client==0.12.0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
|
||||
prompt-toolkit==3.0.24; python_full_version >= "3.6.2"
|
||||
protobuf==3.19.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.5"
|
||||
psaw==0.0.12; python_version >= "3"
|
||||
ptyprocess==0.7.0; os_name != "nt" and python_version >= "3.7" and sys_platform != "win32"
|
||||
py==1.11.0; implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.6.1"
|
||||
py==1.11.0; python_version >= "3.6" and python_full_version < "3.0.0" and implementation_name == "pypy" or python_full_version >= "3.5.0" and python_version >= "3.6" and implementation_name == "pypy"
|
||||
pyally==1.1.2
|
||||
pycodestyle==2.7.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
|
||||
pycoingecko==1.4.1
|
||||
pycparser==2.21; implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.6.1"
|
||||
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"
|
||||
pyex==0.5.0
|
||||
pyflakes==2.3.1; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0"
|
||||
pygments==2.11.1; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
pylint==2.12.2; python_full_version >= "3.6.2"
|
||||
pyluach==1.3.0; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
pymeeus==0.5.11; python_version >= "3.6"
|
||||
pymongo==3.11.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.4.0")
|
||||
pyobjc-core==8.1; python_version >= "3.6" and sys_platform == "darwin"
|
||||
pyobjc-framework-cocoa==8.1; python_version >= "3.6" and sys_platform == "darwin"
|
||||
pyotp==2.6.0; python_version >= "3"
|
||||
pyparsing==3.0.6; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
pyparsing==3.0.6; python_version >= "3.7"
|
||||
pyportfolioopt==1.5.1; python_full_version >= "3.6.1" and python_full_version < "4.0.0"
|
||||
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.0; python_version >= "3.6"
|
||||
pytest-mock==3.6.1; python_version >= "3.6"
|
||||
pytest-recording==0.12.0; python_version >= "3.5"
|
||||
pytest==6.2.5; python_version >= "3.6"
|
||||
python-binance==1.0.15
|
||||
python-coinmarketcap==0.2
|
||||
python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.7" and python_full_version < "4.0.0" and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5")
|
||||
python-dateutil==2.8.2; python_full_version >= "3.7.1" and python_version >= "3.7" 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 >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5")
|
||||
python-dotenv==0.19.2; python_version >= "3.5"
|
||||
pytrends==4.7.3
|
||||
pytz-deprecation-shim==0.1.0.post0; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6"
|
||||
pytz==2021.3; python_full_version >= "3.7.1" and python_version >= "3.6" and python_full_version < "4.0.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6")
|
||||
pywin32==303; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.7" and python_full_version >= "3.6.1"
|
||||
pytz==2021.3; python_full_version >= "3.7.1" and python_version >= "3.7" and python_full_version < "4.0.0"
|
||||
pyupgrade==2.31.0; python_full_version >= "3.6.1"
|
||||
pywin32==303; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.6"
|
||||
pywinpty==1.1.6; os_name == "nt" and python_version >= "3.6"
|
||||
pyyaml==6.0; python_version >= "3.6"
|
||||
pyzmq==22.3.0; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
pyyaml==6.0; python_version >= "3.6" and python_full_version >= "3.6.1"
|
||||
pyzmq==22.3.0; python_full_version >= "3.6.1" and python_version >= "3.6"
|
||||
qdldl==0.1.5.post0; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
qtconsole==5.2.2; python_version >= "3.6"
|
||||
qtpy==2.0.0; python_version >= "3.6"
|
||||
@@ -167,18 +200,18 @@ regex==2021.11.10; python_full_version >= "3.6.2" and python_version >= "3.6"
|
||||
reportlab==3.6.5; python_version >= "3.6" and python_version < "4"
|
||||
requests-oauthlib==1.3.0; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0"
|
||||
requests==2.26.0; (python_version >= "2.7" and python_full_version < "3.0.0") or (python_full_version >= "3.6.0")
|
||||
rich==10.16.1; python_full_version >= "3.6.2" and python_full_version < "4.0.0"
|
||||
rich==10.16.2; python_full_version >= "3.6.2" and python_full_version < "4.0.0"
|
||||
robin-stocks==2.1.0; python_version >= "3"
|
||||
scikit-learn==1.0.2; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
scipy==1.7.3; python_version >= "3.7" and python_version < "3.11" and python_full_version >= "3.6.1" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7")
|
||||
scipy==1.7.3; python_version >= "3.7" and python_version < "3.11" and python_full_version >= "3.6.1" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0")
|
||||
screeninfo==0.6.7
|
||||
scs==3.0.0; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
scs==3.0.1; python_full_version >= "3.6.1" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
seaborn==0.11.2; python_version >= "3.6"
|
||||
selenium==3.141.0
|
||||
send2trash==1.8.0; python_version >= "3.6"
|
||||
sentiment-investor==2.1.0; python_version >= "3.8" and python_version < "4.0"
|
||||
setuptools-scm==6.3.2; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.7"
|
||||
six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.7" and python_full_version < "4.0.0" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6") 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.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7")
|
||||
setuptools-scm==6.3.2; python_version >= "3.7"
|
||||
six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.6" and python_full_version < "4.0.0" and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.5") and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7")
|
||||
smmap==5.0.0; python_version >= "3.7"
|
||||
sniffio==1.2.0; python_full_version >= "3.6.2" and python_version >= "3.6"
|
||||
snowballstemmer==2.2.0; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
@@ -194,6 +227,7 @@ sphinxcontrib-qthelp==1.0.3; python_full_version >= "3.6.8" and python_full_vers
|
||||
sphinxcontrib-serializinghtml==1.1.5; python_full_version >= "3.6.8" and python_full_version < "4.0.0" and python_version >= "3.6"
|
||||
sseclient==0.0.27
|
||||
statsmodels==0.12.2; python_version >= "3.6"
|
||||
stevedore==3.5.0; python_version >= "3.6"
|
||||
tabulate==0.8.9
|
||||
temporal-cache==0.1.4
|
||||
tenacity==8.0.1; python_version >= "3.6"
|
||||
@@ -202,28 +236,39 @@ terminado==0.12.1; python_version >= "3.6"
|
||||
testpath==0.5.0; python_version >= "3.7"
|
||||
textwrap3==0.9.2; python_version >= "3.6"
|
||||
thepassiveinvestor==1.0.10
|
||||
threadpoolctl==3.0.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7"
|
||||
threadpoolctl==3.0.0; python_version >= "3.7"
|
||||
tokenize-rt==4.2.1; python_full_version >= "3.6.1"
|
||||
toml==0.10.2; python_full_version >= "3.6.2" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.6")
|
||||
tomli==1.2.3; python_full_version >= "3.6.2" and python_version >= "3.7"
|
||||
toolz==0.11.2; python_version >= "3.7" and python_full_version >= "3.7.0"
|
||||
tornado==6.1; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
tqdm==4.62.3; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.6"
|
||||
tradingview-ta==3.2.10; python_version >= "3.6"
|
||||
traitlets==5.1.1; python_full_version >= "3.6.1" and python_version >= "3.7"
|
||||
typing-extensions==4.0.1; python_version < "3.10" and python_version >= "3.7"
|
||||
types-python-dateutil==2.8.4
|
||||
types-pytz==2021.3.3
|
||||
types-pyyaml==6.0.1
|
||||
types-requests==2.26.3
|
||||
types-tabulate==0.8.4
|
||||
types-termcolor==1.1.2
|
||||
typing-extensions==4.0.1; python_version < "3.10" and python_version >= "3.7" and python_full_version >= "3.6.2"
|
||||
tzdata==2021.5; platform_system == "Windows" and python_version >= "3.6" and (python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.6")
|
||||
tzlocal==4.1; python_version >= "3.6"
|
||||
ujson==5.1.0; python_version >= "3.7"
|
||||
unidecode==1.3.2; python_version >= "3.5"
|
||||
update-checker==0.18.0; python_version >= "3.6" and python_version < "4.0"
|
||||
urllib3==1.26.7; python_full_version >= "3.7.1" and python_version < "4" and python_version >= "3.6" and python_full_version < "4.0.0" and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0") and (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") and (python_version >= "3" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3")
|
||||
urllib3==1.26.7; python_version >= "3.6" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version < "4" and python_version >= "3.6"
|
||||
user-agent==0.1.10
|
||||
vadersentiment==3.3.2
|
||||
valinvest==0.0.2; python_version >= "3.6"
|
||||
wcwidth==0.2.5; python_version >= "3.7" and python_full_version >= "3.6.2"
|
||||
vcrpy==4.1.1; python_version >= "3.5"
|
||||
virtualenv==20.13.0; python_full_version >= "3.6.1"
|
||||
wcwidth==0.2.5; python_version >= "3.6" and python_full_version >= "3.6.2"
|
||||
webencodings==0.5.1; python_version >= "3.7"
|
||||
websocket-client==1.2.3; python_version >= "3.8" and python_version < "4.0"
|
||||
websockets==9.1; python_full_version >= "3.6.1"
|
||||
widgetsnbextension==3.5.2
|
||||
wrapt==1.13.3; python_full_version >= "3.7.1" and python_full_version < "4.0.0"
|
||||
wrapt==1.13.3; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5")
|
||||
yarl==1.7.2; python_version >= "3.6"
|
||||
yfinance==0.1.68
|
||||
zope.interface==5.4.0; python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.5"
|
||||
|
||||
19
terminal.py
19
terminal.py
@@ -8,6 +8,7 @@ import difflib
|
||||
import logging
|
||||
import sys
|
||||
from typing import List, Union
|
||||
import pytz
|
||||
|
||||
from prompt_toolkit.completion import NestedCompleter
|
||||
|
||||
@@ -15,6 +16,8 @@ from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.helper_funcs import (
|
||||
get_flair,
|
||||
system_clear,
|
||||
get_user_timezone_or_invalid,
|
||||
replace_user_timezone,
|
||||
)
|
||||
from gamestonk_terminal.loggers import setup_logging
|
||||
from gamestonk_terminal.menu import session
|
||||
@@ -51,6 +54,7 @@ class TerminalController:
|
||||
"update",
|
||||
"about",
|
||||
"keys",
|
||||
"tz",
|
||||
]
|
||||
CHOICES_MENUS = [
|
||||
"stocks",
|
||||
@@ -66,6 +70,8 @@ class TerminalController:
|
||||
CHOICES += CHOICES_COMMANDS
|
||||
CHOICES += CHOICES_MENUS
|
||||
|
||||
all_timezones = pytz.all_timezones
|
||||
|
||||
def __init__(self, jobs_cmds: List[str] = None):
|
||||
"""Constructor"""
|
||||
self.t_parser = argparse.ArgumentParser(add_help=False, prog="terminal")
|
||||
@@ -77,7 +83,7 @@ class TerminalController:
|
||||
|
||||
if session and gtff.USE_PROMPT_TOOLKIT:
|
||||
choices: dict = {c: None for c in self.CHOICES}
|
||||
|
||||
choices["tz"] = {c: None for c in self.all_timezones}
|
||||
self.completer = NestedCompleter.from_nested_dict(choices)
|
||||
|
||||
self.queue: List[str] = list()
|
||||
@@ -94,7 +100,7 @@ class TerminalController:
|
||||
|
||||
def print_help(self):
|
||||
"""Print help"""
|
||||
help_text = """
|
||||
help_text = f"""
|
||||
Multiple jobs queue (where each '/' denotes a new command). E.g.
|
||||
/stocks $ disc/ugs -n 3/../load tsla/candle
|
||||
|
||||
@@ -114,6 +120,9 @@ The main commands you should be aware when navigating through the terminal are:
|
||||
about about us
|
||||
update update terminal automatically
|
||||
keys check for status of API keys
|
||||
tz set different timezone
|
||||
|
||||
Timezone: {get_user_timezone_or_invalid()}
|
||||
|
||||
> stocks
|
||||
> crypto
|
||||
@@ -263,6 +272,12 @@ The main commands you should be aware when navigating through the terminal are:
|
||||
|
||||
self.queue = portfolio_controller.menu(self.queue)
|
||||
|
||||
def call_tz(self, other_args: List[str]):
|
||||
"""Process tz command"""
|
||||
other_args.append(self.queue[0])
|
||||
self.queue = self.queue[1:]
|
||||
replace_user_timezone("/".join(other_args))
|
||||
|
||||
|
||||
def terminal(jobs_cmds: List[str] = None):
|
||||
"""Terminal Menu"""
|
||||
|
||||
@@ -32,6 +32,7 @@ def vcr_config():
|
||||
}
|
||||
|
||||
|
||||
@pytest.mark.skip("Broken ?")
|
||||
@pytest.mark.vcr
|
||||
@pytest.mark.record_stdout
|
||||
@pytest.mark.parametrize(
|
||||
|
||||
Reference in New Issue
Block a user