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 use

class bailo.core.agent.Agent(verify: str | bool = 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.

__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: str | bool = True)[source]

Initiate a standard agent.

Parameters:

verify – Path to certificate authority file, or bool for SSL verification.

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

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

Returns:

Response object.

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

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

Returns:

Response object.

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

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

Returns:

Response object.

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

Make a POST request. See :func:`__request for parameters.

Returns:

Response object.

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

Make a PUSH request. See :func:`__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: str, key: str, auth: str, **kwargs)[source]

Bases: Agent

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

Initiate an agent for PKI authentication.

Parameters:
  • cert – Path to cert file

  • key – Path to key file

  • auth – Path to certificate authority file

  • **kwargs

    Kwargs passed to the super Agent class __init__

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

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

Returns:

Response object.

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

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

Returns:

Response object.

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

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

Returns:

Response object.

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

Make a POST request. See :func:`__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.TokenAgent(access_key: str | None = None, secret_key: str | None = None, **kwargs)[source]

Bases: Agent

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

Initiate an agent for API token authentication.

Parameters:
  • access_key – Access key

  • secret_key – Secret key

  • **kwargs

    Kwargs passed to the super Agent class __init__

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

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

Returns:

Response object.

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

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

Returns:

Response object.

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

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

Returns:

Response object.

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

Make a POST request. See :func:`__request for parameters.

Returns:

Response object.

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

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

Returns:

Response object.

class bailo.core.client.Client(url: str, agent: ~bailo.core.agent.Agent = <bailo.core.agent.Agent object>)[source]

Bases: object

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

Parameters:
  • url – Url of bailo website

  • agent – An agent object to handle requests

__init__(url: str, agent: ~bailo.core.agent.Agent = <bailo.core.agent.Agent object>)[source]

Initialise a Client.

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

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

delete_access_request(model_id: str, access_request_id: str)[source]

Delete a specific access request associated with a model.

Parameters:
  • model_id – Unique model ID

  • access_request_id – Unique access request ID

Returns:

JSON response object

delete_file(model_id: str, file_id: str)[source]

Delete a specific file associated with a model.

Parameters:
  • model_id – Unique model ID

  • file_id – Unique file ID

Returns:

JSON response object

delete_model(model_id: str)[source]

Delete a specific model and all associated artefacts.

Parameters:

model_id – Unique model ID

Returns:

JSON response object

delete_release(model_id: str, release_version: str)[source]

Delete a specific model release.

Parameters:
  • model_id – Unique model ID

  • release_version – Release version

Returns:

JSON response object

get_access_request(model_id: str, access_request_id: str)[source]

Retrieve a specific access request given its unique ID.

Parameters:
  • model_id – Unique model ID

  • access_request_id – Unique access request ID

Returns:

JSON response object

get_access_requests(model_id: str)[source]

Retrieve all access requests given a specific model.

Parameters:
  • model_id – Unique model ID

  • access_request_id – Unique access request ID

Returns:

JSON response object

get_all_images(model_id: str)[source]

Get all images.

Parameters:

model_id – A unique model ID

Returns:

JSON response object

get_all_releases(model_id: str)[source]

Get all releases for a model.

Parameters:

model_id – Unique model ID

Returns:

JSON response object

get_all_schemas(kind: SchemaKind | None = None)[source]

Get all schemas.

Parameters:

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

Returns:

JSON response object

get_download_by_filename(model_id: str, semver: str, filename: str)[source]

Download a specific file.

Parameters:
  • model_id – Unique model ID

  • semver – Semver of the release

  • filename – The filename trying to download from

Returns:

The filename

get_download_file(model_id: str, file_id: str)[source]

Download a specific file by its id.

Parameters:
  • model_id – Unique model ID

  • file_id – Unique file ID

Returns:

The unique file ID

get_files(model_id: str)[source]

Get files for a model.

Parameters:

model_id – Unique model ID

Returns:

JSON response object

get_model(model_id: str)[source]

Retrieve a specific model using its unique ID.

Parameters:

model_id – Unique model ID

Returns:

JSON response object

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

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

Parameters:
  • model_id – Unique model ID

  • version – Model card version

  • mirrored – Whether to get the read only model card

Returns:

JSON response object

get_model_roles(model_id: str)[source]

Get roles for a model.

Parameters:

model_id – Unique model ID

Returns:

JSON response object

