@@ -177,7 +177,7 @@ async def set_hyperparameter_extrinsic(
177
177
wait_for_inclusion : bool = False ,
178
178
wait_for_finalization : bool = True ,
179
179
prompt : bool = True ,
180
- ) -> bool :
180
+ ) -> tuple [ bool , str ] :
181
181
"""Sets a hyperparameter for a specific subnetwork.
182
182
183
183
:param subtensor: initialized SubtensorInterface object
@@ -200,13 +200,14 @@ async def set_hyperparameter_extrinsic(
200
200
params = [netuid ],
201
201
)
202
202
if subnet_owner != wallet .coldkeypub .ss58_address :
203
- err_console . print (
203
+ err_msg = (
204
204
":cross_mark: [red]This wallet doesn't own the specified subnet.[/red]"
205
205
)
206
- return False
206
+ err_console .print (err_msg )
207
+ return False , err_msg
207
208
208
- if not unlock_key (wallet ).success :
209
- return False
209
+ if not ( ulw := unlock_key (wallet ) ).success :
210
+ return False , ulw . message
210
211
211
212
arbitrary_extrinsic = False
212
213
@@ -218,15 +219,14 @@ async def set_hyperparameter_extrinsic(
218
219
)
219
220
extrinsic = parameter
220
221
if not arbitrary_extrinsic :
221
- err_console .print (
222
- ":cross_mark: [red]Invalid hyperparameter specified.[/red]"
223
- )
224
- return False
222
+ err_msg = ":cross_mark: [red]Invalid hyperparameter specified.[/red]"
223
+ err_console .print (err_msg )
224
+ return False , err_msg
225
225
if sudo_ and prompt :
226
226
if not Confirm .ask (
227
227
"This hyperparam is only settable by root sudo users. If you are not, this will fail. Please confirm"
228
228
):
229
- return False
229
+ return False , "This hyperparam is only settable by root sudo users"
230
230
231
231
substrate = subtensor .substrate
232
232
msg_value = value if not arbitrary_extrinsic else call_params
@@ -254,10 +254,11 @@ async def set_hyperparameter_extrinsic(
254
254
]
255
255
256
256
if len (value ) < len (non_netuid_fields ):
257
- err_console . print (
257
+ err_msg = (
258
258
"Not enough values provided in the list for all parameters"
259
259
)
260
- return False
260
+ err_console .print (err_msg )
261
+ return False , err_msg
261
262
262
263
call_params .update (
263
264
{name : val for name , val in zip (non_netuid_fields , value )}
@@ -290,20 +291,20 @@ async def set_hyperparameter_extrinsic(
290
291
)
291
292
if not success :
292
293
err_console .print (f":cross_mark: [red]Failed[/red]: { err_msg } " )
293
- return False
294
+ return False , err_msg
294
295
elif arbitrary_extrinsic :
295
296
console .print (
296
297
f":white_heavy_check_mark: "
297
298
f"[dark_sea_green3]Hyperparameter { parameter } values changed to { call_params } [/dark_sea_green3]"
298
299
)
299
- return True
300
+ return True , ""
300
301
# Successful registration, final check for membership
301
302
else :
302
303
console .print (
303
304
f":white_heavy_check_mark: "
304
305
f"[dark_sea_green3]Hyperparameter { parameter } changed to { value } [/dark_sea_green3]"
305
306
)
306
- return True
307
+ return True , ""
307
308
308
309
309
310
async def _get_senate_members (
@@ -619,25 +620,26 @@ async def sudo_set_hyperparameter(
619
620
param_value : Optional [str ],
620
621
prompt : bool ,
621
622
json_output : bool ,
622
- ):
623
+ ) -> tuple [ bool , str ] :
623
624
"""Set subnet hyperparameters."""
624
625
is_allowed_value , value = allowed_value (param_name , param_value )
625
626
if not is_allowed_value :
626
- err_console . print (
627
+ err_msg = (
627
628
f"Hyperparameter [dark_orange]{ param_name } [/dark_orange] value is not within bounds. "
628
629
f"Value is { param_value } but must be { value } "
629
630
)
630
- return False
631
- success = await set_hyperparameter_extrinsic (
631
+ err_console .print (err_msg )
632
+ return False , err_msg
633
+ success , err_msg = await set_hyperparameter_extrinsic (
632
634
subtensor , wallet , netuid , param_name , value , prompt = prompt
633
635
)
634
636
if json_output :
635
- return success
637
+ return success , err_msg
636
638
if success :
637
639
console .print ("\n " )
638
640
print_verbose ("Fetching hyperparameters" )
639
641
await get_hyperparameters (subtensor , netuid = netuid )
640
- return success
642
+ return success , err_msg
641
643
642
644
643
645
async def get_hyperparameters (
0 commit comments