diff --git a/aviary/interface/reports.py b/aviary/interface/reports.py index 479eaf816..301e75cbc 100644 --- a/aviary/interface/reports.py +++ b/aviary/interface/reports.py @@ -410,15 +410,22 @@ def abs2prom(abs_name): for var in sorted(bare_hierarchy_inputs): metadata = aviary_metadata.get(var) + abs_paths = prom2abs(var) + try: units = metadata['units'] - except: + except (TypeError, KeyError): metadata = aviary_metadata.get(var.split('.')[-1]) - units = metadata['units'] + + try: + units = metadata['units'] + except (TypeError, KeyError): + # This happens when the var is not defined in metadata. + metadata = prob.model.get_io_metadata('input')[abs_paths[0]] + units = metadata['units'] val = prob.model.get_val(var, units=units) desc = metadata['desc'] - abs_paths = prom2abs(var) f.write(f'| **{var}** | {val} | {units} | {desc} | {abs_paths}|\n') diff --git a/aviary/interface/test/test_reports.py b/aviary/interface/test/test_reports.py index c21bc1832..d8a72c646 100644 --- a/aviary/interface/test/test_reports.py +++ b/aviary/interface/test/test_reports.py @@ -89,15 +89,20 @@ def test_timeseries_report(self): @set_env_vars(TESTFLO_RUNNING='0', OPENMDAO_REPORTS='check_input_report') def test_check_input_report(self): # Make sure the input check works with custom metadata. + # Make sure it also works when a user forgets to create metadata. class ExtraBuilder(SubsystemBuilderBase): def build_pre_mission(self, aviary_inputs): - comp = om.ExecComp('z = 2*x') + comp = om.ExecComp(['z = 2*x', 'p = q']) wing_group = om.Group() wing_group.add_subsystem( 'aerostructures', comp, - promotes_inputs=[('x', 'aircraft:custom_var')], + promotes_inputs=[ + ('x', 'aircraft:custom_var'), + ('q', 'aircraft:forgotten_input'), + ], + promotes_outputs=[('p', 'aircraft:forgotten_out')], ) return wing_group