Closed gold2718 closed 1 year ago
Fix implemented in #462
Old (bad) output:
INFO: Comparing metadata for requested and provided variables ...
Traceback (most recent call last):
File "ccpp/framework/scripts/ccpp_prebuild.py", line 813, in <module>
main()
File "ccpp/framework/scripts/ccpp_prebuild.py", line 767, in main
(success, modules, metadata) = compare_metadata(metadata_define, metadata_request)
File "ccpp/framework/scripts/ccpp_prebuild.py", line 473, in compare_metadata
var.convert_to(metadata_define[var_name][0].units)
File "/glade/work/kavulich/CCPP/workdir/issue_458/ccpp-scm/ccpp/framework/scripts/mkcap.py", line 191, in convert_to
function_name = '{0}__to__{1}'.format(string_to_python_identifier(self.units), string_to_python_identifier(units))
File "/glade/work/kavulich/CCPP/workdir/issue_458/ccpp-scm/ccpp/framework/scripts/common.py", line 197, in string_to_python_identifier
raise Exception("Resulting string '{0}' is not a valid Python identifier".format(string))
Exception: Resulting string '1' is not a valid Python identifier
After fix:
INFO: Comparing metadata for requested and provided variables ...
Traceback (most recent call last):
File "/glade/work/kavulich/CCPP/workdir/issue_458/ccpp-scm/ccpp/framework/scripts/mkcap.py", line 193, in convert_to
function = getattr(unit_conversion, function_name)
AttributeError: module 'conversion_tools.unit_conversion' has no attribute 'one__to__none'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "ccpp/framework/scripts/ccpp_prebuild.py", line 813, in <module>
main()
File "ccpp/framework/scripts/ccpp_prebuild.py", line 767, in main
(success, modules, metadata) = compare_metadata(metadata_define, metadata_request)
File "ccpp/framework/scripts/ccpp_prebuild.py", line 473, in compare_metadata
var.convert_to(metadata_define[var_name][0].units)
File "/glade/work/kavulich/CCPP/workdir/issue_458/ccpp-scm/ccpp/framework/scripts/mkcap.py", line 196, in convert_to
raise Exception('Error, automatic unit conversion from {0} to {1} for {2} in {3} not implemented'.format(self.units, units, self.standard_name, self.container))
Exception: Error, automatic unit conversion from 1 to none for ccpp_error_message in MODULE_cu_gf_driver SCHEME_cu_gf_driver SUBROUTINE_cu_gf_driver_init not implemented
Description
If the units converter is invoked because a variable is listed in metadata with the same standard name but a different unit and one of the units is
"1"
, an obscure error is generated as the units converter does not know how to handleunits = 1
.Steps to Reproduce
195ee0736a05b9bbe26bfcd45390800098be36d7, no modifications
Please provide detailed steps for reproducing the issue.
1
units = 1
.Additional Context
The problem is that the unit converter attempts to convert each unit into a python identifier and
1
does not cooperate.