diff --git a/.github/ISSUE_TEMPLATE/update_truth.md b/.github/ISSUE_TEMPLATE/update_truth.md
index 0b18a6cd88..5f0be681c1 100644
--- a/.github/ISSUE_TEMPLATE/update_truth.md
+++ b/.github/ISSUE_TEMPLATE/update_truth.md
@@ -11,12 +11,13 @@ assignees: ''
*Write a short summary of the differences that will likely be found in the GitHub Actions testing workflow that was triggered by the pull request that warranted this issue*
+- [ ] Link to relevant issue(s):
+- [ ] Link to relevant pull request(s):
+
## Define the Metadata ##
### Title ###
-- [ ] Add a link to the pull request that warranted this issue to the issue title using format dtcenter/{REPO}#{PR_NUMBER}.
-
-**Example:** Update Truth: For dtcenter/MET#2655
+- [ ] Define the **Title** of this issue as **Update Truth: For dtcenter/{REPO}#{PR_NUMBER}** to indicate the repository and pull request that warranted this issue.
### Assignee ###
@@ -55,6 +56,6 @@ assignees: ''
be updated.
- [ ] Update the truth data.
This should be handled by a METplus wrappers engineer.
- See the (instructions to update the truth data)[https://metplus.readthedocs.io/en/develop/Contributors_Guide/continuous_integration.html#update-truth-data-update-truth-data-yml]
+ See the [instructions to update the truth data](https://metplus.readthedocs.io/en/develop/Contributors_Guide/continuous_integration.html#update-truth-data-update-truth-data-yml)
for more info.
- [ ] Close this issue.
diff --git a/.gitignore b/.gitignore
index f62ca72792..4c1083c0d4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -88,7 +88,7 @@ ENV/
# pytest cache files
*.pytest_cache*
-.idea
+.idea/workspace.xml
# tilda files generated by emacs
*~
diff --git a/.idea/METplus.iml b/.idea/METplus.iml
new file mode 100644
index 0000000000..aad402c4e5
--- /dev/null
+++ b/.idea/METplus.iml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000000..1bbf15ddf7
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000000..105ce2da2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000000..044798ac50
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000..35eb1ddfbb
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/conf.py b/docs/conf.py
index 661d93e0bc..f067b51cc4 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -25,8 +25,6 @@
project = 'METplus'
-met_version = '12.0.0'
-
author = 'UCAR/NCAR, NOAA, CSU/CIRA, and CU/CIRES'
# list of contributing authors currently involved with the project
@@ -87,6 +85,10 @@
verinfo = version
+# compute MET version as X+6.Y.0 of METplus version
+x, y, _ = __version__.split('.')
+met_version = f'{int(x)+6}.{y}.0'
+
release_date = __release_date__
release_year = release_date[0:4]
diff --git a/metplus/util/config_validate.py b/metplus/util/config_validate.py
index d47bda2337..2941733cfc 100644
--- a/metplus/util/config_validate.py
+++ b/metplus/util/config_validate.py
@@ -6,7 +6,7 @@
from .string_manip import is_python_script, get_wrapper_name
from .string_template_substitution import do_string_sub
from .config_util import get_process_list, get_custom_string_list
-from .wrapper_init import get_wrapper_instance
+from .wrapper_init import get_wrapper_class
def validate_config_variables(config):
@@ -216,7 +216,7 @@ def _get_deprecated_met_list(config, met_tool):
if not wrapper_name:
return None
- wrapper = get_wrapper_instance(config, wrapper_name)
+ wrapper = get_wrapper_class(config, wrapper_name)
if not hasattr(wrapper, 'DEPRECATED_WRAPPER_ENV_VAR_KEYS'):
return None
diff --git a/metplus/util/wrapper_init.py b/metplus/util/wrapper_init.py
index 529c52396a..df87279e84 100644
--- a/metplus/util/wrapper_init.py
+++ b/metplus/util/wrapper_init.py
@@ -3,21 +3,19 @@
from . import camel_to_underscore
-def get_wrapper_instance(config, process, instance=None):
- """!Initialize METplus wrapper instance.
+def get_wrapper_class(config, process):
+ """!Get the METplus wrapper class object that is not initialized.
+ This can be used to read class variables from a wrapper without creating
+ an instance of the wrapper class.
@param config METplusConfig object to pass to wrapper constructor
@param process name of wrapper in camel case, e.g. GridStat
- @param instance (optional) instance identifier for creating multiple
- instances of a wrapper. Set to None (default) if no instance is specified
- @returns CommandBuilder sub-class object or None if something went wrong
+ @returns CommandBuilder subclass or None if something went wrong
"""
- package_name = (f'metplus.wrappers.{camel_to_underscore(process)}_wrapper')
+ package_name = f'metplus.wrappers.{camel_to_underscore(process)}_wrapper'
try:
module = import_module(package_name)
- metplus_wrapper = (
- getattr(module, f"{process}Wrapper")(config, instance=instance)
- )
+ wrapper_class = getattr(module, f"{process}Wrapper")
except AttributeError as err:
config.logger.error(f"There was a problem loading {process} wrapper: {err}")
return None
@@ -26,4 +24,20 @@ def get_wrapper_instance(config, process, instance=None):
"Wrapper may have been disabled.")
return None
- return metplus_wrapper
+ return wrapper_class
+
+
+def get_wrapper_instance(config, process, instance=None):
+ """!Initialize METplus wrapper instance.
+
+ @param config METplusConfig object to pass to wrapper constructor
+ @param process name of wrapper in camel case, e.g. GridStat
+ @param instance (optional) instance identifier for creating multiple
+ instances of a wrapper. Set to None (default) if no instance is specified
+ @returns initialized CommandBuilder subclass object or
+ None if something went wrong
+ """
+ wrapper_class = get_wrapper_class(config, process)
+ if wrapper_class is None:
+ return None
+ return wrapper_class(config, instance=instance)
diff --git a/metplus/wrappers/ascii2nc_wrapper.py b/metplus/wrappers/ascii2nc_wrapper.py
index c4c9d3e803..80b8272b13 100755
--- a/metplus/wrappers/ascii2nc_wrapper.py
+++ b/metplus/wrappers/ascii2nc_wrapper.py
@@ -92,22 +92,9 @@ def create_c_dict(self):
# MET config variables
self.handle_time_summary_dict()
-
# handle file window variables
- for edge in ['BEGIN', 'END']:
- file_window = (
- self.config.getseconds('config',
- f'ASCII2NC_FILE_WINDOW_{edge}',
- '')
- )
- if file_window == '':
- file_window = (
- self.config.getseconds('config',
- f'OBS_FILE_WINDOW_{edge}',
- 0)
- )
-
- c_dict[f'OBS_FILE_WINDOW_{edge}'] = file_window
+ self.handle_file_window_variables(c_dict, data_types=['OBS'])
+
# skip RuntimeFreq input file logic - remove once integrated
c_dict['FIND_FILES'] = False
return c_dict
diff --git a/parm/use_cases/met_tool_wrapper/ASCII2NC/ASCII2NC.conf b/parm/use_cases/met_tool_wrapper/ASCII2NC/ASCII2NC.conf
index eb91432923..bf7481144b 100644
--- a/parm/use_cases/met_tool_wrapper/ASCII2NC/ASCII2NC.conf
+++ b/parm/use_cases/met_tool_wrapper/ASCII2NC/ASCII2NC.conf
@@ -47,8 +47,8 @@ ASCII2NC_OUTPUT_TEMPLATE = {OUTPUT_BASE}/ascii2nc/precip24_{valid?fmt=%Y%m%d%H}.
ASCII2NC_SKIP_IF_OUTPUT_EXISTS = False
-ASCII2NC_FILE_WINDOW_BEGIN = 0
-ASCII2NC_FILE_WINDOW_END = 0
+#ASCII2NC_FILE_WINDOW_BEGIN = 0
+#ASCII2NC_FILE_WINDOW_END = 0
###
# ASCII2NC Settings