diff options
author | DidierRLopes <dro.lopes@campus.fct.unl.pt> | 2021-10-02 19:16:37 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-02 19:16:37 +0100 |
commit | 0368a3b25ab574d3e19ddbddaab0128716dbe61b (patch) | |
tree | d33d8fc2c74041d26dda3e389f52890a9b793b1f | |
parent | 876d1aab3e3f4cae0f568b0933970a55052cd295 (diff) |
Refactor export functionality concept (#772)
* Refactor export functionality
* improve docs around -h in parse args
* Add export functionality to ba controller
Co-authored-by: Meghan Hone <meghanhone@meghans-mbp.home>
-rw-r--r-- | gamestonk_terminal/helper_funcs.py | 36 | ||||
-rw-r--r-- | gamestonk_terminal/stocks/behavioural_analysis/ba_controller.py | 38 |
2 files changed, 58 insertions, 16 deletions
diff --git a/gamestonk_terminal/helper_funcs.py b/gamestonk_terminal/helper_funcs.py index 127d3b58c6d..d0fc6c31c6e 100644 --- a/gamestonk_terminal/helper_funcs.py +++ b/gamestonk_terminal/helper_funcs.py @@ -1,7 +1,6 @@ """Helper functions""" __docformat__ = "numpy" import argparse -from argparse import ArgumentError from typing import List from datetime import datetime, timedelta, time as Time import os @@ -26,6 +25,11 @@ register_matplotlib_converters() if cfgPlot.BACKEND is not None: matplotlib.use(cfgPlot.BACKEND) +NO_EXPORT = 0 +EXPORT_ONLY_RAW_DATA_ALLOWED = 1 +EXPORT_ONLY_FIGURES_ALLOWED = 2 +EXPORT_BOTH_RAW_DATA_AND_FIGURES = 3 + def check_int_range(mini: int, maxi: int): """Checks if argparse argument is an int between 2 values. @@ -482,7 +486,11 @@ def patch_pandas_text_adjustment(): pandas.io.formats.format.TextAdjustment.adjoin = text_adjustment_adjoin -def parse_known_args_and_warn(parser: argparse.ArgumentParser, other_args: List[str]): +def parse_known_args_and_warn( + parser: argparse.ArgumentParser, + other_args: List[str], + export_allowed: int = NO_EXPORT, +): """Parses list of arguments into the supplied parser Parameters @@ -491,6 +499,9 @@ def parse_known_args_and_warn(parser: argparse.ArgumentParser, other_args: List[ Parser with predefined arguments other_args: List[str] List of arguments to parse + export_allowed: int + Choose from NO_EXPORT, EXPORT_ONLY_RAW_DATA_ALLOWED, + EXPORT_ONLY_FIGURES_ALLOWED and EXPORT_BOTH_RAW_DATA_AND_FIGURES Returns ------- @@ -500,17 +511,28 @@ def parse_known_args_and_warn(parser: argparse.ArgumentParser, other_args: List[ parser.add_argument( "-h", "--help", action="store_true", help="show this help message" ) - try: + if export_allowed > NO_EXPORT: + choices_export = [] + help_export = "Export " + + if export_allowed == EXPORT_ONLY_RAW_DATA_ALLOWED: + choices_export += ["csv", "json", "xlsx"] + help_export += "raw data into csv, json, xlsx " + if export_allowed > EXPORT_ONLY_RAW_DATA_ALLOWED: + choices_export += ["png", "jpg", "pdf", "svg"] + if export_allowed == EXPORT_BOTH_RAW_DATA_AND_FIGURES: + help_export += "or " + help_export += "figure into png, jpg, pdf, svg " + parser.add_argument( "--export", - choices=["png", "jpg", "pdf", "svg", "csv", "json", "xlsx"], + choices=choices_export, default="", type=str, dest="export", - help="Export plot to png,jpg,pdf,svg file or export dataframe to csv,json,xlsx", + help=help_export, ) - except ArgumentError: - pass + if gtff.USE_CLEAR_AFTER_CMD: os.system("cls||clear") diff --git a/gamestonk_terminal/stocks/behavioural_analysis/ba_controller.py b/gamestonk_terminal/stocks/behavioural_analysis/ba_controller.py index 858b16a9dd6..c59219de78a 100644 --- a/gamestonk_terminal/stocks/behavioural_analysis/ba_controller.py +++ b/gamestonk_terminal/stocks/behavioural_analysis/ba_controller.py @@ -12,6 +12,8 @@ from colorama import Style import pandas as pd from gamestonk_terminal import feature_flags as gtff from gamestonk_terminal.helper_funcs import ( + EXPORT_BOTH_RAW_DATA_AND_FIGURES, + EXPORT_ONLY_RAW_DATA_ALLOWED, get_flair, parse_known_args_and_warn, check_int_range, @@ -509,7 +511,9 @@ SentimentInvestor: help="limit messages shown.", ) try: - ns_parser = parse_known_args_and_warn(parser, other_args) + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_ONLY_RAW_DATA_ALLOWED + ) if not ns_parser: return @@ -538,7 +542,9 @@ SentimentInvestor: help="starting date (format YYYY-MM-DD) from when we are interested in stock's mentions.", ) try: - ns_parser = parse_known_args_and_warn(parser, other_args) + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES + ) if not ns_parser: return if self._check_ticker(): @@ -567,7 +573,9 @@ SentimentInvestor: help="number of regions to plot that show highest interest.", ) try: - ns_parser = parse_known_args_and_warn(parser, other_args) + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES + ) if not ns_parser: return if self._check_ticker(): @@ -595,7 +603,9 @@ SentimentInvestor: help="number of top related queries to print.", ) try: - ns_parser = parse_known_args_and_warn(parser, other_args) + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES + ) if not ns_parser: return if self._check_ticker(): @@ -623,7 +633,9 @@ SentimentInvestor: help="number of top rising related queries to print.", ) try: - ns_parser = parse_known_args_and_warn(parser, other_args) + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES + ) if not ns_parser: return if self._check_ticker(): @@ -656,7 +668,9 @@ SentimentInvestor: ) try: - ns_parser = parse_known_args_and_warn(parser, other_args) + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES + ) if not ns_parser: return @@ -697,7 +711,9 @@ SentimentInvestor: help="number of days in the past to extract tweets.", ) try: - ns_parser = parse_known_args_and_warn(parser, other_args) + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES + ) if not ns_parser: return if self._check_ticker(): @@ -732,7 +748,9 @@ SentimentInvestor: help="Export dataframe data to csv,json,xlsx file", ) try: - ns_parser = parse_known_args_and_warn(parser, other_args) + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES + ) if not ns_parser: return if self._check_ticker(): @@ -763,7 +781,9 @@ SentimentInvestor: help="Export dataframe data to csv,json,xlsx file", ) try: - ns_parser = parse_known_args_and_warn(parser, other_args) + ns_parser = parse_known_args_and_warn( + parser, other_args, EXPORT_BOTH_RAW_DATA_AND_FIGURES + ) if not ns_parser: return |