Working with Folders

Folders organise data inside a project. They can be nested arbitrarily deep and support relative-path navigation.

Get the root folder

root_folder = agora.get_myagora().get_root_folder()
print(f'Root folder ID: {root_folder.id}')

Get a folder by ID

folder = agora.get_folder(45)

List sub-folders

for f in folder.get_folders():
    print(f.name)

Get a sub-folder by name

Returns None when the folder does not exist.

my_folder = folder.get_folder('MySubFolder')

Create a folder

Raises an exception if a folder with the same name already exists.

new_folder = root_folder.create_folder('TestFolder')
print(f'Created folder with ID {new_folder.id}')

Get or create a folder

Safe to call from automation scripts — returns the existing folder if found.

folder = root_folder.get_or_create('TestFolder')

Create a nested path in one call

from pathlib import Path

deep_folder = agora.get_or_create_folder(
    Path('Results/2024/Q1'),
    base_folder=root_folder,
)

List folder contents

An item can be an exam, series, dataset or a link to another object.

for item in folder.get_items():
    print(item)

Get all exams in a folder

Pass recursive=True to include exams in sub-folders:

exams = folder.get_exams(recursive=True)

Get all datasets in a folder

datasets = folder.get_datasets(recursive=False)

Get a dataset by name

Returns None when not found:

ds = folder.get_dataset('my_dataset')

Get the folder breadcrumb (path in Agora)

breadcrumb = folder.get_breadcrumb()
print(breadcrumb)

Delete a folder

Warning

Deletion is recursive — all items inside the folder are deleted. Links are not followed during deletion.

folder.delete()