bailo.core package

The Bailo core package contains support with one to one endpoints with Bailo. It is recommended to use the helper package for most uses

class bailo.core.agent.Agent(verify=True)[source]

Bases: object

Base API Agent for talking with Bailo.

Wraps each request in an exception handler that maps API errors to Python Bailo errors, among status codes less than 400.

Parameters:

verify (str | bool)

__request(method, *args, **kwargs)

Private method. Make an HTTP request with error handling.

Parameters:
  • method – HTTP method name (e.g. ‘GET’, ‘POST’ etc.).

  • *args –

    Positional arguments to requests.request.

  • **kwargs –

    Keyword arguments to requests.request.

Raises:
Returns:

Response object.

__init__(verify=True)[source]

Initiate a standard agent.

Parameters:

verify (str | bool) – Path to certificate authority file, or bool for SSL verification.

get(*args, **kwargs)[source]

Make a GET request. See __request() for parameters.

Returns:

Response object.

post(*args, **kwargs)[source]

Make a POST request. See __request() for parameters.

Returns:

Response object.

patch(*args, **kwargs)[source]

Make a PATCH request. See __request() for parameters.

Returns:

Response object.

delete(*args, **kwargs)[source]

Make a DELETE request. See __request() for parameters.

Returns:

Response object.

put(*args, **kwargs)[source]

Make a PUT request. See __request() for parameters.

Returns:

Response object.

class bailo.core.agent.PkiAgent(cert, key, auth, **kwargs)[source]

Bases: Agent

Parameters:
  • cert (str)

  • key (str)

  • auth (str)

__init__(cert, key, auth, **kwargs)[source]

Initiate an agent for PKI authentication.

Parameters:
  • cert (str) – Path to cert file

  • key (str) – Path to key file

  • auth (str) – Path to certificate authority file

  • **kwargs –

    Kwargs passed to the super Agent class __init__

get(*args, **kwargs)[source]

Make a GET request. See __request() for parameters.

Returns:

Response object.

post(*args, **kwargs)[source]

Make a POST request. See __request() for parameters.

Returns:

Response object.

put(*args, **kwargs)[source]

Make a PUT request. See __request() for parameters.

Returns:

Response object.

patch(*args, **kwargs)[source]

Make a PATCH request. See __request() for parameters.

Returns:

Response object.

delete(*args, **kwargs)[source]

Make a DELETE request. See __request() for parameters.

Returns:

Response object.

class bailo.core.agent.TokenAgent(access_key=None, secret_key=None, **kwargs)[source]

Bases: Agent

Parameters:
  • access_key (str | None)

  • secret_key (str | None)

__init__(access_key=None, secret_key=None, **kwargs)[source]

Initiate an agent for API token authentication.

Parameters:
  • access_key (str | None) – Access key

  • secret_key (str | None) – Secret key

  • **kwargs –

    Kwargs passed to the super Agent class __init__

get(*args, **kwargs)[source]

Make a GET request. See __request() for parameters.

Returns:

Response object.

post(*args, **kwargs)[source]

Make a POST request. See __request() for parameters.

Returns:

Response object.

put(*args, **kwargs)[source]

Make a PUT request. See __request() for parameters.

Returns:

Response object.

patch(*args, **kwargs)[source]

Make a PATCH request. See __request() for parameters.

Returns:

Response object.

delete(*args, **kwargs)[source]

Make a DELETE request. See __request() for parameters.

Returns:

Response object.

class bailo.core.client.Client(url, agent=None)[source]

Bases: object

Create a Client object that can be used to talk to the website.

Parameters:
  • url (str) – Url of bailo website

  • agent (Agent | None) – An agent object to handle requests

__init__(url, agent=None)[source]

Initialise a Client.

Parameters:
  • url (str) – URL of the Bailo instance website.

  • agent (Agent | None) – An agent object to handle requests, defaults to Agent().

static _parse_json(res)[source]

Parse a JSON response, raising BailoException if the body contains an error.

