Source code for qctoolkit.expressions

from py_expression_eval import Parser
from typing import Any, Dict, Iterable, Optional

from qctoolkit.serialization import Serializable

__all__ = ["Expression"]


[docs]class Expression(Serializable): def __init__(self, ex: str) -> None: self.__string = str(ex) # type: str self.__expression = Parser().parse(ex.replace('**', '^')) # type: py_expression_eval.Expression @property def string(self) -> str: return self.__string
[docs] def variables(self) -> Iterable[str]: return self.__expression.variables()
[docs] def evaluate(self, **kwargs) -> float: return self.__expression.evaluate(kwargs)
[docs] def get_serialization_data(self, serializer: 'Serializer') -> Dict[str, Any]: return dict(type='Expression', expression=self.__string)
@staticmethod
[docs] def deserialize(serializer: 'Serializer', **kwargs) -> Serializable: return Expression(kwargs['expression'])
@property def identifier(self) -> Optional[str]: return None