Skip to content

Smart Datasets (🧪Beta)

albert.collections.smart_datasets.SmartDatasetCollection

SmartDatasetCollection(*, session: AlbertSession)

Bases: BaseCollection

A collection for managing smart datasets in the Albert platform (🧪Beta).

Beta Feature!

Please do not use in production or without explicit guidance from Albert. You might otherwise have a bad experience. This feature currently falls outside of the Albert support contract, but we'd love your feedback!

Parameters:

Name Type Description Default
session AlbertSession

The Albert session instance.

required

Attributes:

Name Type Description
base_path str

The base URL for smart dataset API requests.

Methods:

Name Description
create

Creates a new smart dataset entity.

get_all

Lists all smart datasets for the tenant.

get_by_id

Retrieves a smart dataset by its ID.

update

Updates a smart dataset.

delete

Deletes a smart dataset by its ID.

Parameters:

Name Type Description Default
session AlbertSession

The Albert session instance.

required
Source code in src/albert/collections/smart_datasets.py
def __init__(self, *, session: AlbertSession):
    """
    Initializes the SmartDatasetCollection with the provided session.

    Parameters
    ----------
    session : AlbertSession
        The Albert session instance.
    """
    super().__init__(session=session)
    self.base_path = f"/api/{SmartDatasetCollection._api_version}/smartdatasets"

base_path

base_path = f'/api/{_api_version}/smartdatasets'

create

create(
    *, scope: SmartDatasetScope, build: bool = True
) -> SmartDataset

Creates a new smart dataset entity.

Parameters:

Name Type Description Default
scope SmartDatasetScope

The scope of the smart dataset.

required
build bool

Whether to populate the smart dataset with data from Albert.

True

Returns:

Type Description
SmartDataset

The created smart dataset entity.

Source code in src/albert/collections/smart_datasets.py
def create(
    self,
    *,
    scope: SmartDatasetScope,
    build: bool = True,
) -> SmartDataset:
    """
    Creates a new smart dataset entity.

    Parameters
    ----------
    scope : SmartDatasetScope
        The scope of the smart dataset.
    build : bool, optional
        Whether to populate the smart dataset with data from Albert.

    Returns
    -------
    SmartDataset
        The created smart dataset entity.
    """
    response = self.session.post(
        self.base_path,
        json={"scope": scope.model_dump(by_alias=True, exclude_none=False, mode="json")},
        params={"build": build},
    )
    return SmartDataset(**response.json())

get_all

get_all() -> list[SmartDataset]

Lists all smart datasets for the tenant.

Returns:

Type Description
list[SmartDataset]

A list of SmartDataset entities.

Source code in src/albert/collections/smart_datasets.py
def get_all(self) -> list[SmartDataset]:
    """
    Lists all smart datasets for the tenant.

    Returns
    -------
    list[SmartDataset]
        A list of SmartDataset entities.
    """
    response = self.session.get(self.base_path)
    data = response.json()
    return [SmartDataset(**item) for item in data.get("Items", [])]

get_by_id

get_by_id(*, id: SmartDatasetId) -> SmartDataset

Retrieves a smart dataset by its ID.

Parameters:

Name Type Description Default
id SmartDatasetId

The ID of the smart dataset to retrieve.

required

Returns:

Type Description
SmartDataset

The SmartDataset entity.

Source code in src/albert/collections/smart_datasets.py
def get_by_id(self, *, id: SmartDatasetId) -> SmartDataset:
    """
    Retrieves a smart dataset by its ID.

    Parameters
    ----------
    id : SmartDatasetId
        The ID of the smart dataset to retrieve.

    Returns
    -------
    SmartDataset
        The SmartDataset entity.
    """
    url = f"{self.base_path}/{id}"
    response = self.session.get(url)
    return SmartDataset(**response.json())

update

update(*, smart_dataset: SmartDataset) -> SmartDataset

Update a smart dataset.

Parameters:

Name Type Description Default
smart_dataset SmartDataset

The smart dataset with updated fields. Must have an id set.

required

Returns:

Type Description
SmartDataset

The updated SmartDataset.

Source code in src/albert/collections/smart_datasets.py
def update(
    self,
    *,
    smart_dataset: SmartDataset,
) -> SmartDataset:
    """
    Update a smart dataset.

    Parameters
    ----------
    smart_dataset : SmartDataset
        The smart dataset with updated fields. Must have an id set.

    Returns
    -------
    SmartDataset
        The updated SmartDataset.
    """
    existing = self.get_by_id(id=smart_dataset.id)
    payload = self._generate_patch_payload(existing=existing, updated=smart_dataset)
    if payload.data:
        self.session.patch(
            url=f"{self.base_path}/{smart_dataset.id}",
            json=payload.model_dump(mode="json", by_alias=True, exclude_none=False),
        )
    return self.get_by_id(id=smart_dataset.id)

delete

delete(*, id: SmartDatasetId) -> None

Deletes a smart dataset by its ID.

Parameters:

Name Type Description Default
id SmartDatasetId

The ID of the smart dataset to delete.

required

Returns:

Type Description
None
Source code in src/albert/collections/smart_datasets.py
def delete(self, *, id: SmartDatasetId) -> None:
    """
    Deletes a smart dataset by its ID.

    Parameters
    ----------
    id : SmartDatasetId
        The ID of the smart dataset to delete.

    Returns
    -------
    None
    """
    url = f"{self.base_path}/{id}"
    self.session.delete(url)