Parameters:

res (Response) – Response object from the agent.

Raises:
Returns:

Parsed JSON as a dictionary.

Return type:

dict[str, Any]

post_model(name, kind, description, sourceModelId=None, visibility=None, organisation=None, state=None, tags=None, collaborators=None, settings=None)[source]

Create a model.

Parameters:
  • name (str) – Name of the model

  • kind (EntryKind) – Either a Model, Mirrored Model or a Datacard

  • description (str) – Description of the model

  • sourceModelId (str | None) – Used for syncing a mirrored model to its source model

  • visibility (ModelVisibility | None) – Enum to define model visibility (e.g public or private), defaults to None

  • organisation (str | None) – Organisation responsible for the model, defaults to None

  • state (str | None) – Development readiness of the model, defaults to None

  • tags (list[str] | None) – Tags to assign to the model, defaults to None

  • collaborators (list[CollaboratorEntry] | None) – List of CollaboratorEntry to define who the model’s collaborators (a.k.a. model access) are, defaults to None

  • settings (dict | None) – Model settings dictionary (e.g. {“ungovernedAccess”: True, “allowTemplating”: True}), defaults to None

Returns:

JSON response object

get_models(task=None, libraries=None, filters=None, search='', kind=None, organisations=None, states=None, allow_templating=None, schema_id=None, admin_access=None, peers=None, title_only=None)[source]

Search for models using a combination of structured filters and free-text search.

Calls /api/v2/models/search and returns a list of entry summaries visible to the current user. Results may include both local models and, if requested, models returned from configured peers. Any peer or local search errors are included alongside results.

Parameters:
  • task (str | None) – Entry task (e.g. image classification), defaults to None

  • libraries (list[str] | None) – Entry library (e.g. TensorFlow), defaults to None

  • filters (list[str] | None) – List of collaborator role filters. Special value “mine” restricts results to models where the current user is a collaborator. Otherwise, values are treated as collaborator roles, defaults to None

  • search (str) – Free-text search string. Always performs a partial, case-insensitive match against the entry name. If title_only is False, a full-text search across entry content is also performed, defaults to “”

  • kind (EntryKind | None) – Entry kind to filter by (e.g. EntryKind.MODEL), defaults to None

  • organisations (list[str] | None) – List of organisation identifiers to restrict results, defaults to None

  • states (list[str] | None) – List of entry lifecycle states to restrict results, defaults to None

  • allow_templating (bool | None) – If True, restricts results to models with templating enabled, defaults to None

  • schema_id (str | None) – Schema ID to restrict results to models using that schema, defaults to None

  • admin_access (bool | None) – If True, returns models requiring admin access. The caller must have the Admin role or the request will be rejected by the backend, defaults to None

  • peers (list[str] | None) – List of peer identifiers to include remote search results from, defaults to None

  • title_only (bool | None) – If True, limits searching to entry titles only and disables full-text search, defaults to None

Returns:

JSON response object

get_model(model_id, kind=None)[source]

Retrieve a specific model using its unique ID.

Parameters:
  • model_id (str) – Unique model ID

  • kind (list[EntryKind] | list[str] | None) – List of entry kinds to filter by (e.g. [“model”, “mirrored-model”]), defaults to None

Returns:

JSON response object

patch_model(model_id, name=None, kind=None, description=None, visibility=None, organisation=None, state=None, tags=None, collaborators=None, settings=None)[source]

Update a specific model using its unique ID.

Parameters:
  • model_id (str) – Unique model ID

  • name (str | None) – Name of the model, defaults to None

  • kind (EntryKind | str | None) – Either a Model, Mirrored Model or a Datacard, defaults to None

  • description (str | None) – Description of the model, defaults to None

  • visibility (ModelVisibility | str | None) – Enum to define model visibility (e.g public or private), defaults to None

  • organisation (str | None) – Organisation responsible for the model, defaults to None

  • state (str | None) – Development readiness of the model, defaults to None

  • tags (list[str] | None) – Tags to assign to the model, defaults to None

  • collaborators (list[CollaboratorEntry] | None) – List of CollaboratorEntry to define who the model’s collaborators (a.k.a. model access) are, defaults to None

  • settings (dict | None) – Model settings dictionary (e.g. {“mirror”: {“sourceModelId”: “…”}}), defaults to None

