import os import subprocess import sys from intex.intex_scenarios import generate_scenarios from json import loads, dumps def build_portfolios(workdate, dealname, reinvflag): rpath = os.path.join(os.environ['CODE_DIR'], "R") logpath = os.path.join(os.environ['LOG_DIR']) args = ["Rscript", "--vanilla", os.path.join(rpath, "build_portfolios.R"), \ workdate, dealname + "," + reinvflag] with open(os.path.join(logpath, "build_portfolios.Rout"), "w") as fh: subprocess.call(args, stderr=subprocess.STDOUT, stdout=fh, env=os.environ, cwd=rpath) def build_scenarios(workdate, dealname, reinvflag): rpath = os.path.join(os.environ['CODE_DIR'], "R") logpath = os.path.join(os.environ['LOG_DIR']) args = ["Rscript", "--vanilla", os.path.join(rpath, "build_scenarios.R"), \ workdate, dealname + "," + reinvflag] with open(os.path.join(logpath, "build_scenarios.Rout"), "w") as fh: subprocess.call(args, stderr=subprocess.STDOUT, stdout=fh, env=os.environ, cwd=rpath) class Rpc(object): def __init__(self, fun, args): self.fun = fun self.args = args def __str__(self): return dumps({'fun': self.fun, 'args': self.args}) def __call__(self): globals()[self.fun](*self.args) @classmethod def from_json(cls, s): rpc = loads(s) if sys.version_info[0] < 3: instance = cls(rpc['fun'].encode(), [arg.encode() for arg in rpc['args']]) else: instance = cls(rpc['fun'], rpc['args']) return instance