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_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 it’s 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)[source]

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

Parameters:
  • model_id – Unique model ID

  • version – Model card version

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 = '')[source]

Find and returns a list of models based on provided search terms.

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

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

  • filters – Custom filters, defaults to None

  • search – String to be located in model cards, defaults to “”

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, 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 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

  • 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, visibility: ModelVisibility | None = None, organisation: str | None = None, state: str | None = None, collaborators: list[CollaboratorEntry] | None = None)[source]

Create a model.

Parameters:
  • name – Name of the model

  • kind – Either a Model or a Datacard

  • description – Description of the 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

  • 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'
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.