Returns:

JSON response object

delete_model(model_id)[source]

Delete a specific model and all associated artefacts.

Parameters:

model_id (str) – Unique model ID

Returns:

JSON response object

get_model_card(model_id, version, mirrored=False)[source]

Retrieve a specific model card, using the unique model ID and version.

Parameters:
  • model_id (str) – Unique model ID

  • version (str) – Model card version

  • mirrored (bool) – Whether to get the read only model card

Returns:

JSON response object

put_model_card(model_id, metadata)[source]

Update the latest model card, using the unique model ID.

Parameters:
  • model_id (str) – Unique model ID

  • metadata (Any) – Metadata object, defined by model card schema

Returns:

JSON response object

import_model_card_text(model_id, text)[source]

Extract model card metadata from free text using an LLM.

Sends the provided text to a configured LLM endpoint which extracts structured metadata matching the model’s schema. The model must already have a schema selected.

Parameters:
  • model_id (str) – Unique model ID

  • text (str) – Model card text to extract metadata from (e.g. HuggingFace model card)

Returns:

JSON response object containing extracted metadata

model_card_from_schema(model_id, schema_id)[source]

Create a model card using a given schema ID.

Parameters:
  • model_id (str) – Unique model ID

  • schema_id (str) – Unique model card schema ID

Returns:

JSON response object

model_card_from_template(model_id, template_id)[source]

Create a model card using a given template ID (previously created models, model ID) :param model_id: Unique model ID :param template_id: Previous model’s unique ID to be used as template for new model card :return: JSON response object

Parameters:
  • model_id (str)

  • template_id (str | None)

post_release(model_id, release_version, notes, file_ids, images, model_card_version=None, minor=False, draft=False)[source]

Create a new model release.

Parameters:
  • model_id (str) – Unique model ID

  • model_card_version (int | None) – Model card version

  • release_version (str) – Release version

  • notes (str) – Notes on release

  • file_ids (list[str]) – Files for release

  • images (list[str]) – Images for release

  • minor (bool | None) – Signifies a minor release, defaults to False

  • draft (bool | None) – Signifies a draft release, defaults to False

Returns:

JSON response object

put_release(model_id, model_card_version, release_version, notes, draft, file_ids, images)[source]

Update a model release.

Parameters:
  • model_id (str) – Unique model ID

  • model_card_version (int) – Model card version

  • release_version (str) – Release version

  • notes (str) – Notes on release

  • draft (bool) – Signifies a draft release

  • file_ids (list[str]) – Files for release

  • images (list[str]) – Images for release

Returns:

JSON response object

get_all_releases(model_id)[source]

Get all releases for a model.

Parameters:

model_id (str) – Unique model ID

Returns:

JSON response object

get_release(model_id, release_version)[source]

Get a specific model release.

Parameters:
  • model_id (str) – Unique model ID

  • release_version (str) – Release version

Returns:

JSON response object

delete_release(model_id, release_version)[source]

Delete a specific model release.

Parameters:
  • model_id (str) – Unique model ID

  • release_version (str) – Release version

Returns:

JSON response object

get_files(model_id)[source]

Get files for a model.

Parameters:

model_id (str) – Unique model ID

Returns:

JSON response object

get_download_file(model_id, file_id)[source]

Download a specific file by its id.

Parameters:
  • model_id (str) – Unique model ID

  • file_id (str) – Unique file ID

Returns:

Response object

get_download_by_filename(model_id, semver, filename)[source]

Download a specific file.

Parameters:
  • model_id (str) – Unique model ID

  • semver (str) – Semver of the release

  • filename (str) – The filename trying to download from

