@@ -99,29 +99,37 @@ def _with_cat(p: Parameter, cat: str):
99
99
def generate_json_schema (self ) -> dict :
100
100
input_params_json , output_params_json = self .get_parameters_json ()
101
101
input_params = json .loads (input_params_json )
102
+ return self ._generate_json_schema_for_params (input_params )
102
103
104
+ def _generate_json_schema_for_params (self , params : dict ) -> dict :
103
105
properties = {}
104
106
required = []
105
107
106
- for param_name in input_params :
107
- param = input_params [param_name ]
108
+ for param_name in params :
109
+ param = params [param_name ]
108
110
109
111
units_val = param ['CurrentUnits' ] if isinstance (param ['CurrentUnits' ], str ) else None
110
112
min_val , max_val = _get_min_and_max (param , default_val = None )
111
113
properties [param_name ] = {
112
114
'description' : param ['ToolTipText' ],
113
- 'type' : param ['json_parameter_type' ],
114
115
'units' : units_val ,
115
- 'category' : param ['parameter_category' ],
116
- 'default' : _fix_floating_point_error (param ['DefaultValue' ]),
117
116
'minimum' : min_val ,
118
117
'maximum' : max_val ,
119
118
}
120
119
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' ):
122
130
required .append (param_name )
123
131
124
- if param [ 'ValuesEnum' ] :
132
+ if param . get ( 'ValuesEnum' ) :
125
133
properties [param_name ]['enum_values' ] = param ['ValuesEnum' ]
126
134
127
135
schema = {
@@ -261,6 +269,13 @@ def _fix_floating_point_error(val: Any) -> Any:
261
269
return val
262
270
263
271
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
+
264
279
class HipRaXSchemaGenerator (GeophiresXSchemaGenerator ):
265
280
def get_parameter_sources (self ) -> list :
266
281
"""
0 commit comments