diff --git a/mmgen_node_tools/Ticker.py b/mmgen_node_tools/Ticker.py index 806b0e9..fd05f99 100755 --- a/mmgen_node_tools/Ticker.py +++ b/mmgen_node_tools/Ticker.py @@ -25,7 +25,7 @@ from decimal import Decimal from collections import namedtuple from mmgen.color import red,yellow,green,blue,orange,gray -from mmgen.util import msg,msg_r,Msg,die,Die,suf,fmt,fmt_list,fmt_dict,list_gen +from mmgen.util import msg,msg_r,Msg,Msg_r,die,Die,suf,fmt,fmt_list,fmt_dict,list_gen from mmgen.ui import do_pager homedir = os.getenv('HOME') @@ -75,7 +75,7 @@ class DataSource: ['curl', '--tr-encoding', '--header', 'Accept: application/json',True], ['--compressed'], # adds 'Accept-Encoding: gzip' ['--proxy', cfg.proxy, isinstance(cfg.proxy,str)], - ['--silent', not gcfg.verbose], + ['--silent', not cfg.verbose], [self.api_url] ) @@ -101,7 +101,9 @@ class DataSource: if not os.path.exists(self.json_fn): open(self.json_fn,'w').write('{}') - if gcfg.cached_data: + use_cached_data = cfg.cached_data and not gcfg.download + + if use_cached_data: data_type = 'json' data_in = open(self.json_fn).read() else: @@ -112,8 +114,8 @@ class DataSource: msg('') self.fetch_delay() msg_r(f'Fetching {self.data_desc} from {self.api_host}...') - if self.has_verbose: - gcfg._util.vmsg('') + if self.has_verbose and cfg.verbose: + msg('') data_in = self.get_data_from_network() msg('done') if gcfg.testing: @@ -133,14 +135,14 @@ class DataSource: json_text = json.dumps(data_in) if not data: - if gcfg.cached_data: + if use_cached_data: die(1,'No cached data! Run command without --cached-data option to retrieve data from remote host') else: die(2,'Remote host returned no data!') elif 'error' in data: die(1,data['error']) - if gcfg.cached_data: + if use_cached_data: msg(f'Using cached data from ~/{self.json_fn_rel}') else: open(self.json_fn,'w').write(json_text) @@ -171,7 +173,7 @@ class DataSource: dfl_asset_limit = 2000 def __init__(self): - self.asset_limit = int(gcfg.asset_limit or self.dfl_asset_limit) + self.asset_limit = int(cfg.asset_limit or self.dfl_asset_limit) def rate_limit_errmsg(self,elapsed): return ( @@ -528,9 +530,8 @@ def main(): data = dict(gen_data(src_data)) - gcfg._util.stdout_or_pager( - '\n'.join(getattr(Ticker,cfg.clsname)(data).gen_output()) + '\n' - ) + (do_pager if cfg.pager else Msg_r)( + '\n'.join(getattr(Ticker,cfg.clsname)(data).gen_output()) + '\n') def make_cfg(gcfg_arg): @@ -670,7 +671,15 @@ def make_cfg(gcfg_arg): 'proxy', 'proxy2', 'portfolio', - 'percent_cols' ]) + 'percent_cols', + 'asset_limit', + 'cached_data', + 'elapsed', + 'name_labels', + 'pager', + 'thousands_comma', + 'update_time', + 'verbose']) global gcfg,cfg_in,src_cls,cfg @@ -704,18 +713,26 @@ def make_cfg(gcfg_arg): query = query, adjust = ( lambda x: (100 + x) / 100 if x else 1 )( Decimal(gcfg.adjust or 0) ), clsname = 'trading' if query else 'overview', - btc_only = gcfg.btc, - add_prec = parse_add_precision(gcfg.add_precision), + btc_only = gcfg.btc or cfg_in.cfg.get('btc'), + add_prec = parse_add_precision(gcfg.add_precision or cfg_in.cfg.get('add_precision')), cachedir = gcfg.cachedir or cfg_in.cfg.get('cachedir') or dfl_cachedir, proxy = proxy, proxy2 = None if proxy2 == 'none' else '' if proxy2 == '' else (proxy2 or proxy), portfolio = get_portfolio() if cfg_in.portfolio - and gcfg.portfolio + and (gcfg.portfolio or cfg_in.cfg.get('portfolio')) and not query else None, - percent_cols = parse_percent_cols(gcfg.percent_cols) + percent_cols = parse_percent_cols(gcfg.percent_cols or cfg_in.cfg.get('percent_cols')), + asset_limit = gcfg.asset_limit or cfg_in.cfg.get('asset_limit'), + cached_data = gcfg.cached_data or cfg_in.cfg.get('cached_data'), + elapsed = gcfg.elapsed or cfg_in.cfg.get('elapsed'), + name_labels = gcfg.name_labels or cfg_in.cfg.get('name_labels'), + pager = gcfg.pager or cfg_in.cfg.get('pager'), + thousands_comma = gcfg.thousands_comma or cfg_in.cfg.get('thousands_comma'), + update_time = gcfg.update_time or cfg_in.cfg.get('update_time'), + verbose = gcfg.verbose or cfg_in.cfg.get('verbose'), ) def get_cfg_in(): @@ -753,10 +770,10 @@ class Ticker: def __init__(self,data): - self.comma = ',' if gcfg.thousands_comma else '' + self.comma = ',' if cfg.thousands_comma else '' self.col1_wid = max(len('TOTAL'),( - max(len(self.create_label(d['id'])) for d in data.values()) if gcfg.name_labels else + max(len(self.create_label(d['id'])) for d in data.values()) if cfg.name_labels else max(len(d['symbol']) for d in data.values()) )) + 1 @@ -769,7 +786,7 @@ class Ticker: def format_last_update_col(self,cross_assets=()): - if gcfg.elapsed: + if cfg.elapsed: from mmgen.util2 import format_elapsed_hr fmt_func = format_elapsed_hr else: @@ -918,7 +935,7 @@ class Ticker: amt_fmt = amt_fmt.rstrip('0').rstrip('.') return self.fs_num.format( - lbl = (self.create_label(d['id']) if gcfg.name_labels else d['symbol']), + lbl = self.create_label(d['id']) if cfg.name_labels else d['symbol'], pc1 = fmt_pct(d.get('percent_change_7d')), pc2 = fmt_pct(d.get('percent_change_24h')), pc3 = fmt_pct(d.get('percent_change_1y')), @@ -969,11 +986,11 @@ class Ticker: ( 'pct1m', 'm' in cfg.percent_cols ), ( 'pct1w', 'w' in cfg.percent_cols ), ( 'pct1d', 'd' in cfg.percent_cols ), - ( 'update_time', gcfg.update_time ), + ( 'update_time', cfg.update_time ), ) if b] ) cols2 = list(cols) - if gcfg.update_time: + if cfg.update_time: cols2.pop() cols2.append('amt') @@ -1058,7 +1075,7 @@ class Ticker: if self.show_adj: self.fs_str += ' {p_adj}' self.hl_wid += self.max_wid + 1 - if gcfg.update_time: + if cfg.update_time: self.fs_str += ' {upd}' self.hl_wid += self.upd_w + 2 @@ -1071,7 +1088,7 @@ class Ticker: if self.show_adj else '' ) return self.fs_str.format( - lbl = (self.create_label(id) if gcfg.name_labels else d['symbol']), + lbl = self.create_label(id) if cfg.name_labels else d['symbol'], p_spot = green(p_spot) if id in self.hl_ids else p_spot, p_adj = yellow(p_adj) if id in self.hl_ids else p_adj, upd = d.get('last_updated_fmt'), diff --git a/mmgen_node_tools/data/version b/mmgen_node_tools/data/version index 3170c6e..1876a63 100644 --- a/mmgen_node_tools/data/version +++ b/mmgen_node_tools/data/version @@ -1 +1 @@ -3.3.dev3 +3.3.dev4 diff --git a/setup.cfg b/setup.cfg index f0c6629..e3ef90e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -28,7 +28,7 @@ python_requires = >=3.9 include_package_data = True install_requires = - mmgen-wallet>=14.1.dev19 + mmgen-wallet>=14.1.dev21 pyyaml yahooquery