import json
import logging
from dataclasses import asdict, dataclass
logger = logging.getLogger("llamda")
[docs]
@dataclass
class Individual:
name: str | None = None
code: str | None = None
exec_success: bool | None = None
obj: float | None = None
traceback_msg: str | None = None
[docs]
def to_dict(self) -> dict:
return asdict(self)
[docs]
def to_json(self) -> str:
return json.dumps(self.to_dict())
[docs]
@classmethod
def from_dict(cls, data: dict) -> "Individual":
return cls(**data)
[docs]
@classmethod
def from_json(cls, json_str: str) -> "Individual":
return cls.from_dict(json.loads(json_str))
[docs]
def write_code_to_file(self, filepath: str) -> None:
if self.code is None:
logger.warning("No code to write to file.")
return
with open(filepath, "w") as f:
f.write(self.code)