Returns:

Response object

simple_upload(model_id, name, buffer)[source]

Upload a file associated with a model.

Parameters:
  • model_id (str) – Unique model ID.

  • name (str) – Name of the file to upload.

  • buffer (BytesIO) – File-like BytesIO object containing the data to upload.

Returns:

Response object from the upload endpoint.

start_multipart_upload(model_id, name, size, mime=None, tags=None)[source]

Start a multipart file upload.

Parameters:
  • model_id (str) – Unique model ID

  • name (str) – Name of the file to upload

  • size (int) – Total size of the file in bytes

  • mime (str | None) – MIME type of the file, defaults to application/octet-stream

  • tags (list[str] | None) – Optional tags to associate with the file

Returns:

JSON response object containing fileId, uploadId, and chunks

upload_multipart_part(model_id, file_id, upload_id, part_number, data)[source]

Upload a single part of a multipart file upload.

Parameters:
  • model_id (str) – Unique model ID

  • file_id (str) – File ID returned by start_multipart_upload

  • upload_id (str) – Upload ID returned by start_multipart_upload

  • part_number (int) – 1-based part number

  • data (BytesIO | bytes) – File chunk as BytesIO or bytes

Returns:

JSON response object containing the ETag for this part

finish_multipart_upload(model_id, file_id, upload_id, parts, tags=None)[source]

Complete a multipart file upload.

Parameters:
  • model_id (str) – Unique model ID

  • file_id (str) – File ID returned by start_multipart_upload

  • upload_id (str) – Upload ID returned by start_multipart_upload

  • parts (list[dict[str, Any]]) – List of dicts with ETag and PartNumber for each uploaded part

  • tags (list[str] | None) – Optional tags to associate with the file

Returns:

JSON response object containing the completed file

delete_file(model_id, file_id)[source]

Delete a specific file associated with a model.

Parameters:
  • model_id (str) – Unique model ID

  • file_id (str) – Unique file ID

Returns:

JSON response object

patch_file(model_id, file_id, name=None, mime=None, tags=None, metadata=None)[source]

Update metadata for a specific file.

Parameters:
  • model_id (str) – Unique model ID

  • file_id (str) – Unique file ID

  • name (str | None) – New file name, defaults to None

  • mime (str | None) – New MIME type, defaults to None

  • tags (list[str] | None) – Tags to associate with the file, defaults to None

  • metadata (dict[str, Any] | None) – Arbitrary metadata dict, defaults to None

Returns:

JSON response object

get_all_images(model_id)[source]

Get all images.

Parameters:

model_id (str) – A unique model ID

Returns:

JSON response object

post_webhook(model_id, name, uri, token=None, insecure_ssl=None, events=None, active=None)[source]

Create a webhook for a model.

Parameters:
  • model_id (str) – Unique model ID

  • name (str) – Name of the webhook

  • uri (str) – URI the webhook will call

  • token (str | None) – Optional authentication token, defaults to None

  • insecure_ssl (bool | None) – Allow insecure SSL connections, defaults to None

  • events (list[str] | None) – List of event types to trigger on (e.g. createRelease, updateRelease), defaults to None

  • active (bool | None) – Whether the webhook is active, defaults to None

Returns:

JSON response object

get_webhooks(model_id)[source]

Get all webhooks for a model.

Parameters:

model_id (str) – Unique model ID

Returns:

JSON response object

put_webhook(model_id, webhook_id, name, uri, token=None, insecure_ssl=None, events=None, active=None)[source]

Update a webhook for a model.

Parameters:
  • model_id (str) – Unique model ID

  • webhook_id (str) – Unique webhook ID

  • name (str) – Name of the webhook

  • uri (str) – URI the webhook will call

  • token (str | None) – Optional authentication token, defaults to None

  • insecure_ssl (bool | None) – Allow insecure SSL connections, defaults to None

  • events (list[str] | None) – List of event types to trigger on, defaults to None

  • active (bool | None) – Whether the webhook is active, defaults to None

