@@ -99,29 +99,37 @@ def _with_cat(p: Parameter, cat: str):
9999 def generate_json_schema (self ) -> dict :
100100 input_params_json , output_params_json = self .get_parameters_json ()
101101 input_params = json .loads (input_params_json )
102+ return self ._generate_json_schema_for_params (input_params )
102103
104+ def _generate_json_schema_for_params (self , params : dict ) -> dict :
103105 properties = {}
104106 required = []
105107
106- for param_name in input_params :
107- param = input_params [param_name ]
108+ for param_name in params :
109+ param = params [param_name ]
108110
109111 units_val = param ['CurrentUnits' ] if isinstance (param ['CurrentUnits' ], str ) else None
110112 min_val , max_val = _get_min_and_max (param , default_val = None )
111113 properties [param_name ] = {
112114 'description' : param ['ToolTipText' ],
113- 'type' : param ['json_parameter_type' ],
114115 'units' : units_val ,
115- 'category' : param ['parameter_category' ],
116- 'default' : _fix_floating_point_error (param ['DefaultValue' ]),
117116 'minimum' : min_val ,
118117 'maximum' : max_val ,
119118 }
120119
121- if param ['Required' ]:
120+ if 'json_parameter_type' in param :
121+ properties [param_name ]['type' ] = param ['json_parameter_type' ]
122+
123+ if 'parameter_category' in param :
124+ properties [param_name ]['category' ] = param ['parameter_category' ]
125+
126+ if 'DefaultValue' in param :
127+ properties [param_name ]['default' ] = _fix_floating_point_error (param ['DefaultValue' ])
128+
129+ if param .get ('Required' ):
122130 required .append (param_name )
123131
124- if param [ 'ValuesEnum' ] :
132+ if param . get ( 'ValuesEnum' ) :
125133 properties [param_name ]['enum_values' ] = param ['ValuesEnum' ]
126134
127135 schema = {
@@ -261,6 +269,13 @@ def _fix_floating_point_error(val: Any) -> Any:
261269 return val
262270
263271
272+ class GeophiresXOutputSchemaGenerator (GeophiresXSchemaGenerator ):
273+ def generate_json_schema (self ) -> dict :
274+ input_params_json , output_params_json = self .get_parameters_json ()
275+ output_params = json .loads (output_params_json )
276+ return self ._generate_json_schema_for_params (output_params )
277+
278+
264279class HipRaXSchemaGenerator (GeophiresXSchemaGenerator ):
265280 def get_parameter_sources (self ) -> list :
266281 """
0 commit comments