更新时间:2023-10-30 17:12:58
我没有检查以下编译器,但看起来应该如下.如果您发现需要更改的内容并尝试对其进行编译,请有人编辑此答案:
I didn't check wheter or not the following compiles, but it should look like what follows. Please someone edit this answer if you find something to change and tried to compile it:
class BaseDataRepository(ABC):
@abstractmethod
def get_all_ids(self) -> List[int]:
pass
@abstractmethod
def get_data_from_id(self, _id: int) -> object:
pass
class InMemoryDataRepository(BaseDataRepository):
def __init__(self, ids, data):
self.ids: List[int] = ids
self.data: Dict[int, object] = data
def get_all_ids(self) -> List[int]:
return list(self.ids)
def get_data_from_id(self, _id: int) -> object:
return self.data[_id]
class ConvertIDsToLoadedData(BaseStep):
def _handle_transform(self, data_container: DataContainer, context: ExecutionContext):
repo: BaseDataRepository = context.get_service(BaseDataRepository)
ids = data_container.data_inputs
# Replace data ids by their loaded object counterpart:
data_container.data_inputs = [repo.get_data_from_id(_id) for _id in ids]
return data_container, context
context = ExecutionContext('caching_folder').set_service_locator({
BaseDataRepository: InMemoryDataRepository(ids, data) # or insert here any other replacement class that inherits from `BaseDataRepository` when you'll change the database to a real one (e.g.: SQL) rather than a cheap "InMemory" stub.
})
有关更新,请参见我在此处针对此问题打开的问题: https://github.com/Neuraxio/Neuraxle/issues/421
For updates, see the issue I opened here for this question: https://github.com/Neuraxio/Neuraxle/issues/421