Returns:

JSON response object

delete_webhook(model_id, webhook_id)[source]

Delete a webhook for a model.

Parameters:
  • model_id (str) – Unique model ID

  • webhook_id (str) – Unique webhook ID

Returns:

JSON response object

get_all_schemas(kind=None)[source]

Get all schemas.

Parameters:

kind (SchemaKind | None) – Enum to define schema kind (e.g. Model or AccessRequest), defaults to None

Returns:

JSON response object

get_schema(schema_id)[source]

Retrieve a specific schema using its unique ID.

Parameters:

schema_id (str) – Unique schema ID

Returns:

JSON response object.

post_schema(schema_id, name, description, kind, json_schema, review_roles)[source]

Create a schema.

Parameters:
  • schema_id (str) – Unique schema ID

  • name (str) – Name of the schema

  • description (str) – Description for the schema

  • kind (SchemaKind) – Enum to define schema kind (e.g. Model or AccessRequest)

  • json_schema (dict[str, Any]) – JSON schema

  • review_roles (list[str]) – List made up of the “shortName” property from a Review Role object

Returns:

JSON response object

get_reviews(active, model_id=None, version=None)[source]

Get all reviews within given parameters.

Parameters:
  • active (bool) – Boolean representing status of review

  • model_id (str | None) – Unique model ID, defaults to None

  • version (str | None) – Model version, defaults to None

Returns:

JSON response object.

post_release_review(model_id, version, role, decision, comment=None)[source]

Create a review for a release.

Parameters:
  • model_id (str) – A unique model ID

  • version (str) – Semver of the release

  • role (str) – The role of the user making the review

  • decision (str) – Either approve or request changes

  • comment (str | None) – A comment to go with the review

get_model_roles(model_id=None)[source]

Get roles available for entries. Includes both system and dynamic roles.

Parameters:

model_id (str | None) – Optional unique model ID to scope roles to a specific model, defaults to None

Returns:

JSON response object

get_access_request(model_id, access_request_id)[source]

Retrieve a specific access request given its unique ID.

Parameters:
  • model_id (str) – Unique model ID

  • access_request_id (str) – Unique access request ID

Returns:

JSON response object

get_access_requests(model_id)[source]

Retrieve all access requests given a specific model.

Parameters:

model_id (str) – Unique model ID

Returns:

JSON response object

post_access_request(model_id, metadata, schema_id)[source]

Create an access request given a model ID.

Parameters:
  • model_id (str) – Unique model ID

  • metadata (Any) – Metadata object, defined by access request schema

  • schema_id (str) – Unique schema ID

Returns:

JSON response object

delete_access_request(model_id, access_request_id)[source]

Delete a specific access request associated with a model.

Parameters:
  • model_id (str) – Unique model ID

  • access_request_id (str) – Unique access request ID

Returns:

JSON response object

patch_access_request(model_id, access_request_id, metadata, schema_id=None)[source]

Update an access request given its unique ID.

Parameters:
  • model_id (str) – Unique model ID

  • access_request_id (str) – Unique access request ID

  • metadata (Any) – Metadata object, defined by access request schemas

  • schema_id (str | None) – Unique schema ID, defaults to None

Returns:

JSON response object

put_file_scan(model_id, file_id)[source]

Manually re-request a new scan for a file.

Parameters:
  • model_id (str) – Unique model ID

  • file_id (str) – Unique file ID

Returns:

JSON response object

put_image_scan(model_id, image_name, image_tag)[source]

Manually re-request a new scan for an image.

Parameters:
  • model_id (str) – Unique model ID

  • image_name (str) – Name of the image

  • image_tag (str) – Unique tag of the image

Returns:

JSON response object

get_filescanning_info()[source]

Get information about available file scanning tools.

Returns:

JSON response object containing scanner info

get_model_tags()[source]

Get popular tags used across all models.

Returns:

