Source code for oasislmf.computation.run.generate_files


__all__ = [
    'GenerateOasisFiles'
]

import os

from tqdm import tqdm

from ..base import ComputationStep
from ..generate.files import GenerateFiles
from ..hooks.pre_analysis import ExposurePreAnalysis
from ..hooks.post_file_gen import PostFileGen
from ...utils.data import get_exposure_data


[docs] class GenerateOasisFiles(ComputationStep): """ Run Oasis file geneartion with optional PreAnalysis hook. """ # Override params
[docs] step_params = [ {'name': 'exposure_pre_analysis_module', 'required': False, 'is_path': True, 'pre_exist': True, 'help': 'Exposure Pre-Analysis lookup module path'}, {'name': 'post_file_gen_module', 'required': False, 'is_path': True, 'pre_exist': True, 'help': 'post-file gen hook module path'}, ]
# Add params from each sub command not in 'step_params'
[docs] chained_commands = [ PostFileGen, GenerateFiles, ExposurePreAnalysis, ]
[docs] def get_exposure_data_config(self): return { 'location': self.oed_location_csv, 'account': self.oed_accounts_csv, 'ri_info': self.oed_info_csv, 'ri_scope': self.oed_scope_csv, 'oed_schema_info': self.oed_schema_info, 'currency_conversion': self.currency_conversion_json, 'check_oed': self.check_oed, 'use_field': True, 'location_numbers': self.location, 'portfolio_numbers': self.portfolio, 'account_numbers': self.account, 'base_df_engine': self.base_df_engine, 'exposure_df_engine': self.exposure_df_engine or self.base_df_engine, }
[docs] def run(self): # setup input dir if not self.oasis_files_dir: self.oasis_files_dir = GenerateFiles._get_output_dir(self) # create input dir if not os.path.exists(self.oasis_files_dir): os.makedirs(self.oasis_files_dir) self.kwargs['oasis_files_dir'] = self.oasis_files_dir self.kwargs['exposure_data'] = get_exposure_data(self, add_internal_col=True) # Run chain if self.exposure_pre_analysis_module: cmds = [(ExposurePreAnalysis, self.kwargs), (GenerateFiles, self.kwargs)] else: cmds = [(GenerateFiles, self.kwargs)] if self.post_file_gen_module: cmds += [(PostFileGen, self.kwargs)] with tqdm(total=len(cmds)) as pbar: for cmd in cmds: cmd[0](**cmd[1]).run() pbar.update(1) self.logger.info('\nGenerate Files completed successfully in {}'.format(self.oasis_files_dir))