Source code for camel.datahubs.base

# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
from abc import ABC, abstractmethod
from typing import Any, List

from camel.datahubs.models import Record


[docs] class BaseDatasetManager(ABC): r"""Abstract base class for dataset managers."""
[docs] @abstractmethod def create_dataset(self, name: str, **kwargs: Any) -> str: r"""Creates a new dataset. Args: name (str): The name of the dataset. kwargs (Any): Additional keyword arguments. Returns: str: The URL of the created dataset. """ pass
[docs] @abstractmethod def list_datasets( self, username: str, limit: int = 100, **kwargs: Any ) -> List[str]: r"""Lists all datasets for the current user. Args: username (str): The username of the user whose datasets to list. limit (int): The maximum number of datasets to list. (default::obj:`100`) kwargs (Any): Additional keyword arguments. Returns: List[str]: A list of dataset ids. """ pass
[docs] @abstractmethod def delete_dataset(self, dataset_name: str, **kwargs: Any) -> None: r"""Deletes a dataset. Args: dataset_name (str): The name of the dataset to delete. kwargs (Any): Additional keyword arguments. """ pass
[docs] @abstractmethod def add_records( self, dataset_name: str, records: List[Record], filepath: str = "records/records.json", **kwargs: Any, ) -> None: r"""Adds records to a dataset. Args: dataset_name (str): The name of the dataset. records (List[Record]): A list of records to add to the dataset. filepath (str): The path to the file containing the records. (default::obj:`"records/records.json"`) kwargs (Any): Additional keyword arguments. """ pass
[docs] @abstractmethod def update_records( self, dataset_name: str, records: List[Record], filepath: str = "records/records.json", **kwargs: Any, ) -> None: r"""Updates records in a dataset. Args: dataset_name (str): The name of the dataset. records (List[Record]): A list of records to update in the dataset. filepath (str): The path to the file containing the records. (default::obj:`"records/records.json"`) kwargs (Any): Additional keyword arguments. """ pass
[docs] @abstractmethod def list_records( self, dataset_name: str, filepath: str = "records/records.json", **kwargs: Any, ) -> List[Record]: r"""Lists records in a dataset. Args: dataset_name (str): The name of the dataset. filepath (str): The path to the file containing the records. (default::obj:`"records/records.json"`) kwargs (Any): Additional keyword arguments. """ pass
# New method for record deletion
[docs] @abstractmethod def delete_record( self, dataset_name: str, record_id: str, filepath: str = "records/records.json", **kwargs: Any, ) -> None: r"""Deletes a record from the dataset. Args: dataset_name (str): The name of the dataset. record_id (str): The ID of the record to delete. filepath (str): The path to the file containing the records. (default::obj:`"records/records.json"`) kwargs (Any): Additional keyword arguments. """ pass