JSON response object containing a list of tags

post_access_request_review(model_id, access_request_id, role, decision, comment=None)[source]

Create a review for an access request.

Parameters:
  • model_id (str) – A unique model ID

  • access_request_id (str) – Unique access request ID

  • role (str) – The role of the user making the review

  • decision (str) – Either approve or request changes

  • comment (str | None) – A comment to go with the review

Shared base class for the entry types exposed by the helper package.

Entry mirrors ModelInterface in backend/src/models/Model.ts. The following deviations from the backend model are current and intentional:

  • Role has no counterpart to SystemRoles.None (''). That value is a sentinel used by the backend to mean “no role”, not a role that can be assigned to a collaborator.

  • ModelInterface.createdAt, updatedAt and deleted are not surfaced as attributes.

  • ModelCardInterface.createdBy and mirrored are not surfaced as attributes.

  • Settings.ungovernedAccess, Settings.allowTemplating and Settings.mirror.destinationModelId are reachable only through the untyped Entry.settings dictionary. Only mirror.sourceModelId has a named accessor, on MirroredModel.

  • EntryKind.UNTRUSTED_MODEL and EntryKind.MIRRORED_DATACARD have no helper class, and Entry.card_from_schema() has no default schema for them.

class bailo.core.entry.Entry(client, id, name, description, kind=None, visibility=None, organisation=None, state=None, tags=None, collaborators=None)[source]

Bases: ABC

Represent an entry in Bailo

Parameters:
  • client (Client) – A client object used to interact with Bailo

  • id (str) – A unique ID for the entry

  • name (str) – Name of the entry

  • description (str) – Description of the entry

  • kind (EntryKind | None) – Represents whether entry type (i.e. Model, Mirrored Model or Datacard), defaults to the subclass kind

  • visibility (ModelVisibility | None) – Visibility of entry, using ModelVisibility enum (i.e. Public or Private), defaults to None

  • organisation (str | None) – Organisation responsible for the entry, defaults to None

  • state (str | None) – Development readiness of the entry, defaults to None

  • tags (list[str] | None) – Tags to assign to the entry, defaults to None

  • collaborators (list[CollaboratorEntry] | None) – List of CollaboratorEntry to define who the entry’s collaborators (a.k.a. entry access) are, defaults to None

entry_kind: ClassVar[EntryKind]

The entry kind represented by this subclass.

_id_alias: ClassVar[str | None] = None

Subclass-specific alias for id (e.g. model_id), exposed as a property.

_search_refetches_each_result: ClassVar[bool] = False

Whether search() must fetch each result individually to populate all attributes.

_extra_create_args: ClassVar[tuple[str, ...]] = ()

Subclass-specific arguments accepted by create() beyond the standard ones.

classmethod create(client, name, description, organisation=None, state=None, tags=None, collaborators=None, visibility=None, **extra)[source]

Build an entry from Bailo and upload it.

Parameters:
  • client (Client) – A client object used to interact with Bailo

  • name (str) – Name of the entry

  • description (str) – Description of the entry

  • organisation (str | None) – Organisation responsible for the entry, defaults to None

  • state (str | None) – Development readiness of the entry, defaults to None

  • tags (list[str] | None) – Tags to assign to the entry, defaults to None

  • collaborators (list[CollaboratorEntry] | None) – List of CollaboratorEntry to define who the entry’s collaborators (a.k.a. entry access) are, defaults to None

  • visibility (ModelVisibility | None) – Visibility of entry, using ModelVisibility enum (e.g Public or Private), defaults to None

  • extra (Any) – Subclass-specific arguments (e.g. sourceModelId)

Raises:

BailoException – If an argument not accepted by this entry kind is given

Returns:

Entry object

Return type:

EntryT

classmethod _from_id(client, entry_id)[source]

Return an existing entry from Bailo.

Subclasses expose this as from_id with their own ID parameter name.

Parameters:
  • client (Client) – A client object used to interact with Bailo

  • entry_id (str) – A unique entry ID

