mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-28 13:01:38 +00:00
Merge pull request #315 from DidierRLopes/sectors-industry-country
Add sector/industry/country valuation/performance/spectrum
This commit is contained in:
@@ -32,9 +32,10 @@
|
||||
## Discovery
|
||||
* [x] Top Losers (@didier) - [PR #171](https://github.com/DidierRLopes/GamestonkTerminal/pull/171)
|
||||
* [x] ARK orders (@aia) - [PR #140](https://github.com/DidierRLopes/GamestonkTerminal/pull/140)
|
||||
* [x] Analyse sectors/industry performance, overview and valuation from Finviz (@didier) - [PR #315](https://github.com/DidierRLopes/GamestonkTerminal/pull/315)
|
||||
|
||||
**NEXT**
|
||||
* [ ] Analyse sectors/industry performance, overview and valuation from Finviz (@didier)
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ This menu aims to discover new stocks, and the usage of the following commands a
|
||||
|
||||
* [map](#map)
|
||||
* S&P500 index stocks map [Finviz]
|
||||
* [sectors](#sectors)
|
||||
* show sectors performance [Alpha Vantage]
|
||||
* [rtp_sectors](#rtp_sectors)
|
||||
* real-time performance sectors [Alpha Vantage]
|
||||
* [gainers](#gainers)
|
||||
* show latest top gainers [Yahoo Finance]
|
||||
* [losers](#losers)
|
||||
@@ -26,6 +26,13 @@ This menu aims to discover new stocks, and the usage of the following commands a
|
||||
* great website for SPACs research [SpacHero]
|
||||
* [uwhales](#uwhales)
|
||||
* good website for SPACs research [UnusualWhales]
|
||||
* [valuation](#valuation)
|
||||
* valuation of sectors, industry, country [Finviz]
|
||||
* [performance](#performance)
|
||||
* performance of sectors, industry, country [Finviz]
|
||||
* [spectrum](#spectrum)
|
||||
* spectrum of sectors, industry, country [Finviz]
|
||||
|
||||
|
||||
## map <a name="map"></a>
|
||||
|
||||
@@ -40,10 +47,10 @@ Performance index stocks map categorized by sectors and industries. Size represe
|
||||
|
||||

|
||||
|
||||
## sectors <a name="sectors"></a>
|
||||
## rtp_sectors <a name="rtp_sectors"></a>
|
||||
|
||||
```shell
|
||||
usage: sectors
|
||||
usage: rtp_sectors
|
||||
```
|
||||
|
||||
Real-time and historical sector performances calculated from S&P500 incumbents. Pops plot in terminal. [Source: Alpha Vantage]
|
||||
@@ -167,3 +174,47 @@ usage: uwhales
|
||||
Good website for SPACs research. [Source: www.unusualwhales.com]
|
||||
|
||||
<img width="1247" alt="Captura de ecrã 2021-02-20, às 11 38 54" src="https://user-images.githubusercontent.com/25267873/108594176-47056780-7370-11eb-8f2d-5972c8634974.png">
|
||||
|
||||
## valuation <a name="valuation"></a>
|
||||
|
||||
```shell
|
||||
usage: valuation [-g Sector,Industry,Industry (Basic Materials),Industry (Communication Services),
|
||||
Industry (Consumer Cyclical),Industry (Consumer Defensive),Industry (Energy),Industry (Financial),
|
||||
Industry (Healthcare),Industry (Industrials),Industry (Real Estate),Industry (Technology),
|
||||
Industry (Utilities),Country (U.S. listed stocks only),Capitalization]
|
||||
```
|
||||
|
||||
valuation of sectors, industry, country. [Source: Finviz]
|
||||
* -g : Data group (sector, industry or country). Default: Sector.
|
||||
|
||||
<img width="1020" alt="sec_val" src="https://user-images.githubusercontent.com/25267873/113647490-d2b62780-9682-11eb-8346-089bd0499ba9.png">
|
||||
|
||||
|
||||
## performance <a name="performance"></a>
|
||||
|
||||
```shell
|
||||
usage: performance [-g Sector,Industry,Industry (Basic Materials),Industry (Communication Services),
|
||||
Industry (Consumer Cyclical),Industry (Consumer Defensive),Industry (Energy),Industry (Financial),
|
||||
Industry (Healthcare),Industry (Industrials),Industry (Real Estate),Industry (Technology),
|
||||
Industry (Utilities),Country (U.S. listed stocks only),Capitalization]
|
||||
```
|
||||
|
||||
performance of sectors, industry, country. [Source: Finviz]
|
||||
* -g : Data group (sector, industry or country). Default: Sector.
|
||||
|
||||
<img width="1034" alt="ind_per" src="https://user-images.githubusercontent.com/25267873/113647513-dba6f900-9682-11eb-9b43-c1055af85536.png">
|
||||
|
||||
|
||||
## spectrum <a name="spectrum"></a>
|
||||
|
||||
```
|
||||
usage: spectrum [-g Sector,Industry,Industry (Basic Materials),Industry (Communication Services),
|
||||
Industry (Consumer Cyclical),Industry (Consumer Defensive),Industry (Energy),Industry (Financial),
|
||||
Industry (Healthcare),Industry (Industrials),Industry (Real Estate),Industry (Technology),
|
||||
Industry (Utilities),Country (U.S. listed stocks only),Capitalization]
|
||||
```
|
||||
|
||||
Spectrum of sectors, industry, country. [Source: Finviz]
|
||||
* -g : Data group (sector, industry or country). Default: Sector.
|
||||
|
||||

|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
__docformat__ = "numpy"
|
||||
|
||||
import argparse
|
||||
import os
|
||||
from typing import List
|
||||
from prompt_toolkit.completion import NestedCompleter
|
||||
|
||||
from gamestonk_terminal import feature_flags as gtff
|
||||
from gamestonk_terminal.helper_funcs import get_flair
|
||||
from gamestonk_terminal.menu import session
|
||||
@@ -31,7 +31,7 @@ class DiscoveryController:
|
||||
"q",
|
||||
"quit",
|
||||
"map",
|
||||
"sectors",
|
||||
"rtp_sectors",
|
||||
"gainers",
|
||||
"losers",
|
||||
"orders",
|
||||
@@ -42,10 +42,14 @@ class DiscoveryController:
|
||||
"simply_wallst",
|
||||
"spachero",
|
||||
"uwhales",
|
||||
"valuation",
|
||||
"performance",
|
||||
"spectrum",
|
||||
]
|
||||
|
||||
def __init__(self):
|
||||
"""Constructor"""
|
||||
self.spectrum_img_to_delete = ""
|
||||
self.disc_parser = argparse.ArgumentParser(add_help=False, prog="disc")
|
||||
self.disc_parser.add_argument(
|
||||
"cmd",
|
||||
@@ -57,26 +61,31 @@ class DiscoveryController:
|
||||
""" Print help """
|
||||
|
||||
print("\nDiscovery Mode:")
|
||||
print(" help show this discovery menu again")
|
||||
print(" q quit this menu, and shows back to main menu")
|
||||
print(" quit quit to abandon program")
|
||||
print(" help show this discovery menu again")
|
||||
print(" q quit this menu, and shows back to main menu")
|
||||
print(" quit quit to abandon program")
|
||||
print("")
|
||||
print(" map S&P500 index stocks map [Finviz]")
|
||||
print(" sectors show sectors performance [Alpha Vantage]")
|
||||
print(" gainers show latest top gainers [Yahoo Finance]")
|
||||
print(" losers show latest top losers [Yahoo Finance]")
|
||||
print(" orders orders by Fidelity Customers [Fidelity]")
|
||||
print(" ark_orders orders by ARK Investment Management LLC")
|
||||
print(" up_earnings upcoming earnings release dates [Seeking Alpha]")
|
||||
print(" map S&P500 index stocks map [Finviz]")
|
||||
print(" rtp_sectors real-time performance sectors [Alpha Vantage]")
|
||||
print(" gainers show latest top gainers [Yahoo Finance]")
|
||||
print(" losers show latest top losers [Yahoo Finance]")
|
||||
print(" orders orders by Fidelity Customers [Fidelity]")
|
||||
print(
|
||||
" high_short show top high short interest stocks of over 20% ratio [www.highshortinterest.com]"
|
||||
" ark_orders orders by ARK Investment Management LLC [www.cathiesark.com]"
|
||||
)
|
||||
print(" up_earnings upcoming earnings release dates [Seeking Alpha]")
|
||||
print(
|
||||
" high_short show top high short interest stocks of over 20% ratio [www.highshortinterest.com]"
|
||||
)
|
||||
print(
|
||||
" low_float show low float stocks under 10M shares float [www.lowfloat.com]"
|
||||
" low_float show low float stocks under 10M shares float [www.lowfloat.com]"
|
||||
)
|
||||
print(" simply_wallst Simply Wall St. research data [Simply Wall St.]")
|
||||
print(" spachero great website for SPACs research [SpacHero]")
|
||||
print(" uwhales good website for SPACs research [UnusualWhales]")
|
||||
print(" simply_wallst Simply Wall St. research data [Simply Wall St.]")
|
||||
print(" spachero great website for SPACs research [SpacHero]")
|
||||
print(" uwhales good website for SPACs research [UnusualWhales]")
|
||||
print(" valuation valuation of sectors, industry, country [Finviz]")
|
||||
print(" performance performance of sectors, industry, country [Finviz]")
|
||||
print(" spectrum spectrum of sectors, industry, country [Finviz]")
|
||||
print("")
|
||||
|
||||
def switch(self, an_input: str):
|
||||
@@ -91,6 +100,12 @@ class DiscoveryController:
|
||||
"""
|
||||
(known_args, other_args) = self.disc_parser.parse_known_args(an_input.split())
|
||||
|
||||
# Due to Finviz implementation of Spectrum, we delete the generated spectrum figure
|
||||
# after saving it and displaying it to the user
|
||||
if self.spectrum_img_to_delete:
|
||||
os.remove(self.spectrum_img_to_delete + ".jpg")
|
||||
self.spectrum_img_to_delete = ""
|
||||
|
||||
return getattr(
|
||||
self, "call_" + known_args.cmd, lambda: "Command not recognized!"
|
||||
)(other_args)
|
||||
@@ -111,8 +126,8 @@ class DiscoveryController:
|
||||
"""Process map command"""
|
||||
finviz_view.map_sp500_view(other_args)
|
||||
|
||||
def call_sectors(self, other_args: List[str]):
|
||||
"""Process sectors command"""
|
||||
def call_rtp_sectors(self, other_args: List[str]):
|
||||
"""Process rtp_sectors command"""
|
||||
alpha_vantage_view.sectors_view(other_args)
|
||||
|
||||
def call_gainers(self, other_args: List[str]):
|
||||
@@ -155,6 +170,20 @@ class DiscoveryController:
|
||||
"""Process uwhales command"""
|
||||
unusual_whales_view.unusual_whales_view(other_args)
|
||||
|
||||
def call_valuation(self, other_args: List[str]):
|
||||
"""Process valuation command"""
|
||||
finviz_view.view_group_data(other_args, "valuation")
|
||||
|
||||
def call_performance(self, other_args: List[str]):
|
||||
"""Process performance command"""
|
||||
finviz_view.view_group_data(other_args, "performance")
|
||||
|
||||
def call_spectrum(self, other_args: List[str]):
|
||||
"""Process spectrum command"""
|
||||
self.spectrum_img_to_delete = finviz_view.view_group_data(
|
||||
other_args, "spectrum"
|
||||
)
|
||||
|
||||
|
||||
def menu():
|
||||
"""Discovery Menu"""
|
||||
|
||||
@@ -5,6 +5,26 @@ import argparse
|
||||
from typing import List
|
||||
import webbrowser
|
||||
from gamestonk_terminal.helper_funcs import parse_known_args_and_warn
|
||||
from finvizfinance.group import valuation, performance, spectrum
|
||||
from PIL import Image
|
||||
|
||||
l_GROUPS = [
|
||||
"Sector",
|
||||
"Industry",
|
||||
"Industry (Basic Materials)",
|
||||
"Industry (Communication Services)",
|
||||
"Industry (Consumer Cyclical)",
|
||||
"Industry (Consumer Defensive)",
|
||||
"Industry (Energy)",
|
||||
"Industry (Financial)",
|
||||
"Industry (Healthcare)",
|
||||
"Industry (Industrials)",
|
||||
"Industry (Real Estate)",
|
||||
"Industry (Technology)",
|
||||
"Industry (Utilities)",
|
||||
"Country (U.S. listed stocks only)",
|
||||
"Capitalization",
|
||||
]
|
||||
|
||||
|
||||
def map_sp500_view(other_args: List[str]):
|
||||
@@ -58,3 +78,109 @@ def map_sp500_view(other_args: List[str]):
|
||||
f"https://finviz.com/map.ashx?t={d_type[ns_parser.s_type]}&st={d_period[ns_parser.s_period]}"
|
||||
)
|
||||
print("")
|
||||
|
||||
|
||||
def get_valuation_performance_data(group: str, data_type: str):
|
||||
"""Get group (sectors, industry or country) valuation/performance data
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other_args : List[str]
|
||||
argparse other args
|
||||
group : str
|
||||
select group to see data between sectors, industry or country
|
||||
data_type : str
|
||||
select data type to see data between valuation or performance
|
||||
|
||||
Returns
|
||||
----------
|
||||
pd.DataFrame
|
||||
dataframe with valuation/performance data
|
||||
"""
|
||||
if data_type == "valuation":
|
||||
df_group = valuation.Valuation().ScreenerView(group=group)
|
||||
elif data_type == "performance":
|
||||
df_group = performance.Performance().ScreenerView(group=group)
|
||||
|
||||
return df_group
|
||||
|
||||
|
||||
def get_spectrum_data(group: str):
|
||||
"""Get group (sectors, industry or country) valuation/performance data
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other_args : List[str]
|
||||
argparse other args
|
||||
group : str
|
||||
select group to see data between sectors, industry or country
|
||||
data_type : str
|
||||
select data type to see data between valuation or performance
|
||||
"""
|
||||
spectrum.Spectrum().ScreenerView(group=group)
|
||||
|
||||
|
||||
def view_group_data(other_args: List[str], data_type: str):
|
||||
"""View group (sectors, industry or country) valuation/performance/spectrum data
|
||||
|
||||
Parameters
|
||||
----------
|
||||
other_args : List[str]
|
||||
argparse other args
|
||||
data_type : str
|
||||
select data type to see data between valuation, performance and spectrum
|
||||
"""
|
||||
parser = argparse.ArgumentParser(
|
||||
add_help=False,
|
||||
prog="group_data",
|
||||
description="""
|
||||
View group (sectors, industry or country) valuation/performance/spectrum data. [Source: Finviz]
|
||||
""",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-g",
|
||||
"--group",
|
||||
nargs="+",
|
||||
type=str,
|
||||
default="Sector",
|
||||
dest="group",
|
||||
help="Data group (sector, industry or country)",
|
||||
choices=l_GROUPS,
|
||||
)
|
||||
|
||||
try:
|
||||
if other_args:
|
||||
if "-" not in other_args[0]:
|
||||
other_args.insert(0, "-g")
|
||||
other_args = [other_args[0], " ".join(other_args[1:])]
|
||||
|
||||
ns_parser = parse_known_args_and_warn(parser, other_args)
|
||||
if not ns_parser:
|
||||
return
|
||||
|
||||
if isinstance(ns_parser.group, List):
|
||||
ns_parser.group = ns_parser.group[0]
|
||||
|
||||
if data_type == "valuation" or data_type == "performance":
|
||||
df_group = get_valuation_performance_data(ns_parser.group, data_type)
|
||||
print(df_group.to_string())
|
||||
|
||||
elif data_type == "spectrum":
|
||||
get_spectrum_data(ns_parser.group)
|
||||
|
||||
img = Image.open(ns_parser.group + ".jpg")
|
||||
img.show()
|
||||
|
||||
print("")
|
||||
return ns_parser.group
|
||||
|
||||
else:
|
||||
print(
|
||||
"Invalid data type. Choose between valuation, performance and spectrum."
|
||||
)
|
||||
|
||||
print("")
|
||||
return ""
|
||||
|
||||
except SystemExit:
|
||||
print("")
|
||||
|
||||
70
poetry.lock
generated
70
poetry.lock
generated
@@ -1631,7 +1631,7 @@ python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "pillow"
|
||||
version = "8.1.2"
|
||||
version = "8.2.0"
|
||||
description = "Python Imaging Library (Fork)"
|
||||
category = "main"
|
||||
optional = false
|
||||
@@ -2837,7 +2837,7 @@ prediction = ["fbprophet", "tensorflow", "pmdarima", "transformers", "flair", "t
|
||||
[metadata]
|
||||
lock-version = "1.1"
|
||||
python-versions = "^3.6.8"
|
||||
content-hash = "d07d8303b9772ad67003224f0a4372bf91bf1685c7e0393eb4cc58757065324f"
|
||||
content-hash = "144771641ef753b1e937c0db16496c409905f6f692ef81a03d9ba716d9207bb0"
|
||||
|
||||
[metadata.files]
|
||||
absl-py = [
|
||||
@@ -3874,39 +3874,39 @@ pickleshare = [
|
||||
{file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"},
|
||||
]
|
||||
pillow = [
|
||||
{file = "Pillow-8.1.2-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:5cf03b9534aca63b192856aa601c68d0764810857786ea5da652581f3a44c2b0"},
|
||||
{file = "Pillow-8.1.2-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:f91b50ad88048d795c0ad004abbe1390aa1882073b1dca10bfd55d0b8cf18ec5"},
|
||||
{file = "Pillow-8.1.2-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5762ebb4436f46b566fc6351d67a9b5386b5e5de4e58fdaa18a1c83e0e20f1a8"},
|
||||
{file = "Pillow-8.1.2-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:e2cd8ac157c1e5ae88b6dd790648ee5d2777e76f1e5c7d184eaddb2938594f34"},
|
||||
{file = "Pillow-8.1.2-cp36-cp36m-win32.whl", hash = "sha256:72027ebf682abc9bafd93b43edc44279f641e8996fb2945104471419113cfc71"},
|
||||
{file = "Pillow-8.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:d1d6bca39bb6dd94fba23cdb3eeaea5e30c7717c5343004d900e2a63b132c341"},
|
||||
{file = "Pillow-8.1.2-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:90882c6f084ef68b71bba190209a734bf90abb82ab5e8f64444c71d5974008c6"},
|
||||
{file = "Pillow-8.1.2-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:89e4c757a91b8c55d97c91fa09c69b3677c227b942fa749e9a66eef602f59c28"},
|
||||
{file = "Pillow-8.1.2-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:8c4e32218c764bc27fe49b7328195579581aa419920edcc321c4cb877c65258d"},
|
||||
{file = "Pillow-8.1.2-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:a01da2c266d9868c4f91a9c6faf47a251f23b9a862dce81d2ff583135206f5be"},
|
||||
{file = "Pillow-8.1.2-cp37-cp37m-win32.whl", hash = "sha256:30d33a1a6400132e6f521640dd3f64578ac9bfb79a619416d7e8802b4ce1dd55"},
|
||||
{file = "Pillow-8.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:71b01ee69e7df527439d7752a2ce8fb89e19a32df484a308eca3e81f673d3a03"},
|
||||
{file = "Pillow-8.1.2-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:5a2d957eb4aba9d48170b8fe6538ec1fbc2119ffe6373782c03d8acad3323f2e"},
|
||||
{file = "Pillow-8.1.2-cp38-cp38-manylinux1_i686.whl", hash = "sha256:87f42c976f91ca2fc21a3293e25bd3cd895918597db1b95b93cbd949f7d019ce"},
|
||||
{file = "Pillow-8.1.2-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:15306d71a1e96d7e271fd2a0737038b5a92ca2978d2e38b6ced7966583e3d5af"},
|
||||
{file = "Pillow-8.1.2-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:71f31ee4df3d5e0b366dd362007740106d3210fb6a56ec4b581a5324ba254f06"},
|
||||
{file = "Pillow-8.1.2-cp38-cp38-win32.whl", hash = "sha256:98afcac3205d31ab6a10c5006b0cf040d0026a68ec051edd3517b776c1d78b09"},
|
||||
{file = "Pillow-8.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:328240f7dddf77783e72d5ed79899a6b48bc6681f8d1f6001f55933cb4905060"},
|
||||
{file = "Pillow-8.1.2-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:bead24c0ae3f1f6afcb915a057943ccf65fc755d11a1410a909c1fefb6c06ad1"},
|
||||
{file = "Pillow-8.1.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:81b3716cc9744ffdf76b39afb6247eae754186838cedad0b0ac63b2571253fe6"},
|
||||
{file = "Pillow-8.1.2-cp39-cp39-manylinux1_i686.whl", hash = "sha256:63cd413ac52ee3f67057223d363f4f82ce966e64906aea046daf46695e3c8238"},
|
||||
{file = "Pillow-8.1.2-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:8565355a29655b28fdc2c666fd9a3890fe5edc6639d128814fafecfae2d70910"},
|
||||
{file = "Pillow-8.1.2-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:1940fc4d361f9cc7e558d6f56ff38d7351b53052fd7911f4b60cd7bc091ea3b1"},
|
||||
{file = "Pillow-8.1.2-cp39-cp39-win32.whl", hash = "sha256:46c2bcf8e1e75d154e78417b3e3c64e96def738c2a25435e74909e127a8cba5e"},
|
||||
{file = "Pillow-8.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:aeab4cd016e11e7aa5cfc49dcff8e51561fa64818a0be86efa82c7038e9369d0"},
|
||||
{file = "Pillow-8.1.2-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:74cd9aa648ed6dd25e572453eb09b08817a1e3d9f8d1bd4d8403d99e42ea790b"},
|
||||
{file = "Pillow-8.1.2-pp36-pypy36_pp73-manylinux2010_i686.whl", hash = "sha256:e5739ae63636a52b706a0facec77b2b58e485637e1638202556156e424a02dc2"},
|
||||
{file = "Pillow-8.1.2-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:903293320efe2466c1ab3509a33d6b866dc850cfd0c5d9cc92632014cec185fb"},
|
||||
{file = "Pillow-8.1.2-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:5daba2b40782c1c5157a788ec4454067c6616f5a0c1b70e26ac326a880c2d328"},
|
||||
{file = "Pillow-8.1.2-pp37-pypy37_pp73-manylinux2010_i686.whl", hash = "sha256:1f93f2fe211f1ef75e6f589327f4d4f8545d5c8e826231b042b483d8383e8a7c"},
|
||||
{file = "Pillow-8.1.2-pp37-pypy37_pp73-manylinux2010_x86_64.whl", hash = "sha256:6efac40344d8f668b6c4533ae02a48d52fd852ef0654cc6f19f6ac146399c733"},
|
||||
{file = "Pillow-8.1.2-pp37-pypy37_pp73-win32.whl", hash = "sha256:f36c3ff63d6fc509ce599a2f5b0d0732189eed653420e7294c039d342c6e204a"},
|
||||
{file = "Pillow-8.1.2.tar.gz", hash = "sha256:b07c660e014852d98a00a91adfbe25033898a9d90a8f39beb2437d22a203fc44"},
|
||||
{file = "Pillow-8.2.0-cp36-cp36m-macosx_10_10_x86_64.whl", hash = "sha256:dc38f57d8f20f06dd7c3161c59ca2c86893632623f33a42d592f097b00f720a9"},
|
||||
{file = "Pillow-8.2.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:a013cbe25d20c2e0c4e85a9daf438f85121a4d0344ddc76e33fd7e3965d9af4b"},
|
||||
{file = "Pillow-8.2.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:8bb1e155a74e1bfbacd84555ea62fa21c58e0b4e7e6b20e4447b8d07990ac78b"},
|
||||
{file = "Pillow-8.2.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:c5236606e8570542ed424849f7852a0ff0bce2c4c8d0ba05cc202a5a9c97dee9"},
|
||||
{file = "Pillow-8.2.0-cp36-cp36m-win32.whl", hash = "sha256:12e5e7471f9b637762453da74e390e56cc43e486a88289995c1f4c1dc0bfe727"},
|
||||
{file = "Pillow-8.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:5afe6b237a0b81bd54b53f835a153770802f164c5570bab5e005aad693dab87f"},
|
||||
{file = "Pillow-8.2.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:cb7a09e173903541fa888ba010c345893cd9fc1b5891aaf060f6ca77b6a3722d"},
|
||||
{file = "Pillow-8.2.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:0d19d70ee7c2ba97631bae1e7d4725cdb2ecf238178096e8c82ee481e189168a"},
|
||||
{file = "Pillow-8.2.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:083781abd261bdabf090ad07bb69f8f5599943ddb539d64497ed021b2a67e5a9"},
|
||||
{file = "Pillow-8.2.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:c6b39294464b03457f9064e98c124e09008b35a62e3189d3513e5148611c9388"},
|
||||
{file = "Pillow-8.2.0-cp37-cp37m-win32.whl", hash = "sha256:01425106e4e8cee195a411f729cff2a7d61813b0b11737c12bd5991f5f14bcd5"},
|
||||
{file = "Pillow-8.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3b570f84a6161cf8865c4e08adf629441f56e32f180f7aa4ccbd2e0a5a02cba2"},
|
||||
{file = "Pillow-8.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:031a6c88c77d08aab84fecc05c3cde8414cd6f8406f4d2b16fed1e97634cc8a4"},
|
||||
{file = "Pillow-8.2.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:66cc56579fd91f517290ab02c51e3a80f581aba45fd924fcdee01fa06e635812"},
|
||||
{file = "Pillow-8.2.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:6c32cc3145928c4305d142ebec682419a6c0a8ce9e33db900027ddca1ec39178"},
|
||||
{file = "Pillow-8.2.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:624b977355cde8b065f6d51b98497d6cd5fbdd4f36405f7a8790e3376125e2bb"},
|
||||
{file = "Pillow-8.2.0-cp38-cp38-win32.whl", hash = "sha256:5cbf3e3b1014dddc45496e8cf38b9f099c95a326275885199f427825c6522232"},
|
||||
{file = "Pillow-8.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:463822e2f0d81459e113372a168f2ff59723e78528f91f0bd25680ac185cf797"},
|
||||
{file = "Pillow-8.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:95d5ef984eff897850f3a83883363da64aae1000e79cb3c321915468e8c6add5"},
|
||||
{file = "Pillow-8.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b91c36492a4bbb1ee855b7d16fe51379e5f96b85692dc8210831fbb24c43e484"},
|
||||
{file = "Pillow-8.2.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:d68cb92c408261f806b15923834203f024110a2e2872ecb0bd2a110f89d3c602"},
|
||||
{file = "Pillow-8.2.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f217c3954ce5fd88303fc0c317af55d5e0204106d86dea17eb8205700d47dec2"},
|
||||
{file = "Pillow-8.2.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:5b70110acb39f3aff6b74cf09bb4169b167e2660dabc304c1e25b6555fa781ef"},
|
||||
{file = "Pillow-8.2.0-cp39-cp39-win32.whl", hash = "sha256:a7d5e9fad90eff8f6f6106d3b98b553a88b6f976e51fce287192a5d2d5363713"},
|
||||
{file = "Pillow-8.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:238c197fc275b475e87c1453b05b467d2d02c2915fdfdd4af126145ff2e4610c"},
|
||||
{file = "Pillow-8.2.0-pp36-pypy36_pp73-macosx_10_10_x86_64.whl", hash = "sha256:0e04d61f0064b545b989126197930807c86bcbd4534d39168f4aa5fda39bb8f9"},
|
||||
{file = "Pillow-8.2.0-pp36-pypy36_pp73-manylinux2010_i686.whl", hash = "sha256:63728564c1410d99e6d1ae8e3b810fe012bc440952168af0a2877e8ff5ab96b9"},
|
||||
{file = "Pillow-8.2.0-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:c03c07ed32c5324939b19e36ae5f75c660c81461e312a41aea30acdd46f93a7c"},
|
||||
{file = "Pillow-8.2.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:4d98abdd6b1e3bf1a1cbb14c3895226816e666749ac040c4e2554231068c639b"},
|
||||
{file = "Pillow-8.2.0-pp37-pypy37_pp73-manylinux2010_i686.whl", hash = "sha256:aac00e4bc94d1b7813fe882c28990c1bc2f9d0e1aa765a5f2b516e8a6a16a9e4"},
|
||||
{file = "Pillow-8.2.0-pp37-pypy37_pp73-manylinux2010_x86_64.whl", hash = "sha256:22fd0f42ad15dfdde6c581347eaa4adb9a6fc4b865f90b23378aa7914895e120"},
|
||||
{file = "Pillow-8.2.0-pp37-pypy37_pp73-win32.whl", hash = "sha256:e98eca29a05913e82177b3ba3d198b1728e164869c613d76d0de4bde6768a50e"},
|
||||
{file = "Pillow-8.2.0.tar.gz", hash = "sha256:a787ab10d7bb5494e5f76536ac460741788f1fbce851068d73a87ca7c35fc3e1"},
|
||||
]
|
||||
plotly = [
|
||||
{file = "plotly-4.14.3-py2.py3-none-any.whl", hash = "sha256:d68fc15fcb49f88db27ab3e0c87110943e65fee02a47f33a8590f541b3042461"},
|
||||
|
||||
@@ -53,6 +53,7 @@ pycoingecko = "^1.4.0"
|
||||
detecta = "^0.0.5"
|
||||
tradingview-ta = "^3.2.3"
|
||||
finvizfinance = "^0.9.3"
|
||||
Pillow = "^8.2.0"
|
||||
|
||||
[tool.poetry.dev-dependencies]
|
||||
pytest = "^6.2.2"
|
||||
|
||||
Reference in New Issue
Block a user