@@ -442,6 +442,8 @@ def get_numerical_input(
442
442
def matrix_element (idx , value = 0 ):
443
443
# TODO: maybe move element out of the name
444
444
mid = self .id (kwarg_label , is_kwarg = True , idx = idx , hint = shape )
445
+ if isinstance (value , np .ndarray ):
446
+ value = value .item ()
445
447
if not is_int :
446
448
return dcc .Input (
447
449
id = mid ,
@@ -456,7 +458,7 @@ def matrix_element(idx, value=0):
456
458
"marginBottom" : "0.2rem" ,
457
459
"height" : "36px" ,
458
460
},
459
- value = value ,
461
+ value = float ( value ) if value is not None else None ,
460
462
persistence = True ,
461
463
type = "number" ,
462
464
** kwargs ,
@@ -475,7 +477,7 @@ def matrix_element(idx, value=0):
475
477
"marginBottom" : "0.2rem" ,
476
478
"height" : "36px" ,
477
479
},
478
- value = value ,
480
+ value = int ( value ) if value is not None else None ,
479
481
persistence = True ,
480
482
type = "number" ,
481
483
step = 1 ,
@@ -679,33 +681,48 @@ def reconstruct_kwargs_from_state(self, state) -> Dict:
679
681
680
682
# TODO: catch Exceptions here, and display validation error to user if incorrect kwargs supplied
681
683
682
- if isinstance (k_type , tuple ):
683
- # matrix or vector
684
- if kwarg_label not in kwargs :
685
- kwargs [kwarg_label ] = np .empty (k_type )
686
- v = literal_eval (str (v ))
687
- if v is not None and kwargs [kwarg_label ] is not None :
688
- kwargs [kwarg_label ][idx ] = literal_eval (str (v ))
689
- else :
690
- # require all elements to have value, otherwise set
691
- # entire kwarg to None
692
- kwargs [kwarg_label ] = None
693
-
694
- elif k_type == "literal" :
695
-
696
- try :
697
- kwargs [kwarg_label ] = literal_eval (str (v ))
698
- except ValueError :
699
- kwargs [kwarg_label ] = str (v )
700
-
701
- elif k_type == "bool" :
702
- kwargs [kwarg_label ] = bool ("enabled" in v )
703
-
704
- elif k_type == "slider" :
705
- kwargs [kwarg_label ] = v
706
-
707
- elif k_type == "dict" :
708
- pass
684
+ try :
685
+
686
+ if isinstance (k_type , tuple ):
687
+ # matrix or vector
688
+ if kwarg_label not in kwargs :
689
+ kwargs [kwarg_label ] = np .empty (k_type )
690
+ v = literal_eval (str (v ))
691
+ if (v is not None ) and (kwargs [kwarg_label ] is not None ):
692
+ if isinstance (v , list ):
693
+ print (
694
+ "This shouldn't happen! Debug required." ,
695
+ kwarg_label ,
696
+ idx ,
697
+ v ,
698
+ )
699
+ kwargs [kwarg_label ][idx ] = None
700
+ else :
701
+ kwargs [kwarg_label ][idx ] = v
702
+ else :
703
+ # require all elements to have value, otherwise set
704
+ # entire kwarg to None
705
+ kwargs [kwarg_label ] = None
706
+
707
+ elif k_type == "literal" :
708
+
709
+ try :
710
+ kwargs [kwarg_label ] = literal_eval (str (v ))
711
+ except ValueError :
712
+ kwargs [kwarg_label ] = str (v )
713
+
714
+ elif k_type == "bool" :
715
+ kwargs [kwarg_label ] = bool ("enabled" in v )
716
+
717
+ elif k_type == "slider" :
718
+ kwargs [kwarg_label ] = v
719
+
720
+ elif k_type == "dict" :
721
+ pass
722
+
723
+ except Exception as exc :
724
+ # Not raised intentionally but if you notice this in logs please investigate.
725
+ print ("This is a problem, debug required." , exc )
709
726
710
727
for k , v in kwargs .items ():
711
728
if isinstance (v , np .ndarray ):
0 commit comments