Returns:

An entry object

Return type:

EntryT

classmethod search(client, task=None, libraries=None, filters=None, search='', organisations=None, states=None, allow_templating=None, schema_id=None, admin_access=None, peers=None, title_only=None)[source]

Return a list of entry objects from Bailo, based on search parameters.

Parameters:
  • client (Client) – A client object used to interact with Bailo

  • task (str | None) – Entry task (e.g. image classification), defaults to None

  • libraries (list[str] | None) – Entry library (e.g. TensorFlow), defaults to None

  • filters (list[str] | None) – List of collaborator role filters. Special value “mine” restricts results to entries where the current user is a collaborator. Otherwise, values are treated as collaborator roles, defaults to None

  • search (str) – Free-text search string. Always performs a partial, case-insensitive match against the entry name. If title_only is False, a full-text search across entry content is also performed, defaults to “”

  • organisations (list[str] | None) – List of organisation identifiers to restrict results, defaults to None

  • states (list[str] | None) – List of entry lifecycle states to restrict results, defaults to None

  • allow_templating (bool | None) – If True, restricts results to entries with templating enabled, defaults to None

  • schema_id (str | None) – Schema ID to restrict results to entries using that schema, defaults to None

  • admin_access (bool | None) – If True, returns entries requiring admin access. The caller must have the Admin role or the request will be rejected by the backend, defaults to None

  • peers (list[str] | None) – List of peer identifiers to include remote search results from, defaults to None

  • title_only (bool | None) – If True, limits searching to entry titles only and disables full-text search, defaults to None

Returns:

List of entry objects

Return type:

list[EntryT]

classmethod _id_kwarg(entry_id)[source]

Return the ID as the keyword argument this subclass’ constructor expects.

Parameters:

entry_id (str) – A unique entry ID.

Returns:

Dictionary mapping the subclass ID parameter name to the given ID.

Return type:

dict[str, str]

classmethod _create_payload_extras(**kwargs)[source]

Return additional arguments for the create request.

Parameters:

kwargs (Any) – Subclass-specific arguments passed to create().

Returns:

Dictionary of additional arguments for client.post_model.

Return type:

dict[str, Any]

classmethod _init_kwargs_from_response(res)[source]

Return additional constructor arguments derived from an API response.

Parameters:

res (dict[str, Any]) – Response dictionary containing entry information.

Returns:

Dictionary of additional constructor arguments.

Return type:

dict[str, Any]

update()[source]

Upload and retrieve any changes to the entry summary on Bailo.

Return type:

None

delete()[source]

Delete the entry from Bailo.

Return type:

Any

card_from_schema(schema_id=None)[source]

Create a card using a schema on Bailo.

Parameters:

schema_id (str | None) – A unique schema ID, defaults to None. If None, either minimal-general-v10 or minimal-data-card-v10 is used

Return type:

None

card_from_template(template_id)[source]

Create a card using a template.

Parameters:

template_id (str) – Previous model’s unique ID to be used as template

Return type:

None

get_card_latest()[source]

Get the latest card from Bailo.

Return type:

None

get_card_revision(version)[source]

Get a specific entry card revision from Bailo.

Parameters:

version (str) – Entry card version

Return type:

None

get_roles()[source]

Get all roles for the entry.

Returns:

List of roles

Return type:

list[dict[str, Any]]

property card: dict[str, Any] | None

Get the metadata of the card.

Returns:

Card metadata.

property card_version: int | None

Get the version of the card.

Returns:

Card version.

property card_schema: str | None

Get the schema ID of the card.

Returns:

Card schema ID.

_update_card(card=None)[source]

Update the card metadata for this entry on the Bailo server.

Parameters:

card (dict[str, Any] | None) – Metadata dictionary to update, defaults to None to use existing card.

Return type:

None

_unpack(res)[source]

Update entry attributes from API response.

Parameters:

res – Response dictionary containing entry information.

