diff --git a/workflow/configuration.py b/ush/python/pygw/src/pygw/configuration.py similarity index 98% rename from workflow/configuration.py rename to ush/python/pygw/src/pygw/configuration.py index ba027d47fb2..cc6d5890284 100644 --- a/workflow/configuration.py +++ b/ush/python/pygw/src/pygw/configuration.py @@ -1,14 +1,13 @@ -#!/usr/bin/env python3 - +import glob import os import random -import glob import subprocess -from pprint import pprint from datetime import datetime from pathlib import Path +from pprint import pprint from typing import Union, List, Dict, Any +from pygw.attrdict import AttrDict __all__ = ['Configuration'] @@ -85,7 +84,7 @@ def parse_config(self, files: Union[str, bytes, list]) -> Dict[str, Any]: if isinstance(files, (str, bytes)): files = [files] files = [self.find_config(file) for file in files] - varbles = dict() + varbles = AttrDict() for key, value in self._get_script_env(files).items(): if key in self.DATE_ENV_VARS: # likely a date, convert to datetime varbles[key] = datetime.strptime(value, '%Y%m%d%H') diff --git a/workflow/applications.py b/workflow/applications.py index 99e236b44d1..67474112e1e 100644 --- a/workflow/applications.py +++ b/workflow/applications.py @@ -2,8 +2,8 @@ from typing import Dict, Any from datetime import timedelta -from configuration import Configuration from hosts import Host +from pygw.configuration import Configuration __all__ = ['AppConfig'] @@ -78,11 +78,11 @@ class AppConfig: VALID_MODES = ['cycled', 'forecast-only'] - def __init__(self, configuration: Configuration) -> None: + def __init__(self, conf: Configuration) -> None: self.scheduler = Host().scheduler - _base = configuration.parse_config('config.base') + _base = conf.parse_config('config.base') self.mode = _base['MODE'] @@ -134,7 +134,7 @@ def __init__(self, configuration: Configuration) -> None: self.configs_names = self._get_app_configs() # Source the config_files for the jobs in the application - self.configs = self._source_configs(configuration) + self.configs = self._source_configs(conf) # Update the base config dictionary based on application upd_base_map = {'cycled': self._cycled_upd_base, @@ -286,7 +286,7 @@ def _forecast_only_upd_base(base_in): return base_out - def _source_configs(self, configuration: Configuration) -> Dict[str, Any]: + def _source_configs(self, conf: Configuration) -> Dict[str, Any]: """ Given the configuration object and jobs, source the configurations for each config and return a dictionary @@ -296,7 +296,7 @@ def _source_configs(self, configuration: Configuration) -> Dict[str, Any]: configs = dict() # Return config.base as well - configs['base'] = configuration.parse_config('config.base') + configs['base'] = conf.parse_config('config.base') # Source the list of all config_files involved in the application for config in self.configs_names: @@ -316,7 +316,7 @@ def _source_configs(self, configuration: Configuration) -> Dict[str, Any]: files += [f'config.{config}'] print(f'sourcing config.{config}') - configs[config] = configuration.parse_config(files) + configs[config] = conf.parse_config(files) return configs diff --git a/workflow/setup_xml.py b/workflow/setup_xml.py index 6e63cade118..09212b59d96 100755 --- a/workflow/setup_xml.py +++ b/workflow/setup_xml.py @@ -6,9 +6,9 @@ import os from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter -from configuration import Configuration from applications import AppConfig from rocoto.workflow_xml import RocotoXML +from pygw.configuration import Configuration def input_args(): diff --git a/workflow/test_configuration.py b/workflow/test_configuration.py index f210ceefa4e..d129da5819c 100644 --- a/workflow/test_configuration.py +++ b/workflow/test_configuration.py @@ -1,5 +1,5 @@ import sys -from configuration import Configuration +from pygw.configuration import Configuration expdir = sys.argv[1] @@ -18,6 +18,8 @@ print('config.base ...') base = cfg.parse_config('config.base') cfg.print_config('config.base') +print(type(base)) +print(base.HOMEgfs) print('*'*80) print('config.anal...')