Skip to content

Breakthrough Datasets

albert.collections.btdataset.BTDatasetCollection

BTDatasetCollection(*, session: AlbertSession)

Bases: BaseCollection

BTDatasetCollection is a collection class for managing Breakthrough dataset entities.

Parameters:

Name Type Description Default
session AlbertSession

The Albert session instance.

required

Attributes:

Name Type Description
base_path str

The base path for btdataset API requests.

Parameters:

Name Type Description Default
session AlbertSession

The Albert session instance.

required

Methods:

Name Description
create

Create a new BTDataset.

get_by_id

Get a BTDataset by ID.

update

Update a BTDataset.

delete

Delete a BTDataset by ID.

get_all

Get all items from the BTDataset collection.

Source code in src/albert/collections/btdataset.py
def __init__(self, *, session: AlbertSession):
    """
    Initialize the BTDatasetCollection with the provided session.

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

base_path

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

create

create(*, dataset: BTDataset) -> BTDataset

Create a new BTDataset.

Parameters:

Name Type Description Default
dataset BTDataset

The BTDataset record to create.

required

Returns:

Type Description
BTDataset

The created BTDataset.

Source code in src/albert/collections/btdataset.py
@validate_call
def create(self, *, dataset: BTDataset) -> BTDataset:
    """
    Create a new BTDataset.

    Parameters
    ----------
    dataset : BTDataset
        The BTDataset record to create.

    Returns
    -------
    BTDataset
        The created BTDataset.
    """
    response = self.session.post(
        self.base_path,
        json=dataset.model_dump(mode="json", by_alias=True, exclude_none=True),
    )
    return BTDataset(**response.json())

get_by_id

get_by_id(*, id: BTDatasetId) -> BTDataset

Get a BTDataset by ID.

Parameters:

Name Type Description Default
id BTDatasetId

The Albert ID of the BTDataset.

required

Returns:

Type Description
BTDataset

The retrived BTDataset.

Source code in src/albert/collections/btdataset.py
@validate_call
def get_by_id(self, *, id: BTDatasetId) -> BTDataset:
    """
    Get a BTDataset by ID.

    Parameters
    ----------
    id : BTDatasetId
        The Albert ID of the BTDataset.

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

update

update(*, dataset: BTDataset) -> BTDataset

Update a BTDataset.

The provided dataset must be registered with an Albert ID.

Parameters:

Name Type Description Default
dataset BTDataset

The BTDataset with updated fields.

required

Returns:

Type Description
BTDataset

The updated BTDataset object.

Source code in src/albert/collections/btdataset.py
@validate_call
def update(self, *, dataset: BTDataset) -> BTDataset:
    """
    Update a BTDataset.

    The provided dataset must be registered with an Albert ID.

    Parameters
    ----------
    dataset : BTDataset
        The BTDataset with updated fields.

    Returns
    -------
    BTDataset
        The updated BTDataset object.
    """
    path = f"{self.base_path}/{dataset.id}"
    payload = self._generate_patch_payload(
        existing=self.get_by_id(id=dataset.id),
        updated=dataset,
    )
    self.session.patch(path, json=payload.model_dump(mode="json", by_alias=True))
    return self.get_by_id(id=dataset.id)

delete

delete(*, id: BTDatasetId) -> None

Delete a BTDataset by ID.

Parameters:

Name Type Description Default
id BTDatasetId

The ID of the BTDataset to delete.

required

Returns:

Type Description
None
Source code in src/albert/collections/btdataset.py
@validate_call
def delete(self, *, id: BTDatasetId) -> None:
    """Delete a BTDataset by ID.

    Parameters
    ----------
    id : BTDatasetId
        The ID of the BTDataset to delete.

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

get_all

get_all(
    *,
    limit: int = 100,
    name: str | None = None,
    start_key: str | None = None,
    created_by: str | None = None,
) -> Iterator[BTDataset]

Get all items from the BTDataset collection.

Parameters:

Name Type Description Default
limit int

Number of items to return per page, default 100

100
name str

Name of the dataset to filter by, default None

None
start_key str

The starting key for pagination, default None

None
created_by str

The user who created the dataset, default None

None

Returns:

Type Description
Iterator[BTDataset]

An iterator of elements returned by the BTDataset listing.

Source code in src/albert/collections/btdataset.py
@validate_call
def get_all(
    self,
    *,
    limit: int = 100,
    name: str | None = None,
    start_key: str | None = None,
    created_by: str | None = None,
) -> Iterator[BTDataset]:
    """Get all items from the BTDataset collection.

    Parameters
    ----------
    limit : int, optional
        Number of items to return per page, default 100
    name : str, optional
        Name of the dataset to filter by, default None
    start_key : str, optional
        The starting key for pagination, default None
    created_by : str, optional
        The user who created the dataset, default None

    Returns
    -------
    Iterator[BTDataset]
        An iterator of elements returned by the BTDataset listing.
    """
    params = {
        "limit": limit,
        "startKey": start_key,
        "createdBy": created_by,
        "name": name,
    }
    return AlbertPaginator(
        mode=PaginationMode.KEY,
        path=self.base_path,
        session=self.session,
        params=params,
        deserialize=lambda items: [BTDataset(**item) for item in items],
    )