_unpack_card(res)[source]

Private method. Unpack card metadata, version, and schema ID from API response.

Parameters:

res – Card-related dictionary from the API response.

class bailo.core.enums.ModelVisibility(*values)[source]

Bases: ValuedEnum

Whether a model is publicly visible or not.

PRIVATE = 'private'
PUBLIC = 'public'
class bailo.core.enums.SchemaKind(*values)[source]

Bases: ValuedEnum

A type of schema.

MODEL = 'model'
ACCESS_REQUEST = 'accessRequest'
class bailo.core.enums.Role(*values)[source]

Bases: ValuedEnum

A reviewing role.

OWNER = 'owner'
CONTRIBUTOR = 'contributor'
CONSUMER = 'consumer'
class bailo.core.enums.EntryKind(*values)[source]

Bases: ValuedEnum

The type of model.

MODEL = 'model'
DATACARD = 'data-card'
MIRRORED_MODEL = 'mirrored-model'
UNTRUSTED_MODEL = 'untrusted-model'
MIRRORED_DATACARD = 'mirrored-data-card'
class bailo.core.enums.MinimalSchema(*values)[source]

Bases: ValuedEnum

A minimal schema.

MODEL = 'minimal-general-v10'
DATACARD = 'minimal-data-card-v10'
ACCESS_REQUEST = 'minimal-access-request-general-v10'
class bailo.core.enums.CollaboratorEntry(entity, roles)[source]

Bases: dict

A set of roles linked to a given entity (a.k.a. user).

Parameters:
  • entity (str)

  • roles (list[Role | str])

__init__(entity, roles)[source]

Initialise a CollaboratorEntry.

Parameters:
  • entity (str) – The entity (e.g. user) identifier.

  • roles (list[Role | str]) – List of roles assigned to the entity.

Return type:

None

Error Handling

All API calls raise BailoException when the backend returns an error response. The exception carries structured detail from the server:

  • status_code - the HTTP status code (e.g. 400, 404).

  • message - the human-readable error message.

  • context - a dict of additional detail. For schema validation failures this includes a validationErrors list describing each field that failed.

from bailo.core.exceptions import BailoException

try:
    client.put_model_card(model_id=model_id, metadata=invalid_metadata)
except BailoException as e:
    print(e.status_code)                    # 400
    print(e.message)                        # "Model metadata could not be validated..."
    for err in e.context["validationErrors"]:
        print(f"  {err['property']}: {err['message']}")

    # Or simply print the formatted error:
    print(e)
exception bailo.core.exceptions.BailoException(message, status_code=None, context=None)[source]

Bases: Exception

General exception for Bailo response errors.

Parameters:
  • message (str)

  • status_code (int | None)

  • context (dict[str, Any] | None)

Return type:

None

exception bailo.core.exceptions.ResponseException[source]

Bases: Exception

Exception raised when the Bailo API returns a non-JSON response.

bailo.core.utils.filter_none(json)[source]

Recursively remove keys with None values or empty dicts from the given dictionary.

Parameters:

json (dict[str, Any]) – The dictionary to filter

Returns:

Dictionary with removed None-valued keys and empty sub-dicts

Return type:

dict[str, Any]

bailo.core.utils.normalise_query_params(value)[source]

Recursively convert Python values into representations suitable for HTTP query parameters.

Parameters:

value (Any) – The value or structure to normalise. May be a scalar, mapping, or sequence

Returns:

A normalised value suitable for use as an HTTP query parameter

Return type:

Any

bailo.core.utils.normalise_json_params(value)[source]

Recursively convert Python values into representations suitable for JSON request bodies.

Unlike normalise_query_params, this preserves booleans as native Python bools since JSON natively supports boolean types.

Parameters:

value (Any) – The value or structure to normalise. May be a scalar, mapping, or sequence

Returns:

A normalised value suitable for use in a JSON request body

Return type:

Any

class bailo.core.utils.NestedDict[source]

Bases: dict