<div dir="ltr">Ho un array di tuple cosi formate da 3 elementi: (int|float|boolean|string|datetime|..., string, boolean). Es:<div><br></div><div>[</div><div> (10, "value >= 1", True),</div><div> ("Ciao", "o in value", True),</div>
<div> (True, "value == False", False),</div><div> (92.5f, "value >= 92.0f", True),</div><div>] <div>Il primo elemento della tupla può essere qualunque tipo o classe di python.</div></div><div>Il secondo elemento è una espressione da applicare sulla tupla e che deve restituire True or False(value si riferisce al primo elemento della tupa)</div>
<div>Il terzo elemento è il risultato dell'operazione appena sopra.</div><div><br></div><div>A intervalli regolari ho bisogno di scorrere l'array sopra e aggiornare il valore del terzo elemento.</div><div>Ho pensato di usare eval in questo modo:</div>
<div><br></div><div>def check_status(value, eval_string):</div><div>  rc =  eval(eval_string)</div><div>  if rc is not bool: raise WrongEvalString()</div><div>  return rc</div><div><br></div><div>Conosco i rischi di eval e vorrei evitare di usarlo però non riesco a trovare nulla di altrettanto semplice e con le stesse potenzialità.</div>
<div><br></div><div>NB: In realtà la stringa che fa la validazione può essere impostata solo da qualcuno di autorizzato quindi il rischio che mi cancelli tutto il fs non ci dovrebbe essere, e non dovrebbero nemmeno fare operazioni del tipo "value ** value" però in ogni caso vorrei trovare qualcosa che mi metta al sicuro da questo tipo di operazioni.</div>
<div><br></div><div>grazie</div><div><br></div><div><br></div></div>