|
2 | 2 | import os
|
3 | 3 | import sys
|
4 | 4 | from pathlib import Path
|
5 |
| -from typing import Tuple |
| 5 | +from typing import Tuple, Any |
6 | 6 |
|
7 | 7 | # Ruff disabled because imports are order-dependent
|
8 | 8 | # ruff: noqa: I001
|
@@ -91,12 +91,15 @@ def generate_json_schema(self) -> dict:
|
91 | 91 | param = input_params[param_name]
|
92 | 92 |
|
93 | 93 | units_val = param['CurrentUnits'] if isinstance(param['CurrentUnits'], str) else None
|
| 94 | + min_val, max_val = _get_min_and_max(param, default_val=None) |
94 | 95 | properties[param_name] = {
|
95 | 96 | 'description': param['ToolTipText'],
|
96 | 97 | 'type': param['json_parameter_type'],
|
97 | 98 | 'units': units_val,
|
98 | 99 | 'category': param['parameter_category'],
|
99 | 100 | 'default': param['DefaultValue'],
|
| 101 | + 'minimum': min_val, |
| 102 | + 'maximum': max_val, |
100 | 103 | }
|
101 | 104 |
|
102 | 105 | if param['Required']:
|
@@ -146,27 +149,13 @@ def get_input_params_table(category_params, category_name) -> str:
|
146 | 149 | # if param['Required']:
|
147 | 150 | # TODO designate required params
|
148 | 151 |
|
149 |
| - def get_key(k): |
150 |
| - if k in param and str(param[k]) != '': # noqa |
151 |
| - return param[k] # noqa |
152 |
| - else: |
153 |
| - return '' |
154 |
| - |
155 |
| - min_val = get_key('Min') |
156 |
| - max_val = get_key('Max') |
157 |
| - |
158 |
| - if 'AllowableRange' in param: |
159 |
| - # TODO warn if min/max are defined and at odds with allowable range |
160 |
| - min_val = min(param['AllowableRange']) |
161 |
| - max_val = max(param['AllowableRange']) |
162 |
| - |
163 |
| - # TODO include full AllowableRange in reference (or fully describe if possible using min/max/increment) |
| 152 | + min_val, max_val = _get_min_and_max(param) |
164 | 153 |
|
165 | 154 | input_rst += f"""\n * - {param['Name']}
|
166 |
| - - {get_key('ToolTipText')} |
167 |
| - - {get_key('PreferredUnits')} |
168 |
| - - {get_key('json_parameter_type')} |
169 |
| - - {get_key('DefaultValue')} |
| 155 | + - {_get_key(param, 'ToolTipText')} |
| 156 | + - {_get_key(param, 'PreferredUnits')} |
| 157 | + - {_get_key(param, 'json_parameter_type')} |
| 158 | + - {_get_key(param, 'DefaultValue')} |
170 | 159 | - {min_val}
|
171 | 160 | - {max_val}"""
|
172 | 161 |
|
@@ -219,3 +208,22 @@ def get_key(k):
|
219 | 208 | - {get_key('json_parameter_type')}"""
|
220 | 209 |
|
221 | 210 | return output_rst
|
| 211 | + |
| 212 | + |
| 213 | +def _get_key(param: dict[str, Any], k: str, default_val='') -> Any: |
| 214 | + if k in param and str(param[k]) != '': |
| 215 | + return param[k] |
| 216 | + else: |
| 217 | + return default_val |
| 218 | + |
| 219 | + |
| 220 | +def _get_min_and_max(param: dict[str, Any], default_val='') -> Tuple[float, float]: |
| 221 | + min_val = _get_key(param, 'Min', default_val=default_val) |
| 222 | + max_val = _get_key(param, 'Max', default_val=default_val) |
| 223 | + |
| 224 | + if 'AllowableRange' in param: |
| 225 | + # TODO warn if min/max are defined and at odds with allowable range |
| 226 | + min_val = min(param['AllowableRange']) |
| 227 | + max_val = max(param['AllowableRange']) |
| 228 | + |
| 229 | + return (min_val, max_val) |
0 commit comments