From 1e8daa1f9af5c9711adba330509df93f5f07c515 Mon Sep 17 00:00:00 2001 From: Artem Veremey Date: Wed, 24 Nov 2021 17:15:42 -0800 Subject: [PATCH] Enabling pylint for DiscordBot (#979) * Enabling markdown linting for DiscordBot * Clearning remaining linters * Enabling pylint for DiscordBot * Fix DiscordBot imports, pylint and mypy * Flake8 fixes * Add an exception for too-many-branches --- .github/workflows/test.yml | 4 +- discordbot/CONTRIBUTING.md | 12 +- discordbot/README.md | 2 +- discordbot/__init__.py | 5 + discordbot/economy/__init__.py | 0 discordbot/economy/currencies.py | 2 +- discordbot/economy/economy_menu.py | 24 +-- discordbot/economy/feargreed.py | 4 +- discordbot/economy/futures.py | 2 +- discordbot/economy/glbonds.py | 2 +- discordbot/economy/indices.py | 2 +- discordbot/economy/overview.py | 2 +- discordbot/economy/performance.py | 4 +- discordbot/economy/usbonds.py | 2 +- discordbot/economy/valuation.py | 4 +- discordbot/generic_commands.py | 2 +- discordbot/helpers.py | 204 +++++++++--------- .../{discordbot.py => run_discordbot.py} | 4 +- discordbot/stocks/__init__.py | 7 + .../stocks/dark_pool_shorts/__init__.py | 0 discordbot/stocks/dark_pool_shorts/dpotc.py | 8 +- .../stocks/dark_pool_shorts/dps_menu.py | 22 +- discordbot/stocks/dark_pool_shorts/ftd.py | 10 +- discordbot/stocks/dark_pool_shorts/hsi.py | 4 +- discordbot/stocks/dark_pool_shorts/pos.py | 4 +- discordbot/stocks/dark_pool_shorts/psi.py | 6 +- discordbot/stocks/dark_pool_shorts/shorted.py | 4 +- discordbot/stocks/dark_pool_shorts/sidtc.py | 4 +- discordbot/stocks/dark_pool_shorts/spos.py | 4 +- discordbot/stocks/due_diligence/__init__.py | 0 discordbot/stocks/due_diligence/analyst.py | 2 +- discordbot/stocks/due_diligence/arktrades.py | 5 +- discordbot/stocks/due_diligence/customer.py | 2 +- discordbot/stocks/due_diligence/dd_menu.py | 21 +- discordbot/stocks/due_diligence/est.py | 4 +- discordbot/stocks/due_diligence/pt.py | 23 +- discordbot/stocks/due_diligence/sec.py | 2 +- discordbot/stocks/due_diligence/supplier.py | 2 +- discordbot/stocks/government/__init__.py | 0 discordbot/stocks/government/contracts.py | 17 +- discordbot/stocks/government/gov_menu.py | 26 +-- discordbot/stocks/government/gtrades.py | 17 +- discordbot/stocks/government/histcont.py | 9 +- discordbot/stocks/government/lastcontracts.py | 5 +- discordbot/stocks/government/lasttrades.py | 26 +-- discordbot/stocks/government/lobbying.py | 4 +- discordbot/stocks/government/qtrcontracts.py | 9 +- discordbot/stocks/government/topbuys.py | 19 +- discordbot/stocks/government/toplobbying.py | 17 +- discordbot/stocks/government/topsells.py | 19 +- .../stocks/technical_analysis/__init__.py | 0 discordbot/stocks/technical_analysis/ad.py | 35 +-- discordbot/stocks/technical_analysis/adosc.py | 35 +-- discordbot/stocks/technical_analysis/adx.py | 15 +- discordbot/stocks/technical_analysis/aroon.py | 15 +- .../stocks/technical_analysis/bbands.py | 15 +- discordbot/stocks/technical_analysis/cci.py | 15 +- discordbot/stocks/technical_analysis/cg.py | 15 +- .../stocks/technical_analysis/donchian.py | 15 +- discordbot/stocks/technical_analysis/ema.py | 13 +- discordbot/stocks/technical_analysis/fib.py | 15 +- .../stocks/technical_analysis/fisher.py | 15 +- discordbot/stocks/technical_analysis/hma.py | 13 +- discordbot/stocks/technical_analysis/kc.py | 15 +- discordbot/stocks/technical_analysis/macd.py | 15 +- discordbot/stocks/technical_analysis/obv.py | 15 +- discordbot/stocks/technical_analysis/recom.py | 2 +- discordbot/stocks/technical_analysis/rsi.py | 15 +- discordbot/stocks/technical_analysis/sma.py | 13 +- discordbot/stocks/technical_analysis/stoch.py | 15 +- .../stocks/technical_analysis/summary.py | 2 +- .../stocks/technical_analysis/ta_menu.py | 158 +++++++------- discordbot/stocks/technical_analysis/view.py | 13 +- discordbot/stocks/technical_analysis/wma.py | 13 +- discordbot/stocks/technical_analysis/zlma.py | 13 +- .../stocks/options/op_helpers.py | 3 +- 76 files changed, 578 insertions(+), 513 deletions(-) create mode 100644 discordbot/__init__.py create mode 100644 discordbot/economy/__init__.py rename discordbot/{discordbot.py => run_discordbot.py} (93%) create mode 100644 discordbot/stocks/__init__.py create mode 100644 discordbot/stocks/dark_pool_shorts/__init__.py create mode 100644 discordbot/stocks/due_diligence/__init__.py create mode 100644 discordbot/stocks/government/__init__.py create mode 100644 discordbot/stocks/technical_analysis/__init__.py diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index cdd78b2efe3..de36983e02f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -36,7 +36,7 @@ jobs: - run: shopt -s globstar && pyupgrade --py36-plus **/*.py - run: safety check - run: | - pylint terminal.py gamestonk_terminal tests + pylint terminal.py gamestonk_terminal discordbot tests test: name: Base Tests - Ubuntu-latest - Python 3.9 needs: linting @@ -250,7 +250,7 @@ jobs: shell: bash -l {0} run: | pip install pylint==2.11.1 - pylint terminal.py gamestonk_terminal tests + pylint terminal.py gamestonk_terminal discordbot tests - name: Run tests (Bash) shell: bash -l {0} diff --git a/discordbot/CONTRIBUTING.md b/discordbot/CONTRIBUTING.md index 3bbc97d1ccf..b210819f844 100644 --- a/discordbot/CONTRIBUTING.md +++ b/discordbot/CONTRIBUTING.md @@ -67,11 +67,11 @@ that directory. Such `dps_menu.py` file will have a code along these lines: ```python import asyncio import discord -import config_discordbot as cfg +import discordbot.config_discordbot as cfg import yfinance as yf # pylint: disable=wrong-import-order -from discordbot import gst_bot +from discordbot.run_discordbot import gst_bot class DarkPoolShortsCommands(discord.ext.commands.Cog): @@ -107,11 +107,11 @@ import os from datetime import datetime, timedelta import discord import yfinance as yf -import config_discordbot as cfg -import helpers +import discordbot.config_discordbot as cfg +import discordbot.helpers from matplotlib import pyplot as plt import matplotlib.dates as mdates -from discordbot import gst_imgur +from discordbot.run_discordbot import gst_imgur # IMPORT THE GST MODEL/VIEW THAT RETRIEVES DATA WANTED from gamestonk_terminal.stocks.dark_pool_shorts import sec_model @@ -162,7 +162,7 @@ async def ftd_command(ctx, ticker="", start="", end=""): plt.gcf().autofmt_xdate() plt.xlabel("Days") _ = plt.gca().twinx() - stock = helpers.load(ticker, start) + stock= discordbot.helpers.load(ticker, start) stock_ftd = stock[stock.index > start] stock_ftd = stock_ftd[stock_ftd.index < end] plt.plot(stock_ftd.index, stock_ftd["Adj Close"], color="tab:orange") diff --git a/discordbot/README.md b/discordbot/README.md index c8902f2013b..7646c2ac995 100644 --- a/discordbot/README.md +++ b/discordbot/README.md @@ -101,7 +101,7 @@ Other parameters that can be configured are: Just run the discord bot from this folder with: ```text -python discordbot.py +python discordbot/run_discordbot.py ``` Now, you should be ready to invoke the discord bot from server using something like: diff --git a/discordbot/__init__.py b/discordbot/__init__.py new file mode 100644 index 00000000000..2d005c21927 --- /dev/null +++ b/discordbot/__init__.py @@ -0,0 +1,5 @@ +# flake8: noqa +from . import ( + economy, + stocks, +) diff --git a/discordbot/economy/__init__.py b/discordbot/economy/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/discordbot/economy/currencies.py b/discordbot/economy/currencies.py index 8a118dde808..052b4eded7a 100644 --- a/discordbot/economy/currencies.py +++ b/discordbot/economy/currencies.py @@ -1,5 +1,5 @@ import discord -import config_discordbot as cfg +import discordbot.config_discordbot as cfg from gamestonk_terminal.economy import wsj_model diff --git a/discordbot/economy/economy_menu.py b/discordbot/economy/economy_menu.py index 7e7f073bf3c..cad19b142b1 100644 --- a/discordbot/economy/economy_menu.py +++ b/discordbot/economy/economy_menu.py @@ -1,19 +1,19 @@ import asyncio import discord -import config_discordbot as cfg -# pylint: disable=wrong-import-order -from discordbot import gst_bot +import discordbot.config_discordbot as cfg -from economy.feargreed import feargreed_command -from economy.overview import overview_command -from economy.indices import indices_command -from economy.futures import futures_command -from economy.usbonds import usbonds_command -from economy.glbonds import glbonds_command -from economy.currencies import currencies_command -from economy.valuation import valuation_command -from economy.performance import performance_command +from discordbot.economy.feargreed import feargreed_command +from discordbot.economy.overview import overview_command +from discordbot.economy.indices import indices_command +from discordbot.economy.futures import futures_command +from discordbot.economy.usbonds import usbonds_command +from discordbot.economy.glbonds import glbonds_command +from discordbot.economy.currencies import currencies_command +from discordbot.economy.valuation import valuation_command +from discordbot.economy.performance import performance_command + +from discordbot.run_discordbot import gst_bot class EconomyCommands(discord.ext.commands.Cog): diff --git a/discordbot/economy/feargreed.py b/discordbot/economy/feargreed.py index ca418d2214e..9740ce7a003 100644 --- a/discordbot/economy/feargreed.py +++ b/discordbot/economy/feargreed.py @@ -2,10 +2,10 @@ import os import datetime import matplotlib.pyplot as plt import discord -import config_discordbot as cfg -from discordbot import gst_imgur from gamestonk_terminal.economy import cnn_view, cnn_model +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur async def feargreed_command(ctx, indicator=""): diff --git a/discordbot/economy/futures.py b/discordbot/economy/futures.py index a2159b11a0a..7a18c826ae4 100644 --- a/discordbot/economy/futures.py +++ b/discordbot/economy/futures.py @@ -1,5 +1,5 @@ import discord -import config_discordbot as cfg +import discordbot.config_discordbot as cfg from gamestonk_terminal.economy import wsj_model diff --git a/discordbot/economy/glbonds.py b/discordbot/economy/glbonds.py index 6a170b55922..3e3dcd7326e 100644 --- a/discordbot/economy/glbonds.py +++ b/discordbot/economy/glbonds.py @@ -1,5 +1,5 @@ import discord -import config_discordbot as cfg +import discordbot.config_discordbot as cfg from gamestonk_terminal.economy import wsj_model diff --git a/discordbot/economy/indices.py b/discordbot/economy/indices.py index 661718449bf..8162d5e6942 100644 --- a/discordbot/economy/indices.py +++ b/discordbot/economy/indices.py @@ -1,5 +1,5 @@ import discord -import config_discordbot as cfg +import discordbot.config_discordbot as cfg from gamestonk_terminal.economy import wsj_model diff --git a/discordbot/economy/overview.py b/discordbot/economy/overview.py index 7b5fcee83c4..95c4a7d2b64 100644 --- a/discordbot/economy/overview.py +++ b/discordbot/economy/overview.py @@ -1,5 +1,5 @@ import discord -import config_discordbot as cfg +import discordbot.config_discordbot as cfg from gamestonk_terminal.economy import wsj_model diff --git a/discordbot/economy/performance.py b/discordbot/economy/performance.py index b9e4f07fe52..a02377494c1 100644 --- a/discordbot/economy/performance.py +++ b/discordbot/economy/performance.py @@ -1,6 +1,6 @@ import discord -import config_discordbot as cfg -from helpers import pagination +import discordbot.config_discordbot as cfg +from discordbot.helpers import pagination from gamestonk_terminal.economy import finviz_model diff --git a/discordbot/economy/usbonds.py b/discordbot/economy/usbonds.py index 3dc3364680b..0c1215b4332 100644 --- a/discordbot/economy/usbonds.py +++ b/discordbot/economy/usbonds.py @@ -1,5 +1,5 @@ import discord -import config_discordbot as cfg +import discordbot.config_discordbot as cfg from gamestonk_terminal.economy import wsj_model diff --git a/discordbot/economy/valuation.py b/discordbot/economy/valuation.py index fb4dc4e18e7..a64ba8461b1 100644 --- a/discordbot/economy/valuation.py +++ b/discordbot/economy/valuation.py @@ -1,6 +1,6 @@ import discord -import config_discordbot as cfg -from helpers import pagination +import discordbot.config_discordbot as cfg +from discordbot.helpers import pagination from gamestonk_terminal.economy import finviz_model diff --git a/discordbot/generic_commands.py b/discordbot/generic_commands.py index cbd1bc876e3..9e16869e02b 100644 --- a/discordbot/generic_commands.py +++ b/discordbot/generic_commands.py @@ -1,5 +1,5 @@ import discord -import config_discordbot as cfg +import discordbot.config_discordbot as cfg class GenericCommands(discord.ext.commands.Cog): diff --git a/discordbot/helpers.py b/discordbot/helpers.py index b00ff9ea219..e4ecb1c03c7 100644 --- a/discordbot/helpers.py +++ b/discordbot/helpers.py @@ -1,102 +1,102 @@ -import discord_components -import asyncio -from discordbot import gst_bot -import yfinance as yf - - -def load(ticker, start_date): - df_stock_candidate = yf.download(ticker, start=start_date, progress=False) - df_stock_candidate.index.name = "date" - return df_stock_candidate - - -async def pagination(cols, ctx): - current = 0 - components = [ - [ - discord_components.Button( - label="Prev", id="back", style=discord_components.ButtonStyle.red - ), - discord_components.Button( - label=f"Page {int(cols.index(cols[current]))}/{len(cols)-1}", - id="cur", - style=discord_components.ButtonStyle.green, - disabled=True, - ), - discord_components.Button( - label="Next", id="front", style=discord_components.ButtonStyle.green - ), - ] - ] - main_message = await ctx.send(embed=cols[current], components=components) - - while True: - # Try and except blocks to catch timeout and break - try: - interaction = await gst_bot.wait_for( - "button_click", - check=lambda i: i.component.id in ["back", "front"], # You can add more - timeout=30.0, # 30 seconds of inactivity - ) - # Getting the right list index - if interaction.component.id == "back": - current -= 1 - elif interaction.component.id == "front": - current += 1 - - # If its out of index, go back to start / end - if current == len(cols): - current = 0 - elif current < 0: - current = len(cols) - 1 - - # Edit to new page + the center counter changes - components = [ - [ - discord_components.Button( - label="Prev", - id="back", - style=discord_components.ButtonStyle.red, - ), - discord_components.Button( - label=f"Page {int(cols.index(cols[current]))}/{len(cols)-1}", - id="cur", - style=discord_components.ButtonStyle.green, - disabled=True, - ), - discord_components.Button( - label="Next", - id="front", - style=discord_components.ButtonStyle.green, - ), - ] - ] - - await interaction.edit_origin(embed=cols[current], components=components) - - except asyncio.TimeoutError: - # Disable and get outta here - components = [ - [ - discord_components.Button( - label="Prev", - id="back", - style=discord_components.ButtonStyle.green, - disabled=True, - ), - discord_components.Button( - label=f"Page {int(cols.index(cols[current]))}/{len(cols)-1}", - id="cur", - style=discord_components.ButtonStyle.grey, - disabled=True, - ), - discord_components.Button( - label="Next", - id="front", - style=discord_components.ButtonStyle.green, - disabled=True, - ), - ] - ] - await main_message.edit(components=components) - break +import asyncio +import discord_components +import yfinance as yf +from discordbot.run_discordbot import gst_bot + + +def load(ticker, start_date): + df_stock_candidate = yf.download(ticker, start=start_date, progress=False) + df_stock_candidate.index.name = "date" + return df_stock_candidate + + +async def pagination(cols, ctx): + current = 0 + components = [ + [ + discord_components.Button( + label="Prev", id="back", style=discord_components.ButtonStyle.red + ), + discord_components.Button( + label=f"Page {int(cols.index(cols[current]))}/{len(cols)-1}", + id="cur", + style=discord_components.ButtonStyle.green, + disabled=True, + ), + discord_components.Button( + label="Next", id="front", style=discord_components.ButtonStyle.green + ), + ] + ] + main_message = await ctx.send(embed=cols[current], components=components) + + while True: + # Try and except blocks to catch timeout and break + try: + interaction = await gst_bot.wait_for( + "button_click", + check=lambda i: i.component.id in ["back", "front"], # You can add more + timeout=30.0, # 30 seconds of inactivity + ) + # Getting the right list index + if interaction.component.id == "back": + current -= 1 + elif interaction.component.id == "front": + current += 1 + + # If its out of index, go back to start / end + if current == len(cols): + current = 0 + elif current < 0: + current = len(cols) - 1 + + # Edit to new page + the center counter changes + components = [ + [ + discord_components.Button( + label="Prev", + id="back", + style=discord_components.ButtonStyle.red, + ), + discord_components.Button( + label=f"Page {int(cols.index(cols[current]))}/{len(cols)-1}", + id="cur", + style=discord_components.ButtonStyle.green, + disabled=True, + ), + discord_components.Button( + label="Next", + id="front", + style=discord_components.ButtonStyle.green, + ), + ] + ] + + await interaction.edit_origin(embed=cols[current], components=components) + + except asyncio.TimeoutError: + # Disable and get outta here + components = [ + [ + discord_components.Button( + label="Prev", + id="back", + style=discord_components.ButtonStyle.green, + disabled=True, + ), + discord_components.Button( + label=f"Page {int(cols.index(cols[current]))}/{len(cols)-1}", + id="cur", + style=discord_components.ButtonStyle.grey, + disabled=True, + ), + discord_components.Button( + label="Next", + id="front", + style=discord_components.ButtonStyle.green, + disabled=True, + ), + ] + ] + await main_message.edit(components=components) + break diff --git a/discordbot/discordbot.py b/discordbot/run_discordbot.py similarity index 93% rename from discordbot/discordbot.py rename to discordbot/run_discordbot.py index 80fd3b26dfb..f6e4ff38385 100644 --- a/discordbot/discordbot.py +++ b/discordbot/run_discordbot.py @@ -4,11 +4,11 @@ import difflib import discord import discord_components import pyimgur -import config_discordbot as cfg +import discordbot.config_discordbot as cfg activity = discord.Game( - name="Gametonk Terminal: https://github.com/GamestonkTerminal/GamestonkTerminal" + name="Gamestonk Terminal: https://github.com/GamestonkTerminal/GamestonkTerminal" ) gst_bot = discord.ext.commands.Bot( diff --git a/discordbot/stocks/__init__.py b/discordbot/stocks/__init__.py new file mode 100644 index 00000000000..2df25f1bcbc --- /dev/null +++ b/discordbot/stocks/__init__.py @@ -0,0 +1,7 @@ +# flake8: noqa +from . import ( + dark_pool_shorts, + due_diligence, + government, + technical_analysis, +) diff --git a/discordbot/stocks/dark_pool_shorts/__init__.py b/discordbot/stocks/dark_pool_shorts/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/discordbot/stocks/dark_pool_shorts/dpotc.py b/discordbot/stocks/dark_pool_shorts/dpotc.py index b74c29e1a8c..0ff7c76ef7d 100644 --- a/discordbot/stocks/dark_pool_shorts/dpotc.py +++ b/discordbot/stocks/dark_pool_shorts/dpotc.py @@ -1,10 +1,10 @@ import os import matplotlib.dates as mdates import discord -import yfinance as yf -import config_discordbot as cfg from matplotlib import pyplot as plt -from discordbot import gst_imgur +import yfinance as yf +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur from gamestonk_terminal.config_plot import PLOT_DPI from gamestonk_terminal.stocks.dark_pool_shorts import finra_model @@ -45,7 +45,7 @@ async def dpotc_command(ctx, ticker=""): ) if ats.empty and otc.empty: - embed = embed.set_description("No data found.") + embed = embed.set_description("No data found.") # pylint: disable=no-member _, _ = plt.subplots(dpi=PLOT_DPI) plt.subplot(3, 1, (1, 2)) diff --git a/discordbot/stocks/dark_pool_shorts/dps_menu.py b/discordbot/stocks/dark_pool_shorts/dps_menu.py index 47ce892cf0c..c08c1572857 100644 --- a/discordbot/stocks/dark_pool_shorts/dps_menu.py +++ b/discordbot/stocks/dark_pool_shorts/dps_menu.py @@ -1,19 +1,18 @@ import asyncio import discord -import config_discordbot as cfg import yfinance as yf -# pylint: disable=wrong-import-order,too-many-branches -from discordbot import gst_bot +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_bot -from stocks.dark_pool_shorts.shorted import shorted_command -from stocks.dark_pool_shorts.ftd import ftd_command -from stocks.dark_pool_shorts.dpotc import dpotc_command -from stocks.dark_pool_shorts.spos import spos_command -from stocks.dark_pool_shorts.psi import psi_command -from stocks.dark_pool_shorts.hsi import hsi_command -from stocks.dark_pool_shorts.pos import pos_command -from stocks.dark_pool_shorts.sidtc import sidtc_command +from discordbot.stocks.dark_pool_shorts.shorted import shorted_command +from discordbot.stocks.dark_pool_shorts.ftd import ftd_command +from discordbot.stocks.dark_pool_shorts.dpotc import dpotc_command +from discordbot.stocks.dark_pool_shorts.spos import spos_command +from discordbot.stocks.dark_pool_shorts.psi import psi_command +from discordbot.stocks.dark_pool_shorts.hsi import hsi_command +from discordbot.stocks.dark_pool_shorts.pos import pos_command +from discordbot.stocks.dark_pool_shorts.sidtc import sidtc_command class DarkPoolShortsCommands(discord.ext.commands.Cog): @@ -122,6 +121,7 @@ class DarkPoolShortsCommands(discord.ext.commands.Cog): await psi_command(ctx, ticker) @discord.ext.commands.command(name="stocks.dps") + # pylint: disable=too-many-branches async def dark_pool_shorts_menu(self, ctx: discord.ext.commands.Context, ticker=""): """Stocks Context - Shows Dark Pool Shorts Menu diff --git a/discordbot/stocks/dark_pool_shorts/ftd.py b/discordbot/stocks/dark_pool_shorts/ftd.py index 45d9c1e6c2f..42cf5576475 100644 --- a/discordbot/stocks/dark_pool_shorts/ftd.py +++ b/discordbot/stocks/dark_pool_shorts/ftd.py @@ -1,12 +1,12 @@ import os from datetime import datetime, timedelta import discord -import yfinance as yf -import config_discordbot as cfg -import helpers from matplotlib import pyplot as plt import matplotlib.dates as mdates -from discordbot import gst_imgur +import yfinance as yf +import discordbot.config_discordbot as cfg +import discordbot.helpers +from discordbot.run_discordbot import gst_imgur from gamestonk_terminal.stocks.dark_pool_shorts import sec_model @@ -60,7 +60,7 @@ async def ftd_command(ctx, ticker="", start="", end=""): plt.gcf().autofmt_xdate() plt.xlabel("Days") _ = plt.gca().twinx() - stock = helpers.load(ticker, start) + stock = discordbot.helpers.load(ticker, start) stock_ftd = stock[stock.index > start] stock_ftd = stock_ftd[stock_ftd.index < end] plt.plot(stock_ftd.index, stock_ftd["Adj Close"], color="tab:orange") diff --git a/discordbot/stocks/dark_pool_shorts/hsi.py b/discordbot/stocks/dark_pool_shorts/hsi.py index b254331e574..65c430cac13 100644 --- a/discordbot/stocks/dark_pool_shorts/hsi.py +++ b/discordbot/stocks/dark_pool_shorts/hsi.py @@ -1,6 +1,6 @@ import discord -import config_discordbot as cfg -from helpers import pagination +import discordbot.config_discordbot as cfg +from discordbot.helpers import pagination from gamestonk_terminal.stocks.dark_pool_shorts import shortinterest_model diff --git a/discordbot/stocks/dark_pool_shorts/pos.py b/discordbot/stocks/dark_pool_shorts/pos.py index 3fa1d92a448..4ab57032214 100644 --- a/discordbot/stocks/dark_pool_shorts/pos.py +++ b/discordbot/stocks/dark_pool_shorts/pos.py @@ -1,6 +1,6 @@ import discord -import config_discordbot as cfg -from helpers import pagination +import discordbot.config_discordbot as cfg +from discordbot.helpers import pagination from gamestonk_terminal.stocks.dark_pool_shorts import stockgrid_model diff --git a/discordbot/stocks/dark_pool_shorts/psi.py b/discordbot/stocks/dark_pool_shorts/psi.py index 96cef147154..a2d6c73e256 100644 --- a/discordbot/stocks/dark_pool_shorts/psi.py +++ b/discordbot/stocks/dark_pool_shorts/psi.py @@ -1,10 +1,10 @@ import os from datetime import timedelta +import discord from matplotlib import pyplot as plt import yfinance as yf -import discord -import config_discordbot as cfg -from discordbot import gst_imgur +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur from gamestonk_terminal.config_plot import PLOT_DPI from gamestonk_terminal.stocks.dark_pool_shorts import stockgrid_model diff --git a/discordbot/stocks/dark_pool_shorts/shorted.py b/discordbot/stocks/dark_pool_shorts/shorted.py index 2c084ff4c99..6857de2a536 100644 --- a/discordbot/stocks/dark_pool_shorts/shorted.py +++ b/discordbot/stocks/dark_pool_shorts/shorted.py @@ -1,6 +1,6 @@ import discord -import config_discordbot as cfg -from helpers import pagination +import discordbot.config_discordbot as cfg +from discordbot.helpers import pagination from gamestonk_terminal.stocks.dark_pool_shorts import yahoofinance_model diff --git a/discordbot/stocks/dark_pool_shorts/sidtc.py b/discordbot/stocks/dark_pool_shorts/sidtc.py index e2101589876..8c9d12d8cc1 100644 --- a/discordbot/stocks/dark_pool_shorts/sidtc.py +++ b/discordbot/stocks/dark_pool_shorts/sidtc.py @@ -1,6 +1,6 @@ import discord -import config_discordbot as cfg -from helpers import pagination +import discordbot.config_discordbot as cfg +from discordbot.helpers import pagination from gamestonk_terminal.stocks.dark_pool_shorts import stockgrid_model diff --git a/discordbot/stocks/dark_pool_shorts/spos.py b/discordbot/stocks/dark_pool_shorts/spos.py index 90548a8193a..a11c426e232 100644 --- a/discordbot/stocks/dark_pool_shorts/spos.py +++ b/discordbot/stocks/dark_pool_shorts/spos.py @@ -1,9 +1,9 @@ import os -import config_discordbot as cfg import discord from matplotlib import pyplot as plt import yfinance as yf -from discordbot import gst_imgur +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur from gamestonk_terminal.config_plot import PLOT_DPI from gamestonk_terminal.stocks.dark_pool_shorts import stockgrid_model diff --git a/discordbot/stocks/due_diligence/__init__.py b/discordbot/stocks/due_diligence/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/discordbot/stocks/due_diligence/analyst.py b/discordbot/stocks/due_diligence/analyst.py index df5ca186c17..339a0967704 100644 --- a/discordbot/stocks/due_diligence/analyst.py +++ b/discordbot/stocks/due_diligence/analyst.py @@ -1,5 +1,5 @@ import discord -import config_discordbot as cfg +import discordbot.config_discordbot as cfg from gamestonk_terminal.stocks.due_diligence import finviz_model diff --git a/discordbot/stocks/due_diligence/arktrades.py b/discordbot/stocks/due_diligence/arktrades.py index 9d8efa72a75..651314cadb9 100644 --- a/discordbot/stocks/due_diligence/arktrades.py +++ b/discordbot/stocks/due_diligence/arktrades.py @@ -1,8 +1,9 @@ import discord -import config_discordbot as cfg -from helpers import pagination import pandas as pd +import discordbot.config_discordbot as cfg +from discordbot.helpers import pagination + from gamestonk_terminal.stocks.due_diligence import ark_model diff --git a/discordbot/stocks/due_diligence/customer.py b/discordbot/stocks/due_diligence/customer.py index 17405f7955a..dea344b84b0 100644 --- a/discordbot/stocks/due_diligence/customer.py +++ b/discordbot/stocks/due_diligence/customer.py @@ -1,5 +1,5 @@ import discord -import config_discordbot as cfg +import discordbot.config_discordbot as cfg from gamestonk_terminal.stocks.due_diligence import csimarket_model diff --git a/discordbot/stocks/due_diligence/dd_menu.py b/discordbot/stocks/due_diligence/dd_menu.py index c189c6bc3f8..9d9ca0f7975 100644 --- a/discordbot/stocks/due_diligence/dd_menu.py +++ b/discordbot/stocks/due_diligence/dd_menu.py @@ -1,15 +1,16 @@ -import discord -from discordbot import gst_bot -import config_discordbot as cfg import asyncio +import discord -from stocks.due_diligence.analyst import analyst_command -from stocks.due_diligence.pt import pt_command -from stocks.due_diligence.est import est_command -from stocks.due_diligence.sec import sec_command -from stocks.due_diligence.supplier import supplier_command -from stocks.due_diligence.customer import customer_command -from stocks.due_diligence.arktrades import arktrades_command +from discordbot.run_discordbot import gst_bot +import discordbot.config_discordbot as cfg + +from discordbot.stocks.due_diligence.analyst import analyst_command +from discordbot.stocks.due_diligence.pt import pt_command +from discordbot.stocks.due_diligence.est import est_command +from discordbot.stocks.due_diligence.sec import sec_command +from discordbot.stocks.due_diligence.supplier import supplier_command +from discordbot.stocks.due_diligence.customer import customer_command +from discordbot.stocks.due_diligence.arktrades import arktrades_command class DueDiligenceCommands(discord.ext.commands.Cog): diff --git a/discordbot/stocks/due_diligence/est.py b/discordbot/stocks/due_diligence/est.py index edecdb05914..5641090bf7e 100644 --- a/discordbot/stocks/due_diligence/est.py +++ b/discordbot/stocks/due_diligence/est.py @@ -1,6 +1,6 @@ import discord -import config_discordbot as cfg -from helpers import pagination +import discordbot.config_discordbot as cfg +from discordbot.helpers import pagination from gamestonk_terminal.stocks.due_diligence import business_insider_model diff --git a/discordbot/stocks/due_diligence/pt.py b/discordbot/stocks/due_diligence/pt.py index 247c62f2aab..71ef2201a8f 100644 --- a/discordbot/stocks/due_diligence/pt.py +++ b/discordbot/stocks/due_diligence/pt.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from matplotlib import pyplot as plt -from datetime import datetime, timedelta import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.stocks.due_diligence import business_insider_model @@ -27,15 +28,17 @@ async def pt_command(ctx, ticker="", raw="", start=""): else: start = datetime.strptime(start, cfg.DATE_FORMAT) - if raw == "false" or raw == "False" or raw == "FALSE" or raw == "": + if raw in ["false", "False", "FALSE", ""]: raw = False - elif raw == "true" or raw == "True" or raw == "TRUE": + + if raw in ["true", "True", "TRUE"]: raw = True - else: + + if raw not in [True, False]: raise Exception("raw argument has to be true or false") df_analyst_data = business_insider_model.get_price_target_from_analysts(ticker) - stock = helpers.load(ticker, start) + stock = discordbot.helpers.load(ticker, start) if df_analyst_data.empty or stock.empty: raise Exception("Enter valid ticker") diff --git a/discordbot/stocks/due_diligence/sec.py b/discordbot/stocks/due_diligence/sec.py index 30882963a25..e93d42eaca8 100644 --- a/discordbot/stocks/due_diligence/sec.py +++ b/discordbot/stocks/due_diligence/sec.py @@ -1,5 +1,5 @@ import discord -import config_discordbot as cfg +import discordbot.config_discordbot as cfg from gamestonk_terminal.stocks.due_diligence import marketwatch_model diff --git a/discordbot/stocks/due_diligence/supplier.py b/discordbot/stocks/due_diligence/supplier.py index 5e9222969e6..bf1b56b0b6a 100644 --- a/discordbot/stocks/due_diligence/supplier.py +++ b/discordbot/stocks/due_diligence/supplier.py @@ -1,5 +1,5 @@ import discord -import config_discordbot as cfg +import discordbot.config_discordbot as cfg from gamestonk_terminal.stocks.due_diligence import csimarket_model diff --git a/discordbot/stocks/government/__init__.py b/discordbot/stocks/government/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/discordbot/stocks/government/contracts.py b/discordbot/stocks/government/contracts.py index ff143b6a38b..5c719908ac6 100644 --- a/discordbot/stocks/government/contracts.py +++ b/discordbot/stocks/government/contracts.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from matplotlib import pyplot as plt import os +import discord +from matplotlib import pyplot as plt import pandas as pd +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur + from gamestonk_terminal.config_plot import PLOT_DPI from gamestonk_terminal.stocks.government import quiverquant_model from gamestonk_terminal.helper_funcs import plot_autoscale @@ -24,11 +25,13 @@ async def contracts_command(ctx, ticker="", past_transaction_days="", raw=""): raise Exception("Number has to be an integer") past_transaction_days = int(past_transaction_days) - if raw == "false" or raw == "False" or raw == "FALSE" or raw == "": + if raw in ["false", "False", "FALSE", ""]: raw = False - elif raw == "true" or raw == "True" or raw == "TRUE": + + if raw in ["true", "True", "TRUE"]: raw = True - else: + + if raw not in [True, False]: raise Exception("raw argument has to be true or false") if ticker == "": diff --git a/discordbot/stocks/government/gov_menu.py b/discordbot/stocks/government/gov_menu.py index f02cc24315b..f6ae4213c2d 100644 --- a/discordbot/stocks/government/gov_menu.py +++ b/discordbot/stocks/government/gov_menu.py @@ -1,20 +1,19 @@ import asyncio import discord -import config_discordbot as cfg +import discordbot.config_discordbot as cfg -# pylint: disable=wrong-import-order,too-many-branches -from discordbot import gst_bot +from discordbot.run_discordbot import gst_bot -from stocks.government.lasttrades import lasttrades_command -from stocks.government.topbuys import topbuys_command -from stocks.government.topsells import topsells_command -from stocks.government.lastcontracts import lastcontracts_command -from stocks.government.qtrcontracts import qtrcontracts_command -from stocks.government.toplobbying import toplobbying_command -from stocks.government.gtrades import gtrades_command -from stocks.government.contracts import contracts_command -from stocks.government.histcont import histcont_command -from stocks.government.lobbying import lobbying_command +from discordbot.stocks.government.lasttrades import lasttrades_command +from discordbot.stocks.government.topbuys import topbuys_command +from discordbot.stocks.government.topsells import topsells_command +from discordbot.stocks.government.lastcontracts import lastcontracts_command +from discordbot.stocks.government.qtrcontracts import qtrcontracts_command +from discordbot.stocks.government.toplobbying import toplobbying_command +from discordbot.stocks.government.gtrades import gtrades_command +from discordbot.stocks.government.contracts import contracts_command +from discordbot.stocks.government.histcont import histcont_command +from discordbot.stocks.government.lobbying import lobbying_command class GovernmentCommands(discord.ext.commands.Cog): @@ -204,6 +203,7 @@ class GovernmentCommands(discord.ext.commands.Cog): """ await lobbying_command(ctx, ticker, num) + # pylint: disable=too-many-branches @discord.ext.commands.command(name="stocks.gov") async def government_menu(self, ctx: discord.ext.commands.Context, ticker=""): """Stocks Context - Shows Government Menu diff --git a/discordbot/stocks/government/gtrades.py b/discordbot/stocks/government/gtrades.py index 5025726436f..bb15edc69dd 100644 --- a/discordbot/stocks/government/gtrades.py +++ b/discordbot/stocks/government/gtrades.py @@ -1,12 +1,13 @@ +import os +from datetime import datetime, timedelta import discord -import config_discordbot as cfg -from discordbot import gst_imgur from matplotlib import pyplot as plt import matplotlib.dates as mdates -from datetime import datetime, timedelta -import os import pandas as pd +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur + from gamestonk_terminal.config_plot import PLOT_DPI from gamestonk_terminal.stocks.government import quiverquant_model from gamestonk_terminal.helper_funcs import plot_autoscale @@ -30,11 +31,13 @@ async def gtrades_command( raise Exception("Number has to be an integer") past_transactions_months = float(past_transactions_months) - if raw == "false" or raw == "False" or raw == "FALSE" or raw == "": + if raw in ["false", "False", "FALSE", ""]: raw = False - elif raw == "true" or raw == "True" or raw == "TRUE": + + if raw in ["true", "True", "TRUE"]: raw = True - else: + + if raw not in [True, False]: raise Exception("raw argument has to be true or false") if ticker == "": diff --git a/discordbot/stocks/government/histcont.py b/discordbot/stocks/government/histcont.py index 40c8c2bee76..b9d5a933e03 100644 --- a/discordbot/stocks/government/histcont.py +++ b/discordbot/stocks/government/histcont.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from matplotlib import pyplot as plt import os +import discord +from matplotlib import pyplot as plt import numpy as np +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur + from gamestonk_terminal.config_plot import PLOT_DPI from gamestonk_terminal.stocks.government import quiverquant_model from gamestonk_terminal.helper_funcs import plot_autoscale diff --git a/discordbot/stocks/government/lastcontracts.py b/discordbot/stocks/government/lastcontracts.py index da38f2fc3af..9f35d25b420 100644 --- a/discordbot/stocks/government/lastcontracts.py +++ b/discordbot/stocks/government/lastcontracts.py @@ -1,8 +1,9 @@ import discord -import config_discordbot as cfg -from helpers import pagination import pandas as pd +import discordbot.config_discordbot as cfg +from discordbot.helpers import pagination + from gamestonk_terminal.stocks.government import quiverquant_model diff --git a/discordbot/stocks/government/lasttrades.py b/discordbot/stocks/government/lasttrades.py index 2d4b519aae7..faef8e74fbe 100644 --- a/discordbot/stocks/government/lasttrades.py +++ b/discordbot/stocks/government/lasttrades.py @@ -1,6 +1,6 @@ import discord -import config_discordbot as cfg -from helpers import pagination +import discordbot.config_discordbot as cfg +from discordbot.helpers import pagination from gamestonk_terminal.stocks.government import quiverquant_model @@ -84,18 +84,18 @@ async def lasttrades_command( f" days. The following are available: " f"{', '.join(df_gov['Representative'].str.split().str[0].unique())}" ) - else: - embed = discord.Embed( - title=f"Stocks: [quiverquant.com] Trades by {representative}", - description="```" + df_gov_rep.to_string(index=False) + "```", - colour=cfg.COLOR, - ) - embed.set_author( - name=cfg.AUTHOR_NAME, - icon_url=cfg.AUTHOR_ICON_URL, - ) - await ctx.send(embed=embed) + embed = discord.Embed( + title=f"Stocks: [quiverquant.com] Trades by {representative}", + description="```" + df_gov_rep.to_string(index=False) + "```", + colour=cfg.COLOR, + ) + embed.set_author( + name=cfg.AUTHOR_NAME, + icon_url=cfg.AUTHOR_ICON_URL, + ) + + await ctx.send(embed=embed) else: df_gov_str = df_gov.to_string(index=False) if len(df_gov_str) <= 4000: diff --git a/discordbot/stocks/government/lobbying.py b/discordbot/stocks/government/lobbying.py index 8ced6977348..94459c41310 100644 --- a/discordbot/stocks/government/lobbying.py +++ b/discordbot/stocks/government/lobbying.py @@ -1,6 +1,6 @@ import discord -import config_discordbot as cfg -from helpers import pagination +import discordbot.config_discordbot as cfg +from discordbot.helpers import pagination from gamestonk_terminal.stocks.government import quiverquant_model diff --git a/discordbot/stocks/government/qtrcontracts.py b/discordbot/stocks/government/qtrcontracts.py index 8b871f482df..cc183332576 100644 --- a/discordbot/stocks/government/qtrcontracts.py +++ b/discordbot/stocks/government/qtrcontracts.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from matplotlib import pyplot as plt import os +import discord +from matplotlib import pyplot as plt import numpy as np +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur + from gamestonk_terminal.config_plot import PLOT_DPI from gamestonk_terminal.stocks.government import quiverquant_model from gamestonk_terminal.helper_funcs import plot_autoscale diff --git a/discordbot/stocks/government/topbuys.py b/discordbot/stocks/government/topbuys.py index 337b4ac953a..8e62ddad319 100644 --- a/discordbot/stocks/government/topbuys.py +++ b/discordbot/stocks/government/topbuys.py @@ -1,11 +1,12 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt import pandas as pd +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur + from gamestonk_terminal.config_plot import PLOT_DPI from gamestonk_terminal.stocks.government import quiverquant_model from gamestonk_terminal.helper_funcs import plot_autoscale @@ -36,11 +37,13 @@ async def topbuys_command( raise Exception("Number has to be an integer") num = int(num) - if raw == "false" or raw == "False" or raw == "FALSE" or raw == "": + if raw in ["false", "False", "FALSE", ""]: raw = False - elif raw == "true" or raw == "True" or raw == "TRUE": + + if raw in ["true", "True", "TRUE"]: raw = True - else: + + if raw not in [True, False]: raise Exception("raw argument has to be true or false") possible_args = ["congress", "senate", "house"] diff --git a/discordbot/stocks/government/toplobbying.py b/discordbot/stocks/government/toplobbying.py index 89f68bb615f..46abc6b9bd9 100644 --- a/discordbot/stocks/government/toplobbying.py +++ b/discordbot/stocks/government/toplobbying.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from matplotlib import pyplot as plt import os +import discord +from matplotlib import pyplot as plt import pandas as pd +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur + from gamestonk_terminal.config_plot import PLOT_DPI from gamestonk_terminal.stocks.government import quiverquant_model from gamestonk_terminal.helper_funcs import plot_autoscale @@ -24,11 +25,13 @@ async def toplobbying_command(ctx, num="", raw=""): raise Exception("Number has to be an integer") num = int(num) - if raw == "false" or raw == "False" or raw == "FALSE" or raw == "": + if raw in ["false", "False", "FALSE", ""]: raw = False - elif raw == "true" or raw == "True" or raw == "TRUE": + + if raw in ["true", "True", "TRUE"]: raw = True - else: + + if raw not in [True, False]: raise Exception("raw argument has to be true or false") # Retrieve Data diff --git a/discordbot/stocks/government/topsells.py b/discordbot/stocks/government/topsells.py index 65d4936a41e..3b099d75977 100644 --- a/discordbot/stocks/government/topsells.py +++ b/discordbot/stocks/government/topsells.py @@ -1,11 +1,12 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt import pandas as pd +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur + from gamestonk_terminal.config_plot import PLOT_DPI from gamestonk_terminal.stocks.government import quiverquant_model from gamestonk_terminal.helper_funcs import plot_autoscale @@ -36,11 +37,13 @@ async def topsells_command( raise Exception("Number has to be an integer") num = int(num) - if raw == "false" or raw == "False" or raw == "FALSE" or raw == "": + if raw in ["false", "False", "FALSE", ""]: raw = False - elif raw == "true" or raw == "True" or raw == "TRUE": + + if raw in ["true", "True", "TRUE"]: raw = True - else: + + if raw not in [True, False]: raise Exception("raw argument has to be true or false") possible_args = ["congress", "senate", "house"] diff --git a/discordbot/stocks/technical_analysis/__init__.py b/discordbot/stocks/technical_analysis/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/discordbot/stocks/technical_analysis/ad.py b/discordbot/stocks/technical_analysis/ad.py index 5398eff6553..9104475e0fa 100644 --- a/discordbot/stocks/technical_analysis/ad.py +++ b/discordbot/stocks/technical_analysis/ad.py @@ -1,24 +1,25 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import volume_model from gamestonk_terminal.config_plot import PLOT_DPI -async def ad_command(ctx, ticker="", open="False", start="", end=""): +async def ad_command(ctx, ticker="", is_open="False", start="", end=""): """Displays chart with accumulation/distribution line [Yahoo Finance]""" try: # Debug if cfg.DEBUG: - print(f"!stocks.ta.ad {ticker} {open} {start} {end}") + print(f"!stocks.ta.ad {ticker} {is_open} {start} {end}") # Check for argument if ticker == "": @@ -34,15 +35,17 @@ async def ad_command(ctx, ticker="", open="False", start="", end=""): else: end = datetime.strptime(end, cfg.DATE_FORMAT) - if open == "false" or open == "False" or open == "FALSE": - open = False - elif open == "true" or open == "True" or open == "TRUE": - open = True - else: - raise Exception("open argument has to be true or false") + if is_open in ["false", "False", "FALSE", ""]: + is_open = False + + if is_open in ["true", "True", "TRUE"]: + is_open = True + + if is_open not in [True, False]: + raise Exception("is_open argument has to be true or false") ticker = ticker.upper() - df_stock = helpers.load(ticker, start) + df_stock = discordbot.helpers.load(ticker, start) if df_stock.empty: raise Exception("Stock ticker is invalid") @@ -56,7 +59,7 @@ async def ad_command(ctx, ticker="", open="False", start="", end=""): divisor = 1_000_000 df_vol = df_stock["Volume"].dropna() df_vol = df_vol.values / divisor - df_ta = volume_model.ad(df_stock, open) + df_ta = volume_model.ad(df_stock, is_open) df_cal = df_ta.values df_cal = df_cal / divisor diff --git a/discordbot/stocks/technical_analysis/adosc.py b/discordbot/stocks/technical_analysis/adosc.py index fc8cd589ca1..59fa8155098 100644 --- a/discordbot/stocks/technical_analysis/adosc.py +++ b/discordbot/stocks/technical_analysis/adosc.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import volume_model @@ -12,7 +13,7 @@ from gamestonk_terminal.config_plot import PLOT_DPI async def adosc_command( - ctx, ticker="", open="False", fast="3", slow="10", start="", end="" + ctx, ticker="", is_open="False", fast="3", slow="10", start="", end="" ): """Displays chart with chaikin oscillator [Yahoo Finance]""" @@ -20,7 +21,7 @@ async def adosc_command( # Debug if cfg.DEBUG: - print(f"!stocks.ta.adosc {ticker} {open} {fast} {slow} {start} {end}") + print(f"!stocks.ta.adosc {ticker} {is_open} {fast} {slow} {start} {end}") # Check for argument if ticker == "": @@ -43,15 +44,17 @@ async def adosc_command( raise Exception("Number has to be an integer") slow = float(slow) - if open == "false" or open == "False" or open == "FALSE": - open = False - elif open == "true" or open == "True" or open == "TRUE": - open = True - else: - raise Exception("open argument has to be true or false") + if is_open in ["false", "False", "FALSE", ""]: + is_open = False + + if is_open in ["true", "True", "TRUE"]: + is_open = True + + if is_open not in [True, False]: + raise Exception("raw argument has to be true or false") ticker = ticker.upper() - df_stock = helpers.load(ticker, start) + df_stock = discordbot.helpers.load(ticker, start) if df_stock.empty: raise Exception("Stock ticker is invalid") @@ -66,7 +69,7 @@ async def adosc_command( divisor = 1_000_000 df_vol = df_stock["Volume"].dropna() df_vol = df_vol.values / divisor - df_ta = volume_model.adosc(df_stock, open, fast, slow) + df_ta = volume_model.adosc(df_stock, is_open, fast, slow) df_cal = df_ta.values df_cal = df_cal / divisor diff --git a/discordbot/stocks/technical_analysis/adx.py b/discordbot/stocks/technical_analysis/adx.py index 3b57a3b8c9f..6c009cdcfeb 100644 --- a/discordbot/stocks/technical_analysis/adx.py +++ b/discordbot/stocks/technical_analysis/adx.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import trend_indicators_model @@ -47,7 +48,7 @@ async def adx_command( drift = float(drift) ticker = ticker.upper() - df_stock = helpers.load(ticker, start) + df_stock = discordbot.helpers.load(ticker, start) if df_stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/aroon.py b/discordbot/stocks/technical_analysis/aroon.py index 0e41706b530..85234f3450e 100644 --- a/discordbot/stocks/technical_analysis/aroon.py +++ b/discordbot/stocks/technical_analysis/aroon.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import trend_indicators_model @@ -42,7 +43,7 @@ async def aroon_command(ctx, ticker="", length="25", scalar="100", start="", end scalar = float(scalar) ticker = ticker.upper() - df_stock = helpers.load(ticker, start) + df_stock = discordbot.helpers.load(ticker, start) if df_stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/bbands.py b/discordbot/stocks/technical_analysis/bbands.py index 8b0ee429b86..a81451f70b4 100644 --- a/discordbot/stocks/technical_analysis/bbands.py +++ b/discordbot/stocks/technical_analysis/bbands.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import volatility_model @@ -67,7 +68,7 @@ async def bbands_command( raise Exception("Invalid ma entered") ticker = ticker.upper() - df_stock = helpers.load(ticker, start) + df_stock = discordbot.helpers.load(ticker, start) if df_stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/cci.py b/discordbot/stocks/technical_analysis/cci.py index b8bb9665f2d..3a65eeb6074 100644 --- a/discordbot/stocks/technical_analysis/cci.py +++ b/discordbot/stocks/technical_analysis/cci.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import momentum_model @@ -42,7 +43,7 @@ async def cci_command(ctx, ticker="", length="14", scalar="0.015", start="", end scalar = float(scalar) ticker = ticker.upper() - df_stock = helpers.load(ticker, start) + df_stock = discordbot.helpers.load(ticker, start) if df_stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/cg.py b/discordbot/stocks/technical_analysis/cg.py index 7d63d2b9707..507c8a58740 100644 --- a/discordbot/stocks/technical_analysis/cg.py +++ b/discordbot/stocks/technical_analysis/cg.py @@ -1,12 +1,13 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt import numpy as np +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers + from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import momentum_model from gamestonk_terminal.config_plot import PLOT_DPI @@ -40,7 +41,7 @@ async def cg_command(ctx, ticker="", length="14", start="", end=""): length = float(length) ticker = ticker.upper() - df_stock = helpers.load(ticker, start) + df_stock = discordbot.helpers.load(ticker, start) if df_stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/donchian.py b/discordbot/stocks/technical_analysis/donchian.py index d36264c0874..2035e0e2ab6 100644 --- a/discordbot/stocks/technical_analysis/donchian.py +++ b/discordbot/stocks/technical_analysis/donchian.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import volatility_model @@ -46,7 +47,7 @@ async def donchian_command( lower_length = float(lower_length) ticker = ticker.upper() - df_stock = helpers.load(ticker, start) + df_stock = discordbot.helpers.load(ticker, start) if df_stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/ema.py b/discordbot/stocks/technical_analysis/ema.py index 43149483a60..023ac74f8af 100644 --- a/discordbot/stocks/technical_analysis/ema.py +++ b/discordbot/stocks/technical_analysis/ema.py @@ -1,11 +1,12 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur +import os from datetime import datetime, timedelta +import discord from matplotlib import pyplot as plt import pandas as pd -import os -import helpers + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import overlap_model @@ -58,7 +59,7 @@ async def ema_command(ctx, ticker="", window="", offset="", start="", end=""): offset = float(offset) ticker = ticker.upper() - stock = helpers.load(ticker, start) + stock = discordbot.helpers.load(ticker, start) if stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/fib.py b/discordbot/stocks/technical_analysis/fib.py index bbd355ff161..b99963f516b 100644 --- a/discordbot/stocks/technical_analysis/fib.py +++ b/discordbot/stocks/technical_analysis/fib.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import custom_indicators_model @@ -35,7 +36,7 @@ async def fib_command(ctx, ticker="", start="", end=""): end = datetime.strptime(end, cfg.DATE_FORMAT) ticker = ticker.upper() - df_stock = helpers.load(ticker, start) + df_stock = discordbot.helpers.load(ticker, start) if df_stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/fisher.py b/discordbot/stocks/technical_analysis/fisher.py index 415d18ec786..30bc89577d6 100644 --- a/discordbot/stocks/technical_analysis/fisher.py +++ b/discordbot/stocks/technical_analysis/fisher.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import momentum_model @@ -39,7 +40,7 @@ async def fisher_command(ctx, ticker="", length="14", start="", end=""): length = float(length) ticker = ticker.upper() - df_stock = helpers.load(ticker, start) + df_stock = discordbot.helpers.load(ticker, start) if df_stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/hma.py b/discordbot/stocks/technical_analysis/hma.py index 98a44908aa6..f830f7da0f8 100644 --- a/discordbot/stocks/technical_analysis/hma.py +++ b/discordbot/stocks/technical_analysis/hma.py @@ -1,11 +1,12 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur +import os from datetime import datetime, timedelta +import discord from matplotlib import pyplot as plt import pandas as pd -import os -import helpers + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import overlap_model @@ -58,7 +59,7 @@ async def hma_command(ctx, ticker="", window="", offset="", start="", end=""): offset = float(offset) ticker = ticker.upper() - stock = helpers.load(ticker, start) + stock = discordbot.helpers.load(ticker, start) if stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/kc.py b/discordbot/stocks/technical_analysis/kc.py index 1c2b8970853..d1fb2890d34 100644 --- a/discordbot/stocks/technical_analysis/kc.py +++ b/discordbot/stocks/technical_analysis/kc.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import volatility_model @@ -54,7 +55,7 @@ async def kc_command( raise Exception("Invalid ma entered") ticker = ticker.upper() - df_stock = helpers.load(ticker, start) + df_stock = discordbot.helpers.load(ticker, start) if df_stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/macd.py b/discordbot/stocks/technical_analysis/macd.py index f19bcf17088..464342ebce9 100644 --- a/discordbot/stocks/technical_analysis/macd.py +++ b/discordbot/stocks/technical_analysis/macd.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import momentum_model @@ -47,7 +48,7 @@ async def macd_command( signal = float(signal) ticker = ticker.upper() - df_stock = helpers.load(ticker, start) + df_stock = discordbot.helpers.load(ticker, start) if df_stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/obv.py b/discordbot/stocks/technical_analysis/obv.py index 5c7a86c0fff..e622a132f8f 100644 --- a/discordbot/stocks/technical_analysis/obv.py +++ b/discordbot/stocks/technical_analysis/obv.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import volume_model @@ -35,7 +36,7 @@ async def obv_command(ctx, ticker="", start="", end=""): end = datetime.strptime(end, cfg.DATE_FORMAT) ticker = ticker.upper() - df_stock = helpers.load(ticker, start) + df_stock = discordbot.helpers.load(ticker, start) if df_stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/recom.py b/discordbot/stocks/technical_analysis/recom.py index 61bc3470875..385f6afae6d 100644 --- a/discordbot/stocks/technical_analysis/recom.py +++ b/discordbot/stocks/technical_analysis/recom.py @@ -1,5 +1,5 @@ import discord -import config_discordbot as cfg +import discordbot.config_discordbot as cfg from gamestonk_terminal.stocks.technical_analysis import tradingview_model diff --git a/discordbot/stocks/technical_analysis/rsi.py b/discordbot/stocks/technical_analysis/rsi.py index 5ead6eba8f3..658815cb00a 100644 --- a/discordbot/stocks/technical_analysis/rsi.py +++ b/discordbot/stocks/technical_analysis/rsi.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import momentum_model @@ -47,7 +48,7 @@ async def rsi_command( drift = float(drift) ticker = ticker.upper() - df_stock = helpers.load(ticker, start) + df_stock = discordbot.helpers.load(ticker, start) if df_stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/sma.py b/discordbot/stocks/technical_analysis/sma.py index 930ee6be3d3..7af513d7f13 100644 --- a/discordbot/stocks/technical_analysis/sma.py +++ b/discordbot/stocks/technical_analysis/sma.py @@ -1,11 +1,12 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur +import os from datetime import datetime, timedelta +import discord from matplotlib import pyplot as plt import pandas as pd -import os -import helpers + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import overlap_model @@ -58,7 +59,7 @@ async def sma_command(ctx, ticker="", window="", offset="", start="", end=""): offset = float(offset) ticker = ticker.upper() - stock = helpers.load(ticker, start) + stock = discordbot.helpers.load(ticker, start) if stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/stoch.py b/discordbot/stocks/technical_analysis/stoch.py index 94ecb00f693..459c9e03615 100644 --- a/discordbot/stocks/technical_analysis/stoch.py +++ b/discordbot/stocks/technical_analysis/stoch.py @@ -1,10 +1,11 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from datetime import datetime, timedelta -from matplotlib import pyplot as plt import os -import helpers +from datetime import datetime, timedelta +import discord +from matplotlib import pyplot as plt + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import momentum_model @@ -47,7 +48,7 @@ async def stoch_command( slow_d = float(slow_d) ticker = ticker.upper() - df_stock = helpers.load(ticker, start) + df_stock = discordbot.helpers.load(ticker, start) if df_stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/summary.py b/discordbot/stocks/technical_analysis/summary.py index 6d5e44af021..cd23ab87e96 100644 --- a/discordbot/stocks/technical_analysis/summary.py +++ b/discordbot/stocks/technical_analysis/summary.py @@ -1,5 +1,5 @@ import discord -import config_discordbot as cfg +import discordbot.config_discordbot as cfg from gamestonk_terminal.stocks.technical_analysis import finbrain_model diff --git a/discordbot/stocks/technical_analysis/ta_menu.py b/discordbot/stocks/technical_analysis/ta_menu.py index 5cc105db872..f7bd19bbd34 100644 --- a/discordbot/stocks/technical_analysis/ta_menu.py +++ b/discordbot/stocks/technical_analysis/ta_menu.py @@ -1,34 +1,35 @@ +from datetime import datetime, timedelta import asyncio import discord import discord_components -import config_discordbot as cfg -import helpers -from datetime import datetime, timedelta -from stocks.technical_analysis.ema import ema_command -from stocks.technical_analysis.sma import sma_command -from stocks.technical_analysis.wma import wma_command -from stocks.technical_analysis.hma import hma_command -from stocks.technical_analysis.zlma import zlma_command -from stocks.technical_analysis.cci import cci_command -from stocks.technical_analysis.macd import macd_command -from stocks.technical_analysis.rsi import rsi_command -from stocks.technical_analysis.stoch import stoch_command -from stocks.technical_analysis.fisher import fisher_command -from stocks.technical_analysis.cg import cg_command -from stocks.technical_analysis.adx import adx_command -from stocks.technical_analysis.aroon import aroon_command -from stocks.technical_analysis.bbands import bbands_command -from stocks.technical_analysis.donchian import donchian_command -from stocks.technical_analysis.kc import kc_command -from stocks.technical_analysis.ad import ad_command -from stocks.technical_analysis.adosc import adosc_command -from stocks.technical_analysis.obv import obv_command -from stocks.technical_analysis.fib import fib_command -from stocks.technical_analysis.view import view_command -from stocks.technical_analysis.summary import summary_command -from stocks.technical_analysis.recom import recom_command -from discordbot import gst_bot +import discordbot.config_discordbot as cfg +import discordbot.helpers + +from discordbot.stocks.technical_analysis.ema import ema_command +from discordbot.stocks.technical_analysis.sma import sma_command +from discordbot.stocks.technical_analysis.wma import wma_command +from discordbot.stocks.technical_analysis.hma import hma_command +from discordbot.stocks.technical_analysis.zlma import zlma_command +from discordbot.stocks.technical_analysis.cci import cci_command +from discordbot.stocks.technical_analysis.macd import macd_command +from discordbot.stocks.technical_analysis.rsi import rsi_command +from discordbot.stocks.technical_analysis.stoch import stoch_command +from discordbot.stocks.technical_analysis.fisher import fisher_command +from discordbot.stocks.technical_analysis.cg import cg_command +from discordbot.stocks.technical_analysis.adx import adx_command +from discordbot.stocks.technical_analysis.aroon import aroon_command +from discordbot.stocks.technical_analysis.bbands import bbands_command +from discordbot.stocks.technical_analysis.donchian import donchian_command +from discordbot.stocks.technical_analysis.kc import kc_command +from discordbot.stocks.technical_analysis.ad import ad_command +from discordbot.stocks.technical_analysis.adosc import adosc_command +from discordbot.stocks.technical_analysis.obv import obv_command +from discordbot.stocks.technical_analysis.fib import fib_command +from discordbot.stocks.technical_analysis.view import view_command +from discordbot.stocks.technical_analysis.summary import summary_command +from discordbot.stocks.technical_analysis.recom import recom_command +from discordbot.run_discordbot import gst_bot class TechnicalAnalysisCommands(discord.ext.commands.Cog): @@ -466,6 +467,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog): await donchian_command(ctx, ticker, upper_length, lower_length, start, end) + # pylint: disable=too-many-arguments @discord.ext.commands.command(name="stocks.ta.kc") async def kc( self, @@ -505,7 +507,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog): self, ctx: discord.ext.commands.Context, ticker="", - open="False", + is_open="False", start="", end="", ): @@ -515,7 +517,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog): ----------- ticker: str ticker, -h or help - open: bool + is_open: bool whether open price is used. Default: False start: date (in date format for start date) @@ -523,14 +525,14 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog): date (in date format for end date) """ - await ad_command(ctx, ticker, open, start, end) + await ad_command(ctx, ticker, is_open, start, end) @discord.ext.commands.command(name="stocks.ta.adosc") async def adosc( self, ctx: discord.ext.commands.Context, ticker="", - open="False", + is_open="False", fast="3", slow="10", start="", @@ -542,7 +544,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog): ----------- ticker: str ticker, -h or help - open: bool + is_open: bool whether open price is used. Default: False fast: int fast value. Default: 3 @@ -554,7 +556,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog): date (in date format for end date) """ - await adosc_command(ctx, ticker, open, fast, slow, start, end) + await adosc_command(ctx, ticker, is_open, fast, slow, start, end) @discord.ext.commands.command(name="stocks.ta.obv") async def obv(self, ctx: discord.ext.commands.Context, ticker="", start="", end=""): @@ -624,6 +626,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog): await recom_command(ctx, ticker) + # pylint: disable=too-many-statements @discord.ext.commands.command(name="stocks.ta") async def ta(self, ctx: discord.ext.commands.Context, ticker=""): """Stocks Context - Shows Technical Analysis Menu @@ -654,7 +657,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog): await ctx.send(embed=embed) return - stock = helpers.load(ticker, datetime.now() - timedelta(days=365)) + stock = discordbot.helpers.load(ticker, datetime.now() - timedelta(days=365)) if stock.empty: embed = discord.Embed( title="ERROR Stocks: Technical Analysis (TA) Menu", @@ -668,50 +671,50 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog): await ctx.send(embed=embed) return - else: - text = ( - f"0️⃣ !stocks.ta.view {ticker}\n" - f"1️⃣ !stocks.ta.summary {ticker}\n" - f"2️⃣ !stocks.ta.recom {ticker}\n" - f"3️⃣ !stocks.ta.ema {ticker} \n" - f"4️⃣ !stocks.ta.sma {ticker} \n" - f"5️⃣ !stocks.ta.wma {ticker} \n" - f"6️⃣ !stocks.ta.hma {ticker} \n" - f"7️⃣ !stocks.ta.zlma {ticker} \n" - f"8️⃣ !stocks.ta.cci {ticker} \n" - f"9️⃣ !stocks.ta.macd {ticker} " - ) - cols_temp.append(text) - text = ( - f"0️⃣ !stocks.ta.rsi {ticker} \n" - f"1️⃣ !stocks.ta.stoch {ticker} \n" - f"2️⃣ !stocks.ta.fisher {ticker} \n" - f"3️⃣ !stocks.ta.cg {ticker} \n" - f"4️⃣ !stocks.ta.adx {ticker} \n" - f"5️⃣ !stocks.ta.aroon {ticker} \n" - f"6️⃣ !stocks.ta.bbands {ticker} \n" - f"7️⃣ !stocks.ta.donchian {ticker} \n" - f"8️⃣ !stocks.ta.kc {ticker} \n" - f"9️⃣ !stocks.ta.ad {ticker} " - ) - cols_temp.append(text) - text = ( - f"0️⃣ !stocks.ta.adosc {ticker} \n" - f"1️⃣ !stocks.ta.obv {ticker} \n" - f"2️⃣ !stocks.ta.fib {ticker} \n" - ) - cols_temp.append(text) - for col in cols_temp: - cols.append( - discord.Embed( - description=col, - colour=cfg.COLOR, - title="Stocks: Technical Analysis (TA) Menu", - ).set_author( - name=cfg.AUTHOR_NAME, - icon_url=cfg.AUTHOR_ICON_URL, - ) + + text = ( + f"0️⃣ !stocks.ta.view {ticker}\n" + f"1️⃣ !stocks.ta.summary {ticker}\n" + f"2️⃣ !stocks.ta.recom {ticker}\n" + f"3️⃣ !stocks.ta.ema {ticker} \n" + f"4️⃣ !stocks.ta.sma {ticker} \n" + f"5️⃣ !stocks.ta.wma {ticker} \n" + f"6️⃣ !stocks.ta.hma {ticker} \n" + f"7️⃣ !stocks.ta.zlma {ticker} \n" + f"8️⃣ !stocks.ta.cci {ticker} \n" + f"9️⃣ !stocks.ta.macd {ticker} " + ) + cols_temp.append(text) + text = ( + f"0️⃣ !stocks.ta.rsi {ticker} \n" + f"1️⃣ !stocks.ta.stoch {ticker} \n" + f"2️⃣ !stocks.ta.fisher {ticker} \n" + f"3️⃣ !stocks.ta.cg {ticker} \n" + f"4️⃣ !stocks.ta.adx {ticker} \n" + f"5️⃣ !stocks.ta.aroon {ticker} \n" + f"6️⃣ !stocks.ta.bbands {ticker} \n" + f"7️⃣ !stocks.ta.donchian {ticker} \n" + f"8️⃣ !stocks.ta.kc {ticker} \n" + f"9️⃣ !stocks.ta.ad {ticker} " + ) + cols_temp.append(text) + text = ( + f"0️⃣ !stocks.ta.adosc {ticker} \n" + f"1️⃣ !stocks.ta.obv {ticker} \n" + f"2️⃣ !stocks.ta.fib {ticker} \n" + ) + cols_temp.append(text) + for col in cols_temp: + cols.append( + discord.Embed( + description=col, + colour=cfg.COLOR, + title="Stocks: Technical Analysis (TA) Menu", + ).set_author( + name=cfg.AUTHOR_NAME, + icon_url=cfg.AUTHOR_ICON_URL, ) + ) emoji_list = [ "0️⃣", @@ -794,6 +797,7 @@ class TechnicalAnalysisCommands(discord.ext.commands.Cog): embed=cols[current], components=components ) + # pylint: disable=too-many-branches @gst_bot.event async def on_reaction_add(reaction, user): if user == ctx.message.author and str(reaction.emoji) in emoji_list: diff --git a/discordbot/stocks/technical_analysis/view.py b/discordbot/stocks/technical_analysis/view.py index 6b6dce5f061..36988b07213 100644 --- a/discordbot/stocks/technical_analysis/view.py +++ b/discordbot/stocks/technical_analysis/view.py @@ -1,10 +1,11 @@ -import io -import matplotlib.pyplot as plt -import discord -import config_discordbot as cfg -from discordbot import gst_imgur -from PIL import Image import os +import io +import discord +import matplotlib.pyplot as plt +from PIL import Image + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur from gamestonk_terminal.helper_funcs import plot_autoscale diff --git a/discordbot/stocks/technical_analysis/wma.py b/discordbot/stocks/technical_analysis/wma.py index d3b143bc811..ecab0f4ff93 100644 --- a/discordbot/stocks/technical_analysis/wma.py +++ b/discordbot/stocks/technical_analysis/wma.py @@ -1,11 +1,12 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur +import os from datetime import datetime, timedelta +import discord from matplotlib import pyplot as plt import pandas as pd -import os -import helpers + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import overlap_model @@ -58,7 +59,7 @@ async def wma_command(ctx, ticker="", window="", offset="", start="", end=""): offset = float(offset) ticker = ticker.upper() - stock = helpers.load(ticker, start) + stock = discordbot.helpers.load(ticker, start) if stock.empty: raise Exception("Stock ticker is invalid") diff --git a/discordbot/stocks/technical_analysis/zlma.py b/discordbot/stocks/technical_analysis/zlma.py index ca484867c94..a04340363d4 100644 --- a/discordbot/stocks/technical_analysis/zlma.py +++ b/discordbot/stocks/technical_analysis/zlma.py @@ -1,11 +1,12 @@ -import discord -import config_discordbot as cfg -from discordbot import gst_imgur +import os from datetime import datetime, timedelta +import discord from matplotlib import pyplot as plt import pandas as pd -import os -import helpers + +import discordbot.config_discordbot as cfg +from discordbot.run_discordbot import gst_imgur +import discordbot.helpers from gamestonk_terminal.helper_funcs import plot_autoscale from gamestonk_terminal.common.technical_analysis import overlap_model @@ -58,7 +59,7 @@ async def zlma_command(ctx, ticker="", window="", offset="", start="", end=""): offset = float(offset) ticker = ticker.upper() - stock = helpers.load(ticker, start) + stock = discordbot.helpers.load(ticker, start) if stock.empty: raise Exception("Stock ticker is invalid") diff --git a/gamestonk_terminal/stocks/options/op_helpers.py b/gamestonk_terminal/stocks/options/op_helpers.py index 5782b8698b1..4494b7257e6 100644 --- a/gamestonk_terminal/stocks/options/op_helpers.py +++ b/gamestonk_terminal/stocks/options/op_helpers.py @@ -1,6 +1,7 @@ """Option helper functions""" __docformat__ = "numpy" +from typing import Union import numpy as np import pandas as pd @@ -33,7 +34,7 @@ def get_loss_at_strike(strike: float, chain: pd.DataFrame) -> float: return loss -def calculate_max_pain(chain: pd.DataFrame) -> int: +def calculate_max_pain(chain: pd.DataFrame) -> Union[int, float]: """Returns the max pain for a given call/put dataframe Parameters