get_models(task: str | None = None, libraries: list[str] | None = None, filters: list[str] | None = None, search: str = '', kind: EntryKind | None = None, organisations: list[str] | None = None, states: list[str] | None = None, allow_templating: bool | None = None, schema_id: str | None = None, admin_access: bool | None = None, peers: list[str] | None = None, title_only: bool | None = 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 – Entry task (e.g. image classification), defaults to None

  • libraries – Entry library (e.g. TensorFlow), defaults to None

  • filters – 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 – 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 – Entry kind to filter by (e.g. EntryKind.MODEL), defaults to None

  • organisations – List of organisation identifiers to restrict results, defaults to None

  • states – List of entry lifecycle states to restrict results, defaults to None

  • allow_templating – If True, restricts results to models with templating enabled, defaults to None

  • schema_id – Schema ID to restrict results to models using that schema, defaults to None

  • admin_access – 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 of peer identifiers to include remote search results from, defaults to None

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

Returns:

JSON response object

get_release(model_id: str, release_version: str)[source]

Get a specific model release.

Parameters:
  • model_id – Unique model ID

  • release_version – Release version

Returns:

JSON response object

get_reviews(active: bool, model_id: str | None = None, version: str | None = None)[source]

Get all reviews within given parameters.

Parameters:
  • active – Boolean representing status of review

  • model_id – Unique model ID, defaults to None

  • version – Model version, defaults to None

Returns:

JSON response object.

get_schema(schema_id: str)[source]

Retrieve a specific schema using its unique ID.

Parameters:

schema_id – Unique schema ID

Returns:

JSON response object.

model_card_from_schema(model_id: str, schema_id: str)[source]

Create a model card using a given schema ID.

Parameters:
  • model_id – Unique model ID

  • schema_id – Unique model card schema ID

Returns:

JSON response object

model_card_from_template(model_id: str, template_id: str | None)[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

patch_access_request(model_id: str, access_request_id: str, metadata: Any, schema_id: str | None = None)[source]

Update an access request given its unique ID.

Parameters:
  • model_id – Unique model ID

  • access_request_id – Unique access request ID

Metadata:

Metadata object, defined by access request schemas

Returns:

JSON response object

patch_model(model_id: str, name: str | None = None, kind: str | None = None, description: str | None = None, visibility: str | None = None, organisation: str | None = None, state: str | None = None, tags: list[str] | None = None, collaborators: list[CollaboratorEntry] | None = None)[source]

Update a specific model using its unique ID.

Parameters:
  • model_id – Unique model ID

  • name – Name of the model, defaults to None

  • kind – Either a Model, Mirrored Model or a Datacard, defaults to None

  • description – Description of the model, defaults to None

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

  • organisation – Organisation responsible for the model, defaults to None

  • state – Development readiness of the model, defaults to None

  • tags – Tags to assign to the model, defaults to None

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

Returns:

JSON response object

post_access_request(model_id: str, metadata: Any, schema_id: str)[source]

Create an access request given a model ID.

Parameters:
  • model_id – Unique model ID

  • metadata – Metadata object, defined by access request schema

  • schema_id – Unique schema ID

Returns:

JSON response object

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

Create a review for a release.

Parameters:
  • model_id – A unique model ID

  • access_request_id – Unique access request ID

  • role – The role of the user making the review

  • decision – Either approve or request changes

  • comment – A comment to go with the review

post_model(name: str, kind: EntryKind, description: str, sourceModelId: str | None = None, visibility: ModelVisibility | None = None, organisation: str | None = None, state: str | None = None, tags: list[str] | None = None, collaborators: list[CollaboratorEntry] | None = None)[source]

Create a model.

Parameters:
  • name – Name of the model

  • kind – Either a Model, Mirrored Model or a Datacard

  • description – Description of the model

  • sourceModelId – Used for syncing a mirrored model to its source model

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

  • organisation – Organisation responsible for the model, defaults to None

  • state – Development readiness of the model, defaults to None

  • tags – Tags to assign to the model, defaults to None

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

Returns:

JSON response object

post_release(model_id: str, release_version: str, notes: str, file_ids: list[str], images: list[str], model_card_version: int | None = None, minor: bool | None = False, draft: bool | None = False)[source]

Create a new model release.

Parameters:
  • model_id – Unique model ID

  • model_card_version – Model card version

  • release_version – Release version

  • notes – Notes on release

  • file_ids – Files for release

  • images – Images for release

  • minor – Signifies a minor release, defaults to False

  • draft – Signifies a draft release, defaults to False

Returns:

JSON response object

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

Create a review for a release.

Parameters:
  • model_id – A unique model ID

  • version – Semver of the release

  • role – The role of the user making the review

  • decision – Either approve or request changes

  • comment – A comment to go with the review

post_schema(schema_id: str, name: str, description: str, kind: SchemaKind, json_schema: dict[str, Any], review_roles: list[str])[source]

Create a schema.

Parameters:
  • schema_id – Unique schema ID

  • name – Name of the schema

  • description – Description for the schema

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

  • json_schema – JSON schema

  • review_roles – List made up of the “shortName” property from a Review Role object

Returns:

JSON response object

put_file_scan(model_id: str, file_id: str)[source]

Manually re-request a new antivirus scan for a file.

Parameters:
  • model_id – Unique model ID

  • file_id – Unique file ID

Returns:

JSON response object

put_model_card(model_id: str, metadata: Any)[source]

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

Parameters:
  • model_id – Unique model ID

  • metadata – Metadata object, defined by model card schema

Returns:

JSON response object

put_release(model_id: str, model_card_version: int, release_version: str, notes: str, draft: bool, file_ids: list[str], images: list[str])[source]

Create a new model release.

Parameters:
  • model_id – Unique model ID

  • model_card_version – Model card version

  • release_version – Release version

  • notes – Notes on release

  • file_ids – Files for release

  • images – Images for release

  • minor – Signifies a minor release, defaults to False

  • draft – Signifies a draft release, defaults to False

Returns:

JSON response object

simple_upload(model_id: str, name: str, buffer: BytesIO)[source]

Upload a file associated with a model.

Parameters:
  • model_id – Unique model ID.

  • name – Name of the file to upload.

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

Returns:

Response object from the upload endpoint.

class bailo.core.enums.CollaboratorEntry(entity: str, roles: list[Role | str])[source]

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

__init__(entity: str, roles: list[Role | str]) None[source]

Initialise a CollaboratorEntry.

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

  • roles – List of roles assigned to the entity.

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

The type of model.

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

A minimal schema.

ACCESS_REQUEST = 'minimal-access-request-general-v10'
DATACARD = 'minimal-data-card-v10'
MODEL = 'minimal-general-v10'
class bailo.core.enums.ModelVisibility(*values)[source]

Whether a model is publicly visible or not.

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

A reviewing role.

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

A type of schema.

ACCESS_REQUEST = 'accessRequest'
MODEL = 'model'
exception bailo.core.exceptions.BailoException[source]

General exception for Bailo response errors.

exception bailo.core.exceptions.ResponseException[source]

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