Fixed #18 : Parsing and evaluating Python
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
from dataclasses import dataclass
|
||||
|
||||
from common.utils import compute_hash
|
||||
from core.ExecutionContext import ExecutionContext
|
||||
|
||||
|
||||
class SheerkaException(Exception):
|
||||
def get_error_msg(self) -> str:
|
||||
pass
|
||||
|
||||
|
||||
class MethodAccessError(SheerkaException):
|
||||
def __init__(self, method_name):
|
||||
self.method_name = method_name
|
||||
|
||||
def get_error_msg(self) -> str:
|
||||
return f"Cannot access method '{self.method_name}'"
|
||||
|
||||
|
||||
@dataclass
|
||||
class ErrorObj:
|
||||
def get_error_msg(self) -> str:
|
||||
pass
|
||||
|
||||
|
||||
class ErrorContext:
|
||||
"""
|
||||
This class represents the result of a data flow processing
|
||||
"""
|
||||
|
||||
def __init__(self, who: str, context: ExecutionContext, value: object = None):
|
||||
self.who = who
|
||||
self.context = context
|
||||
self.value = value
|
||||
self.parents = None
|
||||
|
||||
def __repr__(self):
|
||||
return f"Error(who={self.who}, context_id={self.context.medium_id}, value={self.value})"
|
||||
|
||||
def __eq__(self, other):
|
||||
if id(self) == id(other):
|
||||
return True
|
||||
|
||||
if not isinstance(other, ErrorContext):
|
||||
return False
|
||||
|
||||
return self.who == other.who and \
|
||||
self.context.id == other.context.id and \
|
||||
self.value == other.value
|
||||
|
||||
def __hash__(self):
|
||||
return hash((self.who, self.context.id, compute_hash(self.value)))
|
||||
|
||||
def get_error_msg(self):
|
||||
value_as_list = self.value if isinstance(self.value, list) else [self.value]
|
||||
temp = []
|
||||
for value in value_as_list:
|
||||
if isinstance(value, str):
|
||||
temp.append(value)
|
||||
elif isinstance(value, (SheerkaException, ErrorObj)):
|
||||
temp.append(value.get_error_msg())
|
||||
else:
|
||||
temp.append(repr(value))
|
||||
|
||||
return ", ".join(temp)
|
||||
Reference in New Issue
Block a user