File size: 985 Bytes
02c783d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
from typing import Optional, List, Any
from dataclasses import dataclass, asdict
from dataloaders.ProblemState import ProblemState
class MemoryClassMeta(type):
def __new__(cls, name, bases, namespace, field_names=None):
# Inject type annotations for dataclass to use
if field_names:
annotations = {}
for field in field_names:
annotations[field] = Any # or a specific type
namespace['__annotations__'] = annotations
clsobj = super().__new__(cls, name, bases, namespace)
return dataclass(clsobj) # Apply @dataclass dynamically
class BaseMemory(metaclass=MemoryClassMeta, field_names=["ps"]):
pass
class ReflexionMemory(metaclass=MemoryClassMeta, field_names=["ps", "err_msg", "reflection"]):
pass
# class FunctionSignatureMemory(BaseMemory):
# function_signatures: Optional[List] = None
# @dataclass
# class OneshotMemory(BaseMemory):
# oneshot: Optional[str] = None
|