Files
OpenBB/gamestonk_terminal/etf/discovery/disc_controller.py
LBolte29 fd58219282 adjusted format of logs (#1292)
adjusted format of logs
2022-02-17 12:33:59 +01:00

124 lines
3.9 KiB
Python

"""Discovery Controller Module"""
__docformat__ = "numpy"
import argparse
import logging
from typing import List
from prompt_toolkit.completion import NestedCompleter
from gamestonk_terminal import feature_flags as gtff
from gamestonk_terminal.decorators import log_start_end
from gamestonk_terminal.etf.discovery import wsj_view
from gamestonk_terminal.helper_funcs import (
EXPORT_ONLY_RAW_DATA_ALLOWED,
check_positive,
parse_known_args_and_warn,
)
from gamestonk_terminal.menu import session
from gamestonk_terminal.parent_classes import BaseController
from gamestonk_terminal.rich_config import console
logger = logging.getLogger(__name__)
class DiscoveryController(BaseController):
"""Discovery Controller class"""
CHOICES_COMMANDS = [
"gainers",
"decliners",
"active",
]
PATH = "/etf/disc/"
def __init__(self, queue: List[str] = None):
"""Constructor"""
super().__init__(queue)
if session and gtff.USE_PROMPT_TOOLKIT:
choices: dict = {c: {} for c in self.controller_choices}
self.completer = NestedCompleter.from_nested_dict(choices)
def print_help(self):
"""Print help"""
help_text = """
[src][Wall Street Journal][/src][cmds]
gainers top gainers
decliners top decliners
active most active[/cmds]
"""
console.print(text=help_text, menu="ETF - Discovery")
@log_start_end(log=logger)
def call_gainers(self, other_args):
"""Process gainers command"""
parser = argparse.ArgumentParser(
prog="gainers",
description="Displays top ETF/Mutual fund gainers from wsj.com/market-data",
add_help=False,
)
parser.add_argument(
"-l",
"--limit",
help="Limit of ETFs to display",
type=check_positive,
default=10,
dest="limit",
)
if other_args and "-" not in other_args[0][0]:
other_args.insert(0, "-l")
ns_parser = parse_known_args_and_warn(
parser, other_args, export_allowed=EXPORT_ONLY_RAW_DATA_ALLOWED
)
if ns_parser:
wsj_view.show_top_mover("gainers", ns_parser.limit, ns_parser.export)
@log_start_end(log=logger)
def call_decliners(self, other_args):
"""Process decliners command"""
parser = argparse.ArgumentParser(
prog="decliners",
description="Displays top ETF/Mutual fund decliners from wsj.com/market-data",
add_help=False,
)
parser.add_argument(
"-l",
"--limit",
help="Limit of ETFs to display",
type=check_positive,
default=10,
dest="limit",
)
if other_args and "-" not in other_args[0][0]:
other_args.insert(0, "-l")
ns_parser = parse_known_args_and_warn(
parser, other_args, export_allowed=EXPORT_ONLY_RAW_DATA_ALLOWED
)
if ns_parser:
wsj_view.show_top_mover("decliners", ns_parser.limit, ns_parser.export)
@log_start_end(log=logger)
def call_active(self, other_args):
"""Process gainers command"""
parser = argparse.ArgumentParser(
prog="active",
description="Displays most active ETF/Mutual funds from wsj.com/market-data",
add_help=False,
)
parser.add_argument(
"-l",
"--limit",
help="Limit of ETFs to display",
type=check_positive,
default=10,
dest="limit",
)
if other_args and "-" not in other_args[0][0]:
other_args.insert(0, "-l")
ns_parser = parse_known_args_and_warn(
parser, other_args, export_allowed=EXPORT_ONLY_RAW_DATA_ALLOWED
)
if ns_parser:
wsj_view.show_top_mover("active", ns_parser.limit, ns_parser.export)