aboutsummaryrefslogtreecommitdiff
path: root/market.py
diff options
context:
space:
mode:
authorIsmaël Bouya <ismael.bouya@normalesup.org>2018-08-04 20:33:16 +0200
committerIsmaël Bouya <ismael.bouya@normalesup.org>2018-08-04 20:33:16 +0200
commit445185355d0d13d8d7251fa9add8e249c5361aa7 (patch)
treefd139a1304dbb0bdb56a5019bc916dd2c6565a3c /market.py
parentef8fa5e5454a17c49fe14f6a2c1cffa9cd985bdb (diff)
downloadTrader-445185355d0d13d8d7251fa9add8e249c5361aa7.tar.gz
Trader-445185355d0d13d8d7251fa9add8e249c5361aa7.tar.zst
Trader-445185355d0d13d8d7251fa9add8e249c5361aa7.zip
Refactor a bit the options passing process
Diffstat (limited to 'market.py')
-rw-r--r--market.py22
1 files changed, 11 insertions, 11 deletions
diff --git a/market.py b/market.py
index 82df34f..546ee94 100644
--- a/market.py
+++ b/market.py
@@ -93,11 +93,11 @@ class Market:
93 self.ccxt.check_required_credentials() 93 self.ccxt.check_required_credentials()
94 for action in actions: 94 for action in actions:
95 if bool(before) is bool(after): 95 if bool(before) is bool(after):
96 self.processor.process(action, steps="all") 96 self.processor.process(action, steps="all", options=self.options)
97 elif before: 97 elif before:
98 self.processor.process(action, steps="before") 98 self.processor.process(action, steps="before", options=self.options)
99 elif after: 99 elif after:
100 self.processor.process(action, steps="after") 100 self.processor.process(action, steps="after", options=self.options)
101 except AuthenticationError: 101 except AuthenticationError:
102 self.report.log_error("market_authentication", message="Impossible to authenticate to market") 102 self.report.log_error("market_authentication", message="Impossible to authenticate to market")
103 except Exception as e: 103 except Exception as e:
@@ -408,7 +408,7 @@ class Processor:
408 def can_process(self, scenario_name): 408 def can_process(self, scenario_name):
409 return scenario_name in self.scenarios 409 return scenario_name in self.scenarios
410 410
411 def process(self, scenario_name, steps="all", **kwargs): 411 def process(self, scenario_name, steps="all", options={}):
412 if not self.can_process(scenario_name): 412 if not self.can_process(scenario_name):
413 raise TypeError("Unknown scenario {}".format(scenario_name)) 413 raise TypeError("Unknown scenario {}".format(scenario_name))
414 scenario = self.scenarios[scenario_name] 414 scenario = self.scenarios[scenario_name]
@@ -420,9 +420,9 @@ class Processor:
420 for step in steps: 420 for step in steps:
421 selected_steps += self.select_steps(scenario, step) 421 selected_steps += self.select_steps(scenario, step)
422 for step in selected_steps: 422 for step in selected_steps:
423 self.process_step(scenario_name, step, kwargs) 423 self.process_step(scenario_name, step, options)
424 424
425 def process_step(self, scenario_name, step, kwargs): 425 def process_step(self, scenario_name, step, options):
426 process_name = "process_{}__{}_{}".format(scenario_name, step["number"], step["name"]) 426 process_name = "process_{}__{}_{}".format(scenario_name, step["number"], step["name"])
427 self.market.report.log_stage("{}_begin".format(process_name)) 427 self.market.report.log_stage("{}_begin".format(process_name))
428 428
@@ -432,7 +432,7 @@ class Processor:
432 432
433 for action in self.ordered_actions: 433 for action in self.ordered_actions:
434 if action in step: 434 if action in step:
435 self.run_action(action, step[action], kwargs) 435 self.run_action(action, step[action], options)
436 436
437 if "fetch_balances_end" in step: 437 if "fetch_balances_end" in step:
438 self.market.balances.fetch_balances(tag="{}_end".format(process_name), 438 self.market.balances.fetch_balances(tag="{}_end".format(process_name),
@@ -466,9 +466,9 @@ class Processor:
466 466
467 return [method, kwargs] 467 return [method, kwargs]
468 468
469 def parse_args(self, action, default_args, kwargs): 469 def parse_args(self, action, default_args, options):
470 method, allowed_arguments = self.method_arguments(action) 470 method, allowed_arguments = self.method_arguments(action)
471 args = {k: v for k, v in {**default_args, **kwargs, **self.market.options}.items() if k in allowed_arguments } 471 args = {k: v for k, v in {**default_args, **options}.items() if k in allowed_arguments }
472 472
473 if "repartition" in args and "base_currency" in args["repartition"]: 473 if "repartition" in args and "base_currency" in args["repartition"]:
474 r = args["repartition"] 474 r = args["repartition"]
@@ -476,7 +476,7 @@ class Processor:
476 476
477 return method, args 477 return method, args
478 478
479 def run_action(self, action, default_args, kwargs): 479 def run_action(self, action, default_args, options):
480 method, args = self.parse_args(action, default_args, kwargs) 480 method, args = self.parse_args(action, default_args, options)
481 481
482 method(**args) 482 method(**args)