From ecd8e9480fa586aa4a8331eed65a4fd2864713ad Mon Sep 17 00:00:00 2001 From: BW27492 <BW27492@euro.ngc.com> Date: Tue, 14 May 2024 15:39:55 +0000 Subject: [PATCH 01/12] Added datacard class to init file --- lib/python/src/bailo/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/python/src/bailo/__init__.py b/lib/python/src/bailo/__init__.py index c5fdabca2..7cd90707c 100644 --- a/lib/python/src/bailo/__init__.py +++ b/lib/python/src/bailo/__init__.py @@ -15,6 +15,7 @@ from bailo.core.client import Client from bailo.core.enums import EntryKind, ModelVisibility, Role, SchemaKind from bailo.helper.access_request import AccessRequest +from bailo.helper.datacard import Datacard from bailo.helper.model import Experiment, Model from bailo.helper.release import Release from bailo.helper.schema import Schema From 34ac5e5ba24289bd0c41adc9bb28ba6fff236b55 Mon Sep 17 00:00:00 2001 From: BW27492 <BW27492@euro.ngc.com> Date: Tue, 14 May 2024 15:42:06 +0000 Subject: [PATCH 02/12] Added parent entry class for models and datacards --- lib/python/src/bailo/helper/entry.py | 116 +++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 lib/python/src/bailo/helper/entry.py diff --git a/lib/python/src/bailo/helper/entry.py b/lib/python/src/bailo/helper/entry.py new file mode 100644 index 000000000..01c0f3258 --- /dev/null +++ b/lib/python/src/bailo/helper/entry.py @@ -0,0 +1,116 @@ +from __future__ import annotations + +from typing import Any + +from bailo.core.client import Client +from bailo.core.enums import EntryKind, ModelVisibility +from bailo.core.exceptions import BailoException + + +class Entry: + def __init__( + self, + client: Client, + id: str, + name: str, + description: str, + kind: EntryKind, + visibility: ModelVisibility | None = None, + ) -> None: + self.client = client + + self.id = id + self.name = name + self.description = description + self.kind = kind + self.visibility = visibility + + self.card = None + self.card_version = None + self.card_schema = None + + def update(self) -> None: + """Upload and retrieve any changes to the entry summary on Bailo.""" + res = self.client.patch_model( + model_id=self.id, + name=self.name, + kind=self.kind, + description=self.description, + visibility=self.visibility, + ) + self.__unpack(res["model"]) + + def card_from_schema(self, schema_id: str) -> None: + """Create a card using a schema on Bailo. + + :param schema_id: A unique schema ID + """ + res = self.client.model_card_from_schema(model_id=self.id, schema_id=schema_id) + self.__unpack_card(res["card"]) + + def card_from_template(self): + """Create a card using a template (not yet implemented). + + :raises NotImplementedError: Not implemented error + """ + raise NotImplementedError + + def get_card_latest(self) -> None: + """Get the latest card from Bailo.""" + res = self.client.get_model(model_id=self.id) + if "card" in res["model"]: + self.__unpack_card(res["model"]["card"]) + else: + raise BailoException(f"A model card doesn't exist for model {self.id}") + + def get_card_revision(self, version: str) -> None: + """Get a specific entry card revision from Bailo. + + :param version: Entry card version + """ + res = self.client.get_model_card(model_id=self.id, version=version) + self.__unpack_card(res["modelCard"]) + + def get_roles(self): + """Get all roles for the entry. + + :return: List of roles + """ + res = self.client.get_model_roles(model_id=self.id) + + return res["roles"] + + def get_user_roles(self): + """Get all user roles for the entry. + + :return: List of user roles + """ + res = self.client.get_model_user_roles(model_id=self.id) + + return res["roles"] + + def __update_card(self, card: dict[str, Any] | None = None) -> None: + if card is None: + card = self.card + + res = self.client.put_model_card(model_id=self.id, metadata=card) + self.__unpack_card(res["card"]) + + def __unpack(self, res): + self.id = res["id"] + self.name = res["name"] + self.description = res["description"] + + if res["visibility"] == "private": + self.visibility = ModelVisibility.PRIVATE + else: + self.visibility = ModelVisibility.PUBLIC + + def __unpack_card(self, res): + self.card_version = res["version"] + self.card_schema = res["schemaId"] + + try: + self.card = res["metadata"] + except KeyError: + self.card = None From bd2b8e4f069fac7e8608540c7c3f73bfea7a648e Mon Sep 17 00:00:00 2001 From: BW27492 <BW27492@euro.ngc.com> Date: Tue, 14 May 2024 15:42:23 +0000 Subject: [PATCH 03/12] Added datacard class --- lib/python/src/bailo/helper/datacard.py | 124 ++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 lib/python/src/bailo/helper/datacard.py diff --git a/lib/python/src/bailo/helper/datacard.py b/lib/python/src/bailo/helper/datacard.py new file mode 100644 index 000000000..4d59bc6a2 --- /dev/null +++ b/lib/python/src/bailo/helper/datacard.py @@ -0,0 +1,124 @@ +from __future__ import annotations + +from typing import Any + +from bailo.core.client import Client +from bailo.core.enums import EntryKind, ModelVisibility +from bailo.helper.entry import Entry + + +class Datacard(Entry): + """Represent a datacard within Bailo. + + :param client: A client object used to interact with Bailo + :param datacard_id: A unique ID for the datacard + :param name: Name of datacard + :param description: Description of datacard + :param visibility: Visibility of datacard, using ModelVisibility enum (e.g Public or Private), defaults to None + """ + + def __init__( + self, + client: Client, + datacard_id: str, + name: str, + description: str, + visibility: ModelVisibility | None = None, + ) -> None: + super().__init__( + client=client, + id=datacard_id, + name=name, + description=description, + kind=EntryKind.DATACARD, + visibility=visibility, + ) + + self.datacard_id = datacard_id + + @classmethod + def create( + cls, + client: Client, + name: str, + description: str, + team_id: str, + visibility: ModelVisibility | None = None, + ) -> Datacard: + """Build a datacard from Bailo and upload it. + + :param client: A client object used to interact with Bailo + :param name: Name of datacard + :param description: Description of datacard + :param team_id: A unique team ID + :param visibility: Visibility of datacard, using ModelVisibility enum (e.g Public or Private), defaults to None + :return: Datacard object + """ + res = client.post_model( + name=name, kind=EntryKind.DATACARD, description=description, team_id=team_id, visibility=visibility + ) + datacard = cls( + client=client, + datacard_id=res["model"]["id"], + name=name, + description=description, + visibility=visibility, + ) + + datacard._Entry__unpack(res["model"]) + + return datacard + + @classmethod + def from_id(cls, client: Client, datacard_id: str) -> Datacard: + """Return an existing datacard from Bailo. + + :param client: A client object used to interact with Bailo + :param datacard_id: A unique datacard ID + :return: A datacard object + """ + res = client.get_model(model_id=datacard_id)["model"] + datacard = cls( + client=client, + datacard_id=datacard_id, + name=res["name"], + description=res["description"], + ) + datacard._Entry__unpack(res) + + datacard.get_card_latest() + + return datacard + + def update_data_card(self, data_card: dict[str, Any] | None = None) -> None: + """Upload and retrieve any changes to the datacard on Bailo. + + :param data_card: Datacard dictionary, defaults to None + + ..note:: If a datacard is not provided, the current datacard attribute value is used + """ + self._Entry__update_card(card=data_card) + + @property + def data_card(self): + return self.card + + @data_card.setter + def data_card(self, value): + self.card = value + + @property + def data_card_version(self): + return self.card_version + + @data_card_version.setter + def data_card_version(self, value): + self.card_version = value + + @property + def data_card_schema(self): + return self.card_schema + + @data_card_schema.setter + def data_card_schema(self, value): + self.card_schema = value From 92387e686f6c61094d3d072cdcb4acc68eb01a0b Mon Sep 17 00:00:00 2001 From: BW27492 <BW27492@euro.ngc.com> Date: Tue, 14 May 2024 15:43:47 +0000 Subject: [PATCH 04/12] Mvednon-unique model class methods to entry class --- lib/python/src/bailo/helper/model.py | 140 +++++++-------------------- 1 file changed, 35 insertions(+), 105 deletions(-) diff --git a/lib/python/src/bailo/helper/model.py b/lib/python/src/bailo/helper/model.py index 33b13ab18..43a315004 100644 --- a/lib/python/src/bailo/helper/model.py +++ b/lib/python/src/bailo/helper/model.py @@ -9,6 +9,7 @@ from bailo.core.enums import EntryKind, ModelVisibility from bailo.core.exceptions import BailoException from bailo.core.utils import NestedDict +from bailo.helper.entry import Entry from bailo.helper.release import Release from semantic_version import Version @@ -20,13 +21,12 @@ ml_flow = False -class Model: +class Model(Entry): """Represent a model within Bailo. :param client: A client object used to interact with Bailo :param model_id: A unique ID for the model :param name: Name of model - :param kind: Either a Model or a Datacard :param description: Description of model :param visibility: Visibility of model, using ModelVisibility enum (e.g Public or Private), defaults to None """ @@ -36,53 +36,45 @@ def __init__( client: Client, model_id: str, name: str, - kind: EntryKind, description: str, visibility: ModelVisibility | None = None, ) -> None: - self.client = client + super().__init__( + client=client, id=model_id, name=name, description=description, kind=EntryKind.MODEL, visibility=visibility + ) self.model_id = model_id - self.name = name - self.kind = kind - self.description = description - self.visibility = visibility - - self.model_card = None - self.model_card_version = None - self.model_card_schema = None @classmethod def create( cls, client: Client, name: str, - kind: EntryKind, description: str, team_id: str, visibility: ModelVisibility | None = None, ) -> Model: - """Build a model from Bailo and uploads it. + """Build a model from Bailo and upload it. :param client: A client object used to interact with Bailo :param name: Name of model - :param kind: Either a Model or a Datacard :param description: Description of model :param team_id: A unique team ID :param visibility: Visibility of model, using ModelVisibility enum (e.g Public or Private), defaults to None :return: Model object """ - res = client.post_model(name=name, kind=kind, description=description, team_id=team_id, visibility=visibility) + res = client.post_model( + name=name, kind=EntryKind.MODEL, description=description, team_id=team_id, visibility=visibility + ) model = cls( client=client, model_id=res["model"]["id"], name=name, - kind=kind, description=description, visibility=visibility, ) - model.__unpack(res["model"]) + model._Entry__unpack(res["model"]) return model @@ -98,80 +90,31 @@ def from_id(cls, client: Client, model_id: str) -> Model: model = cls( client=client, model_id=model_id, - kind=res["kind"], name=res["name"], description=res["description"], ) - model.__unpack(res) + model._Entry__unpack(res) model.get_card_latest() return model - def update(self) -> None: - """Upload and retrieves any changes to the model summary on Bailo.""" - res = self.client.patch_model( - model_id=self.model_id, - name=self.name, - kind=self.kind, - description=self.description, - visibility=self.visibility, - ) - self.__unpack(res["model"]) - def update_model_card(self, model_card: dict[str, Any] | None = None) -> None: - """Upload and retrieves any changes to the model card on Bailo. + """Upload and retrieve any changes to the model card on Bailo. :param model_card: Model card dictionary, defaults to None ..note:: If a model card is not provided, the current model card attribute value is used """ - if model_card is None: - model_card = self.model_card - res = self.client.put_model_card(model_id=self.model_id, metadata=model_card) - self.__unpack_mc(res["card"]) - - def card_from_schema(self, schema_id: str) -> None: - """Create a model card using a schema on Bailo. - - :param schema_id: A unique schema ID - """ - res = self.client.model_card_from_schema(model_id=self.model_id, schema_id=schema_id) - self.__unpack_mc(res["card"]) - - def card_from_model(self): - """Copy a model card from a different model (not yet implemented). - - :raises NotImplementedError: Not implemented error - """ - raise NotImplementedError - - def card_from_template(self): - """Create a model card using a template (not yet implemented). - - :raises NotImplementedError: Not implemented error - """ - raise NotImplementedError - - def get_card_latest(self) -> None: - """Get the latest model card from Bailo.""" - res = self.client.get_model(model_id=self.model_id) - if "card" in res["model"]: - self.__unpack_mc(res["model"]["card"]) - else: - raise BailoException(f"A model card doesn't exist for model {self.model_id}") - - def get_card_revision(self, version: str) -> None: - """Get a specific model card revision from Bailo. - - :param version: Model card version - """ - res = self.client.get_model_card(model_id=self.model_id, version=version) - self.__unpack_mc(res["modelCard"]) + self._Entry__update_card(card=model_card) def create_experiment( self, ) -> Experiment: + """Create an experiment locally + + :return: An experiment object + """ return Experiment.create(model=self) def create_release( @@ -254,42 +197,29 @@ def get_image(self): """ raise NotImplementedError - def get_roles(self): - """Get all roles for the model. + @property + def model_card(self): + return self.card - :return: List of roles - """ - res = self.client.get_model_roles(model_id=self.model_id) - - return res["roles"] + @model_card.setter + def model_card(self, value): + self.card = value - def get_user_roles(self): - """Get all user roles for the model. - - :return: List of user roles - """ - res = self.client.get_model_user_roles(model_id=self.model_id) + @property + def model_card_version(self): + return self.card_version - return res["roles"] - - def __unpack(self, res): - self.model_id = res["id"] - self.name = res["name"] - self.description = res["description"] - - if res["visibility"] == "private": - self.visibility = ModelVisibility.PRIVATE - else: - self.visibility = ModelVisibility.PUBLIC + @model_card_version.setter + def model_card_version(self, value): + self.card_version = value - def __unpack_mc(self, res): - self.model_card_version = res["version"] - self.model_card_schema = res["schemaId"] + @property + def model_card_schema(self): + return self.card_schema - try: - self.model_card = res["metadata"] - except KeyError: - self.model_card = None + @model_card_schema.setter + def model_card_schema(self, value): + self.card_schema = value class Experiment: From e525edb509ad7f68a1ac21b290442dcc4ece69cd Mon Sep 17 00:00:00 2001 From: BW27492 <BW27492@euro.ngc.com> Date: Tue, 14 May 2024 15:45:44 +0000 Subject: [PATCH 05/12] New tests for datacard class --- lib/python/tests/conftest.py | 19 ++++++-- lib/python/tests/test_datacard.py | 78 +++++++++++++++++++++++++++++++ lib/python/tests/test_model.py | 15 ++---- 3 files changed, 98 insertions(+), 14 deletions(-) create mode 100644 lib/python/tests/test_datacard.py diff --git a/lib/python/tests/conftest.py b/lib/python/tests/conftest.py index 75bc847a5..95a4e2d18 100644 --- a/lib/python/tests/conftest.py +++ b/lib/python/tests/conftest.py @@ -15,7 +15,8 @@ import mlflow import pytest from bailo.core.client import Client -from bailo.core.enums import EntryKind, ModelVisibility, SchemaKind +from bailo.core.enums import ModelVisibility, SchemaKind +from bailo.helper.datacard import Datacard from bailo.helper.model import Model from bailo.helper.schema import Schema from example_schemas import METRICS_JSON_SCHEMA @@ -31,7 +32,6 @@ def example_model(integration_client, metrics_schema): model = Model.create( client=integration_client, name="Yolo-v4", - kind=EntryKind.MODEL, description="You only look once!", team_id="team_id", visibility=ModelVisibility.PUBLIC, @@ -48,6 +48,20 @@ def example_model(integration_client, metrics_schema): return model +@pytest.fixture +def local_datacard(): + client = Client("https://example.com") + visibility = ModelVisibility.PUBLIC + datacard = Datacard( + client=client, + datacard_id="test-id", + name="test", + description="test", + visibility=visibility, + ) + return datacard + + @pytest.fixture def local_model(): client = Client("https://example.com") @@ -56,7 +70,6 @@ def local_model(): client=client, model_id="test-id", name="test", - kind=EntryKind.MODEL, description="test", visibility=visibility, ) diff --git a/lib/python/tests/test_datacard.py b/lib/python/tests/test_datacard.py new file mode 100644 index 000000000..63557be61 --- /dev/null +++ b/lib/python/tests/test_datacard.py @@ -0,0 +1,78 @@ +from __future__ import annotations + +import pytest +from bailo import Client, Datacard, ModelVisibility +from bailo.core.exceptions import BailoException + + +def test_datacard(local_datacard): + assert isinstance(local_datacard, Datacard) + + +@pytest.mark.integration +@pytest.mark.parametrize( + ("name", "description", "team_id", "visibility"), + [ + ("test-datacard", "test", "Uncategorised", ModelVisibility.PUBLIC), + ("test-datacard", "test", "Uncategorised", None), + ], +) +def test_create_get_from_id_and_update( + name: str, + description: str, + team_id: str, + visibility: ModelVisibility | None, + integration_client: Client, +): + # Create model + datacard = Datacard.create( + client=integration_client, + name=name, + description=description, + team_id=team_id, + visibility=visibility, + ) + datacard.card_from_schema("minimal-data-card-v10") + assert isinstance(datacard, Datacard) + + # Check that a model can be changed + datacard.description = "testing-1234" + datacard.update() + + get_datacard = Datacard.from_id(integration_client, datacard.datacard_id) + + assert get_datacard.description == "testing-1234" + + assert datacard.datacard_id == get_datacard.datacard_id + + +@pytest.mark.integration +def test_get_and_update_latest_data_card(integration_client): + datacard = Datacard.create( + client=integration_client, + name="test-datacard", + description="test", + team_id="Uncategorised", + visibility=ModelVisibility.PUBLIC, + ) + + datacard.card_from_schema("minimal-data-card-v10") + + datacard.get_card_latest() + + assert datacard.data_card_schema == "minimal-data-card-v10" + + +@pytest.mark.integration +def get_data_card_without_creation(integration_client): + datacard = Datacard.create( + client=integration_client, + name="test-datacard", + description="test", + team_id="Uncategorised", + visibility=ModelVisibility.PUBLIC, + ) + datacard.card_from_schema("minimal-data-card-v10") + + with pytest.raises(BailoException): + datacard.get_card_latest() diff --git a/lib/python/tests/test_model.py b/lib/python/tests/test_model.py index 59c5c3c96..d45c4f628 100644 --- a/lib/python/tests/test_model.py +++ b/lib/python/tests/test_model.py @@ -2,7 +2,6 @@ import pytest from bailo import Client, Experiment, Model, ModelVisibility -from bailo.core.enums import EntryKind from bailo.core.exceptions import BailoException from bailo.core.utils import NestedDict @@ -19,17 +18,16 @@ def test_create_experiment_from_model(local_model): @pytest.mark.integration @pytest.mark.parametrize( - ("name", "kind", "description", "team_id", "visibility"), + ("name", "description", "team_id", "visibility"), [ - ("test-model", EntryKind.MODEL, "test", "Uncategorised", ModelVisibility.PUBLIC), - ("test-model", EntryKind.MODEL, "test", "Uncategorised", None), + ("test-model", "test", "Uncategorised", ModelVisibility.PUBLIC), + ("test-model", "test", "Uncategorised", None), ], ) -def test_create_get_from_version_and_update( +def test_create_get_from_id_and_update( name: str, description: str, team_id: str, - kind: EntryKind, visibility: ModelVisibility | None, integration_client: Client, ): @@ -37,7 +35,6 @@ def test_create_get_from_version_and_update( model = Model.create( client=integration_client, name=name, - kind=kind, description=description, team_id=team_id, visibility=visibility, @@ -61,7 +58,6 @@ def test_get_and_update_latest_model_card(integration_client): model = Model.create( client=integration_client, name="test-model", - kind=EntryKind.MODEL, description="test", team_id="Uncategorised", visibility=ModelVisibility.PUBLIC, @@ -79,7 +75,6 @@ def get_model_card_without_creation(integration_client): model = Model.create( client=integration_client, name="test-model", - kind=EntryKind.MODEL, description="test", team_id="Uncategorised", visibility=ModelVisibility.PUBLIC, @@ -95,7 +90,6 @@ def test_get_releases(integration_client): model = Model.create( client=integration_client, name="test-model", - kind=EntryKind.MODEL, description="test", team_id="Uncategorised", visibility=ModelVisibility.PUBLIC, @@ -119,7 +113,6 @@ def test_create_release_without_model_card(integration_client): model = Model.create( client=integration_client, name="test-model", - kind=EntryKind.MODEL, description="test", team_id="Uncategorised", visibility=ModelVisibility.PUBLIC, From f6da1ad3a1a916adf19b5814f7dc55ffb025c41b Mon Sep 17 00:00:00 2001 From: BW27492 <BW27492@euro.ngc.com> Date: Thu, 16 May 2024 13:16:18 +0000 Subject: [PATCH 06/12] Added new demo notebook for datacards --- .../docs/notebooks/datacards_demo.ipynb | 217 ++++++++++++++++++ .../models_and_releases_demo_pytorch.ipynb | 2 +- 2 files changed, 218 insertions(+), 1 deletion(-) create mode 100644 lib/python/docs/notebooks/datacards_demo.ipynb diff --git a/lib/python/docs/notebooks/datacards_demo.ipynb b/lib/python/docs/notebooks/datacards_demo.ipynb new file mode 100644 index 000000000..7fa8bf248 --- /dev/null +++ b/lib/python/docs/notebooks/datacards_demo.ipynb @@ -0,0 +1,217 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Managing Datacards" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Bailo python client enables intuitive interaction with the Bailo service, from within a python environment. This example notebook will run through the following concepts:\n", + "\n", + "* Creating and populating a new datacard on Bailo.\n", + "* Retrieving datacards from the service.\n", + "* Making changes to the datacard.\n", + "\n", + "Prerequisites:\n", + "\n", + "* Python 3.8.1 or higher (including a notebook environment for this demo).\n", + "* A local or remote Bailo service (see https://github.com/gchq/Bailo)." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Bailo python client is split into two sub-packages: **core** and **helper**.\n", + "\n", + "* **Core:** For direct interactions with the service endpoints.\n", + "* **Helper:** For more intuitive interactions with the service, using classes (e.g. Datacard) to handle operations.\n", + "\n", + "In order to create helper classes, you will first need to instantiate a `Client()` object from the core. By default, this object will not support any authentication. However, Bailo also supports PKI authentication, which you can use from Python by passing a `PkiAgent()` object into the `Client()` object when you instantiate it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "! pip install bailo -e ../.." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Necessary import statements\n", + "\n", + "from bailo import Datacard, Client\n", + "\n", + "# Instantiating the PkiAgent(), if using.\n", + "# agent = PkiAgent(cert='', key='', auth='')\n", + "\n", + "# Instantiating the Bailo client\n", + "\n", + "client = Client(\"http://127.0.0.1:8080\") # <- INSERT BAILO URL (if not hosting locally)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating a new datacard in Bailo\n", + "\n", + "### Creating and updating the base datacard\n", + "\n", + "In this section, we'll create a new datacard using the `Datacard.create()` classmethod. On the Bailo service, a datacard must consist of at least 4 parameters upon creation. These are **name**, **description**, **visibility** and **team_id**. Below, we use the `Client()` object created before when instantiating the new `Datacard()` object. \n", + "\n", + "NOTE: This creates the datacard on your Bailo service too! The `datacard_id` is assigned by the backend, and we will use this later to retrieve the datacard. *Like with models on Bailo, the actual datacard has not been populated at this stage.*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "datacard = Datacard.create(client=client, name=\"ImageNet\", description=\"ImageNet dataset consisting of images.\", team_id=\"uncategorised\")\n", + "\n", + "datacard_id = datacard.datacard_id" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You may make changes to these attributes and then call the `update()` method to relay the changes to the service, as below:\n", + "\n", + "```python\n", + "datacard.name = \"New Name\"\n", + "datacard.update()\n", + "```\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Populating the datacard\n", + "\n", + "When creating a datacard, first we need to generate an empty card using the `card_from_schema()` method. In this instance, we will use **minimal-data-card-v10**. You can manage custom schemas using the `Schema()` helper class, but this is out of scope for this demo." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "datacard.card_from_schema(schema_id='minimal-data-card-v10')\n", + "\n", + "print(f\"Datacard version is {datacard.data_card_version}.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If successful, the above will have created a new datacard, and the `data_card_version` attribute should be set to 1.\n", + "\n", + "Next, we can populate the data using the `update_data_card()` method. This can be used any time you want to make changes, and the backend will create a new datacard version each time. We'll learn how to retrieve datacards later (either the latest, or a specific release).\n", + "\n", + "NOTE: Your datacard must match the schema, otherwise an error will be thrown." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "new_card = {\n", + " 'overview': {\n", + " 'storageLocation': 'S3',\n", + " }\n", + "}\n", + "\n", + "datacard.update_data_card(data_card=new_card)\n", + "\n", + "print(f\"Datacard version is {datacard.data_card_version}.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If successful, the `data_card_version` will now be 2!" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Retrieving an existing datacard\n", + "\n", + "### Using the .from_id() method\n", + "\n", + "In this section, we'll retrieve our previous datacard using the `Datacard.from_id()` classmethod. This will create your `Datacard()` object as before, but using existing information retrieved from the service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "datacard = Datacard.from_id(client=client, datacard_id=datacard_id)\n", + "\n", + "print(f\"Datacard description: {datacard.description}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lib/python/docs/notebooks/models_and_releases_demo_pytorch.ipynb b/lib/python/docs/notebooks/models_and_releases_demo_pytorch.ipynb index 17c98d922..8eacdfee8 100644 --- a/lib/python/docs/notebooks/models_and_releases_demo_pytorch.ipynb +++ b/lib/python/docs/notebooks/models_and_releases_demo_pytorch.ipynb @@ -127,7 +127,7 @@ "source": [ "### Creating and populating a model card\n", "\n", - "When creating a model card, first we need to generate an empty one using the `card_from_schema()` method. In this instance, we will use **minimal-general-v10-beta**. You can manage custom schemas using the `Schema()` helper class, but this is out of scope for this demo." + "When creating a model card, first we need to generate an empty one using the `card_from_schema()` method. In this instance, we will use **minimal-general-v10**. You can manage custom schemas using the `Schema()` helper class, but this is out of scope for this demo." ] }, { From e8a900a6bc6e7cb14398c7a9dc1ee509625e35eb Mon Sep 17 00:00:00 2001 From: BW27492 <BW27492@euro.ngc.com> Date: Thu, 16 May 2024 13:17:53 +0000 Subject: [PATCH 07/12] Changed methods accessed by child class from private to protected --- lib/python/src/bailo/helper/datacard.py | 18 +++++++++--------- lib/python/src/bailo/helper/entry.py | 22 +++++++++++----------- lib/python/src/bailo/helper/model.py | 18 +++++++++--------- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/lib/python/src/bailo/helper/datacard.py b/lib/python/src/bailo/helper/datacard.py index 4d59bc6a2..6970d4379 100644 --- a/lib/python/src/bailo/helper/datacard.py +++ b/lib/python/src/bailo/helper/datacard.py @@ -65,7 +65,7 @@ def create( visibility=visibility, ) - datacard._Entry__unpack(res["model"]) + datacard._unpack(res["model"]) return datacard @@ -84,7 +84,7 @@ def from_id(cls, client: Client, datacard_id: str) -> Datacard: name=res["name"], description=res["description"], ) - datacard._Entry__unpack(res) + datacard._unpack(res) datacard.get_card_latest() @@ -97,28 +97,28 @@ def update_data_card(self, data_card: dict[str, Any] | None = None) -> None: ..note:: If a datacard is not provided, the current datacard attribute value is used """ - self._Entry__update_card(card=data_card) + self._update_card(card=data_card) @property def data_card(self): - return self.card + return self._card @data_card.setter def data_card(self, value): - self.card = value + self._card = value @property def data_card_version(self): - return self.card_version + return self._card_version @data_card_version.setter def data_card_version(self, value): - self.card_version = value + self._card_version = value @property def data_card_schema(self): - return self.card_schema + return self._card_schema @data_card_schema.setter def data_card_schema(self, value): - self.card_schema = value + self._card_schema = value diff --git a/lib/python/src/bailo/helper/entry.py b/lib/python/src/bailo/helper/entry.py index 01c0f3258..3f5c4aeb0 100644 --- a/lib/python/src/bailo/helper/entry.py +++ b/lib/python/src/bailo/helper/entry.py @@ -25,9 +25,9 @@ def __init__( self.kind = kind self.visibility = visibility - self.card = None - self.card_version = None - self.card_schema = None + self._card = None + self._card_version = None + self._card_schema = None def update(self) -> None: """Upload and retrieve any changes to the entry summary on Bailo.""" @@ -38,7 +38,7 @@ def update(self) -> None: description=self.description, visibility=self.visibility, ) - self.__unpack(res["model"]) + self._unpack(res["model"]) def card_from_schema(self, schema_id: str) -> None: """Create a card using a schema on Bailo. @@ -89,14 +89,14 @@ def get_user_roles(self): return res["roles"] - def __update_card(self, card: dict[str, Any] | None = None) -> None: + def _update_card(self, card: dict[str, Any] | None = None) -> None: if card is None: - card = self.card + card = self._card res = self.client.put_model_card(model_id=self.id, metadata=card) self.__unpack_card(res["card"]) - def __unpack(self, res): + def _unpack(self, res): self.id = res["id"] self.name = res["name"] self.description = res["description"] @@ -107,10 +107,10 @@ def __unpack(self, res): self.visibility = ModelVisibility.PUBLIC def __unpack_card(self, res): - self.card_version = res["version"] - self.card_schema = res["schemaId"] + self._card_version = res["version"] + self._card_schema = res["schemaId"] try: - self.card = res["metadata"] + self._card = res["metadata"] except KeyError: - self.card = None + self._card = None diff --git a/lib/python/src/bailo/helper/model.py b/lib/python/src/bailo/helper/model.py index 43a315004..d309a069a 100644 --- a/lib/python/src/bailo/helper/model.py +++ b/lib/python/src/bailo/helper/model.py @@ -74,7 +74,7 @@ def create( visibility=visibility, ) - model._Entry__unpack(res["model"]) + model._unpack(res["model"]) return model @@ -94,7 +94,7 @@ def from_id(cls, client: Client, model_id: str) -> Model: description=res["description"], ) - model._Entry__unpack(res) + model._unpack(res) model.get_card_latest() return model @@ -106,7 +106,7 @@ def update_model_card(self, model_card: dict[str, Any] | None = None) -> None: ..note:: If a model card is not provided, the current model card attribute value is used """ - self._Entry__update_card(card=model_card) + self._update_card(card=model_card) def create_experiment( self, @@ -199,27 +199,27 @@ def get_image(self): @property def model_card(self): - return self.card + return self._card @model_card.setter def model_card(self, value): - self.card = value + self._card = value @property def model_card_version(self): - return self.card_version + return self._card_version @model_card_version.setter def model_card_version(self, value): - self.card_version = value + self._card_version = value @property def model_card_schema(self): - return self.card_schema + return self._card_schema @model_card_schema.setter def model_card_schema(self, value): - self.card_schema = value + self._card_schema = value class Experiment: From 963e9841215983ba53e02354ee84ad33b3774268 Mon Sep 17 00:00:00 2001 From: BW27492 <BW27492@euro.ngc.com> Date: Fri, 17 May 2024 14:02:55 +0000 Subject: [PATCH 08/12] Added check to make sure class matches entry kind --- lib/python/src/bailo/helper/datacard.py | 6 ++++++ lib/python/src/bailo/helper/model.py | 3 +++ 2 files changed, 9 insertions(+) diff --git a/lib/python/src/bailo/helper/datacard.py b/lib/python/src/bailo/helper/datacard.py index 6970d4379..ee8a16e37 100644 --- a/lib/python/src/bailo/helper/datacard.py +++ b/lib/python/src/bailo/helper/datacard.py @@ -4,6 +4,7 @@ from bailo.core.client import Client from bailo.core.enums import EntryKind, ModelVisibility +from bailo.core.exceptions import BailoException from bailo.helper.entry import Entry @@ -78,6 +79,11 @@ def from_id(cls, client: Client, datacard_id: str) -> Datacard: :return: A datacard object """ res = client.get_model(model_id=datacard_id)["model"] + if res["kind"] != "data-card": + raise BailoException( + f"ID {datacard_id} does not belong to a datacard. Did you mean to use Model.from_id()?" + ) + datacard = cls( client=client, datacard_id=datacard_id, diff --git a/lib/python/src/bailo/helper/model.py b/lib/python/src/bailo/helper/model.py index d309a069a..f6b4afe17 100644 --- a/lib/python/src/bailo/helper/model.py +++ b/lib/python/src/bailo/helper/model.py @@ -87,6 +87,9 @@ def from_id(cls, client: Client, model_id: str) -> Model: :return: A model object """ res = client.get_model(model_id=model_id)["model"] + if res["kind"] != "model": + raise BailoException(f"ID {model_id} does not belong to a model. Did you mean to use Datacard.from_id()?") + model = cls( client=client, model_id=model_id, From 339cbdd1174e5e692d8cd1b9af8f3b0d01483fd6 Mon Sep 17 00:00:00 2001 From: BW27492 <BW27492@euro.ngc.com> Date: Fri, 17 May 2024 14:03:52 +0000 Subject: [PATCH 09/12] Added tests to test entry kind validation --- lib/python/tests/test_datacard.py | 16 +++++++++++++++- lib/python/tests/test_model.py | 16 +++++++++++++++- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/lib/python/tests/test_datacard.py b/lib/python/tests/test_datacard.py index 63557be61..4505dc60f 100644 --- a/lib/python/tests/test_datacard.py +++ b/lib/python/tests/test_datacard.py @@ -1,7 +1,7 @@ from __future__ import annotations import pytest -from bailo import Client, Datacard, ModelVisibility +from bailo import Client, Datacard, ModelVisibility, Model from bailo.core.exceptions import BailoException @@ -76,3 +76,17 @@ def get_data_card_without_creation(integration_client): with pytest.raises(BailoException): datacard.get_card_latest() + + +@pytest.mark.integration +def test_get_model_as_datacard(integration_client): + model = Model.create( + client=integration_client, + name="test-model", + description="test", + team_id="Uncategorised", + visibility=ModelVisibility.PUBLIC, + ) + + with pytest.raises(BailoException): + datacard = Datacard.from_id(client=integration_client, datacard_id=model.model_id) diff --git a/lib/python/tests/test_model.py b/lib/python/tests/test_model.py index d45c4f628..b0092f7aa 100644 --- a/lib/python/tests/test_model.py +++ b/lib/python/tests/test_model.py @@ -1,7 +1,7 @@ from __future__ import annotations import pytest -from bailo import Client, Experiment, Model, ModelVisibility +from bailo import Client, Experiment, Model, Datacard, ModelVisibility from bailo.core.exceptions import BailoException from bailo.core.utils import NestedDict @@ -122,6 +122,20 @@ def test_create_release_without_model_card(integration_client): model.create_release("1.0.0", "test") +@pytest.mark.integration +def test_get_datacard_as_model(integration_client): + datacard = Datacard.create( + client=integration_client, + name="test-datacard", + description="test", + team_id="Uncategorised", + visibility=ModelVisibility.PUBLIC, + ) + + with pytest.raises(BailoException): + model = Model.from_id(client=integration_client, model_id=datacard.datacard_id) + + @pytest.mark.integration def test_publish_experiment_standard(standard_experiment): run_id = standard_experiment.raw[0]["run"] From a63bc12e118d383102a6db99295ece02b7ef79a9 Mon Sep 17 00:00:00 2001 From: BW27492 <BW27492@euro.ngc.com> Date: Fri, 17 May 2024 15:04:04 +0000 Subject: [PATCH 10/12] Updated python docs for datacards --- .../_modules/bailo/core/agent/index.html | 1 + .../_modules/bailo/core/client/index.html | 11 +- .../_modules/bailo/core/enums/index.html | 11 + .../_modules/bailo/core/exceptions/index.html | 1 + .../bailo/helper/access_request/index.html | 1 + .../_modules/bailo/helper/datacard/index.html | 260 +++++++++++++++ .../_modules/bailo/helper/entry/index.html | 258 +++++++++++++++ .../_modules/bailo/helper/model/index.html | 171 +++------- .../_modules/bailo/helper/release/index.html | 91 +++++- .../_modules/bailo/helper/schema/index.html | 1 + .../_build/dirhtml/_modules/index.html | 3 + .../dirhtml/_sources/bailo.helper.rst.txt | 11 +- .../notebooks/datacards_demo.ipynb.txt | 217 ++++++++++++ ...models_and_releases_demo_pytorch.ipynb.txt | 23 +- .../_build/dirhtml/bailo.core/index.html | 28 +- .../_build/dirhtml/bailo.helper/index.html | 309 +++++++++++++----- .../_build/dirhtml/genindex/index.html | 75 ++++- backend/python-docs/_build/dirhtml/index.html | 5 + .../dirhtml/notebooks/datacards_demo.ipynb | 216 ++++++++++++ .../notebooks/datacards_demo/index.html | 260 +++++++++++++++ .../experiment_tracking_demo/index.html | 5 +- .../models_and_releases_demo_pytorch.ipynb | 23 +- .../index.html | 23 +- .../python-docs/_build/dirhtml/objects.inv | Bin 12462 -> 12883 bytes .../_build/dirhtml/py-modindex/index.html | 11 + .../_build/dirhtml/search/index.html | 1 + .../python-docs/_build/dirhtml/searchindex.js | 2 +- .../html/_modules/bailo/core/agent.html | 1 + .../html/_modules/bailo/core/client.html | 11 +- .../html/_modules/bailo/core/enums.html | 11 + .../html/_modules/bailo/helper/datacard.html | 260 +++++++++++++++ .../html/_modules/bailo/helper/entry.html | 258 +++++++++++++++ .../html/_modules/bailo/helper/model.html | 171 +++------- .../html/_modules/bailo/helper/release.html | 91 +++++- .../_build/html/_modules/index.html | 3 + .../_build/html/_sources/bailo.helper.rst.txt | 11 +- .../notebooks/datacards_demo.ipynb.txt | 217 ++++++++++++ ...models_and_releases_demo_pytorch.ipynb.txt | 23 +- .../python-docs/_build/html/bailo.helper.html | 309 +++++++++++++----- backend/python-docs/_build/html/genindex.html | 75 ++++- backend/python-docs/_build/html/index.html | 5 + .../_build/html/notebooks/datacards_demo.html | 260 +++++++++++++++ .../notebooks/experiment_tracking_demo.html | 5 +- .../models_and_releases_demo_pytorch.html | 23 +- backend/python-docs/_build/html/objects.inv | Bin 12522 -> 12944 bytes .../python-docs/_build/html/py-modindex.html | 11 + backend/python-docs/_build/html/search.html | 1 + .../python-docs/_build/html/searchindex.js | 2 +- lib/python/docs/bailo.helper.rst | 11 +- 49 files changed, 3215 insertions(+), 562 deletions(-) create mode 100644 backend/python-docs/_build/dirhtml/_modules/bailo/helper/datacard/index.html create mode 100644 backend/python-docs/_build/dirhtml/_modules/bailo/helper/entry/index.html create mode 100644 backend/python-docs/_build/dirhtml/_sources/notebooks/datacards_demo.ipynb.txt create mode 100644 backend/python-docs/_build/dirhtml/notebooks/datacards_demo.ipynb create mode 100644 backend/python-docs/_build/dirhtml/notebooks/datacards_demo/index.html create mode 100644 backend/python-docs/_build/html/_modules/bailo/helper/datacard.html create mode 100644 backend/python-docs/_build/html/_modules/bailo/helper/entry.html create mode 100644 backend/python-docs/_build/html/_sources/notebooks/datacards_demo.ipynb.txt create mode 100644 backend/python-docs/_build/html/notebooks/datacards_demo.html diff --git a/backend/python-docs/_build/dirhtml/_modules/bailo/core/agent/index.html b/backend/python-docs/_build/dirhtml/_modules/bailo/core/agent/index.html index 520903e42..5af901ecb 100644 --- a/backend/python-docs/_build/dirhtml/_modules/bailo/core/agent/index.html +++ b/backend/python-docs/_build/dirhtml/_modules/bailo/core/agent/index.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/schemas_demo/">Managing Schemas</a></li> diff --git a/backend/python-docs/_build/dirhtml/_modules/bailo/core/client/index.html b/backend/python-docs/_build/dirhtml/_modules/bailo/core/client/index.html index 1ff8376f5..b49482dcc 100644 --- a/backend/python-docs/_build/dirhtml/_modules/bailo/core/client/index.html +++ b/backend/python-docs/_build/dirhtml/_modules/bailo/core/client/index.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/schemas_demo/">Managing Schemas</a></li> @@ -87,12 +88,11 @@ <h1>Source code for bailo.core.client</h1><div class="highlight"><pre> <span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span> -<span class="kn">import</span> <span class="nn">shutil</span> <span class="kn">from</span> <span class="nn">io</span> <span class="kn">import</span> <span class="n">BytesIO</span> <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span> <span class="kn">from</span> <span class="nn">bailo.core.agent</span> <span class="kn">import</span> <span class="n">Agent</span><span class="p">,</span> <span class="n">TokenAgent</span> -<span class="kn">from</span> <span class="nn">bailo.core.enums</span> <span class="kn">import</span> <span class="n">ModelVisibility</span><span class="p">,</span> <span class="n">SchemaKind</span> +<span class="kn">from</span> <span class="nn">bailo.core.enums</span> <span class="kn">import</span> <span class="n">EntryKind</span><span class="p">,</span> <span class="n">ModelVisibility</span><span class="p">,</span> <span class="n">SchemaKind</span> <span class="kn">from</span> <span class="nn">bailo.core.utils</span> <span class="kn">import</span> <span class="n">filter_none</span> @@ -114,6 +114,7 @@ <h1>Source code for bailo.core.client</h1><div class="highlight"><pre> <span class="k">def</span> <span class="nf">post_model</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">kind</span><span class="p">:</span> <span class="n">EntryKind</span><span class="p">,</span> <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">team_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">visibility</span><span class="p">:</span> <span class="n">ModelVisibility</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> @@ -121,6 +122,7 @@ <h1>Source code for bailo.core.client</h1><div class="highlight"><pre> <span class="w"> </span><span class="sd">"""Create a model.</span> <span class="sd"> :param name: Name of the model</span> +<span class="sd"> :param kind: Either a Model or a Datacard</span> <span class="sd"> :param description: Description of the model</span> <span class="sd"> :param visibility: Enum to define model visibility (e.g public or private)</span> <span class="sd"> :return: JSON response object</span> @@ -131,6 +133,7 @@ <h1>Source code for bailo.core.client</h1><div class="highlight"><pre> <span class="n">filtered_json</span> <span class="o">=</span> <span class="n">filter_none</span><span class="p">(</span> <span class="p">{</span> <span class="s2">"name"</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span> + <span class="s2">"kind"</span><span class="p">:</span> <span class="n">kind</span><span class="p">,</span> <span class="s2">"description"</span><span class="p">:</span> <span class="n">description</span><span class="p">,</span> <span class="s2">"visibility"</span><span class="p">:</span> <span class="n">visibility</span><span class="p">,</span> <span class="s2">"teamId"</span><span class="p">:</span> <span class="n">team_id</span><span class="p">,</span> @@ -199,6 +202,7 @@ <h1>Source code for bailo.core.client</h1><div class="highlight"><pre> <span class="bp">self</span><span class="p">,</span> <span class="n">model_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">kind</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">description</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">visibility</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">):</span> @@ -206,11 +210,12 @@ <h1>Source code for bailo.core.client</h1><div class="highlight"><pre> <span class="sd"> :param model_id: Unique model ID</span> <span class="sd"> :param name: Name of the model, defaults to None</span> +<span class="sd"> :param kind: Either a Model or a Datacard</span> <span class="sd"> :param description: Description of the model, defaults to None</span> <span class="sd"> :param visibility: Enum to define model visibility (e.g. public or private), defaults to None</span> <span class="sd"> :return: JSON response object</span> <span class="sd"> """</span> - <span class="n">filtered_json</span> <span class="o">=</span> <span class="n">filter_none</span><span class="p">({</span><span class="s2">"name"</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span> <span class="s2">"description"</span><span class="p">:</span> <span class="n">description</span><span class="p">,</span> <span class="s2">"visibility"</span><span class="p">:</span> <span class="n">visibility</span><span class="p">})</span> + <span class="n">filtered_json</span> <span class="o">=</span> <span class="n">filter_none</span><span class="p">({</span><span class="s2">"name"</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="n">kind</span><span class="p">,</span> <span class="s2">"description"</span><span class="p">:</span> <span class="n">description</span><span class="p">,</span> <span class="s2">"visibility"</span><span class="p">:</span> <span class="n">visibility</span><span class="p">})</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">agent</span><span class="o">.</span><span class="n">patch</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="si">}</span><span class="s2">/v2/model/</span><span class="si">{</span><span class="n">model_id</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">json</span><span class="o">=</span><span class="n">filtered_json</span><span class="p">)</span><span class="o">.</span><span class="n">json</span><span class="p">()</span></div> diff --git a/backend/python-docs/_build/dirhtml/_modules/bailo/core/enums/index.html b/backend/python-docs/_build/dirhtml/_modules/bailo/core/enums/index.html index d719b034c..1c83f7828 100644 --- a/backend/python-docs/_build/dirhtml/_modules/bailo/core/enums/index.html +++ b/backend/python-docs/_build/dirhtml/_modules/bailo/core/enums/index.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/schemas_demo/">Managing Schemas</a></li> @@ -124,6 +125,16 @@ <h1>Source code for bailo.core.enums</h1><div class="highlight"><pre> <span class="n">MODEL_TECHNICAL_REVIEWER</span> <span class="o">=</span> <span class="s2">"mtr"</span> <span class="n">MODEL_SENIOR_RESPONSIBLE_OFFICER</span> <span class="o">=</span> <span class="s2">"msro"</span></div> + + +<div class="viewcode-block" id="EntryKind"> +<a class="viewcode-back" href="../../../../bailo.core/#bailo.core.enums.EntryKind">[docs]</a> +<span class="k">class</span> <span class="nc">EntryKind</span><span class="p">(</span><span class="n">ValuedEnum</span><span class="p">):</span> +<span class="w"> </span><span class="sd">"""The type of model."""</span> + + <span class="n">MODEL</span> <span class="o">=</span> <span class="s2">"model"</span> + <span class="n">DATACARD</span> <span class="o">=</span> <span class="s2">"data-card"</span></div> + </pre></div> </div> diff --git a/backend/python-docs/_build/dirhtml/_modules/bailo/core/exceptions/index.html b/backend/python-docs/_build/dirhtml/_modules/bailo/core/exceptions/index.html index 8a9db114f..03520ebb3 100644 --- a/backend/python-docs/_build/dirhtml/_modules/bailo/core/exceptions/index.html +++ b/backend/python-docs/_build/dirhtml/_modules/bailo/core/exceptions/index.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/schemas_demo/">Managing Schemas</a></li> diff --git a/backend/python-docs/_build/dirhtml/_modules/bailo/helper/access_request/index.html b/backend/python-docs/_build/dirhtml/_modules/bailo/helper/access_request/index.html index 640751b20..741f0db91 100644 --- a/backend/python-docs/_build/dirhtml/_modules/bailo/helper/access_request/index.html +++ b/backend/python-docs/_build/dirhtml/_modules/bailo/helper/access_request/index.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/schemas_demo/">Managing Schemas</a></li> diff --git a/backend/python-docs/_build/dirhtml/_modules/bailo/helper/datacard/index.html b/backend/python-docs/_build/dirhtml/_modules/bailo/helper/datacard/index.html new file mode 100644 index 000000000..4e32154bf --- /dev/null +++ b/backend/python-docs/_build/dirhtml/_modules/bailo/helper/datacard/index.html @@ -0,0 +1,260 @@ +<!DOCTYPE html> +<html class="writer-html5" lang="en" data-content_root="../../../../"> +<head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>bailo.helper.datacard — Bailo Python Client Docs 0.1.0 documentation</title> + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/css/theme.css?v=19f00094" /> + + + <link rel="shortcut icon" href="../../../../_static/favicon.png"/> + <!--[if lt IE 9]> + <script src="../../../../_static/js/html5shiv.min.js"></script> + <![endif]--> + + <script src="../../../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../../../_static/documentation_options.js?v=b2731ba4"></script> + <script src="../../../../_static/doctools.js?v=888ff710"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script> + <script src="../../../../_static/js/theme.js"></script> + <link rel="index" title="Index" href="../../../../genindex/" /> + <link rel="search" title="Search" href="../../../../search/" /> +</head> + +<body class="wy-body-for-nav"> + <div class="wy-grid-for-nav"> + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../../../../" class="icon icon-home"> + Bailo Python Client Docs + <img src="../../../../_static/vertical-white.png" class="logo" alt="Logo"/> + </a> +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../../../../search/" method="get"> + <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> + <ul> +<li class="toctree-l1"><a class="reference internal" href="../../../../readme_link/">Bailo Python Client</a></li> +</ul> +<p class="caption" role="heading"><span class="caption-text">Packages:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../../../../bailo.core/">bailo.core package</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../bailo.helper/">bailo.helper package</a></li> +</ul> +<p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/datacards_demo/">Managing Datacards</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/schemas_demo/">Managing Schemas</a></li> +</ul> + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../../../../">Bailo Python Client Docs</a> + </nav> + + <div class="wy-nav-content"> + <div class="rst-content"> + <div role="navigation" aria-label="Page navigation"> + <ul class="wy-breadcrumbs"> + <li><a href="../../../../" class="icon icon-home" aria-label="Home"></a></li> + <li class="breadcrumb-item"><a href="../../../">Module code</a></li> + <li class="breadcrumb-item active">bailo.helper.datacard</li> + <li class="wy-breadcrumbs-aside"> + </li> + </ul> + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <h1>Source code for bailo.helper.datacard</h1><div class="highlight"><pre> +<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span> + +<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span> + +<span class="kn">from</span> <span class="nn">bailo.core.client</span> <span class="kn">import</span> <span class="n">Client</span> +<span class="kn">from</span> <span class="nn">bailo.core.enums</span> <span class="kn">import</span> <span class="n">EntryKind</span><span class="p">,</span> <span class="n">ModelVisibility</span> +<span class="kn">from</span> <span class="nn">bailo.core.exceptions</span> <span class="kn">import</span> <span class="n">BailoException</span> +<span class="kn">from</span> <span class="nn">bailo.helper.entry</span> <span class="kn">import</span> <span class="n">Entry</span> + + +<div class="viewcode-block" id="Datacard"> +<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.datacard.Datacard">[docs]</a> +<span class="k">class</span> <span class="nc">Datacard</span><span class="p">(</span><span class="n">Entry</span><span class="p">):</span> +<span class="w"> </span><span class="sd">"""Represent a datacard within Bailo.</span> + +<span class="sd"> :param client: A client object used to interact with Bailo</span> +<span class="sd"> :param datacard_id: A unique ID for the datacard</span> +<span class="sd"> :param name: Name of datacard</span> +<span class="sd"> :param description: Description of datacard</span> +<span class="sd"> :param visibility: Visibility of datacard, using ModelVisibility enum (e.g Public or Private), defaults to None</span> +<span class="sd"> """</span> + + <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">client</span><span class="p">:</span> <span class="n">Client</span><span class="p">,</span> + <span class="n">datacard_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">visibility</span><span class="p">:</span> <span class="n">ModelVisibility</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span> + <span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> + <span class="nb">id</span><span class="o">=</span><span class="n">datacard_id</span><span class="p">,</span> + <span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> + <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">,</span> + <span class="n">kind</span><span class="o">=</span><span class="n">EntryKind</span><span class="o">.</span><span class="n">DATACARD</span><span class="p">,</span> + <span class="n">visibility</span><span class="o">=</span><span class="n">visibility</span><span class="p">,</span> + <span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">datacard_id</span> <span class="o">=</span> <span class="n">datacard_id</span> + +<div class="viewcode-block" id="Datacard.create"> +<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.datacard.Datacard.create">[docs]</a> + <span class="nd">@classmethod</span> + <span class="k">def</span> <span class="nf">create</span><span class="p">(</span> + <span class="bp">cls</span><span class="p">,</span> + <span class="n">client</span><span class="p">:</span> <span class="n">Client</span><span class="p">,</span> + <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">team_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">visibility</span><span class="p">:</span> <span class="n">ModelVisibility</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-></span> <span class="n">Datacard</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Build a datacard from Bailo and upload it.</span> + +<span class="sd"> :param client: A client object used to interact with Bailo</span> +<span class="sd"> :param name: Name of datacard</span> +<span class="sd"> :param description: Description of datacard</span> +<span class="sd"> :param team_id: A unique team ID</span> +<span class="sd"> :param visibility: Visibility of datacard, using ModelVisibility enum (e.g Public or Private), defaults to None</span> +<span class="sd"> :return: Datacard object</span> +<span class="sd"> """</span> + <span class="n">res</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">post_model</span><span class="p">(</span> + <span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">EntryKind</span><span class="o">.</span><span class="n">DATACARD</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">,</span> <span class="n">team_id</span><span class="o">=</span><span class="n">team_id</span><span class="p">,</span> <span class="n">visibility</span><span class="o">=</span><span class="n">visibility</span> + <span class="p">)</span> + <span class="n">datacard</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">(</span> + <span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> + <span class="n">datacard_id</span><span class="o">=</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">][</span><span class="s2">"id"</span><span class="p">],</span> + <span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> + <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">,</span> + <span class="n">visibility</span><span class="o">=</span><span class="n">visibility</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">datacard</span><span class="o">.</span><span class="n">_unpack</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">])</span> + + <span class="k">return</span> <span class="n">datacard</span></div> + + +<div class="viewcode-block" id="Datacard.from_id"> +<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.datacard.Datacard.from_id">[docs]</a> + <span class="nd">@classmethod</span> + <span class="k">def</span> <span class="nf">from_id</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">client</span><span class="p">:</span> <span class="n">Client</span><span class="p">,</span> <span class="n">datacard_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Datacard</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Return an existing datacard from Bailo.</span> + +<span class="sd"> :param client: A client object used to interact with Bailo</span> +<span class="sd"> :param datacard_id: A unique datacard ID</span> +<span class="sd"> :return: A datacard object</span> +<span class="sd"> """</span> + <span class="n">res</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="n">datacard_id</span><span class="p">)[</span><span class="s2">"model"</span><span class="p">]</span> + <span class="k">if</span> <span class="n">res</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">"data-card"</span><span class="p">:</span> + <span class="k">raise</span> <span class="n">BailoException</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">"ID </span><span class="si">{</span><span class="n">datacard_id</span><span class="si">}</span><span class="s2"> does not belong to a datacard. Did you mean to use Model.from_id()?"</span> + <span class="p">)</span> + + <span class="n">datacard</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">(</span> + <span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> + <span class="n">datacard_id</span><span class="o">=</span><span class="n">datacard_id</span><span class="p">,</span> + <span class="n">name</span><span class="o">=</span><span class="n">res</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> + <span class="n">description</span><span class="o">=</span><span class="n">res</span><span class="p">[</span><span class="s2">"description"</span><span class="p">],</span> + <span class="p">)</span> + <span class="n">datacard</span><span class="o">.</span><span class="n">_unpack</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> + + <span class="n">datacard</span><span class="o">.</span><span class="n">get_card_latest</span><span class="p">()</span> + + <span class="k">return</span> <span class="n">datacard</span></div> + + +<div class="viewcode-block" id="Datacard.update_data_card"> +<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.datacard.Datacard.update_data_card">[docs]</a> + <span class="k">def</span> <span class="nf">update_data_card</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_card</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Upload and retrieve any changes to the datacard on Bailo.</span> + +<span class="sd"> :param data_card: Datacard dictionary, defaults to None</span> + +<span class="sd"> ..note:: If a datacard is not provided, the current datacard attribute value is used</span> +<span class="sd"> """</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_update_card</span><span class="p">(</span><span class="n">card</span><span class="o">=</span><span class="n">data_card</span><span class="p">)</span></div> + + + <span class="nd">@property</span> + <span class="k">def</span> <span class="nf">data_card</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> + + <span class="nd">@data_card</span><span class="o">.</span><span class="n">setter</span> + <span class="k">def</span> <span class="nf">data_card</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> <span class="o">=</span> <span class="n">value</span> + + <span class="nd">@property</span> + <span class="k">def</span> <span class="nf">data_card_version</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_card_version</span> + + <span class="nd">@data_card_version</span><span class="o">.</span><span class="n">setter</span> + <span class="k">def</span> <span class="nf">data_card_version</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_version</span> <span class="o">=</span> <span class="n">value</span> + + <span class="nd">@property</span> + <span class="k">def</span> <span class="nf">data_card_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_card_schema</span> + + <span class="nd">@data_card_schema</span><span class="o">.</span><span class="n">setter</span> + <span class="k">def</span> <span class="nf">data_card_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_schema</span> <span class="o">=</span> <span class="n">value</span></div> + +</pre></div> + + </div> + </div> + <footer> + + <hr/> + + <div role="contentinfo"> + <p>© Copyright 2024, GCHQ.</p> + </div> + + Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a + <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> + provided by <a href="https://readthedocs.org">Read the Docs</a>. + + +</footer> + </div> + </div> + </section> + </div> + <script> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/backend/python-docs/_build/dirhtml/_modules/bailo/helper/entry/index.html b/backend/python-docs/_build/dirhtml/_modules/bailo/helper/entry/index.html new file mode 100644 index 000000000..d59730b00 --- /dev/null +++ b/backend/python-docs/_build/dirhtml/_modules/bailo/helper/entry/index.html @@ -0,0 +1,258 @@ +<!DOCTYPE html> +<html class="writer-html5" lang="en" data-content_root="../../../../"> +<head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>bailo.helper.entry — Bailo Python Client Docs 0.1.0 documentation</title> + <link rel="stylesheet" type="text/css" href="../../../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../../../_static/css/theme.css?v=19f00094" /> + + + <link rel="shortcut icon" href="../../../../_static/favicon.png"/> + <!--[if lt IE 9]> + <script src="../../../../_static/js/html5shiv.min.js"></script> + <![endif]--> + + <script src="../../../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../../../_static/documentation_options.js?v=b2731ba4"></script> + <script src="../../../../_static/doctools.js?v=888ff710"></script> + <script src="../../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script> + <script src="../../../../_static/js/theme.js"></script> + <link rel="index" title="Index" href="../../../../genindex/" /> + <link rel="search" title="Search" href="../../../../search/" /> +</head> + +<body class="wy-body-for-nav"> + <div class="wy-grid-for-nav"> + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../../../../" class="icon icon-home"> + Bailo Python Client Docs + <img src="../../../../_static/vertical-white.png" class="logo" alt="Logo"/> + </a> +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../../../../search/" method="get"> + <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> + <ul> +<li class="toctree-l1"><a class="reference internal" href="../../../../readme_link/">Bailo Python Client</a></li> +</ul> +<p class="caption" role="heading"><span class="caption-text">Packages:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../../../../bailo.core/">bailo.core package</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../bailo.helper/">bailo.helper package</a></li> +</ul> +<p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/datacards_demo/">Managing Datacards</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/schemas_demo/">Managing Schemas</a></li> +</ul> + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../../../../">Bailo Python Client Docs</a> + </nav> + + <div class="wy-nav-content"> + <div class="rst-content"> + <div role="navigation" aria-label="Page navigation"> + <ul class="wy-breadcrumbs"> + <li><a href="../../../../" class="icon icon-home" aria-label="Home"></a></li> + <li class="breadcrumb-item"><a href="../../../">Module code</a></li> + <li class="breadcrumb-item active">bailo.helper.entry</li> + <li class="wy-breadcrumbs-aside"> + </li> + </ul> + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <h1>Source code for bailo.helper.entry</h1><div class="highlight"><pre> +<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span> + +<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span> + +<span class="kn">from</span> <span class="nn">bailo.core.client</span> <span class="kn">import</span> <span class="n">Client</span> +<span class="kn">from</span> <span class="nn">bailo.core.enums</span> <span class="kn">import</span> <span class="n">EntryKind</span><span class="p">,</span> <span class="n">ModelVisibility</span> +<span class="kn">from</span> <span class="nn">bailo.core.exceptions</span> <span class="kn">import</span> <span class="n">BailoException</span> + + +<div class="viewcode-block" id="Entry"> +<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.entry.Entry">[docs]</a> +<span class="k">class</span> <span class="nc">Entry</span><span class="p">:</span> + <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">client</span><span class="p">:</span> <span class="n">Client</span><span class="p">,</span> + <span class="nb">id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">kind</span><span class="p">:</span> <span class="n">EntryKind</span><span class="p">,</span> + <span class="n">visibility</span><span class="p">:</span> <span class="n">ModelVisibility</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">client</span> <span class="o">=</span> <span class="n">client</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="nb">id</span> + <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span> + <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">description</span> + <span class="bp">self</span><span class="o">.</span><span class="n">kind</span> <span class="o">=</span> <span class="n">kind</span> + <span class="bp">self</span><span class="o">.</span><span class="n">visibility</span> <span class="o">=</span> <span class="n">visibility</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_version</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_schema</span> <span class="o">=</span> <span class="kc">None</span> + +<div class="viewcode-block" id="Entry.update"> +<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.entry.Entry.update">[docs]</a> + <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Upload and retrieve any changes to the entry summary on Bailo."""</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">patch_model</span><span class="p">(</span> + <span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> + <span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> + <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">kind</span><span class="p">,</span> + <span class="n">description</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">description</span><span class="p">,</span> + <span class="n">visibility</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">visibility</span><span class="p">,</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_unpack</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">])</span></div> + + +<div class="viewcode-block" id="Entry.card_from_schema"> +<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.entry.Entry.card_from_schema">[docs]</a> + <span class="k">def</span> <span class="nf">card_from_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Create a card using a schema on Bailo.</span> + +<span class="sd"> :param schema_id: A unique schema ID</span> +<span class="sd"> """</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">model_card_from_schema</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="n">schema_id</span><span class="o">=</span><span class="n">schema_id</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_card</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"card"</span><span class="p">])</span></div> + + +<div class="viewcode-block" id="Entry.card_from_template"> +<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.entry.Entry.card_from_template">[docs]</a> + <span class="k">def</span> <span class="nf">card_from_template</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">"""Create a card using a template (not yet implemented).</span> + +<span class="sd"> :raises NotImplementedError: Not implemented error</span> +<span class="sd"> """</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span></div> + + +<div class="viewcode-block" id="Entry.get_card_latest"> +<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.entry.Entry.get_card_latest">[docs]</a> + <span class="k">def</span> <span class="nf">get_card_latest</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Get the latest card from Bailo."""</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> + <span class="k">if</span> <span class="s2">"card"</span> <span class="ow">in</span> <span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">]:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_card</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">][</span><span class="s2">"card"</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="n">BailoException</span><span class="p">(</span><span class="sa">f</span><span class="s2">"A model card doesn't exist for model </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="Entry.get_card_revision"> +<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.entry.Entry.get_card_revision">[docs]</a> + <span class="k">def</span> <span class="nf">get_card_revision</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Get a specific entry card revision from Bailo.</span> + +<span class="sd"> :param version: Entry card version</span> +<span class="sd"> """</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model_card</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="n">version</span><span class="o">=</span><span class="n">version</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_card</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"modelCard"</span><span class="p">])</span></div> + + +<div class="viewcode-block" id="Entry.get_roles"> +<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.entry.Entry.get_roles">[docs]</a> + <span class="k">def</span> <span class="nf">get_roles</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">"""Get all roles for the entry.</span> + +<span class="sd"> :return: List of roles</span> +<span class="sd"> """</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model_roles</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">res</span><span class="p">[</span><span class="s2">"roles"</span><span class="p">]</span></div> + + +<div class="viewcode-block" id="Entry.get_user_roles"> +<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.entry.Entry.get_user_roles">[docs]</a> + <span class="k">def</span> <span class="nf">get_user_roles</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">"""Get all user roles for the entry.</span> + +<span class="sd"> :return: List of user roles</span> +<span class="sd"> """</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model_user_roles</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">res</span><span class="p">[</span><span class="s2">"roles"</span><span class="p">]</span></div> + + + <span class="k">def</span> <span class="nf">_update_card</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">card</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="n">card</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">card</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> + + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">put_model_card</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="n">card</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_card</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"card"</span><span class="p">])</span> + + <span class="k">def</span> <span class="nf">_unpack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">res</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"id"</span><span class="p">]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"description"</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">res</span><span class="p">[</span><span class="s2">"visibility"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"private"</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">visibility</span> <span class="o">=</span> <span class="n">ModelVisibility</span><span class="o">.</span><span class="n">PRIVATE</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">visibility</span> <span class="o">=</span> <span class="n">ModelVisibility</span><span class="o">.</span><span class="n">PUBLIC</span> + + <span class="k">def</span> <span class="nf">__unpack_card</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">res</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_version</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"version"</span><span class="p">]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_schema</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"schemaId"</span><span class="p">]</span> + + <span class="k">try</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"metadata"</span><span class="p">]</span> + <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> <span class="o">=</span> <span class="kc">None</span></div> + +</pre></div> + + </div> + </div> + <footer> + + <hr/> + + <div role="contentinfo"> + <p>© Copyright 2024, GCHQ.</p> + </div> + + Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a + <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> + provided by <a href="https://readthedocs.org">Read the Docs</a>. + + +</footer> + </div> + </div> + </section> + </div> + <script> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/backend/python-docs/_build/dirhtml/_modules/bailo/helper/model/index.html b/backend/python-docs/_build/dirhtml/_modules/bailo/helper/model/index.html index 1e1f29f74..6d3d8945b 100644 --- a/backend/python-docs/_build/dirhtml/_modules/bailo/helper/model/index.html +++ b/backend/python-docs/_build/dirhtml/_modules/bailo/helper/model/index.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/schemas_demo/">Managing Schemas</a></li> @@ -87,17 +88,17 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span> +<span class="kn">import</span> <span class="nn">os</span> +<span class="kn">import</span> <span class="nn">shutil</span> +<span class="kn">import</span> <span class="nn">tempfile</span> <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span> <span class="kn">from</span> <span class="nn">bailo.core.client</span> <span class="kn">import</span> <span class="n">Client</span> -<span class="kn">from</span> <span class="nn">bailo.core.enums</span> <span class="kn">import</span> <span class="n">ModelVisibility</span> -<span class="kn">from</span> <span class="nn">bailo.helper.release</span> <span class="kn">import</span> <span class="n">Release</span> +<span class="kn">from</span> <span class="nn">bailo.core.enums</span> <span class="kn">import</span> <span class="n">EntryKind</span><span class="p">,</span> <span class="n">ModelVisibility</span> <span class="kn">from</span> <span class="nn">bailo.core.exceptions</span> <span class="kn">import</span> <span class="n">BailoException</span> <span class="kn">from</span> <span class="nn">bailo.core.utils</span> <span class="kn">import</span> <span class="n">NestedDict</span> - -<span class="kn">import</span> <span class="nn">os</span> -<span class="kn">import</span> <span class="nn">shutil</span> -<span class="kn">import</span> <span class="nn">tempfile</span> +<span class="kn">from</span> <span class="nn">bailo.helper.entry</span> <span class="kn">import</span> <span class="n">Entry</span> +<span class="kn">from</span> <span class="nn">bailo.helper.release</span> <span class="kn">import</span> <span class="n">Release</span> <span class="kn">from</span> <span class="nn">semantic_version</span> <span class="kn">import</span> <span class="n">Version</span> <span class="k">try</span><span class="p">:</span> @@ -110,7 +111,7 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <div class="viewcode-block" id="Model"> <a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.model.Model">[docs]</a> -<span class="k">class</span> <span class="nc">Model</span><span class="p">:</span> +<span class="k">class</span> <span class="nc">Model</span><span class="p">(</span><span class="n">Entry</span><span class="p">):</span> <span class="w"> </span><span class="sd">"""Represent a model within Bailo.</span> <span class="sd"> :param client: A client object used to interact with Bailo</span> @@ -128,16 +129,11 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">visibility</span><span class="p">:</span> <span class="n">ModelVisibility</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">client</span> <span class="o">=</span> <span class="n">client</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span> + <span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">model_id</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">EntryKind</span><span class="o">.</span><span class="n">MODEL</span><span class="p">,</span> <span class="n">visibility</span><span class="o">=</span><span class="n">visibility</span> + <span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_id</span> <span class="o">=</span> <span class="n">model_id</span> - <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span> - <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">description</span> - <span class="bp">self</span><span class="o">.</span><span class="n">visibility</span> <span class="o">=</span> <span class="n">visibility</span> - - <span class="bp">self</span><span class="o">.</span><span class="n">model_card</span> <span class="o">=</span> <span class="kc">None</span> - <span class="bp">self</span><span class="o">.</span><span class="n">model_card_version</span> <span class="o">=</span> <span class="kc">None</span> - <span class="bp">self</span><span class="o">.</span><span class="n">model_card_schema</span> <span class="o">=</span> <span class="kc">None</span> <div class="viewcode-block" id="Model.create"> <a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.model.Model.create">[docs]</a> @@ -150,7 +146,7 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span class="n">team_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">visibility</span><span class="p">:</span> <span class="n">ModelVisibility</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n">Model</span><span class="p">:</span> -<span class="w"> </span><span class="sd">"""Build a model from Bailo and uploads it.</span> +<span class="w"> </span><span class="sd">"""Build a model from Bailo and upload it.</span> <span class="sd"> :param client: A client object used to interact with Bailo</span> <span class="sd"> :param name: Name of model</span> @@ -159,7 +155,9 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span class="sd"> :param visibility: Visibility of model, using ModelVisibility enum (e.g Public or Private), defaults to None</span> <span class="sd"> :return: Model object</span> <span class="sd"> """</span> - <span class="n">res</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">post_model</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">,</span> <span class="n">team_id</span><span class="o">=</span><span class="n">team_id</span><span class="p">,</span> <span class="n">visibility</span><span class="o">=</span><span class="n">visibility</span><span class="p">)</span> + <span class="n">res</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">post_model</span><span class="p">(</span> + <span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">EntryKind</span><span class="o">.</span><span class="n">MODEL</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">,</span> <span class="n">team_id</span><span class="o">=</span><span class="n">team_id</span><span class="p">,</span> <span class="n">visibility</span><span class="o">=</span><span class="n">visibility</span> + <span class="p">)</span> <span class="n">model</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">(</span> <span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> <span class="n">model_id</span><span class="o">=</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">][</span><span class="s2">"id"</span><span class="p">],</span> @@ -168,7 +166,7 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span class="n">visibility</span><span class="o">=</span><span class="n">visibility</span><span class="p">,</span> <span class="p">)</span> - <span class="n">model</span><span class="o">.</span><span class="n">__unpack</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">])</span> + <span class="n">model</span><span class="o">.</span><span class="n">_unpack</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">])</span> <span class="k">return</span> <span class="n">model</span></div> @@ -184,98 +182,32 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span class="sd"> :return: A model object</span> <span class="sd"> """</span> <span class="n">res</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="n">model_id</span><span class="p">)[</span><span class="s2">"model"</span><span class="p">]</span> + <span class="k">if</span> <span class="n">res</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">"model"</span><span class="p">:</span> + <span class="k">raise</span> <span class="n">BailoException</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ID </span><span class="si">{</span><span class="n">model_id</span><span class="si">}</span><span class="s2"> does not belong to a model. Did you mean to use Datacard.from_id()?"</span><span class="p">)</span> + <span class="n">model</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">(</span> <span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> <span class="n">model_id</span><span class="o">=</span><span class="n">model_id</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">res</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">description</span><span class="o">=</span><span class="n">res</span><span class="p">[</span><span class="s2">"description"</span><span class="p">],</span> <span class="p">)</span> - <span class="n">model</span><span class="o">.</span><span class="n">__unpack</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> + <span class="n">model</span><span class="o">.</span><span class="n">_unpack</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> <span class="n">model</span><span class="o">.</span><span class="n">get_card_latest</span><span class="p">()</span> <span class="k">return</span> <span class="n">model</span></div> -<div class="viewcode-block" id="Model.update"> -<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.model.Model.update">[docs]</a> - <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -<span class="w"> </span><span class="sd">"""Upload and retrieves any changes to the model summary on Bailo."""</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">patch_model</span><span class="p">(</span> - <span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> - <span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> - <span class="n">description</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">description</span><span class="p">,</span> - <span class="n">visibility</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">visibility</span><span class="p">,</span> - <span class="p">)</span> - <span class="bp">self</span><span class="o">.</span><span class="n">__unpack</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">])</span></div> - - <div class="viewcode-block" id="Model.update_model_card"> <a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.model.Model.update_model_card">[docs]</a> <span class="k">def</span> <span class="nf">update_model_card</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model_card</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -<span class="w"> </span><span class="sd">"""Upload and retrieves any changes to the model card on Bailo.</span> +<span class="w"> </span><span class="sd">"""Upload and retrieve any changes to the model card on Bailo.</span> <span class="sd"> :param model_card: Model card dictionary, defaults to None</span> <span class="sd"> ..note:: If a model card is not provided, the current model card attribute value is used</span> <span class="sd"> """</span> - <span class="k">if</span> <span class="n">model_card</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">model_card</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_card</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">put_model_card</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="n">model_card</span><span class="p">)</span> - <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_mc</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"card"</span><span class="p">])</span></div> - - -<div class="viewcode-block" id="Model.card_from_schema"> -<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.model.Model.card_from_schema">[docs]</a> - <span class="k">def</span> <span class="nf">card_from_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -<span class="w"> </span><span class="sd">"""Create a model card using a schema on Bailo.</span> - -<span class="sd"> :param schema_id: A unique schema ID</span> -<span class="sd"> """</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">model_card_from_schema</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> <span class="n">schema_id</span><span class="o">=</span><span class="n">schema_id</span><span class="p">)</span> - <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_mc</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"card"</span><span class="p">])</span></div> - - -<div class="viewcode-block" id="Model.card_from_model"> -<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.model.Model.card_from_model">[docs]</a> - <span class="k">def</span> <span class="nf">card_from_model</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -<span class="w"> </span><span class="sd">"""Copy a model card from a different model (not yet implemented).</span> - -<span class="sd"> :raises NotImplementedError: Not implemented error</span> -<span class="sd"> """</span> - <span class="k">raise</span> <span class="ne">NotImplementedError</span></div> - - -<div class="viewcode-block" id="Model.card_from_template"> -<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.model.Model.card_from_template">[docs]</a> - <span class="k">def</span> <span class="nf">card_from_template</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -<span class="w"> </span><span class="sd">"""Create a model card using a template (not yet implemented).</span> - -<span class="sd"> :raises NotImplementedError: Not implemented error</span> -<span class="sd"> """</span> - <span class="k">raise</span> <span class="ne">NotImplementedError</span></div> - - -<div class="viewcode-block" id="Model.get_card_latest"> -<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.model.Model.get_card_latest">[docs]</a> - <span class="k">def</span> <span class="nf">get_card_latest</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -<span class="w"> </span><span class="sd">"""Get the latest model card from Bailo."""</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">)</span> - <span class="k">if</span> <span class="s2">"card"</span> <span class="ow">in</span> <span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">]:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_mc</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">][</span><span class="s2">"card"</span><span class="p">])</span> - <span class="k">else</span><span class="p">:</span> - <span class="k">raise</span> <span class="n">BailoException</span><span class="p">(</span><span class="sa">f</span><span class="s2">"A model card doesn't exist for model </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div> - - -<div class="viewcode-block" id="Model.get_card_revision"> -<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.model.Model.get_card_revision">[docs]</a> - <span class="k">def</span> <span class="nf">get_card_revision</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -<span class="w"> </span><span class="sd">"""Get a specific model card revision from Bailo.</span> - -<span class="sd"> :param version: Model card version</span> -<span class="sd"> """</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model_card</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> <span class="n">version</span><span class="o">=</span><span class="n">version</span><span class="p">)</span> - <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_mc</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"modelCard"</span><span class="p">])</span></div> + <span class="bp">self</span><span class="o">.</span><span class="n">_update_card</span><span class="p">(</span><span class="n">card</span><span class="o">=</span><span class="n">model_card</span><span class="p">)</span></div> <div class="viewcode-block" id="Model.create_experiment"> @@ -283,6 +215,10 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span class="k">def</span> <span class="nf">create_experiment</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n">Experiment</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Create an experiment locally</span> + +<span class="sd"> :return: An experiment object</span> +<span class="sd"> """</span> <span class="k">return</span> <span class="n">Experiment</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">model</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span></div> @@ -384,48 +320,29 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span class="k">raise</span> <span class="ne">NotImplementedError</span></div> -<div class="viewcode-block" id="Model.get_roles"> -<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.model.Model.get_roles">[docs]</a> - <span class="k">def</span> <span class="nf">get_roles</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -<span class="w"> </span><span class="sd">"""Get all roles for the model.</span> - -<span class="sd"> :return: List of roles</span> -<span class="sd"> """</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model_roles</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">)</span> - - <span class="k">return</span> <span class="n">res</span><span class="p">[</span><span class="s2">"roles"</span><span class="p">]</span></div> - - -<div class="viewcode-block" id="Model.get_user_roles"> -<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.model.Model.get_user_roles">[docs]</a> - <span class="k">def</span> <span class="nf">get_user_roles</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -<span class="w"> </span><span class="sd">"""Get all user roles for the model.</span> - -<span class="sd"> :return: List of user roles</span> -<span class="sd"> """</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model_user_roles</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">)</span> - - <span class="k">return</span> <span class="n">res</span><span class="p">[</span><span class="s2">"roles"</span><span class="p">]</span></div> + <span class="nd">@property</span> + <span class="k">def</span> <span class="nf">model_card</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> + <span class="nd">@model_card</span><span class="o">.</span><span class="n">setter</span> + <span class="k">def</span> <span class="nf">model_card</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> <span class="o">=</span> <span class="n">value</span> - <span class="k">def</span> <span class="nf">__unpack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">res</span><span class="p">):</span> - <span class="bp">self</span><span class="o">.</span><span class="n">model_id</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"id"</span><span class="p">]</span> - <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> - <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"description"</span><span class="p">]</span> + <span class="nd">@property</span> + <span class="k">def</span> <span class="nf">model_card_version</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_card_version</span> - <span class="k">if</span> <span class="n">res</span><span class="p">[</span><span class="s2">"visibility"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"private"</span><span class="p">:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">visibility</span> <span class="o">=</span> <span class="n">ModelVisibility</span><span class="o">.</span><span class="n">PRIVATE</span> - <span class="k">else</span><span class="p">:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">visibility</span> <span class="o">=</span> <span class="n">ModelVisibility</span><span class="o">.</span><span class="n">PUBLIC</span> + <span class="nd">@model_card_version</span><span class="o">.</span><span class="n">setter</span> + <span class="k">def</span> <span class="nf">model_card_version</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_version</span> <span class="o">=</span> <span class="n">value</span> - <span class="k">def</span> <span class="nf">__unpack_mc</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">res</span><span class="p">):</span> - <span class="bp">self</span><span class="o">.</span><span class="n">model_card_version</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"version"</span><span class="p">]</span> - <span class="bp">self</span><span class="o">.</span><span class="n">model_card_schema</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"schemaId"</span><span class="p">]</span> + <span class="nd">@property</span> + <span class="k">def</span> <span class="nf">model_card_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_card_schema</span> - <span class="k">try</span><span class="p">:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">model_card</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"metadata"</span><span class="p">]</span> - <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">model_card</span> <span class="o">=</span> <span class="kc">None</span></div> + <span class="nd">@model_card_schema</span><span class="o">.</span><span class="n">setter</span> + <span class="k">def</span> <span class="nf">model_card_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_schema</span> <span class="o">=</span> <span class="n">value</span></div> diff --git a/backend/python-docs/_build/dirhtml/_modules/bailo/helper/release/index.html b/backend/python-docs/_build/dirhtml/_modules/bailo/helper/release/index.html index 2f3eba2ad..541c9345a 100644 --- a/backend/python-docs/_build/dirhtml/_modules/bailo/helper/release/index.html +++ b/backend/python-docs/_build/dirhtml/_modules/bailo/helper/release/index.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/schemas_demo/">Managing Schemas</a></li> @@ -88,13 +89,20 @@ <h1>Source code for bailo.helper.release</h1><div class="highlight"><pre> <span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span> <span class="kn">import</span> <span class="nn">os</span> +<span class="kn">import</span> <span class="nn">fnmatch</span> <span class="kn">import</span> <span class="nn">shutil</span> <span class="kn">from</span> <span class="nn">io</span> <span class="kn">import</span> <span class="n">BytesIO</span> -<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span> +<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">Union</span> +<span class="kn">from</span> <span class="nn">tqdm</span> <span class="kn">import</span> <span class="n">tqdm</span> +<span class="kn">from</span> <span class="nn">tqdm.utils</span> <span class="kn">import</span> <span class="n">CallbackIOWrapper</span> <span class="kn">from</span> <span class="nn">bailo.core.client</span> <span class="kn">import</span> <span class="n">Client</span> +<span class="kn">from</span> <span class="nn">bailo.core.exceptions</span> <span class="kn">import</span> <span class="n">BailoException</span> +<span class="kn">from</span> <span class="nn">bailo.core.utils</span> <span class="kn">import</span> <span class="n">NO_COLOR</span> <span class="kn">from</span> <span class="nn">semantic_version</span> <span class="kn">import</span> <span class="n">Version</span> +<span class="n">BLOCK_SIZE</span> <span class="o">=</span> <span class="mi">1024</span> + <div class="viewcode-block" id="Release"> <a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.release.Release">[docs]</a> @@ -235,7 +243,7 @@ <h1>Source code for bailo.helper.release</h1><div class="highlight"><pre> <div class="viewcode-block" id="Release.download"> <a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.release.Release.download">[docs]</a> <span class="k">def</span> <span class="nf">download</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">write</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span> -<span class="w"> </span><span class="sd">"""Give returns a Reading object given the file id.</span> +<span class="w"> </span><span class="sd">"""Returns a response object given the file name and optionally writes file to disk.</span> <span class="sd"> :param filename: The name of the file to retrieve</span> <span class="sd"> :param write: Bool to determine if writing file to disk, defaults to True</span> @@ -248,12 +256,64 @@ <h1>Source code for bailo.helper.release</h1><div class="highlight"><pre> <span class="k">if</span> <span class="n">write</span><span class="p">:</span> <span class="k">if</span> <span class="n">path</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> <span class="n">path</span> <span class="o">=</span> <span class="n">filename</span> - <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s2">"wb"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> - <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">content</span><span class="p">)</span> + <span class="n">total_size</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">headers</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"content-length"</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> + + <span class="k">if</span> <span class="n">NO_COLOR</span><span class="p">:</span> + <span class="n">colour</span> <span class="o">=</span> <span class="s2">"white"</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">colour</span> <span class="o">=</span> <span class="s2">"green"</span> + + <span class="k">with</span> <span class="n">tqdm</span><span class="p">(</span> + <span class="n">total</span><span class="o">=</span><span class="n">total_size</span><span class="p">,</span> + <span class="n">unit</span><span class="o">=</span><span class="s2">"B"</span><span class="p">,</span> + <span class="n">unit_scale</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">unit_divisor</span><span class="o">=</span><span class="n">BLOCK_SIZE</span><span class="p">,</span> + <span class="n">postfix</span><span class="o">=</span><span class="sa">f</span><span class="s2">"downloading </span><span class="si">{</span><span class="n">filename</span><span class="si">}</span><span class="s2"> as </span><span class="si">{</span><span class="n">path</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> + <span class="n">colour</span><span class="o">=</span><span class="n">colour</span><span class="p">,</span> + <span class="p">)</span> <span class="k">as</span> <span class="n">t</span><span class="p">:</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s2">"wb"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="k">for</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">res</span><span class="o">.</span><span class="n">iter_content</span><span class="p">(</span><span class="n">BLOCK_SIZE</span><span class="p">):</span> + <span class="n">t</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">))</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="k">return</span> <span class="n">res</span></div> +<div class="viewcode-block" id="Release.download_all"> +<a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.release.Release.download_all">[docs]</a> + <span class="k">def</span> <span class="nf">download_all</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">(),</span> <span class="n">include</span><span class="p">:</span> <span class="nb">list</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">exclude</span><span class="p">:</span> <span class="nb">list</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sd">"""Writes all files to disk given a local directory.</span> + +<span class="sd"> :param include: List or string of fnmatch statements for file names to include, defaults to None</span> +<span class="sd"> :param exclude: List or string of fnmatch statements for file names to exclude, defaults to None</span> +<span class="sd"> :param path: Local directory to write files to</span> +<span class="sd"> :raises BailoException: If the release has no files assigned to it</span> +<span class="sd"> ..note:: Fnmatch statements support Unix shell-style wildcards.</span> +<span class="sd"> """</span> + <span class="n">files_metadata</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_release</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">version</span><span class="p">))[</span><span class="s2">"release"</span><span class="p">][</span><span class="s2">"files"</span><span class="p">]</span> + <span class="k">if</span> <span class="n">files_metadata</span> <span class="o">==</span> <span class="p">[]:</span> + <span class="k">raise</span> <span class="n">BailoException</span><span class="p">(</span><span class="s2">"Release has no associated files."</span><span class="p">)</span> + <span class="n">file_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">file_metadata</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> <span class="k">for</span> <span class="n">file_metadata</span> <span class="ow">in</span> <span class="n">files_metadata</span><span class="p">]</span> + + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">include</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> + <span class="n">include</span> <span class="o">=</span> <span class="p">[</span><span class="n">include</span><span class="p">]</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">exclude</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> + <span class="n">exclude</span> <span class="o">=</span> <span class="p">[</span><span class="n">exclude</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">include</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">file_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">file</span> <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">file_names</span> <span class="k">if</span> <span class="nb">any</span><span class="p">([</span><span class="n">fnmatch</span><span class="o">.</span><span class="n">fnmatch</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="n">pattern</span><span class="p">)</span> <span class="k">for</span> <span class="n">pattern</span> <span class="ow">in</span> <span class="n">include</span><span class="p">])]</span> + + <span class="k">if</span> <span class="n">exclude</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">file_names</span> <span class="o">=</span> <span class="p">[</span> + <span class="n">file</span> <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">file_names</span> <span class="k">if</span> <span class="ow">not</span> <span class="nb">any</span><span class="p">([</span><span class="n">fnmatch</span><span class="o">.</span><span class="n">fnmatch</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="n">pattern</span><span class="p">)</span> <span class="k">for</span> <span class="n">pattern</span> <span class="ow">in</span> <span class="n">exclude</span><span class="p">])</span> + <span class="p">]</span> + + <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">file_names</span><span class="p">:</span> + <span class="n">file_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">file</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">download</span><span class="p">(</span><span class="n">filename</span><span class="o">=</span><span class="n">file</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">file_path</span><span class="p">)</span></div> + + <div class="viewcode-block" id="Release.upload"> <a class="viewcode-back" href="../../../../bailo.helper/#bailo.helper.release.Release.upload">[docs]</a> <span class="k">def</span> <span class="nf">upload</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">data</span><span class="p">:</span> <span class="n">BytesIO</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> @@ -265,7 +325,7 @@ <h1>Source code for bailo.helper.release</h1><div class="highlight"><pre> <span class="sd"> :return: The unique file ID of the file uploaded</span> <span class="sd"> ..note:: If path provided is a directory, it will be uploaded as a zip</span> <span class="sd"> """</span> - <span class="n">name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">path</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> + <span class="n">name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">path</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> <span class="k">if</span> <span class="n">is_zip</span> <span class="o">:=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">path</span><span class="p">):</span> @@ -273,16 +333,31 @@ <h1>Source code for bailo.helper.release</h1><div class="highlight"><pre> <span class="n">path</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">.zip"</span> <span class="n">name</span> <span class="o">=</span> <span class="n">path</span> - <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s2">"rb"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">simple_upload</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">f</span><span class="p">)</span><span class="o">.</span><span class="n">json</span><span class="p">()</span> + <span class="n">data</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s2">"rb"</span><span class="p">)</span> <span class="k">if</span> <span class="n">is_zip</span><span class="p">:</span> <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> + + <span class="n">old_file_position</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span> + <span class="n">data</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">SEEK_END</span><span class="p">)</span> + <span class="n">size</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span> + <span class="n">data</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="n">old_file_position</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">SEEK_SET</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">NO_COLOR</span><span class="p">:</span> + <span class="n">colour</span> <span class="o">=</span> <span class="s2">"white"</span> <span class="k">else</span><span class="p">:</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">simple_upload</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">json</span><span class="p">()</span> + <span class="n">colour</span> <span class="o">=</span> <span class="s2">"blue"</span> + + <span class="k">with</span> <span class="n">tqdm</span><span class="p">(</span> + <span class="n">total</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="s2">"B"</span><span class="p">,</span> <span class="n">unit_scale</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">unit_divisor</span><span class="o">=</span><span class="n">BLOCK_SIZE</span><span class="p">,</span> <span class="n">postfix</span><span class="o">=</span><span class="sa">f</span><span class="s2">"uploading </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">colour</span><span class="o">=</span><span class="n">colour</span> + <span class="p">)</span> <span class="k">as</span> <span class="n">t</span><span class="p">:</span> + <span class="n">wrapped_buffer</span> <span class="o">=</span> <span class="n">CallbackIOWrapper</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">update</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="s2">"read"</span><span class="p">)</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">simple_upload</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">wrapped_buffer</span><span class="p">)</span><span class="o">.</span><span class="n">json</span><span class="p">()</span> <span class="bp">self</span><span class="o">.</span><span class="n">files</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"file"</span><span class="p">][</span><span class="s2">"id"</span><span class="p">])</span> <span class="bp">self</span><span class="o">.</span><span class="n">update</span><span class="p">()</span> + <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">BytesIO</span><span class="p">):</span> + <span class="n">data</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> <span class="k">return</span> <span class="n">res</span><span class="p">[</span><span class="s2">"file"</span><span class="p">][</span><span class="s2">"id"</span><span class="p">]</span></div> diff --git a/backend/python-docs/_build/dirhtml/_modules/bailo/helper/schema/index.html b/backend/python-docs/_build/dirhtml/_modules/bailo/helper/schema/index.html index c75e5b9d3..1aaa1c2d5 100644 --- a/backend/python-docs/_build/dirhtml/_modules/bailo/helper/schema/index.html +++ b/backend/python-docs/_build/dirhtml/_modules/bailo/helper/schema/index.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/schemas_demo/">Managing Schemas</a></li> diff --git a/backend/python-docs/_build/dirhtml/_modules/index.html b/backend/python-docs/_build/dirhtml/_modules/index.html index 2d40ec8bf..10cc2940c 100644 --- a/backend/python-docs/_build/dirhtml/_modules/index.html +++ b/backend/python-docs/_build/dirhtml/_modules/index.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/schemas_demo/">Managing Schemas</a></li> @@ -89,6 +90,8 @@ <h1>All modules for which code is available</h1> <li><a href="bailo/core/enums/">bailo.core.enums</a></li> <li><a href="bailo/core/exceptions/">bailo.core.exceptions</a></li> <li><a href="bailo/helper/access_request/">bailo.helper.access_request</a></li> +<li><a href="bailo/helper/datacard/">bailo.helper.datacard</a></li> +<li><a href="bailo/helper/entry/">bailo.helper.entry</a></li> <li><a href="bailo/helper/model/">bailo.helper.model</a></li> <li><a href="bailo/helper/release/">bailo.helper.release</a></li> <li><a href="bailo/helper/schema/">bailo.helper.schema</a></li> diff --git a/backend/python-docs/_build/dirhtml/_sources/bailo.helper.rst.txt b/backend/python-docs/_build/dirhtml/_sources/bailo.helper.rst.txt index 8103996a7..a06dc4ab6 100644 --- a/backend/python-docs/_build/dirhtml/_sources/bailo.helper.rst.txt +++ b/backend/python-docs/_build/dirhtml/_sources/bailo.helper.rst.txt @@ -7,11 +7,20 @@ bailo.helper package :undoc-members: :show-inheritance: -.. automodule:: bailo.helper.model +.. automodule:: bailo.helper.datacard + :members: + :undoc-members: + :show-inheritance: + +.. automodule:: bailo.helper.entry :members: :undoc-members: :show-inheritance: +.. automodule:: bailo.helper.model + :members: + :undoc-members: + :show-inheritance: .. automodule:: bailo.helper.release :members: diff --git a/backend/python-docs/_build/dirhtml/_sources/notebooks/datacards_demo.ipynb.txt b/backend/python-docs/_build/dirhtml/_sources/notebooks/datacards_demo.ipynb.txt new file mode 100644 index 000000000..7fa8bf248 --- /dev/null +++ b/backend/python-docs/_build/dirhtml/_sources/notebooks/datacards_demo.ipynb.txt @@ -0,0 +1,217 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Managing Datacards" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Bailo python client enables intuitive interaction with the Bailo service, from within a python environment. This example notebook will run through the following concepts:\n", + "\n", + "* Creating and populating a new datacard on Bailo.\n", + "* Retrieving datacards from the service.\n", + "* Making changes to the datacard.\n", + "\n", + "Prerequisites:\n", + "\n", + "* Python 3.8.1 or higher (including a notebook environment for this demo).\n", + "* A local or remote Bailo service (see https://github.com/gchq/Bailo)." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Bailo python client is split into two sub-packages: **core** and **helper**.\n", + "\n", + "* **Core:** For direct interactions with the service endpoints.\n", + "* **Helper:** For more intuitive interactions with the service, using classes (e.g. Datacard) to handle operations.\n", + "\n", + "In order to create helper classes, you will first need to instantiate a `Client()` object from the core. By default, this object will not support any authentication. However, Bailo also supports PKI authentication, which you can use from Python by passing a `PkiAgent()` object into the `Client()` object when you instantiate it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "! pip install bailo -e ../.." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Necessary import statements\n", + "\n", + "from bailo import Datacard, Client\n", + "\n", + "# Instantiating the PkiAgent(), if using.\n", + "# agent = PkiAgent(cert='', key='', auth='')\n", + "\n", + "# Instantiating the Bailo client\n", + "\n", + "client = Client(\"http://127.0.0.1:8080\") # <- INSERT BAILO URL (if not hosting locally)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating a new datacard in Bailo\n", + "\n", + "### Creating and updating the base datacard\n", + "\n", + "In this section, we'll create a new datacard using the `Datacard.create()` classmethod. On the Bailo service, a datacard must consist of at least 4 parameters upon creation. These are **name**, **description**, **visibility** and **team_id**. Below, we use the `Client()` object created before when instantiating the new `Datacard()` object. \n", + "\n", + "NOTE: This creates the datacard on your Bailo service too! The `datacard_id` is assigned by the backend, and we will use this later to retrieve the datacard. *Like with models on Bailo, the actual datacard has not been populated at this stage.*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "datacard = Datacard.create(client=client, name=\"ImageNet\", description=\"ImageNet dataset consisting of images.\", team_id=\"uncategorised\")\n", + "\n", + "datacard_id = datacard.datacard_id" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You may make changes to these attributes and then call the `update()` method to relay the changes to the service, as below:\n", + "\n", + "```python\n", + "datacard.name = \"New Name\"\n", + "datacard.update()\n", + "```\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Populating the datacard\n", + "\n", + "When creating a datacard, first we need to generate an empty card using the `card_from_schema()` method. In this instance, we will use **minimal-data-card-v10**. You can manage custom schemas using the `Schema()` helper class, but this is out of scope for this demo." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "datacard.card_from_schema(schema_id='minimal-data-card-v10')\n", + "\n", + "print(f\"Datacard version is {datacard.data_card_version}.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If successful, the above will have created a new datacard, and the `data_card_version` attribute should be set to 1.\n", + "\n", + "Next, we can populate the data using the `update_data_card()` method. This can be used any time you want to make changes, and the backend will create a new datacard version each time. We'll learn how to retrieve datacards later (either the latest, or a specific release).\n", + "\n", + "NOTE: Your datacard must match the schema, otherwise an error will be thrown." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "new_card = {\n", + " 'overview': {\n", + " 'storageLocation': 'S3',\n", + " }\n", + "}\n", + "\n", + "datacard.update_data_card(data_card=new_card)\n", + "\n", + "print(f\"Datacard version is {datacard.data_card_version}.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If successful, the `data_card_version` will now be 2!" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Retrieving an existing datacard\n", + "\n", + "### Using the .from_id() method\n", + "\n", + "In this section, we'll retrieve our previous datacard using the `Datacard.from_id()` classmethod. This will create your `Datacard()` object as before, but using existing information retrieved from the service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "datacard = Datacard.from_id(client=client, datacard_id=datacard_id)\n", + "\n", + "print(f\"Datacard description: {datacard.description}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/backend/python-docs/_build/dirhtml/_sources/notebooks/models_and_releases_demo_pytorch.ipynb.txt b/backend/python-docs/_build/dirhtml/_sources/notebooks/models_and_releases_demo_pytorch.ipynb.txt index 22faba3b3..8eacdfee8 100644 --- a/backend/python-docs/_build/dirhtml/_sources/notebooks/models_and_releases_demo_pytorch.ipynb.txt +++ b/backend/python-docs/_build/dirhtml/_sources/notebooks/models_and_releases_demo_pytorch.ipynb.txt @@ -56,8 +56,7 @@ "outputs": [], "source": [ "# LINUX - CPU\n", - "#! pip install bailo torch torchvision --index-url https://download.pytorch.org/whl/cpu\n", - "! pip install bailo\n", + "! pip install bailo torch torchvision --index-url https://download.pytorch.org/whl/cpu\n", "\n", "# MAC & WINDOWS - CPU\n", "#! pip install bailo torch torchvision" @@ -128,7 +127,7 @@ "source": [ "### Creating and populating a model card\n", "\n", - "When creating a model card, first we need to generate an empty one using the `card_from_schema()` method. In this instance, we will use **minimal-general-v10-beta**. You can manage custom schemas using the `Schema()` helper class, but this is out of scope for this demo." + "When creating a model card, first we need to generate an empty one using the `card_from_schema()` method. In this instance, we will use **minimal-general-v10**. You can manage custom schemas using the `Schema()` helper class, but this is out of scope for this demo." ] }, { @@ -272,12 +271,7 @@ "metadata": {}, "outputs": [], "source": [ - "#release_one.upload(path=\"resnet50_weights.pth\")\n", - "\n", - "release_one.upload(path=\"large_file.txt\")\n", - "\n", - "#with open(\"resnet50_weights.pth\", \"rb\") as f:\n", - " #release_one.upload(\"resnet50_weights.pth\", f)" + "release_one.upload(path=\"resnet50_weights.pth\")" ] }, { @@ -311,7 +305,9 @@ "source": [ "### Downloading weights from the release\n", "\n", - "Similarly you can also download files from release using a response object. In this case, we'll write them to a new file: **bailo_resnet50_weights.pth**." + "Similarly you can also download specific files from release using the `download()` method. In this case, we'll write them to a new file: **bailo_resnet50_weights.pth**. **NOTE**: `filename` refers to the filename on Bailo, and `path` is the local destination for your download.\n", + "\n", + "In addition to this, you can also use the `download_all()` method by providing a local directory path as `path`. By default, this will download all files, but you can provide `include` and `exclude` lists, e.g. `include=[\"*.txt\", \"*.json\"]` to only include TXT or JSON files. " ] }, { @@ -320,11 +316,8 @@ "metadata": {}, "outputs": [], "source": [ - "#res = release_latest.download(\"resnet50_weights.pth\")\n", - "res = release_latest.download(filename=\"resnet50_weights.pth\", path=\"bailo_resnet50_weights.pth\")\n", - "\n", - "#with open(\"bailo_resnet50_weights.pth\", \"wb\") as f:\n", - " #f.write(res.content)" + "#release_latest.download(filename=\"resnet50_weights.pth\", path=\"bailo_resnet50_weights.pth\")\n", + "release_latest.download_all(path=\"downloads\")" ] }, { diff --git a/backend/python-docs/_build/dirhtml/bailo.core/index.html b/backend/python-docs/_build/dirhtml/bailo.core/index.html index a5af7f019..5de248b56 100644 --- a/backend/python-docs/_build/dirhtml/bailo.core/index.html +++ b/backend/python-docs/_build/dirhtml/bailo.core/index.html @@ -118,6 +118,11 @@ <li class="toctree-l3"><a class="reference internal" href="#bailo.core.client.Client.simple_upload"><code class="docutils literal notranslate"><span class="pre">Client.simple_upload()</span></code></a></li> </ul> </li> +<li class="toctree-l2"><a class="reference internal" href="#bailo.core.enums.EntryKind"><code class="docutils literal notranslate"><span class="pre">EntryKind</span></code></a><ul> +<li class="toctree-l3"><a class="reference internal" href="#bailo.core.enums.EntryKind.DATACARD"><code class="docutils literal notranslate"><span class="pre">EntryKind.DATACARD</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.core.enums.EntryKind.MODEL"><code class="docutils literal notranslate"><span class="pre">EntryKind.MODEL</span></code></a></li> +</ul> +</li> <li class="toctree-l2"><a class="reference internal" href="#bailo.core.enums.ModelVisibility"><code class="docutils literal notranslate"><span class="pre">ModelVisibility</span></code></a><ul> <li class="toctree-l3"><a class="reference internal" href="#bailo.core.enums.ModelVisibility.PRIVATE"><code class="docutils literal notranslate"><span class="pre">ModelVisibility.PRIVATE</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.core.enums.ModelVisibility.PUBLIC"><code class="docutils literal notranslate"><span class="pre">ModelVisibility.PUBLIC</span></code></a></li> @@ -143,6 +148,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/schemas_demo/">Managing Schemas</a></li> @@ -695,13 +701,14 @@ <h1>bailo.core package<a class="headerlink" href="#bailo-core-package" title="Li <dl class="py method"> <dt class="sig sig-object py" id="bailo.core.client.Client.patch_model"> -<span class="sig-name descname"><span class="pre">patch_model</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">visibility</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/core/client/#Client.patch_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.core.client.Client.patch_model" title="Link to this definition"></a></dt> +<span class="sig-name descname"><span class="pre">patch_model</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">kind</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">visibility</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/core/client/#Client.patch_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.core.client.Client.patch_model" title="Link to this definition"></a></dt> <dd><p>Update a specific model using its unique ID.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> <li><p><strong>model_id</strong> – Unique model ID</p></li> <li><p><strong>name</strong> – Name of the model, defaults to None</p></li> +<li><p><strong>kind</strong> – Either a Model or a Datacard</p></li> <li><p><strong>description</strong> – Description of the model, defaults to None</p></li> <li><p><strong>visibility</strong> – Enum to define model visibility (e.g. public or private), defaults to None</p></li> </ul> @@ -750,12 +757,13 @@ <h1>bailo.core package<a class="headerlink" href="#bailo-core-package" title="Li <dl class="py method"> <dt class="sig sig-object py" id="bailo.core.client.Client.post_model"> -<span class="sig-name descname"><span class="pre">post_model</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">team_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">visibility</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#bailo.core.enums.ModelVisibility" title="bailo.core.enums.ModelVisibility"><span class="pre">ModelVisibility</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/core/client/#Client.post_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.core.client.Client.post_model" title="Link to this definition"></a></dt> +<span class="sig-name descname"><span class="pre">post_model</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">kind</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#bailo.core.enums.EntryKind" title="bailo.core.enums.EntryKind"><span class="pre">EntryKind</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">team_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">visibility</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#bailo.core.enums.ModelVisibility" title="bailo.core.enums.ModelVisibility"><span class="pre">ModelVisibility</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/core/client/#Client.post_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.core.client.Client.post_model" title="Link to this definition"></a></dt> <dd><p>Create a model.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> <li><p><strong>name</strong> – Name of the model</p></li> +<li><p><strong>kind</strong> – Either a Model or a Datacard</p></li> <li><p><strong>description</strong> – Description of the model</p></li> <li><p><strong>visibility</strong> – Enum to define model visibility (e.g public or private)</p></li> </ul> @@ -904,6 +912,22 @@ <h1>bailo.core package<a class="headerlink" href="#bailo-core-package" title="Li </dd></dl> <dl class="py class" id="module-bailo.core.enums"> +<dt class="sig sig-object py" id="bailo.core.enums.EntryKind"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">bailo.core.enums.</span></span><span class="sig-name descname"><span class="pre">EntryKind</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/core/enums/#EntryKind"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.core.enums.EntryKind" title="Link to this definition"></a></dt> +<dd><p>The type of model.</p> +<dl class="py attribute"> +<dt class="sig sig-object py" id="bailo.core.enums.EntryKind.DATACARD"> +<span class="sig-name descname"><span class="pre">DATACARD</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'data-card'</span></em><a class="headerlink" href="#bailo.core.enums.EntryKind.DATACARD" title="Link to this definition"></a></dt> +<dd></dd></dl> + +<dl class="py attribute"> +<dt class="sig sig-object py" id="bailo.core.enums.EntryKind.MODEL"> +<span class="sig-name descname"><span class="pre">MODEL</span></span><em class="property"><span class="w"> </span><span class="p"><span class="pre">=</span></span><span class="w"> </span><span class="pre">'model'</span></em><a class="headerlink" href="#bailo.core.enums.EntryKind.MODEL" title="Link to this definition"></a></dt> +<dd></dd></dl> + +</dd></dl> + +<dl class="py class"> <dt class="sig sig-object py" id="bailo.core.enums.ModelVisibility"> <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">bailo.core.enums.</span></span><span class="sig-name descname"><span class="pre">ModelVisibility</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">value</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/core/enums/#ModelVisibility"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.core.enums.ModelVisibility" title="Link to this definition"></a></dt> <dd><p>Whether a model is publicly visible or not.</p> diff --git a/backend/python-docs/_build/dirhtml/bailo.helper/index.html b/backend/python-docs/_build/dirhtml/bailo.helper/index.html index 1a4e76e06..47b6fdd39 100644 --- a/backend/python-docs/_build/dirhtml/bailo.helper/index.html +++ b/backend/python-docs/_build/dirhtml/bailo.helper/index.html @@ -61,6 +61,25 @@ <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.access_request.AccessRequest.update"><code class="docutils literal notranslate"><span class="pre">AccessRequest.update()</span></code></a></li> </ul> </li> +<li class="toctree-l2"><a class="reference internal" href="#bailo.helper.datacard.Datacard"><code class="docutils literal notranslate"><span class="pre">Datacard</span></code></a><ul> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.datacard.Datacard.create"><code class="docutils literal notranslate"><span class="pre">Datacard.create()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.datacard.Datacard.data_card"><code class="docutils literal notranslate"><span class="pre">Datacard.data_card</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.datacard.Datacard.data_card_schema"><code class="docutils literal notranslate"><span class="pre">Datacard.data_card_schema</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.datacard.Datacard.data_card_version"><code class="docutils literal notranslate"><span class="pre">Datacard.data_card_version</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.datacard.Datacard.from_id"><code class="docutils literal notranslate"><span class="pre">Datacard.from_id()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.datacard.Datacard.update_data_card"><code class="docutils literal notranslate"><span class="pre">Datacard.update_data_card()</span></code></a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#bailo.helper.entry.Entry"><code class="docutils literal notranslate"><span class="pre">Entry</span></code></a><ul> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.entry.Entry.card_from_schema"><code class="docutils literal notranslate"><span class="pre">Entry.card_from_schema()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.entry.Entry.card_from_template"><code class="docutils literal notranslate"><span class="pre">Entry.card_from_template()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.entry.Entry.get_card_latest"><code class="docutils literal notranslate"><span class="pre">Entry.get_card_latest()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.entry.Entry.get_card_revision"><code class="docutils literal notranslate"><span class="pre">Entry.get_card_revision()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.entry.Entry.get_roles"><code class="docutils literal notranslate"><span class="pre">Entry.get_roles()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.entry.Entry.get_user_roles"><code class="docutils literal notranslate"><span class="pre">Entry.get_user_roles()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.entry.Entry.update"><code class="docutils literal notranslate"><span class="pre">Entry.update()</span></code></a></li> +</ul> +</li> <li class="toctree-l2"><a class="reference internal" href="#bailo.helper.model.Experiment"><code class="docutils literal notranslate"><span class="pre">Experiment</span></code></a><ul> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Experiment.create"><code class="docutils literal notranslate"><span class="pre">Experiment.create()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Experiment.from_mlflow"><code class="docutils literal notranslate"><span class="pre">Experiment.from_mlflow()</span></code></a></li> @@ -73,23 +92,18 @@ </ul> </li> <li class="toctree-l2"><a class="reference internal" href="#bailo.helper.model.Model"><code class="docutils literal notranslate"><span class="pre">Model</span></code></a><ul> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.card_from_model"><code class="docutils literal notranslate"><span class="pre">Model.card_from_model()</span></code></a></li> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.card_from_schema"><code class="docutils literal notranslate"><span class="pre">Model.card_from_schema()</span></code></a></li> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.card_from_template"><code class="docutils literal notranslate"><span class="pre">Model.card_from_template()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.create"><code class="docutils literal notranslate"><span class="pre">Model.create()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.create_experiment"><code class="docutils literal notranslate"><span class="pre">Model.create_experiment()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.create_release"><code class="docutils literal notranslate"><span class="pre">Model.create_release()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.from_id"><code class="docutils literal notranslate"><span class="pre">Model.from_id()</span></code></a></li> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_card_latest"><code class="docutils literal notranslate"><span class="pre">Model.get_card_latest()</span></code></a></li> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_card_revision"><code class="docutils literal notranslate"><span class="pre">Model.get_card_revision()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_image"><code class="docutils literal notranslate"><span class="pre">Model.get_image()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_images"><code class="docutils literal notranslate"><span class="pre">Model.get_images()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_latest_release"><code class="docutils literal notranslate"><span class="pre">Model.get_latest_release()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_release"><code class="docutils literal notranslate"><span class="pre">Model.get_release()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_releases"><code class="docutils literal notranslate"><span class="pre">Model.get_releases()</span></code></a></li> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_roles"><code class="docutils literal notranslate"><span class="pre">Model.get_roles()</span></code></a></li> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_user_roles"><code class="docutils literal notranslate"><span class="pre">Model.get_user_roles()</span></code></a></li> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.update"><code class="docutils literal notranslate"><span class="pre">Model.update()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.model_card"><code class="docutils literal notranslate"><span class="pre">Model.model_card</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.model_card_schema"><code class="docutils literal notranslate"><span class="pre">Model.model_card_schema</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.model_card_version"><code class="docutils literal notranslate"><span class="pre">Model.model_card_version</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.update_model_card"><code class="docutils literal notranslate"><span class="pre">Model.update_model_card()</span></code></a></li> </ul> </li> @@ -98,6 +112,7 @@ <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.release.Release.create"><code class="docutils literal notranslate"><span class="pre">Release.create()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.release.Release.delete"><code class="docutils literal notranslate"><span class="pre">Release.delete()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.release.Release.download"><code class="docutils literal notranslate"><span class="pre">Release.download()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.release.Release.download_all"><code class="docutils literal notranslate"><span class="pre">Release.download_all()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.release.Release.from_version"><code class="docutils literal notranslate"><span class="pre">Release.from_version()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.release.Release.update"><code class="docutils literal notranslate"><span class="pre">Release.update()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.release.Release.upload"><code class="docutils literal notranslate"><span class="pre">Release.upload()</span></code></a></li> @@ -114,6 +129,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/schemas_demo/">Managing Schemas</a></li> @@ -218,6 +234,161 @@ </dd></dl> +<dl class="py class" id="module-bailo.helper.datacard"> +<dt class="sig sig-object py" id="bailo.helper.datacard.Datacard"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">bailo.helper.datacard.</span></span><span class="sig-name descname"><span class="pre">Datacard</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../bailo.core/#bailo.core.client.Client" title="bailo.core.client.Client"><span class="pre">Client</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">datacard_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">visibility</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../bailo.core/#bailo.core.enums.ModelVisibility" title="bailo.core.enums.ModelVisibility"><span class="pre">ModelVisibility</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/helper/datacard/#Datacard"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.datacard.Datacard" title="Link to this definition"></a></dt> +<dd><p>Bases: <a class="reference internal" href="#bailo.helper.entry.Entry" title="bailo.helper.entry.Entry"><code class="xref py py-class docutils literal notranslate"><span class="pre">Entry</span></code></a></p> +<p>Represent a datacard within Bailo.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>client</strong> – A client object used to interact with Bailo</p></li> +<li><p><strong>datacard_id</strong> – A unique ID for the datacard</p></li> +<li><p><strong>name</strong> – Name of datacard</p></li> +<li><p><strong>description</strong> – Description of datacard</p></li> +<li><p><strong>visibility</strong> – Visibility of datacard, using ModelVisibility enum (e.g Public or Private), defaults to None</p></li> +</ul> +</dd> +</dl> +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.datacard.Datacard.create"> +<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">create</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../bailo.core/#bailo.core.client.Client" title="bailo.core.client.Client"><span class="pre">Client</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">team_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">visibility</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../bailo.core/#bailo.core.enums.ModelVisibility" title="bailo.core.enums.ModelVisibility"><span class="pre">ModelVisibility</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#bailo.helper.datacard.Datacard" title="bailo.helper.datacard.Datacard"><span class="pre">Datacard</span></a></span></span><a class="reference internal" href="../_modules/bailo/helper/datacard/#Datacard.create"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.datacard.Datacard.create" title="Link to this definition"></a></dt> +<dd><p>Build a datacard from Bailo and upload it.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>client</strong> – A client object used to interact with Bailo</p></li> +<li><p><strong>name</strong> – Name of datacard</p></li> +<li><p><strong>description</strong> – Description of datacard</p></li> +<li><p><strong>team_id</strong> – A unique team ID</p></li> +<li><p><strong>visibility</strong> – Visibility of datacard, using ModelVisibility enum (e.g Public or Private), defaults to None</p></li> +</ul> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><p>Datacard object</p> +</dd> +</dl> +</dd></dl> + +<dl class="py property"> +<dt class="sig sig-object py" id="bailo.helper.datacard.Datacard.data_card"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">data_card</span></span><a class="headerlink" href="#bailo.helper.datacard.Datacard.data_card" title="Link to this definition"></a></dt> +<dd></dd></dl> + +<dl class="py property"> +<dt class="sig sig-object py" id="bailo.helper.datacard.Datacard.data_card_schema"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">data_card_schema</span></span><a class="headerlink" href="#bailo.helper.datacard.Datacard.data_card_schema" title="Link to this definition"></a></dt> +<dd></dd></dl> + +<dl class="py property"> +<dt class="sig sig-object py" id="bailo.helper.datacard.Datacard.data_card_version"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">data_card_version</span></span><a class="headerlink" href="#bailo.helper.datacard.Datacard.data_card_version" title="Link to this definition"></a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.datacard.Datacard.from_id"> +<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_id</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../bailo.core/#bailo.core.client.Client" title="bailo.core.client.Client"><span class="pre">Client</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">datacard_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#bailo.helper.datacard.Datacard" title="bailo.helper.datacard.Datacard"><span class="pre">Datacard</span></a></span></span><a class="reference internal" href="../_modules/bailo/helper/datacard/#Datacard.from_id"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.datacard.Datacard.from_id" title="Link to this definition"></a></dt> +<dd><p>Return an existing datacard from Bailo.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>client</strong> – A client object used to interact with Bailo</p></li> +<li><p><strong>datacard_id</strong> – A unique datacard ID</p></li> +</ul> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><p>A datacard object</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.datacard.Datacard.update_data_card"> +<span class="sig-name descname"><span class="pre">update_data_card</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data_card</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/bailo/helper/datacard/#Datacard.update_data_card"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.datacard.Datacard.update_data_card" title="Link to this definition"></a></dt> +<dd><p>Upload and retrieve any changes to the datacard on Bailo.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>data_card</strong> – Datacard dictionary, defaults to None</p> +</dd> +</dl> +<p>..note:: If a datacard is not provided, the current datacard attribute value is used</p> +</dd></dl> + +</dd></dl> + +<dl class="py class" id="module-bailo.helper.entry"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">bailo.helper.entry.</span></span><span class="sig-name descname"><span class="pre">Entry</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../bailo.core/#bailo.core.client.Client" title="bailo.core.client.Client"><span class="pre">Client</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">kind</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../bailo.core/#bailo.core.enums.EntryKind" title="bailo.core.enums.EntryKind"><span class="pre">EntryKind</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">visibility</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../bailo.core/#bailo.core.enums.ModelVisibility" title="bailo.core.enums.ModelVisibility"><span class="pre">ModelVisibility</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/helper/entry/#Entry"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry" title="Link to this definition"></a></dt> +<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p> +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry.card_from_schema"> +<span class="sig-name descname"><span class="pre">card_from_schema</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">schema_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/bailo/helper/entry/#Entry.card_from_schema"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry.card_from_schema" title="Link to this definition"></a></dt> +<dd><p>Create a card using a schema on Bailo.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>schema_id</strong> – A unique schema ID</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry.card_from_template"> +<span class="sig-name descname"><span class="pre">card_from_template</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/helper/entry/#Entry.card_from_template"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry.card_from_template" title="Link to this definition"></a></dt> +<dd><p>Create a card using a template (not yet implemented).</p> +<dl class="field-list simple"> +<dt class="field-odd">Raises<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>NotImplementedError</strong> – Not implemented error</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry.get_card_latest"> +<span class="sig-name descname"><span class="pre">get_card_latest</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/bailo/helper/entry/#Entry.get_card_latest"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry.get_card_latest" title="Link to this definition"></a></dt> +<dd><p>Get the latest card from Bailo.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry.get_card_revision"> +<span class="sig-name descname"><span class="pre">get_card_revision</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">version</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/bailo/helper/entry/#Entry.get_card_revision"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry.get_card_revision" title="Link to this definition"></a></dt> +<dd><p>Get a specific entry card revision from Bailo.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>version</strong> – Entry card version</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry.get_roles"> +<span class="sig-name descname"><span class="pre">get_roles</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/helper/entry/#Entry.get_roles"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry.get_roles" title="Link to this definition"></a></dt> +<dd><p>Get all roles for the entry.</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>List of roles</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry.get_user_roles"> +<span class="sig-name descname"><span class="pre">get_user_roles</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/helper/entry/#Entry.get_user_roles"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry.get_user_roles" title="Link to this definition"></a></dt> +<dd><p>Get all user roles for the entry.</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>List of user roles</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry.update"> +<span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/bailo/helper/entry/#Entry.update"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry.update" title="Link to this definition"></a></dt> +<dd><p>Upload and retrieve any changes to the entry summary on Bailo.</p> +</dd></dl> + +</dd></dl> + <dl class="py class" id="module-bailo.helper.model"> <dt class="sig sig-object py" id="bailo.helper.model.Experiment"> <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">bailo.helper.model.</span></span><span class="sig-name descname"><span class="pre">Experiment</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#bailo.helper.model.Model" title="bailo.helper.model.Model"><span class="pre">Model</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/helper/model/#Experiment"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Experiment" title="Link to this definition"></a></dt> @@ -350,7 +521,7 @@ <dl class="py class"> <dt class="sig sig-object py" id="bailo.helper.model.Model"> <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">bailo.helper.model.</span></span><span class="sig-name descname"><span class="pre">Model</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../bailo.core/#bailo.core.client.Client" title="bailo.core.client.Client"><span class="pre">Client</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">visibility</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../bailo.core/#bailo.core.enums.ModelVisibility" title="bailo.core.enums.ModelVisibility"><span class="pre">ModelVisibility</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/helper/model/#Model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model" title="Link to this definition"></a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p> +<dd><p>Bases: <a class="reference internal" href="#bailo.helper.entry.Entry" title="bailo.helper.entry.Entry"><code class="xref py py-class docutils literal notranslate"><span class="pre">Entry</span></code></a></p> <p>Represent a model within Bailo.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> @@ -363,43 +534,10 @@ </ul> </dd> </dl> -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.card_from_model"> -<span class="sig-name descname"><span class="pre">card_from_model</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/helper/model/#Model.card_from_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.card_from_model" title="Link to this definition"></a></dt> -<dd><p>Copy a model card from a different model (not yet implemented).</p> -<dl class="field-list simple"> -<dt class="field-odd">Raises<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>NotImplementedError</strong> – Not implemented error</p> -</dd> -</dl> -</dd></dl> - -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.card_from_schema"> -<span class="sig-name descname"><span class="pre">card_from_schema</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">schema_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/bailo/helper/model/#Model.card_from_schema"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.card_from_schema" title="Link to this definition"></a></dt> -<dd><p>Create a model card using a schema on Bailo.</p> -<dl class="field-list simple"> -<dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>schema_id</strong> – A unique schema ID</p> -</dd> -</dl> -</dd></dl> - -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.card_from_template"> -<span class="sig-name descname"><span class="pre">card_from_template</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/helper/model/#Model.card_from_template"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.card_from_template" title="Link to this definition"></a></dt> -<dd><p>Create a model card using a template (not yet implemented).</p> -<dl class="field-list simple"> -<dt class="field-odd">Raises<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>NotImplementedError</strong> – Not implemented error</p> -</dd> -</dl> -</dd></dl> - <dl class="py method"> <dt class="sig sig-object py" id="bailo.helper.model.Model.create"> <em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">create</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../bailo.core/#bailo.core.client.Client" title="bailo.core.client.Client"><span class="pre">Client</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">team_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">visibility</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../bailo.core/#bailo.core.enums.ModelVisibility" title="bailo.core.enums.ModelVisibility"><span class="pre">ModelVisibility</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#bailo.helper.model.Model" title="bailo.helper.model.Model"><span class="pre">Model</span></a></span></span><a class="reference internal" href="../_modules/bailo/helper/model/#Model.create"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.create" title="Link to this definition"></a></dt> -<dd><p>Build a model from Bailo and uploads it.</p> +<dd><p>Build a model from Bailo and upload it.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> @@ -419,7 +557,13 @@ <dl class="py method"> <dt class="sig sig-object py" id="bailo.helper.model.Model.create_experiment"> <span class="sig-name descname"><span class="pre">create_experiment</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#bailo.helper.model.Experiment" title="bailo.helper.model.Experiment"><span class="pre">Experiment</span></a></span></span><a class="reference internal" href="../_modules/bailo/helper/model/#Model.create_experiment"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.create_experiment" title="Link to this definition"></a></dt> -<dd></dd></dl> +<dd><p>Create an experiment locally</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>An experiment object</p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="bailo.helper.model.Model.create_release"> @@ -459,23 +603,6 @@ </dl> </dd></dl> -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.get_card_latest"> -<span class="sig-name descname"><span class="pre">get_card_latest</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/bailo/helper/model/#Model.get_card_latest"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.get_card_latest" title="Link to this definition"></a></dt> -<dd><p>Get the latest model card from Bailo.</p> -</dd></dl> - -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.get_card_revision"> -<span class="sig-name descname"><span class="pre">get_card_revision</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">version</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/bailo/helper/model/#Model.get_card_revision"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.get_card_revision" title="Link to this definition"></a></dt> -<dd><p>Get a specific model card revision from Bailo.</p> -<dl class="field-list simple"> -<dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>version</strong> – Model card version</p> -</dd> -</dl> -</dd></dl> - <dl class="py method"> <dt class="sig sig-object py" id="bailo.helper.model.Model.get_image"> <span class="sig-name descname"><span class="pre">get_image</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/helper/model/#Model.get_image"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.get_image" title="Link to this definition"></a></dt> @@ -534,38 +661,25 @@ </dl> </dd></dl> -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.get_roles"> -<span class="sig-name descname"><span class="pre">get_roles</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/helper/model/#Model.get_roles"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.get_roles" title="Link to this definition"></a></dt> -<dd><p>Get all roles for the model.</p> -<dl class="field-list simple"> -<dt class="field-odd">Returns<span class="colon">:</span></dt> -<dd class="field-odd"><p>List of roles</p> -</dd> -</dl> -</dd></dl> +<dl class="py property"> +<dt class="sig sig-object py" id="bailo.helper.model.Model.model_card"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">model_card</span></span><a class="headerlink" href="#bailo.helper.model.Model.model_card" title="Link to this definition"></a></dt> +<dd></dd></dl> -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.get_user_roles"> -<span class="sig-name descname"><span class="pre">get_user_roles</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/helper/model/#Model.get_user_roles"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.get_user_roles" title="Link to this definition"></a></dt> -<dd><p>Get all user roles for the model.</p> -<dl class="field-list simple"> -<dt class="field-odd">Returns<span class="colon">:</span></dt> -<dd class="field-odd"><p>List of user roles</p> -</dd> -</dl> -</dd></dl> +<dl class="py property"> +<dt class="sig sig-object py" id="bailo.helper.model.Model.model_card_schema"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">model_card_schema</span></span><a class="headerlink" href="#bailo.helper.model.Model.model_card_schema" title="Link to this definition"></a></dt> +<dd></dd></dl> -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.update"> -<span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/bailo/helper/model/#Model.update"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.update" title="Link to this definition"></a></dt> -<dd><p>Upload and retrieves any changes to the model summary on Bailo.</p> -</dd></dl> +<dl class="py property"> +<dt class="sig sig-object py" id="bailo.helper.model.Model.model_card_version"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">model_card_version</span></span><a class="headerlink" href="#bailo.helper.model.Model.model_card_version" title="Link to this definition"></a></dt> +<dd></dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="bailo.helper.model.Model.update_model_card"> <span class="sig-name descname"><span class="pre">update_model_card</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_card</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="../_modules/bailo/helper/model/#Model.update_model_card"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.update_model_card" title="Link to this definition"></a></dt> -<dd><p>Upload and retrieves any changes to the model card on Bailo.</p> +<dd><p>Upload and retrieve any changes to the model card on Bailo.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><p><strong>model_card</strong> – Model card dictionary, defaults to None</p> @@ -631,7 +745,7 @@ <dl class="py method"> <dt class="sig sig-object py" id="bailo.helper.release.Release.download"> <span class="sig-name descname"><span class="pre">download</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">write</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="../_modules/bailo/helper/release/#Release.download"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.release.Release.download" title="Link to this definition"></a></dt> -<dd><p>Give returns a Reading object given the file id.</p> +<dd><p>Returns a response object given the file name and optionally writes file to disk.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> @@ -646,6 +760,25 @@ </dl> </dd></dl> +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.release.Release.download_all"> +<span class="sig-name descname"><span class="pre">download_all</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'/home/ubuntu/git/Bailo/lib/python/docs'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">include</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exclude</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="../_modules/bailo/helper/release/#Release.download_all"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.release.Release.download_all" title="Link to this definition"></a></dt> +<dd><p>Writes all files to disk given a local directory.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>include</strong> – List or string of fnmatch statements for file names to include, defaults to None</p></li> +<li><p><strong>exclude</strong> – List or string of fnmatch statements for file names to exclude, defaults to None</p></li> +<li><p><strong>path</strong> – Local directory to write files to</p></li> +</ul> +</dd> +<dt class="field-even">Raises<span class="colon">:</span></dt> +<dd class="field-even"><p><a class="reference internal" href="../bailo.core/#bailo.core.exceptions.BailoException" title="bailo.core.exceptions.BailoException"><strong>BailoException</strong></a> – If the release has no files assigned to it</p> +</dd> +</dl> +<p>..note:: Fnmatch statements support Unix shell-style wildcards.</p> +</dd></dl> + <dl class="py method"> <dt class="sig sig-object py" id="bailo.helper.release.Release.from_version"> <em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_version</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="../bailo.core/#bailo.core.client.Client" title="bailo.core.client.Client"><span class="pre">Client</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">version</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Version</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#bailo.helper.release.Release" title="bailo.helper.release.Release"><span class="pre">Release</span></a></span></span><a class="reference internal" href="../_modules/bailo/helper/release/#Release.from_version"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.release.Release.from_version" title="Link to this definition"></a></dt> diff --git a/backend/python-docs/_build/dirhtml/genindex/index.html b/backend/python-docs/_build/dirhtml/genindex/index.html index d08be26d6..c85cacef6 100644 --- a/backend/python-docs/_build/dirhtml/genindex/index.html +++ b/backend/python-docs/_build/dirhtml/genindex/index.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/schemas_demo/">Managing Schemas</a></li> @@ -171,13 +172,27 @@ <h2 id="B">B</h2> <li><a href="../bailo.core/#module-bailo.core.exceptions">module</a> </li> </ul></li> - </ul></td> - <td style="width: 33%; vertical-align: top;"><ul> <li> bailo.helper.access_request <ul> <li><a href="../bailo.helper/#module-bailo.helper.access_request">module</a> +</li> + </ul></li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li> + bailo.helper.datacard + + <ul> + <li><a href="../bailo.helper/#module-bailo.helper.datacard">module</a> +</li> + </ul></li> + <li> + bailo.helper.entry + + <ul> + <li><a href="../bailo.helper/#module-bailo.helper.entry">module</a> </li> </ul></li> <li> @@ -209,17 +224,17 @@ <h2 id="B">B</h2> <h2 id="C">C</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="../bailo.helper/#bailo.helper.model.Model.card_from_model">card_from_model() (bailo.helper.model.Model method)</a> + <li><a href="../bailo.helper/#bailo.helper.entry.Entry.card_from_schema">card_from_schema() (bailo.helper.entry.Entry method)</a> </li> - <li><a href="../bailo.helper/#bailo.helper.model.Model.card_from_schema">card_from_schema() (bailo.helper.model.Model method)</a> -</li> - <li><a href="../bailo.helper/#bailo.helper.model.Model.card_from_template">card_from_template() (bailo.helper.model.Model method)</a> + <li><a href="../bailo.helper/#bailo.helper.entry.Entry.card_from_template">card_from_template() (bailo.helper.entry.Entry method)</a> </li> <li><a href="../bailo.core/#bailo.core.client.Client">Client (class in bailo.core.client)</a> </li> <li><a href="../bailo.helper/#bailo.helper.access_request.AccessRequest.create">create() (bailo.helper.access_request.AccessRequest class method)</a> <ul> + <li><a href="../bailo.helper/#bailo.helper.datacard.Datacard.create">(bailo.helper.datacard.Datacard class method)</a> +</li> <li><a href="../bailo.helper/#bailo.helper.model.Experiment.create">(bailo.helper.model.Experiment class method)</a> </li> <li><a href="../bailo.helper/#bailo.helper.model.Model.create">(bailo.helper.model.Model class method)</a> @@ -241,6 +256,16 @@ <h2 id="C">C</h2> <h2 id="D">D</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="../bailo.helper/#bailo.helper.datacard.Datacard.data_card">data_card (bailo.helper.datacard.Datacard property)</a> +</li> + <li><a href="../bailo.helper/#bailo.helper.datacard.Datacard.data_card_schema">data_card_schema (bailo.helper.datacard.Datacard property)</a> +</li> + <li><a href="../bailo.helper/#bailo.helper.datacard.Datacard.data_card_version">data_card_version (bailo.helper.datacard.Datacard property)</a> +</li> + <li><a href="../bailo.core/#bailo.core.enums.EntryKind.DATACARD">DATACARD (bailo.core.enums.EntryKind attribute)</a> +</li> + <li><a href="../bailo.helper/#bailo.helper.datacard.Datacard">Datacard (class in bailo.helper.datacard)</a> +</li> <li><a href="../bailo.core/#bailo.core.agent.Agent.delete">delete() (bailo.core.agent.Agent method)</a> <ul> @@ -262,6 +287,8 @@ <h2 id="D">D</h2> <li><a href="../bailo.core/#bailo.core.client.Client.delete_release">delete_release() (bailo.core.client.Client method)</a> </li> <li><a href="../bailo.helper/#bailo.helper.release.Release.download">download() (bailo.helper.release.Release method)</a> +</li> + <li><a href="../bailo.helper/#bailo.helper.release.Release.download_all">download_all() (bailo.helper.release.Release method)</a> </li> </ul></td> </tr></table> @@ -269,6 +296,12 @@ <h2 id="D">D</h2> <h2 id="E">E</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="../bailo.helper/#bailo.helper.entry.Entry">Entry (class in bailo.helper.entry)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="../bailo.core/#bailo.core.enums.EntryKind">EntryKind (class in bailo.core.enums)</a> +</li> <li><a href="../bailo.helper/#bailo.helper.model.Experiment">Experiment (class in bailo.helper.model)</a> </li> </ul></td> @@ -280,6 +313,8 @@ <h2 id="F">F</h2> <li><a href="../bailo.helper/#bailo.helper.access_request.AccessRequest.from_id">from_id() (bailo.helper.access_request.AccessRequest class method)</a> <ul> + <li><a href="../bailo.helper/#bailo.helper.datacard.Datacard.from_id">(bailo.helper.datacard.Datacard class method)</a> +</li> <li><a href="../bailo.helper/#bailo.helper.model.Model.from_id">(bailo.helper.model.Model class method)</a> </li> <li><a href="../bailo.helper/#bailo.helper.schema.Schema.from_id">(bailo.helper.schema.Schema class method)</a> @@ -317,9 +352,9 @@ <h2 id="G">G</h2> </li> <li><a href="../bailo.core/#bailo.core.client.Client.get_all_teams">get_all_teams() (bailo.core.client.Client method)</a> </li> - <li><a href="../bailo.helper/#bailo.helper.model.Model.get_card_latest">get_card_latest() (bailo.helper.model.Model method)</a> + <li><a href="../bailo.helper/#bailo.helper.entry.Entry.get_card_latest">get_card_latest() (bailo.helper.entry.Entry method)</a> </li> - <li><a href="../bailo.helper/#bailo.helper.model.Model.get_card_revision">get_card_revision() (bailo.helper.model.Model method)</a> + <li><a href="../bailo.helper/#bailo.helper.entry.Entry.get_card_revision">get_card_revision() (bailo.helper.entry.Entry method)</a> </li> <li><a href="../bailo.core/#bailo.core.client.Client.get_download_by_filename">get_download_by_filename() (bailo.core.client.Client method)</a> </li> @@ -355,13 +390,13 @@ <h2 id="G">G</h2> </li> <li><a href="../bailo.core/#bailo.core.client.Client.get_reviews">get_reviews() (bailo.core.client.Client method)</a> </li> - <li><a href="../bailo.helper/#bailo.helper.model.Model.get_roles">get_roles() (bailo.helper.model.Model method)</a> + <li><a href="../bailo.helper/#bailo.helper.entry.Entry.get_roles">get_roles() (bailo.helper.entry.Entry method)</a> </li> <li><a href="../bailo.core/#bailo.core.client.Client.get_schema">get_schema() (bailo.core.client.Client method)</a> </li> <li><a href="../bailo.core/#bailo.core.client.Client.get_team">get_team() (bailo.core.client.Client method)</a> </li> - <li><a href="../bailo.helper/#bailo.helper.model.Model.get_user_roles">get_user_roles() (bailo.helper.model.Model method)</a> + <li><a href="../bailo.helper/#bailo.helper.entry.Entry.get_user_roles">get_user_roles() (bailo.helper.entry.Entry method)</a> </li> <li><a href="../bailo.core/#bailo.core.client.Client.get_user_teams">get_user_teams() (bailo.core.client.Client method)</a> </li> @@ -387,11 +422,21 @@ <h2 id="L">L</h2> <h2 id="M">M</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="../bailo.core/#bailo.core.enums.SchemaKind.MODEL">MODEL (bailo.core.enums.SchemaKind attribute)</a> + <li><a href="../bailo.core/#bailo.core.enums.EntryKind.MODEL">MODEL (bailo.core.enums.EntryKind attribute)</a> + + <ul> + <li><a href="../bailo.core/#bailo.core.enums.SchemaKind.MODEL">(bailo.core.enums.SchemaKind attribute)</a> </li> + </ul></li> <li><a href="../bailo.helper/#bailo.helper.model.Model">Model (class in bailo.helper.model)</a> +</li> + <li><a href="../bailo.helper/#bailo.helper.model.Model.model_card">model_card (bailo.helper.model.Model property)</a> </li> <li><a href="../bailo.core/#bailo.core.client.Client.model_card_from_schema">model_card_from_schema() (bailo.core.client.Client method)</a> +</li> + <li><a href="../bailo.helper/#bailo.helper.model.Model.model_card_schema">model_card_schema (bailo.helper.model.Model property)</a> +</li> + <li><a href="../bailo.helper/#bailo.helper.model.Model.model_card_version">model_card_version (bailo.helper.model.Model property)</a> </li> <li><a href="../bailo.core/#bailo.core.enums.Role.MODEL_SENIOR_RESPONSIBLE_OFFICER">MODEL_SENIOR_RESPONSIBLE_OFFICER (bailo.core.enums.Role attribute)</a> </li> @@ -414,6 +459,10 @@ <h2 id="M">M</h2> <li><a href="../bailo.core/#module-bailo.core.exceptions">bailo.core.exceptions</a> </li> <li><a href="../bailo.helper/#module-bailo.helper.access_request">bailo.helper.access_request</a> +</li> + <li><a href="../bailo.helper/#module-bailo.helper.datacard">bailo.helper.datacard</a> +</li> + <li><a href="../bailo.helper/#module-bailo.helper.entry">bailo.helper.entry</a> </li> <li><a href="../bailo.helper/#module-bailo.helper.model">bailo.helper.model</a> </li> @@ -541,13 +590,15 @@ <h2 id="U">U</h2> <li><a href="../bailo.helper/#bailo.helper.access_request.AccessRequest.update">update() (bailo.helper.access_request.AccessRequest method)</a> <ul> - <li><a href="../bailo.helper/#bailo.helper.model.Model.update">(bailo.helper.model.Model method)</a> + <li><a href="../bailo.helper/#bailo.helper.entry.Entry.update">(bailo.helper.entry.Entry method)</a> </li> <li><a href="../bailo.helper/#bailo.helper.release.Release.update">(bailo.helper.release.Release method)</a> </li> </ul></li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="../bailo.helper/#bailo.helper.datacard.Datacard.update_data_card">update_data_card() (bailo.helper.datacard.Datacard method)</a> +</li> <li><a href="../bailo.helper/#bailo.helper.model.Model.update_model_card">update_model_card() (bailo.helper.model.Model method)</a> </li> <li><a href="../bailo.helper/#bailo.helper.release.Release.upload">upload() (bailo.helper.release.Release method)</a> diff --git a/backend/python-docs/_build/dirhtml/index.html b/backend/python-docs/_build/dirhtml/index.html index a47f460ac..2ad07a7b4 100644 --- a/backend/python-docs/_build/dirhtml/index.html +++ b/backend/python-docs/_build/dirhtml/index.html @@ -57,6 +57,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/schemas_demo/">Managing Schemas</a></li> @@ -112,6 +113,7 @@ <h2>Bailo Python Client<a class="headerlink" href="#bailo-python-client" title=" <li class="toctree-l2"><a class="reference internal" href="bailo.core/#bailo.core.agent.PkiAgent"><code class="docutils literal notranslate"><span class="pre">PkiAgent</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.core/#bailo.core.agent.TokenAgent"><code class="docutils literal notranslate"><span class="pre">TokenAgent</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.core/#bailo.core.client.Client"><code class="docutils literal notranslate"><span class="pre">Client</span></code></a></li> +<li class="toctree-l2"><a class="reference internal" href="bailo.core/#bailo.core.enums.EntryKind"><code class="docutils literal notranslate"><span class="pre">EntryKind</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.core/#bailo.core.enums.ModelVisibility"><code class="docutils literal notranslate"><span class="pre">ModelVisibility</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.core/#bailo.core.enums.Role"><code class="docutils literal notranslate"><span class="pre">Role</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.core/#bailo.core.enums.SchemaKind"><code class="docutils literal notranslate"><span class="pre">SchemaKind</span></code></a></li> @@ -121,6 +123,8 @@ <h2>Bailo Python Client<a class="headerlink" href="#bailo-python-client" title=" </li> <li class="toctree-l1"><a class="reference internal" href="bailo.helper/">bailo.helper package</a><ul> <li class="toctree-l2"><a class="reference internal" href="bailo.helper/#bailo.helper.access_request.AccessRequest"><code class="docutils literal notranslate"><span class="pre">AccessRequest</span></code></a></li> +<li class="toctree-l2"><a class="reference internal" href="bailo.helper/#bailo.helper.datacard.Datacard"><code class="docutils literal notranslate"><span class="pre">Datacard</span></code></a></li> +<li class="toctree-l2"><a class="reference internal" href="bailo.helper/#bailo.helper.entry.Entry"><code class="docutils literal notranslate"><span class="pre">Entry</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.helper/#bailo.helper.model.Experiment"><code class="docutils literal notranslate"><span class="pre">Experiment</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.helper/#bailo.helper.model.Model"><code class="docutils literal notranslate"><span class="pre">Model</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.helper/#bailo.helper.release.Release"><code class="docutils literal notranslate"><span class="pre">Release</span></code></a></li> @@ -133,6 +137,7 @@ <h2>Bailo Python Client<a class="headerlink" href="#bailo-python-client" title=" <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/schemas_demo/">Managing Schemas</a></li> diff --git a/backend/python-docs/_build/dirhtml/notebooks/datacards_demo.ipynb b/backend/python-docs/_build/dirhtml/notebooks/datacards_demo.ipynb new file mode 100644 index 000000000..de65fa9c3 --- /dev/null +++ b/backend/python-docs/_build/dirhtml/notebooks/datacards_demo.ipynb @@ -0,0 +1,216 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Managing Datacards" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Bailo python client enables intuitive interaction with the Bailo service, from within a python environment. This example notebook will run through the following concepts:\n", + "\n", + "* Creating and populating a new datacard on Bailo.\n", + "* Retrieving datacards from the service.\n", + "* Making changes to the datacard.\n", + "\n", + "Prerequisites:\n", + "\n", + "* Python 3.8.1 or higher (including a notebook environment for this demo).\n", + "* A local or remote Bailo service (see https://github.com/gchq/Bailo)." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Bailo python client is split into two sub-packages: **core** and **helper**.\n", + "\n", + "* **Core:** For direct interactions with the service endpoints.\n", + "* **Helper:** For more intuitive interactions with the service, using classes (e.g. Datacard) to handle operations.\n", + "\n", + "In order to create helper classes, you will first need to instantiate a `Client()` object from the core. By default, this object will not support any authentication. However, Bailo also supports PKI authentication, which you can use from Python by passing a `PkiAgent()` object into the `Client()` object when you instantiate it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "! pip install bailo -e ../.." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Necessary import statements\n", + "\n", + "from bailo import Datacard, Client\n", + "\n", + "# Instantiating the PkiAgent(), if using.\n", + "# agent = PkiAgent(cert='', key='', auth='')\n", + "\n", + "# Instantiating the Bailo client\n", + "\n", + "client = Client(\"http://127.0.0.1:8080\") # <- INSERT BAILO URL (if not hosting locally)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating a new datacard in Bailo\n", + "\n", + "### Creating and updating the base datacard\n", + "\n", + "In this section, we'll create a new datacard using the `Datacard.create()` classmethod. On the Bailo service, a datacard must consist of at least 4 parameters upon creation. These are **name**, **description**, **visibility** and **team_id**. Below, we use the `Client()` object created before when instantiating the new `Datacard()` object. \n", + "\n", + "NOTE: This creates the datacard on your Bailo service too! The `datacard_id` is assigned by the backend, and we will use this later to retrieve the datacard. *Like with models on Bailo, the actual datacard has not been populated at this stage.*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "datacard = Datacard.create(client=client, name=\"ImageNet\", description=\"ImageNet dataset consisting of images.\", team_id=\"uncategorised\")\n", + "\n", + "datacard_id = datacard.datacard_id" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You may make changes to these attributes and then call the `update()` method to relay the changes to the service, as below:\n", + "\n", + "```python\n", + "datacard.name = \"New Name\"\n", + "datacard.update()\n", + "```\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Populating the datacard\n", + "\n", + "When creating a datacard, first we need to generate an empty card using the `card_from_schema()` method. In this instance, we will use **minimal-data-card-v10**. You can manage custom schemas using the `Schema()` helper class, but this is out of scope for this demo." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "datacard.card_from_schema(schema_id='minimal-data-card-v10')\n", + "\n", + "print(f\"Datacard version is {datacard.data_card_version}.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If successful, the above will have created a new datacard, and the `data_card_version` attribute should be set to 1.\n", + "\n", + "Next, we can populate the data using the `update_data_card()` method. This can be used any time you want to make changes, and the backend will create a new datacard version each time. We'll learn how to retrieve datacards later (either the latest, or a specific release).\n", + "\n", + "NOTE: Your datacard must match the schema, otherwise an error will be thrown." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "new_card = {\n", + " 'overview': {\n", + " 'storageLocation': 'S3',\n", + " }\n", + "}\n", + "\n", + "datacard.update_data_card(data_card=new_card)\n", + "\n", + "print(f\"Datacard version is {datacard.data_card_version}.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If successful, the `data_card_version` will now be 2!" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Retrieving an existing datacard\n", + "\n", + "### Using the .from_id() method\n", + "\n", + "In this section, we'll retrieve our previous datacard using the `Datacard.from_id()` classmethod. This will create your `Datacard()` object as before, but using existing information retrieved from the service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "datacard = Datacard.from_id(client=client, datacard_id=datacard_id)\n", + "\n", + "print(f\"Datacard description: {datacard.description}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/backend/python-docs/_build/dirhtml/notebooks/datacards_demo/index.html b/backend/python-docs/_build/dirhtml/notebooks/datacards_demo/index.html new file mode 100644 index 000000000..3cda22d43 --- /dev/null +++ b/backend/python-docs/_build/dirhtml/notebooks/datacards_demo/index.html @@ -0,0 +1,260 @@ +<!DOCTYPE html> +<html class="writer-html5" lang="en" data-content_root="../../"> +<head> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Managing Datacards — Bailo Python Client Docs 0.1.0 documentation</title> + <link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../_static/css/theme.css?v=19f00094" /> + <link rel="stylesheet" type="text/css" href="../../_static/nbsphinx-code-cells.css?v=2aa19091" /> + + + <link rel="shortcut icon" href="../../_static/favicon.png"/> + <!--[if lt IE 9]> + <script src="../../_static/js/html5shiv.min.js"></script> + <![endif]--> + + <script src="../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../_static/documentation_options.js?v=b2731ba4"></script> + <script src="../../_static/doctools.js?v=888ff710"></script> + <script src="../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script> + <script>window.MathJax = {"tex": {"inlineMath": [["$", "$"], ["\\(", "\\)"]], "processEscapes": true}, "options": {"ignoreHtmlClass": "tex2jax_ignore|mathjax_ignore|document", "processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script> + <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> + <script src="../../_static/js/theme.js"></script> + <link rel="index" title="Index" href="../../genindex/" /> + <link rel="search" title="Search" href="../../search/" /> + <link rel="next" title="Experiment Tracking with Bailo & MLFlow" href="../experiment_tracking_demo/" /> + <link rel="prev" title="Managing Access Requests" href="../access_requests_demo/" /> +</head> + +<body class="wy-body-for-nav"> + <div class="wy-grid-for-nav"> + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../../" class="icon icon-home"> + Bailo Python Client Docs + <img src="../../_static/vertical-white.png" class="logo" alt="Logo"/> + </a> +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../../search/" method="get"> + <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> + <ul> +<li class="toctree-l1"><a class="reference internal" href="../../readme_link/">Bailo Python Client</a></li> +</ul> +<p class="caption" role="heading"><span class="caption-text">Packages:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../../bailo.core/">bailo.core package</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../bailo.helper/">bailo.helper package</a></li> +</ul> +<p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="../access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="#">Managing Datacards</a><ul> +<li class="toctree-l2"><a class="reference internal" href="#Introduction">Introduction</a></li> +<li class="toctree-l2"><a class="reference internal" href="#Creating-a-new-datacard-in-Bailo">Creating a new datacard in Bailo</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#Creating-and-updating-the-base-datacard">Creating and updating the base datacard</a></li> +<li class="toctree-l3"><a class="reference internal" href="#Populating-the-datacard">Populating the datacard</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#Retrieving-an-existing-datacard">Retrieving an existing datacard</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#Using-the-.from_id()-method">Using the .from_id() method</a></li> +</ul> +</li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="../experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> +<li class="toctree-l1"><a class="reference internal" href="../schemas_demo/">Managing Schemas</a></li> +</ul> + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../../">Bailo Python Client Docs</a> + </nav> + + <div class="wy-nav-content"> + <div class="rst-content"> + <div role="navigation" aria-label="Page navigation"> + <ul class="wy-breadcrumbs"> + <li><a href="../../" class="icon icon-home" aria-label="Home"></a></li> + <li class="breadcrumb-item active">Managing Datacards</li> + <li class="wy-breadcrumbs-aside"> + <a href="../../_sources/notebooks/datacards_demo.ipynb.txt" rel="nofollow"> View page source</a> + </li> + </ul> + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <section id="Managing-Datacards"> +<h1>Managing Datacards<a class="headerlink" href="#Managing-Datacards" title="Link to this heading"></a></h1> +<p>The Bailo python client enables intuitive interaction with the Bailo service, from within a python environment. This example notebook will run through the following concepts:</p> +<ul class="simple"> +<li><p>Creating and populating a new datacard on Bailo.</p></li> +<li><p>Retrieving datacards from the service.</p></li> +<li><p>Making changes to the datacard.</p></li> +</ul> +<p>Prerequisites:</p> +<ul class="simple"> +<li><p>Python 3.8.1 or higher (including a notebook environment for this demo).</p></li> +<li><p>A local or remote Bailo service (see <a class="reference external" href="https://github.com/gchq/Bailo">https://github.com/gchq/Bailo</a>).</p></li> +</ul> +<section id="Introduction"> +<h2>Introduction<a class="headerlink" href="#Introduction" title="Link to this heading"></a></h2> +<p>The Bailo python client is split into two sub-packages: <strong>core</strong> and <strong>helper</strong>.</p> +<ul class="simple"> +<li><p><strong>Core:</strong> For direct interactions with the service endpoints.</p></li> +<li><p><strong>Helper:</strong> For more intuitive interactions with the service, using classes (e.g. Datacard) to handle operations.</p></li> +</ul> +<p>In order to create helper classes, you will first need to instantiate a <code class="docutils literal notranslate"><span class="pre">Client()</span></code> object from the core. By default, this object will not support any authentication. However, Bailo also supports PKI authentication, which you can use from Python by passing a <code class="docutils literal notranslate"><span class="pre">PkiAgent()</span></code> object into the <code class="docutils literal notranslate"><span class="pre">Client()</span></code> object when you instantiate it.</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">!</span><span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>bailo<span class="w"> </span>-e<span class="w"> </span>../.. +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Necessary import statements</span> + +<span class="kn">from</span> <span class="nn">bailo</span> <span class="kn">import</span> <span class="n">Datacard</span><span class="p">,</span> <span class="n">Client</span> + +<span class="c1"># Instantiating the PkiAgent(), if using.</span> +<span class="c1"># agent = PkiAgent(cert='', key='', auth='')</span> + +<span class="c1"># Instantiating the Bailo client</span> + +<span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="s2">"http://127.0.0.1:8080"</span><span class="p">)</span> <span class="c1"># <- INSERT BAILO URL (if not hosting locally)</span> +</pre></div> +</div> +</div> +</section> +<section id="Creating-a-new-datacard-in-Bailo"> +<h2>Creating a new datacard in Bailo<a class="headerlink" href="#Creating-a-new-datacard-in-Bailo" title="Link to this heading"></a></h2> +<section id="Creating-and-updating-the-base-datacard"> +<h3>Creating and updating the base datacard<a class="headerlink" href="#Creating-and-updating-the-base-datacard" title="Link to this heading"></a></h3> +<p>In this section, we’ll create a new datacard using the <code class="docutils literal notranslate"><span class="pre">Datacard.create()</span></code> classmethod. On the Bailo service, a datacard must consist of at least 4 parameters upon creation. These are <strong>name</strong>, <strong>description</strong>, <strong>visibility</strong> and <strong>team_id</strong>. Below, we use the <code class="docutils literal notranslate"><span class="pre">Client()</span></code> object created before when instantiating the new <code class="docutils literal notranslate"><span class="pre">Datacard()</span></code> object.</p> +<p>NOTE: This creates the datacard on your Bailo service too! The <code class="docutils literal notranslate"><span class="pre">datacard_id</span></code> is assigned by the backend, and we will use this later to retrieve the datacard. <em>Like with models on Bailo, the actual datacard has not been populated at this stage.</em></p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">datacard</span> <span class="o">=</span> <span class="n">Datacard</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"ImageNet"</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s2">"ImageNet dataset consisting of images."</span><span class="p">,</span> <span class="n">team_id</span><span class="o">=</span><span class="s2">"uncategorised"</span><span class="p">)</span> + +<span class="n">datacard_id</span> <span class="o">=</span> <span class="n">datacard</span><span class="o">.</span><span class="n">datacard_id</span> +</pre></div> +</div> +</div> +<p>You may make changes to these attributes and then call the <code class="docutils literal notranslate"><span class="pre">update()</span></code> method to relay the changes to the service, as below:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">datacard</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="s2">"New Name"</span> +<span class="n">datacard</span><span class="o">.</span><span class="n">update</span><span class="p">()</span> +</pre></div> +</div> +</section> +<section id="Populating-the-datacard"> +<h3>Populating the datacard<a class="headerlink" href="#Populating-the-datacard" title="Link to this heading"></a></h3> +<p>When creating a datacard, first we need to generate an empty card using the <code class="docutils literal notranslate"><span class="pre">card_from_schema()</span></code> method. In this instance, we will use <strong>minimal-data-card-v10</strong>. You can manage custom schemas using the <code class="docutils literal notranslate"><span class="pre">Schema()</span></code> helper class, but this is out of scope for this demo.</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">datacard</span><span class="o">.</span><span class="n">card_from_schema</span><span class="p">(</span><span class="n">schema_id</span><span class="o">=</span><span class="s1">'minimal-data-card-v10'</span><span class="p">)</span> + +<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Datacard version is </span><span class="si">{</span><span class="n">datacard</span><span class="o">.</span><span class="n">data_card_version</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> +</pre></div> +</div> +</div> +<p>If successful, the above will have created a new datacard, and the <code class="docutils literal notranslate"><span class="pre">data_card_version</span></code> attribute should be set to 1.</p> +<p>Next, we can populate the data using the <code class="docutils literal notranslate"><span class="pre">update_data_card()</span></code> method. This can be used any time you want to make changes, and the backend will create a new datacard version each time. We’ll learn how to retrieve datacards later (either the latest, or a specific release).</p> +<p>NOTE: Your datacard must match the schema, otherwise an error will be thrown.</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">new_card</span> <span class="o">=</span> <span class="p">{</span> + <span class="s1">'overview'</span><span class="p">:</span> <span class="p">{</span> + <span class="s1">'storageLocation'</span><span class="p">:</span> <span class="s1">'S3'</span><span class="p">,</span> + <span class="p">}</span> +<span class="p">}</span> + +<span class="n">datacard</span><span class="o">.</span><span class="n">update_data_card</span><span class="p">(</span><span class="n">data_card</span><span class="o">=</span><span class="n">new_card</span><span class="p">)</span> + +<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Datacard version is </span><span class="si">{</span><span class="n">datacard</span><span class="o">.</span><span class="n">data_card_version</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> +</pre></div> +</div> +</div> +<p>If successful, the <code class="docutils literal notranslate"><span class="pre">data_card_version</span></code> will now be 2!</p> +</section> +</section> +<section id="Retrieving-an-existing-datacard"> +<h2>Retrieving an existing datacard<a class="headerlink" href="#Retrieving-an-existing-datacard" title="Link to this heading"></a></h2> +<section id="Using-the-.from_id()-method"> +<h3>Using the .from_id() method<a class="headerlink" href="#Using-the-.from_id()-method" title="Link to this heading"></a></h3> +<p>In this section, we’ll retrieve our previous datacard using the <code class="docutils literal notranslate"><span class="pre">Datacard.from_id()</span></code> classmethod. This will create your <code class="docutils literal notranslate"><span class="pre">Datacard()</span></code> object as before, but using existing information retrieved from the service.</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">datacard</span> <span class="o">=</span> <span class="n">Datacard</span><span class="o">.</span><span class="n">from_id</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> <span class="n">datacard_id</span><span class="o">=</span><span class="n">datacard_id</span><span class="p">)</span> + +<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Datacard description: </span><span class="si">{</span><span class="n">datacard</span><span class="o">.</span><span class="n">description</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</pre></div> +</div> +</div> +</section> +</section> +</section> + + + </div> + </div> + <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> + <a href="../access_requests_demo/" class="btn btn-neutral float-left" title="Managing Access Requests" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> + <a href="../experiment_tracking_demo/" class="btn btn-neutral float-right" title="Experiment Tracking with Bailo & MLFlow" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> + </div> + + <hr/> + + <div role="contentinfo"> + <p>© Copyright 2024, GCHQ.</p> + </div> + + Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a + <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> + provided by <a href="https://readthedocs.org">Read the Docs</a>. + + +</footer> + </div> + </div> + </section> + </div> + <script> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/backend/python-docs/_build/dirhtml/notebooks/experiment_tracking_demo/index.html b/backend/python-docs/_build/dirhtml/notebooks/experiment_tracking_demo/index.html index b4a706cea..af9616246 100644 --- a/backend/python-docs/_build/dirhtml/notebooks/experiment_tracking_demo/index.html +++ b/backend/python-docs/_build/dirhtml/notebooks/experiment_tracking_demo/index.html @@ -27,7 +27,7 @@ <link rel="index" title="Index" href="../../genindex/" /> <link rel="search" title="Search" href="../../search/" /> <link rel="next" title="Managing Models & Releases (ResNet-50 Example with PyTorch)" href="../models_and_releases_demo_pytorch/" /> - <link rel="prev" title="Managing Access Requests" href="../access_requests_demo/" /> + <link rel="prev" title="Managing Datacards" href="../datacards_demo/" /> </head> <body class="wy-body-for-nav"> @@ -61,6 +61,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul class="current"> <li class="toctree-l1"><a class="reference internal" href="../access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="#">Experiment Tracking with Bailo & MLFlow</a><ul> <li class="toctree-l2"><a class="reference internal" href="#Introduction">Introduction</a><ul> <li class="toctree-l3"><a class="reference internal" href="#Connecting-with-Bailo">Connecting with Bailo</a></li> @@ -298,7 +299,7 @@ <h2>Publishing results to Bailo<a class="headerlink" href="#Publishing-results-t </div> </div> <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> - <a href="../access_requests_demo/" class="btn btn-neutral float-left" title="Managing Access Requests" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> + <a href="../datacards_demo/" class="btn btn-neutral float-left" title="Managing Datacards" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> <a href="../models_and_releases_demo_pytorch/" class="btn btn-neutral float-right" title="Managing Models & Releases (ResNet-50 Example with PyTorch)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> </div> diff --git a/backend/python-docs/_build/dirhtml/notebooks/models_and_releases_demo_pytorch.ipynb b/backend/python-docs/_build/dirhtml/notebooks/models_and_releases_demo_pytorch.ipynb index 22faba3b3..8eacdfee8 100644 --- a/backend/python-docs/_build/dirhtml/notebooks/models_and_releases_demo_pytorch.ipynb +++ b/backend/python-docs/_build/dirhtml/notebooks/models_and_releases_demo_pytorch.ipynb @@ -56,8 +56,7 @@ "outputs": [], "source": [ "# LINUX - CPU\n", - "#! pip install bailo torch torchvision --index-url https://download.pytorch.org/whl/cpu\n", - "! pip install bailo\n", + "! pip install bailo torch torchvision --index-url https://download.pytorch.org/whl/cpu\n", "\n", "# MAC & WINDOWS - CPU\n", "#! pip install bailo torch torchvision" @@ -128,7 +127,7 @@ "source": [ "### Creating and populating a model card\n", "\n", - "When creating a model card, first we need to generate an empty one using the `card_from_schema()` method. In this instance, we will use **minimal-general-v10-beta**. You can manage custom schemas using the `Schema()` helper class, but this is out of scope for this demo." + "When creating a model card, first we need to generate an empty one using the `card_from_schema()` method. In this instance, we will use **minimal-general-v10**. You can manage custom schemas using the `Schema()` helper class, but this is out of scope for this demo." ] }, { @@ -272,12 +271,7 @@ "metadata": {}, "outputs": [], "source": [ - "#release_one.upload(path=\"resnet50_weights.pth\")\n", - "\n", - "release_one.upload(path=\"large_file.txt\")\n", - "\n", - "#with open(\"resnet50_weights.pth\", \"rb\") as f:\n", - " #release_one.upload(\"resnet50_weights.pth\", f)" + "release_one.upload(path=\"resnet50_weights.pth\")" ] }, { @@ -311,7 +305,9 @@ "source": [ "### Downloading weights from the release\n", "\n", - "Similarly you can also download files from release using a response object. In this case, we'll write them to a new file: **bailo_resnet50_weights.pth**." + "Similarly you can also download specific files from release using the `download()` method. In this case, we'll write them to a new file: **bailo_resnet50_weights.pth**. **NOTE**: `filename` refers to the filename on Bailo, and `path` is the local destination for your download.\n", + "\n", + "In addition to this, you can also use the `download_all()` method by providing a local directory path as `path`. By default, this will download all files, but you can provide `include` and `exclude` lists, e.g. `include=[\"*.txt\", \"*.json\"]` to only include TXT or JSON files. " ] }, { @@ -320,11 +316,8 @@ "metadata": {}, "outputs": [], "source": [ - "#res = release_latest.download(\"resnet50_weights.pth\")\n", - "res = release_latest.download(filename=\"resnet50_weights.pth\", path=\"bailo_resnet50_weights.pth\")\n", - "\n", - "#with open(\"bailo_resnet50_weights.pth\", \"wb\") as f:\n", - " #f.write(res.content)" + "#release_latest.download(filename=\"resnet50_weights.pth\", path=\"bailo_resnet50_weights.pth\")\n", + "release_latest.download_all(path=\"downloads\")" ] }, { diff --git a/backend/python-docs/_build/dirhtml/notebooks/models_and_releases_demo_pytorch/index.html b/backend/python-docs/_build/dirhtml/notebooks/models_and_releases_demo_pytorch/index.html index 647c2f15a..3c48b5bff 100644 --- a/backend/python-docs/_build/dirhtml/notebooks/models_and_releases_demo_pytorch/index.html +++ b/backend/python-docs/_build/dirhtml/notebooks/models_and_releases_demo_pytorch/index.html @@ -61,6 +61,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul class="current"> <li class="toctree-l1"><a class="reference internal" href="../access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="#">Managing Models & Releases (ResNet-50 Example with PyTorch)</a><ul> <li class="toctree-l2"><a class="reference internal" href="#Introduction">Introduction</a></li> @@ -142,8 +143,7 @@ <h2>Introduction<a class="headerlink" href="#Introduction" title="Link to this h </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># LINUX - CPU</span> -<span class="c1">#! pip install bailo torch torchvision --index-url https://download.pytorch.org/whl/cpu</span> -<span class="o">!</span><span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>bailo +<span class="o">!</span><span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>bailo<span class="w"> </span>torch<span class="w"> </span>torchvision<span class="w"> </span>--index-url<span class="w"> </span>https://download.pytorch.org/whl/cpu <span class="c1"># MAC & WINDOWS - CPU</span> <span class="c1">#! pip install bailo torch torchvision</span> @@ -194,7 +194,7 @@ <h3>Creating and updating the base model<a class="headerlink" href="#Creating-an </section> <section id="Creating-and-populating-a-model-card"> <h3>Creating and populating a model card<a class="headerlink" href="#Creating-and-populating-a-model-card" title="Link to this heading"></a></h3> -<p>When creating a model card, first we need to generate an empty one using the <code class="docutils literal notranslate"><span class="pre">card_from_schema()</span></code> method. In this instance, we will use <strong>minimal-general-v10-beta</strong>. You can manage custom schemas using the <code class="docutils literal notranslate"><span class="pre">Schema()</span></code> helper class, but this is out of scope for this demo.</p> +<p>When creating a model card, first we need to generate an empty one using the <code class="docutils literal notranslate"><span class="pre">card_from_schema()</span></code> method. In this instance, we will use <strong>minimal-general-v10</strong>. You can manage custom schemas using the <code class="docutils literal notranslate"><span class="pre">Schema()</span></code> helper class, but this is out of scope for this demo.</p> <div class="nbinput nblast docutils container"> <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: </pre></div> @@ -282,12 +282,7 @@ <h3>Uploading weights to the release<a class="headerlink" href="#Uploading-weigh <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: </pre></div> </div> -<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1">#release_one.upload(path="resnet50_weights.pth")</span> - -<span class="n">release_one</span><span class="o">.</span><span class="n">upload</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s2">"large_file.txt"</span><span class="p">)</span> - -<span class="c1">#with open("resnet50_weights.pth", "rb") as f:</span> - <span class="c1">#release_one.upload("resnet50_weights.pth", f)</span> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">release_one</span><span class="o">.</span><span class="n">upload</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s2">"resnet50_weights.pth"</span><span class="p">)</span> </pre></div> </div> </div> @@ -311,16 +306,14 @@ <h2>Retrieving a release<a class="headerlink" href="#Retrieving-a-release" title </div> <section id="Downloading-weights-from-the-release"> <h3>Downloading weights from the release<a class="headerlink" href="#Downloading-weights-from-the-release" title="Link to this heading"></a></h3> -<p>Similarly you can also download files from release using a response object. In this case, we’ll write them to a new file: <strong>bailo_resnet50_weights.pth</strong>.</p> +<p>Similarly you can also download specific files from release using the <code class="docutils literal notranslate"><span class="pre">download()</span></code> method. In this case, we’ll write them to a new file: <strong>bailo_resnet50_weights.pth</strong>. <strong>NOTE</strong>: <code class="docutils literal notranslate"><span class="pre">filename</span></code> refers to the filename on Bailo, and <code class="docutils literal notranslate"><span class="pre">path</span></code> is the local destination for your download.</p> +<p>In addition to this, you can also use the <code class="docutils literal notranslate"><span class="pre">download_all()</span></code> method by providing a local directory path as <code class="docutils literal notranslate"><span class="pre">path</span></code>. By default, this will download all files, but you can provide <code class="docutils literal notranslate"><span class="pre">include</span></code> and <code class="docutils literal notranslate"><span class="pre">exclude</span></code> lists, e.g. <code class="docutils literal notranslate"><span class="pre">include=["*.txt",</span> <span class="pre">"*.json"]</span></code> to only include TXT or JSON files.</p> <div class="nbinput nblast docutils container"> <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: </pre></div> </div> -<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1">#res = release_latest.download("resnet50_weights.pth")</span> -<span class="n">res</span> <span class="o">=</span> <span class="n">release_latest</span><span class="o">.</span><span class="n">download</span><span class="p">(</span><span class="n">filename</span><span class="o">=</span><span class="s2">"resnet50_weights.pth"</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="s2">"bailo_resnet50_weights.pth"</span><span class="p">)</span> - -<span class="c1">#with open("bailo_resnet50_weights.pth", "wb") as f:</span> - <span class="c1">#f.write(res.content)</span> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1">#release_latest.download(filename="resnet50_weights.pth", path="bailo_resnet50_weights.pth")</span> +<span class="n">release_latest</span><span class="o">.</span><span class="n">download_all</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s2">"downloads"</span><span class="p">)</span> </pre></div> </div> </div> diff --git a/backend/python-docs/_build/dirhtml/objects.inv b/backend/python-docs/_build/dirhtml/objects.inv index ee52974e20e46ae5de04d3dd2f3d9eb2b4e025fa..489cb22cb2c3435262291257702d2d587372a402 100644 GIT binary patch delta 12854 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 UDuI4`Dn8M-k1$jG7qdo`Ed@#OF#rGn delta 12430 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 MI0vx*3k3)hbe~IVdjJ3c diff --git a/backend/python-docs/_build/dirhtml/py-modindex/index.html b/backend/python-docs/_build/dirhtml/py-modindex/index.html index 028d1dd04..b5dc4b578 100644 --- a/backend/python-docs/_build/dirhtml/py-modindex/index.html +++ b/backend/python-docs/_build/dirhtml/py-modindex/index.html @@ -58,6 +58,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/schemas_demo/">Managing Schemas</a></li> @@ -128,6 +129,16 @@ <h1>Python Module Index</h1> <td>    <a href="../bailo.helper/#module-bailo.helper.access_request"><code class="xref">bailo.helper.access_request</code></a></td><td> <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>    + <a href="../bailo.helper/#module-bailo.helper.datacard"><code class="xref">bailo.helper.datacard</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>    + <a href="../bailo.helper/#module-bailo.helper.entry"><code class="xref">bailo.helper.entry</code></a></td><td> + <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    diff --git a/backend/python-docs/_build/dirhtml/search/index.html b/backend/python-docs/_build/dirhtml/search/index.html index ca70fcf8f..6c4cfa586 100644 --- a/backend/python-docs/_build/dirhtml/search/index.html +++ b/backend/python-docs/_build/dirhtml/search/index.html @@ -58,6 +58,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../notebooks/access_requests_demo/">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../notebooks/datacards_demo/">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/experiment_tracking_demo/">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/models_and_releases_demo_pytorch/">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/schemas_demo/">Managing Schemas</a></li> diff --git a/backend/python-docs/_build/dirhtml/searchindex.js b/backend/python-docs/_build/dirhtml/searchindex.js index a2778d6e3..49123dc95 100644 --- a/backend/python-docs/_build/dirhtml/searchindex.js +++ b/backend/python-docs/_build/dirhtml/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["bailo.core", "bailo.helper", "index", "notebooks/access_requests_demo", "notebooks/experiment_tracking_demo", "notebooks/models_and_releases_demo_pytorch", "notebooks/schemas_demo", "pre-commit-config", "pylint", "pyproject", "readme_link"], "filenames": ["bailo.core.rst", "bailo.helper.rst", "index.rst", "notebooks/access_requests_demo.ipynb", "notebooks/experiment_tracking_demo.ipynb", "notebooks/models_and_releases_demo_pytorch.ipynb", "notebooks/schemas_demo.ipynb", "pre-commit-config.md", "pylint.md", "pyproject.md", "readme_link.md"], "titles": ["bailo.core package", "bailo.helper package", "Welcome to Bailo\u2019s Python Client documentation!", "Managing Access Requests", "Experiment Tracking with Bailo & MLFlow", "Managing Models & Releases (ResNet-50 Example with PyTorch)", "Managing Schemas", "pre-commit-config.yaml", "A comma-separated list of package or module names from where C extensions may", "pypyroject.toml", "Bailo Python Client"], "terms": {"The": [0, 1, 3, 4, 5, 6, 7, 9, 10], "contain": [0, 4, 5, 9], "suppport": 0, "one": [0, 4, 5], "endpoint": [0, 3, 5, 6], "It": [0, 9], "i": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10], "recommend": 0, "us": [0, 1, 4, 7, 9, 10], "helper": [0, 2, 3, 5, 6], "most": [0, 4], "class": [0, 1, 3, 4, 5, 6], "agent": [0, 2, 3, 5, 6], "sourc": [0, 1], "base": [0, 1], "object": [0, 1, 3, 4, 5, 6], "api": [0, 10], "talk": 0, "wrap": 0, "each": [0, 5], "request": [0, 1, 2], "an": [0, 1], "except": 0, "handler": 0, "map": 0, "error": [0, 1, 5], "python": [0, 3, 5, 6, 7, 9], "among": 0, "statu": 0, "code": [0, 5, 7], "less": 0, "than": 0, "400": 0, "default": [0, 1, 3, 5, 6, 10], "timeout": [], "5": [1, 4, 6, 8], "second": [], "delet": [0, 1], "arg": [0, 8], "kwarg": 0, "get": [0, 1, 2], "patch": 0, "post": [0, 1], "push": 0, "put": 0, "pkiagent": [0, 2, 3, 5, 6], "cert": [0, 3, 5, 6], "str": [0, 1, 4], "kei": [0, 2, 3, 5, 6], "auth": [0, 3, 5, 6], "__init__": [0, 1], "initi": [0, 5], "pki": [0, 3, 5, 6], "authent": [0, 3, 5, 6], "paramet": [0, 1, 3, 4, 5, 6], "path": [0, 1, 5], "file": [0, 1, 5, 9, 10], "certif": 0, "author": 0, "tokenag": [0, 2], "access_kei": 0, "secret_kei": 0, "token": 0, "access": [0, 1, 2, 4], "secret": 0, "client": [0, 1, 3, 5, 6], "url": [0, 3, 4, 5, 6], "creat": [0, 1, 7, 10], "can": [0, 1, 3, 4, 5, 6, 7, 10], "websit": 0, "handl": [0, 3, 5, 6], "delete_access_request": 0, "model_id": [0, 1, 3, 5], "access_request_id": [0, 1, 3], "specif": [0, 1, 5], "associ": 0, "model": [0, 1, 2, 3, 4, 6, 10], "uniqu": [0, 1, 6], "id": [0, 1, 4], "return": [0, 1, 5, 6], "json": [0, 1, 6], "respons": [0, 1, 5], "delete_fil": 0, "file_id": 0, "delete_releas": 0, "release_vers": 0, "releas": [0, 1, 2, 4, 10], "version": [0, 1, 5, 10], "get_access_request": 0, "retriev": [0, 1], "given": [0, 1, 10], "its": 0, "all": [0, 1, 5, 10], "get_all_imag": 0, "imag": [0, 1, 5], "A": [0, 1, 3, 4, 5, 6, 10], "get_all_releas": 0, "get_all_schema": 0, "kind": [0, 1, 4, 6], "schemakind": [0, 1, 2, 4, 6], "none": [0, 1], "schema": [0, 1, 2, 5], "enum": [0, 1], "defin": [0, 4], "e": [0, 1, 3, 5, 6, 10], "g": [0, 1, 3, 5, 6], "accessrequest": [0, 1, 2, 3], "get_all_team": 0, "team": [0, 1], "get_download_by_filenam": 0, "semver": [0, 1], "filenam": [0, 1, 5], "download": [0, 1, 10], "try": 0, "from": [0, 1, 3, 6, 7, 10], "get_download_fil": 0, "": [0, 1], "get_fil": 0, "get_model": 0, "get_model_card": 0, "card": [0, 1, 4], "get_model_rol": 0, "role": [0, 1, 2], "get_model_user_rol": 0, "current": [0, 1, 9], "user": [0, 1, 3, 7], "task": 0, "librari": [0, 5], "list": [0, 1], "filter": 0, "search": 0, "find": [0, 6], "provid": [0, 1, 2, 4], "term": 0, "classif": [0, 5], "tensorflow": 0, "custom": [0, 5], "string": [0, 1, 6], "locat": [0, 1, 4], "get_releas": [0, 1, 5], "get_review": 0, "activ": 0, "bool": [0, 1, 8], "review": [0, 1], "within": [0, 1, 2, 3, 4, 5, 6, 10], "boolean": 0, "repres": [0, 1, 5], "get_schema": 0, "schema_id": [0, 1, 3, 4, 5, 6], "get_team": 0, "team_id": [0, 1, 3, 4, 5, 10], "get_user_team": 0, "model_card_from_schema": 0, "patch_access_request": 0, "metadata": [0, 1, 3], "ani": [0, 1, 3, 4, 5, 6], "updat": [0, 1, 3], "patch_model": 0, "name": [0, 1, 3, 4, 5, 6, 10], "descript": [0, 1, 3, 4, 5, 6, 10], "visibl": [0, 1, 5], "public": [0, 1], "privat": [0, 1], "patch_team": 0, "post_access_request": 0, "post_model": 0, "modelvis": [0, 1, 2], "post_releas": 0, "note": [0, 1, 4, 5, 6, 10], "model_card_vers": [0, 1, 5], "int": [0, 1, 8], "minor": [0, 1, 5], "fals": [0, 1, 6], "draft": [0, 1, 6], "new": [0, 1, 10], "signifi": 0, "post_review": 0, "decis": 0, "comment": 0, "semant": [0, 1], "make": [0, 1, 5, 10], "either": [0, 1, 5, 10], "approv": 0, "chang": [0, 1, 5], "go": 0, "post_schema": 0, "json_schema": [0, 1, 4, 6], "dict": [0, 1], "post_team": 0, "put_model_card": 0, "latest": [0, 1, 5], "put_releas": 0, "simple_upload": 0, "buffer": 0, "bytesio": [0, 1, 5], "simpl": [0, 10], "upload": [0, 1, 10], "valu": [0, 1], "whether": [0, 1], "publicli": 0, "model_senior_responsible_offic": 0, "msro": 0, "model_technical_review": 0, "mtr": 0, "owner": 0, "type": [0, 5, 6], "access_request": [0, 1, 3], "bailoexcept": [0, 2], "gener": [0, 3, 5, 6, 7, 10], "responseexcept": [0, 2], "gave": 0, "created_bi": 1, "being": 1, "made": 1, "thi": [1, 2, 3, 4, 5, 6, 9, 10], "ha": 1, "been": [1, 4], "classmethod": [1, 3, 5, 6, 8], "interact": [1, 2, 3, 5, 6], "messag": [1, 5], "confirm": 1, "remov": 1, "from_id": 1, "exist": [1, 3], "state": 1, "experi": [1, 2], "local": [1, 3, 4, 5, 6], "which": [1, 3, 4, 5, 6, 7], "run": [1, 3, 5, 6, 10], "raw": 1, "inform": [1, 3, 5, 6], "about": 1, "create_experi": [1, 4], "x": [1, 4], "rang": [1, 4], "start_run": [1, 4], "log_param": [1, 4], "lr": [1, 4], "0": [1, 3, 4, 5, 6, 10], "01": [1, 3, 4], "insert": [1, 3, 4, 5, 6], "train": [1, 4], "here": [1, 10], "log_metr": [1, 4], "accuraci": [1, 4], "86": [1, 4], "log_artifact": [1, 4], "weight": [1, 4], "pth": [1, 5], "publish": [1, 9], "mc_loc": [1, 4], "perform": [1, 4, 7], "performancemetr": [1, 4], "run_id": [1, 4], "1": [1, 3, 4, 5, 6, 10], "from_mlflow": [1, 4], "tracking_uri": [1, 4], "experiment_id": [1, 4], "import": [1, 3, 5, 6, 10], "mlflow": [1, 2], "track": [1, 2], "server": [1, 4], "uri": [1, 4], "rais": 1, "importerror": 1, "instal": [1, 2, 4, 5], "artifact": [1, 4], "log": [1, 4], "log_dataset": 1, "dataset": 1, "arbitrari": [1, 4], "titl": [1, 6], "metric": [1, 4], "dictionari": 1, "param": [1, 4], "result": 1, "select": [1, 5], "present": 1, "next": [1, 4, 5], "depend": [1, 4, 7], "is_mlflow": 1, "start": [1, 2], "mark": 1, "card_from_model": 1, "copi": 1, "differ": [1, 5], "yet": 1, "implement": 1, "notimplementederror": 1, "Not": 1, "card_from_schema": [1, 4, 5, 10], "card_from_templ": 1, "templat": 1, "build": [1, 7, 9], "create_releas": [1, 5, 10], "true": [1, 6], "call": [1, 3, 5], "method": [1, 4], "get_card_latest": 1, "get_card_revis": 1, "revis": 1, "get_imag": 1, "refer": 1, "get_latest_releas": [1, 5], "from_vers": 1, "get_rol": 1, "get_user_rol": 1, "summari": [1, 6], "update_model_card": [1, 4, 5], "model_card": [1, 4, 5], "If": [1, 4, 5, 10], "attribut": [1, 3, 5], "option": [1, 9], "ar": [1, 3, 4, 5, 6, 7, 9, 10], "store": 1, "write": [1, 5], "give": 1, "read": 1, "determin": 1, "disk": [1, 5], "set": [1, 5], "data": 1, "directori": [1, 10], "load": 1, "zip": 1, "ecosystem": 2, "manag": 2, "lifecycl": [2, 4], "machin": [2, 4], "learn": [2, 4, 5], "support": [2, 3, 4, 5, 6], "featur": 2, "develop": 2, "core": [2, 3, 4, 5, 6], "resnet": 2, "50": [2, 8], "exampl": [2, 3, 4, 6, 9], "pytorch": 2, "bailo": [3, 6], "enabl": [3, 5, 6], "intuit": [3, 5, 6], "servic": [3, 4, 5, 6], "environ": [3, 4, 5, 6], "notebook": [3, 4, 5, 6], "through": [3, 4, 5, 6], "follow": [3, 4, 5, 6, 10], "concept": [3, 4, 5, 6], "prerequisit": [3, 4, 5, 6], "3": [3, 4, 5, 6, 10], "8": [3, 4, 5, 6, 8, 10], "higher": [3, 4, 5, 6, 10], "includ": [3, 4, 5, 6, 7, 9], "demo": [3, 4, 5, 6], "remot": [3, 4, 5, 6], "see": [3, 4, 5, 6], "http": [3, 4, 5, 6, 8, 10], "github": [3, 4, 5, 6], "com": [3, 4, 5, 6], "gchq": [3, 4, 5, 6], "split": [3, 5, 6, 10], "two": [3, 5, 6], "sub": [3, 5, 6], "packag": [3, 5, 6, 7, 9], "For": [3, 5, 6], "direct": [3, 5, 6], "more": [3, 4, 5, 6], "oper": [3, 5, 6], "In": [3, 4, 5, 6, 7, 10], "order": [3, 4, 5, 6, 10], "you": [3, 4, 5, 6, 10], "first": [3, 4, 5, 6], "need": [3, 4, 5, 6], "instanti": [3, 4, 5, 6], "By": [3, 5, 6], "howev": [3, 5, 6], "also": [3, 4, 5, 6, 9], "pass": [3, 5, 6], "when": [3, 5, 6, 9], "necessari": [3, 4, 5, 6], "statement": [3, 4, 5, 6], "127": [3, 4, 5, 6], "8080": [3, 4, 5, 6, 10], "host": [3, 4, 5, 6], "section": [3, 4, 5, 6, 10], "we": [3, 4, 5, 6], "ll": [3, 4, 5, 6], "On": [3, 5, 6], "must": [3, 4, 5, 6], "consist": [3, 5, 6], "least": [3, 5], "upon": [3, 5, 6], "creation": [3, 5, 6], "These": [3, 5, 6, 7], "below": [3, 5, 6], "befor": [3, 4, 5, 6], "our": [3, 4, 5, 6], "yolov5": [3, 4], "detect": [3, 4], "uncategoris": [3, 4, 5, 10], "overview": [3, 4, 5, 6], "entiti": 3, "test": [3, 6, 9], "enddat": 3, "1970": 3, "minim": [3, 5, 10], "v10": [3, 5, 10], "previou": [3, 4, 5, 6], "your": [3, 4, 5, 6], "edit": 3, "directli": [3, 4, 5], "demonstr": [3, 4, 5], "new_metadata": 3, "newnam": 3, "simpli": 3, "addit": 4, "cover": 4, "offer": 4, "integr": [4, 5, 10], "might": 4, "wider": 4, "particular": 4, "complet": 4, "basic": [4, 8], "models_and_releases_demo_pytorch": 4, "ipynb": 4, "step": [4, 5], "have": [4, 5], "thu": 4, "too": [4, 5, 6], "how": [4, 5], "do": [4, 5, 6], "time": [4, 5], "later": [4, 5], "pip": [4, 5, 10], "random": [4, 6], "element": 4, "tutori": 4, "instanc": [4, 5, 6], "sampl": 4, "actual": 4, "onli": [4, 7, 9, 10], "function": [4, 6], "ui": 4, "command": [4, 5], "line": 4, "typic": [4, 6], "localhost": [4, 10], "5000": [4, 6], "browser": 4, "design": [4, 8], "displai": [4, 5], "wai": 4, "therefor": 4, "extern": 4, "script": 4, "quit": 4, "larg": 4, "set_schema": 4, "py": [4, 8, 9], "assign": [4, 5], "randint": 4, "1000000": 4, "mandatori": 4, "field": 4, "new_card": [4, 5], "tag": [4, 5, 6], "modelsummari": [4, 5], "work": [4, 10], "sequenti": 4, "so": 4, "re": [4, 5], "parallel": 4, "would": [4, 6], "better": 4, "anchor_t": 4, "4": [4, 5], "scale": 4, "98": 4, "txt": [4, 5], "2": [4, 5], "set_tracking_uri": 4, "set_experi": 4, "demonst": 4, "same": [4, 5], "set_tag": 4, "info": 4, "As": 4, "previous": 4, "mention": 4, "experiment_mlflow": 4, "BE": 4, "found": 4, "ON": 4, "THE": 4, "becaus": 4, "intend": 4, "success": [4, 5], "specifi": 4, "well": 4, "case": [4, 5], "per": 4, "earlier": [4, 5], "should": [4, 5], "now": [4, 5], "under": 4, "tab": 4, "addition": 4, "relev": 5, "linux": 5, "cpu": 5, "torch": [5, 8], "torchvis": 5, "index": 5, "org": [5, 6], "whl": 5, "mac": 5, "window": [5, 10], "resnet50": 5, "resnet50_weight": 5, "other": [5, 6, 10], "like": 5, "ad": 5, "backend": [5, 10], "mai": [5, 9, 10], "relai": 5, "empti": 5, "beta": [5, 10], "out": 5, "scope": 5, "print": 5, "f": [5, 10], "abov": 5, "want": 5, "match": 5, "otherwis": 5, "thrown": 5, "adjust": 5, "don": 5, "t": 5, "drastic": 5, "behaviour": 5, "separ": 5, "itself": 5, "release_on": 5, "save": 5, "them": 5, "take": 5, "allow": 5, "u": 5, "without": 5, "up": 5, "space": 5, "torch_model": 5, "state_dict": 5, "To": 5, "content": [5, 10], "last": 5, "s3": 5, "large_fil": 5, "open": [5, 10], "rb": 5, "altern": 5, "both": [5, 9], "release_latest": 5, "successfulli": 5, "ident": 5, "similarli": 5, "bailo_resnet50_weight": 5, "wb": 5, "final": 5, "ve": 5, "load_state_dict": 5, "init": 5, "identifi": 6, "suffic": 6, "reserv": 6, "administr": 6, "def": 6, "random_gener": 6, "n": [6, 8], "10": 6, "join": 6, "choic": [6, 8], "ascii_uppercas": 6, "digit": 6, "k": [6, 8], "07": 6, "properti": 6, "modeloverview": 6, "what": 6, "doe": 6, "minlength": 6, "maxlength": 6, "searchabl": 6, "help": [6, 7], "arrai": 6, "widget": 6, "tagselectorbeta": 6, "item": 6, "uniqueitem": 6, "requir": [6, 9, 10], "additionalproperti": 6, "git": [7, 10], "hook": [7, 8], "scan": 7, "prior": 7, "checkin": 7, "configur": [7, 9], "focus": 7, "action": 7, "prevent": 7, "fail": 7, "dure": 7, "format": 7, "automat": 7, "auto": 7, "black": 7, "sort": 7, "isort": 7, "lint": [7, 9], "left": 7, "discret": 7, "master": 8, "pkg": 8, "whitelist": 8, "numpi": 8, "cv2": 8, "pyodbc": 8, "pydant": 8, "ciso8601": 8, "netcdf4": 8, "scipi": 8, "cv": 8, "conftest": 8, "setrecursionlimit": 8, "getrecursionlimit": 8, "job": 8, "100": 8, "persist": 8, "ye": 8, "rcfile": 8, "mode": 8, "unsaf": 8, "float": 8, "_": 8, "msg": 8, "max": 8, "exit": 8, "snake_cas": 8, "rgx": 8, "foo": 8, "bar": 8, "baz": 8, "toto": 8, "tutu": 8, "tata": 8, "pascalcas": 8, "upper_cas": 8, "min": 8, "j": 8, "ex": 8, "df": 8, "ax": 8, "group": 8, "long": 8, "after": 8, "paren": 8, "120": 8, "1000": 8, "stmt": 8, "miscellan": 8, "fixm": 8, "xxx": 8, "todo": 8, "9": 8, "jump": 8, "typecheck": 8, "np": 8, "pyspark": 8, "sql": 8, "collect_list": 8, "optpars": 8, "thread": 8, "_local": 8, "_thread": 8, "swagger_cli": 8, "mutat": 8, "dbutil": 8, "cb_": 8, "_cb": 8, "za": 8, "z0": 8, "9_": 8, "unused_": 8, "six": 8, "move": 8, "past": 8, "futur": [8, 9], "io": 8, "setup": [8, 9], "post_init": 8, "_asdict": 8, "_field": 8, "_replac": 8, "_sourc": 8, "_make": 8, "cl": 8, "7": 8, "expr": 8, "12": 8, "15": 8, "20": 8, "6": 8, "tkinter": 8, "tix": 8, "ext": 8, "known": 8, "azureiai": 8, "logist": 8, "inventoryplan": 8, "overgener": 8, "pyproject": 9, "main": 9, "project": 9, "replac": 9, "flit": 9, "poetri": 9, "consid": 9, "viabl": 9, "setuptool": 9, "cfg": 9, "still": 9, "wrapper": 10, "tabl": 10, "binari": 10, "yolo": 10, "yolov4": 10, "look": 10, "onc": 10, "my_releas": 10, "onnx": 10, "documen": 10, "render": 10, "sphinx": 10, "serv": 10, "doc": 10, "html": 10, "bat": 10, "alreadi": 10, "prompt": 10, "overwrit": 10, "huski": 10, "instruct": 10, "cli": 10, "pre": 10, "commit": 10, "pytest": 10, "ran": 10, "accordingli": 10, "categori": 10, "autom": 10, "purpos": 10, "sure": 10, "m": 10}, "objects": {"": [[2, 0, 0, "-", "bailo"]], "bailo.core": [[0, 0, 0, "-", "agent"], [0, 0, 0, "-", "client"], [0, 0, 0, "-", "enums"], [0, 0, 0, "-", "exceptions"]], "bailo.core.agent": [[0, 1, 1, "", "Agent"], [0, 1, 1, "", "PkiAgent"], [0, 1, 1, "", "TokenAgent"]], "bailo.core.agent.Agent": [[0, 2, 1, "", "delete"], [0, 2, 1, "", "get"], [0, 2, 1, "", "patch"], [0, 2, 1, "", "post"], [0, 2, 1, "", "push"], [0, 2, 1, "", "put"]], "bailo.core.agent.PkiAgent": [[0, 2, 1, "", "__init__"], [0, 2, 1, "", "delete"], [0, 2, 1, "", "get"], [0, 2, 1, "", "patch"], [0, 2, 1, "", "post"], [0, 2, 1, "", "put"]], "bailo.core.agent.TokenAgent": [[0, 2, 1, "", "__init__"], [0, 2, 1, "", "delete"], [0, 2, 1, "", "get"], [0, 2, 1, "", "patch"], [0, 2, 1, "", "post"], [0, 2, 1, "", "put"]], "bailo.core.client": [[0, 1, 1, "", "Client"]], "bailo.core.client.Client": [[0, 2, 1, "", "delete_access_request"], [0, 2, 1, "", "delete_file"], [0, 2, 1, "", "delete_release"], [0, 2, 1, "", "get_access_request"], [0, 2, 1, "", "get_access_requests"], [0, 2, 1, "", "get_all_images"], [0, 2, 1, "", "get_all_releases"], [0, 2, 1, "", "get_all_schemas"], [0, 2, 1, "", "get_all_teams"], [0, 2, 1, "", "get_download_by_filename"], [0, 2, 1, "", "get_download_file"], [0, 2, 1, "", "get_files"], [0, 2, 1, "", "get_model"], [0, 2, 1, "", "get_model_card"], [0, 2, 1, "", "get_model_roles"], [0, 2, 1, "", "get_model_user_roles"], [0, 2, 1, "", "get_models"], [0, 2, 1, "", "get_release"], [0, 2, 1, "", "get_reviews"], [0, 2, 1, "", "get_schema"], [0, 2, 1, "", "get_team"], [0, 2, 1, "", "get_user_teams"], [0, 2, 1, "", "model_card_from_schema"], [0, 2, 1, "", "patch_access_request"], [0, 2, 1, "", "patch_model"], [0, 2, 1, "", "patch_team"], [0, 2, 1, "", "post_access_request"], [0, 2, 1, "", "post_model"], [0, 2, 1, "", "post_release"], [0, 2, 1, "", "post_review"], [0, 2, 1, "", "post_schema"], [0, 2, 1, "", "post_team"], [0, 2, 1, "", "put_model_card"], [0, 2, 1, "", "put_release"], [0, 2, 1, "", "simple_upload"]], "bailo.core.enums": [[0, 1, 1, "", "ModelVisibility"], [0, 1, 1, "", "Role"], [0, 1, 1, "", "SchemaKind"]], "bailo.core.enums.ModelVisibility": [[0, 3, 1, "", "PRIVATE"], [0, 3, 1, "", "PUBLIC"]], "bailo.core.enums.Role": [[0, 3, 1, "", "MODEL_SENIOR_RESPONSIBLE_OFFICER"], [0, 3, 1, "", "MODEL_TECHNICAL_REVIEWER"], [0, 3, 1, "", "OWNER"]], "bailo.core.enums.SchemaKind": [[0, 3, 1, "", "ACCESS_REQUEST"], [0, 3, 1, "", "MODEL"]], "bailo.core.exceptions": [[0, 4, 1, "", "BailoException"], [0, 4, 1, "", "ResponseException"]], "bailo.helper": [[1, 0, 0, "-", "access_request"], [1, 0, 0, "-", "model"], [1, 0, 0, "-", "release"], [1, 0, 0, "-", "schema"]], "bailo.helper.access_request": [[1, 1, 1, "", "AccessRequest"]], "bailo.helper.access_request.AccessRequest": [[1, 2, 1, "", "create"], [1, 2, 1, "", "delete"], [1, 2, 1, "", "from_id"], [1, 2, 1, "", "update"]], "bailo.helper.model": [[1, 1, 1, "", "Experiment"], [1, 1, 1, "", "Model"]], "bailo.helper.model.Experiment": [[1, 2, 1, "", "create"], [1, 2, 1, "", "from_mlflow"], [1, 2, 1, "", "log_artifacts"], [1, 2, 1, "", "log_dataset"], [1, 2, 1, "", "log_metrics"], [1, 2, 1, "", "log_params"], [1, 2, 1, "", "publish"], [1, 2, 1, "", "start_run"]], "bailo.helper.model.Model": [[1, 2, 1, "", "card_from_model"], [1, 2, 1, "", "card_from_schema"], [1, 2, 1, "", "card_from_template"], [1, 2, 1, "", "create"], [1, 2, 1, "", "create_experiment"], [1, 2, 1, "", "create_release"], [1, 2, 1, "", "from_id"], [1, 2, 1, "", "get_card_latest"], [1, 2, 1, "", "get_card_revision"], [1, 2, 1, "", "get_image"], [1, 2, 1, "", "get_images"], [1, 2, 1, "", "get_latest_release"], [1, 2, 1, "", "get_release"], [1, 2, 1, "", "get_releases"], [1, 2, 1, "", "get_roles"], [1, 2, 1, "", "get_user_roles"], [1, 2, 1, "", "update"], [1, 2, 1, "", "update_model_card"]], "bailo.helper.release": [[1, 1, 1, "", "Release"]], "bailo.helper.release.Release": [[1, 2, 1, "", "__init__"], [1, 2, 1, "", "create"], [1, 2, 1, "", "delete"], [1, 2, 1, "", "download"], [1, 2, 1, "", "from_version"], [1, 2, 1, "", "update"], [1, 2, 1, "", "upload"]], "bailo.helper.schema": [[1, 1, 1, "", "Schema"]], "bailo.helper.schema.Schema": [[1, 2, 1, "", "create"], [1, 2, 1, "", "from_id"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:exception"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "exception", "Python exception"]}, "titleterms": {"bailo": [0, 1, 2, 4, 5, 10], "core": 0, "packag": [0, 1, 2, 8, 10], "helper": 1, "welcom": 2, "": [2, 8], "python": [2, 4, 8, 10], "client": [2, 4, 10], "document": [2, 10], "notebook": 2, "manag": [3, 5, 6, 8], "access": [3, 8], "request": 3, "introduct": [3, 4, 5, 6], "creat": [3, 4, 5, 6, 8], "new": [3, 4, 5, 6, 8], "retriev": [3, 5, 6], "an": [3, 4, 5, 6, 8], "us": [3, 5, 6, 8], "from_id": [3, 5, 6], "method": [3, 5, 6, 8], "make": [3, 8], "chang": [3, 8], "delet": 3, "experi": 4, "track": 4, "mlflow": 4, "connect": 4, "set": [4, 8], "up": [4, 8], "prepar": [4, 5], "custom": 4, "schema": [4, 6], "conduct": 4, "run": [4, 8], "dummi": [4, 8], "import": [4, 8], "exist": [4, 5, 6, 8], "from": [4, 5, 8], "publish": 4, "result": [4, 8], "model": 5, "releas": 5, "resnet": 5, "50": 5, "exampl": [5, 8], "pytorch": 5, "updat": 5, "base": [5, 8], "popul": 5, "card": 5, "weight": 5, "upload": 5, "download": 5, "load": [5, 8], "pre": 7, "commit": 7, "config": 7, "yaml": 7, "A": 8, "comma": 8, "separ": 8, "list": 8, "modul": 8, "name": 8, "where": 8, "c": 8, "extens": 8, "mai": 8, "ar": 8, "activ": 8, "interpret": 8, "arbitrari": 8, "code": 8, "add": [8, 10], "file": 8, "directori": 8, "blacklist": 8, "thei": 8, "should": 8, "path": 8, "match": 8, "regex": 8, "pattern": 8, "The": 8, "against": 8, "execut": 8, "usual": 8, "sy": 8, "manipul": 8, "pygtk": 8, "requir": 8, "multipl": 8, "process": 8, "speed": 8, "pylint": 8, "specifi": 8, "0": 8, "auto": 8, "detect": 8, "number": 8, "processor": 8, "avail": 8, "control": 8, "amount": 8, "potenti": 8, "infer": 8, "valu": 8, "when": 8, "singl": 8, "object": 8, "thi": 8, "can": 8, "help": 8, "perform": 8, "deal": 8, "larg": 8, "function": 8, "complex": 8, "nest": 8, "condit": 8, "plugin": 8, "regist": 8, "addit": 8, "checker": 8, "pickl": 8, "collect": 8, "data": 8, "later": 8, "comparison": 8, "configur": 8, "enabl": 8, "would": 8, "attempt": 8, "guess": 8, "common": 8, "misconfigur": 8, "emit": 8, "user": 8, "friendli": 8, "hint": 8, "instead": 8, "fals": 8, "posit": 8, "error": 8, "messag": 8, "allow": 8, "onli": 8, "show": 8, "warn": 8, "confid": 8, "level": 8, "leav": 8, "empti": 8, "all": 8, "valid": 8, "high": 8, "inference_failur": 8, "undefin": 8, "disabl": 8, "report": 8, "categori": 8, "given": 8, "id": 8, "you": 8, "either": 8, "give": 8, "identifi": 8, "put": 8, "option": 8, "time": 8, "command": 8, "line": 8, "appear": 8, "onc": 8, "also": 8, "everyth": 8, "first": 8, "reenabl": 8, "specif": 8, "check": 8, "For": 8, "want": 8, "similar": 8, "If": 8, "class": 8, "have": 8, "displai": 8, "w": 8, "see": 8, "express": 8, "which": 8, "return": 8, "score": 8, "less": 8, "than": 8, "equal": 8, "10": 8, "variabl": 8, "refactor": 8, "convent": 8, "contain": 8, "each": 8, "well": 8, "statement": 8, "i": 8, "total": 8, "analyz": 8, "global": 8, "evalu": 8, "rp0004": 8, "templat": 8, "style": 8, "format": 8, "string": 8, "inform": 8, "doc": 8, "detail": 8, "output": 8, "text": 8, "parseabl": 8, "color": 8, "json": 8, "msv": 8, "visual": 8, "studio": 8, "e": 8, "g": 8, "mypackag": 8, "mymodul": 8, "myreporterclass": 8, "tell": 8, "whether": 8, "full": 8, "maximum": 8, "block": 8, "bodi": 8, "complet": 8, "never": 8, "inconsist": 8, "call": 8, "consid": 8, "explicit": 8, "print": 8, "correct": 8, "argument": 8, "regular": 8, "overrid": 8, "attribut": 8, "attr": 8, "bad": 8, "alwai": 8, "refus": 8, "constant": 8, "const": 8, "minimum": 8, "length": 8, "docstr": 8, "shorter": 8, "ones": 8, "exempt": 8, "good": 8, "accept": 8, "includ": 8, "invalid": 8, "inlin": 8, "iter": 8, "inlinevar": 8, "colon": 8, "delimit": 8, "determin": 8, "other": 8, "sever": 8, "do": 8, "decor": 8, "produc": 8, "properti": 8, "abc": 8, "abstractproperti": 8, "These": 8, "taken": 8, "consider": 8, "expect": 8, "end": 8, "ani": 8, "lf": 8, "crlf": 8, "regexp": 8, "longer": 8, "limit": 8, "space": 8, "indent": 8, "insid": 8, "hang": 8, "continu": 8, "unit": 8, "4": 8, "t": 8, "1": 8, "tab": 8, "charact": 8, "construct": 8, "whitespac": 8, "dict": 8, "tabul": 8, "etc": 8, "n222": 8, "2": 8, "trail": 8, "between": 8, "close": 8, "bracket": 8, "same": 8, "declar": 8, "test": [8, 10], "els": 8, "log": 8, "old": 8, "mean": 8, "fstr": 8, "f": 8, "paramet": 8, "note": 8, "tag": 8, "take": 8, "ignor": 8, "comment": 8, "comput": 8, "count": 8, "suggest": 8, "spell": 8, "mistak": 8, "dictionari": 8, "none": 8, "To": 8, "work": 8, "instal": [8, 10], "enchant": 8, "word": 8, "privat": 8, "one": 8, "per": 8, "store": 8, "unknown": 8, "rais": 8, "flag": 8, "implicit": 8, "str": 8, "concat": 8, "sequenc": 8, "gener": 8, "concaten": 8, "defin": 8, "over": 8, "context": 8, "contextlib": 8, "contextmanag": 8, "member": 8, "dynam": 8, "miss": 8, "system": 8, "so": 8, "shouldn": 8, "trigger": 8, "e1101": 8, "mixin": 8, "its": 8, "case": 8, "insensit": 8, "about": 8, "owner": 8, "whenev": 8, "opaqu": 8, "while": 8, "some": 8, "branch": 8, "might": 8, "partial": 8, "In": 8, "still": 8, "rest": 8, "support": 8, "qualifi": 8, "project": 8, "namespac": 8, "dure": 8, "runtim": 8, "thu": 8, "cannot": 8, "deduc": 8, "static": 8, "analysi": 8, "It": 8, "unix": 8, "possibl": 8, "wa": 8, "found": 8, "aspect": 8, "find": 8, "edit": 8, "distanc": 8, "order": 8, "signatur": 8, "suppos": 8, "builtin": 8, "rememb": 8, "avoid": 8, "unus": 8, "treat": 8, "violat": 8, "callback": 8, "must": 8, "start": [8, 10], "those": 8, "default": 8, "lead": 8, "underscor": 8, "we": 8, "init": 8, "redefin": 8, "assign": 8, "instanc": 8, "exclud": 8, "protect": 8, "metaclass": 8, "r0902": 8, "boolean": 8, "r0916": 8, "local": [8, 10], "parent": 8, "r0901": 8, "public": 8, "r0904": 8, "yield": 8, "r0903": 8, "just": 8, "top": 8, "wildcard": 8, "analys": 8, "fallback": 8, "both": 8, "3": 8, "compat": 8, "anoth": 8, "deprec": 8, "graph": 8, "extern": 8, "depend": 8, "rp0402": 8, "everi": 8, "intern": 8, "forc": 8, "recogn": 8, "part": 8, "standard": 8, "librari": 8, "third": 8, "parti": 8, "coupl": 8, "prefer": 8, "except": 8, "being": 8, "caught": 8, "baseexcept": 8, "pypyroject": 9, "toml": 9, "kei": 10, "featur": 10, "get": 10, "build": 10, "develop": 10, "precommit": 10}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "nbsphinx": 4, "sphinx": 60}, "alltitles": {"Managing Access Requests": [[3, "Managing-Access-Requests"]], "Introduction": [[3, "Introduction"], [6, "Introduction"], [4, "Introduction"], [5, "Introduction"]], "Creating a new access request": [[3, "Creating-a-new-access-request"]], "Retrieving an access request": [[3, "Retrieving-an-access-request"]], "Using the .from_id() method": [[3, "Using-the-.from_id()-method"], [6, "Using-the-.from_id()-method"], [5, "Using-the-.from_id()-method"]], "Making changes to an access request": [[3, "Making-changes-to-an-access-request"]], "Deleting an access request": [[3, "Deleting-an-access-request"]], "Managing Schemas": [[6, "Managing-Schemas"]], "Creating a new schema": [[6, "Creating-a-new-schema"]], "Retrieving an existing schema": [[6, "Retrieving-an-existing-schema"]], "pre-commit-config.yaml": [[7, "pre-commit-config-yaml"]], "A comma-separated list of package or module names from where C extensions may": [[8, "a-comma-separated-list-of-package-or-module-names-from-where-c-extensions-may"]], "be loaded. Extensions are loading into the active Python interpreter and may": [[8, "be-loaded-extensions-are-loading-into-the-active-python-interpreter-and-may"]], "run arbitrary code.": [[8, "run-arbitrary-code"]], "Add files or directories to the blacklist. They should be base names, not": [[8, "add-files-or-directories-to-the-blacklist-they-should-be-base-names-not"]], "paths.": [[8, "paths"]], "Add files or directories matching the regex patterns to the blacklist. The": [[8, "add-files-or-directories-matching-the-regex-patterns-to-the-blacklist-the"]], "regex matches against base names, not paths.": [[8, "regex-matches-against-base-names-not-paths"]], "Python code to execute, usually for sys.path manipulation such as": [[8, "python-code-to-execute-usually-for-sys-path-manipulation-such-as"]], "pygtk.require().": [[8, "pygtk-require"]], "Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the": [[8, "use-multiple-processes-to-speed-up-pylint-specifying-0-will-auto-detect-the"]], "number of processors available to use.": [[8, "number-of-processors-available-to-use"]], "Control the amount of potential inferred values when inferring a single": [[8, "control-the-amount-of-potential-inferred-values-when-inferring-a-single"]], "object. This can help the performance when dealing with large functions or": [[8, "object-this-can-help-the-performance-when-dealing-with-large-functions-or"]], "complex, nested conditions.": [[8, "complex-nested-conditions"]], "List of plugins (as comma separated values of python module names) to load,": [[8, "list-of-plugins-as-comma-separated-values-of-python-module-names-to-load"]], "usually to register additional checkers.": [[8, "usually-to-register-additional-checkers"]], "Pickle collected data for later comparisons.": [[8, "pickle-collected-data-for-later-comparisons"]], "Specify a configuration file.": [[8, "specify-a-configuration-file"]], "When enabled, pylint would attempt to guess common misconfiguration and emit": [[8, "when-enabled-pylint-would-attempt-to-guess-common-misconfiguration-and-emit"]], "user-friendly hints instead of false-positive error messages.": [[8, "user-friendly-hints-instead-of-false-positive-error-messages"]], "Allow loading of arbitrary C extensions. Extensions are imported into the": [[8, "allow-loading-of-arbitrary-c-extensions-extensions-are-imported-into-the"]], "active Python interpreter and may run arbitrary code.": [[8, "active-python-interpreter-and-may-run-arbitrary-code"]], "Only show warnings with the listed confidence levels. Leave empty to show": [[8, "only-show-warnings-with-the-listed-confidence-levels-leave-empty-to-show"]], "all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED.": [[8, "all-valid-levels-high-inference-inference-failure-undefined"]], "Disable the message, report, category or checker with the given id(s). You": [[8, "disable-the-message-report-category-or-checker-with-the-given-id-s-you"]], "can either give multiple identifiers separated by comma (,) or put this": [[8, "can-either-give-multiple-identifiers-separated-by-comma-or-put-this"]], "option multiple times (only on the command line, not in the configuration": [[8, "option-multiple-times-only-on-the-command-line-not-in-the-configuration"]], "file where it should appear only once). You can also use \u201c\u2013disable=all\u201d to": [[8, "file-where-it-should-appear-only-once-you-can-also-use-disable-all-to"]], "disable everything first and then reenable specific checks. For example, if": [[8, "disable-everything-first-and-then-reenable-specific-checks-for-example-if"]], "you want to run only the similarities checker, you can use \u201c\u2013disable=all": [[8, "you-want-to-run-only-the-similarities-checker-you-can-use-disable-all"]], "\u2013enable=similarities\u201d. If you want to run only the classes checker, but have": [[8, "enable-similarities-if-you-want-to-run-only-the-classes-checker-but-have"]], "no Warning level messages displayed, use \u201c\u2013disable=all \u2013enable=classes": [[8, "no-warning-level-messages-displayed-use-disable-all-enable-classes"]], "\u2013disable=W\u201d.": [[8, "disable-w"]], "Enable the message, report, category or checker with the given id(s). You can": [[8, "enable-the-message-report-category-or-checker-with-the-given-id-s-you-can"]], "either give multiple identifier separated by comma (,) or put this option": [[8, "either-give-multiple-identifier-separated-by-comma-or-put-this-option"]], "multiple time (only on the command line, not in the configuration file where": [[8, "multiple-time-only-on-the-command-line-not-in-the-configuration-file-where"]], "it should appear only once). See also the \u201c\u2013disable\u201d option for examples.": [[8, "it-should-appear-only-once-see-also-the-disable-option-for-examples"]], "Python expression which should return a score less than or equal to 10. You": [[8, "python-expression-which-should-return-a-score-less-than-or-equal-to-10-you"]], "have access to the variables \u2018error\u2019, \u2018warning\u2019, \u2018refactor\u2019, and \u2018convention\u2019": [[8, "have-access-to-the-variables-error-warning-refactor-and-convention"]], "which contain the number of messages in each category, as well as \u2018statement\u2019": [[8, "which-contain-the-number-of-messages-in-each-category-as-well-as-statement"]], "which is the total number of statements analyzed. This score is used by the": [[8, "which-is-the-total-number-of-statements-analyzed-this-score-is-used-by-the"]], "global evaluation report (RP0004).": [[8, "global-evaluation-report-rp0004"]], "Template used to display messages. This is a python new-style format string": [[8, "template-used-to-display-messages-this-is-a-python-new-style-format-string"]], "used to format the message information. See doc for all details.": [[8, "used-to-format-the-message-information-see-doc-for-all-details"]], "Set the output format. Available formats are text, parseable, colorized, json": [[8, "set-the-output-format-available-formats-are-text-parseable-colorized-json"]], "and msvs (visual studio). You can also give a reporter class, e.g.": [[8, "and-msvs-visual-studio-you-can-also-give-a-reporter-class-e-g"]], "mypackage.mymodule.MyReporterClass.": [[8, "mypackage-mymodule-myreporterclass"]], "Tells whether to display a full report or only the messages.": [[8, "tells-whether-to-display-a-full-report-or-only-the-messages"]], "Activate the evaluation score.": [[8, "activate-the-evaluation-score"]], "Maximum number of nested blocks for function / method body": [[8, "maximum-number-of-nested-blocks-for-function-method-body"]], "Complete name of functions that never returns. When checking for": [[8, "complete-name-of-functions-that-never-returns-when-checking-for"]], "inconsistent-return-statements if a never returning function is called then": [[8, "inconsistent-return-statements-if-a-never-returning-function-is-called-then"]], "it will be considered as an explicit return statement and no message will be": [[8, "it-will-be-considered-as-an-explicit-return-statement-and-no-message-will-be"]], "printed.": [[8, "printed"]], "Naming style matching correct argument names.": [[8, "naming-style-matching-correct-argument-names"]], "Regular expression matching correct argument names. Overrides argument-": [[8, "regular-expression-matching-correct-argument-names-overrides-argument"]], "naming-style.": [[8, "naming-style"], [8, "id3"], [8, "id6"]], "Naming style matching correct attribute names.": [[8, "naming-style-matching-correct-attribute-names"]], "Regular expression matching correct attribute names. Overrides attr-naming-": [[8, "regular-expression-matching-correct-attribute-names-overrides-attr-naming"]], "style.": [[8, "style"], [8, "id1"], [8, "id2"], [8, "id4"], [8, "id5"]], "Bad variable names which should always be refused, separated by a comma.": [[8, "bad-variable-names-which-should-always-be-refused-separated-by-a-comma"]], "Naming style matching correct class attribute names.": [[8, "naming-style-matching-correct-class-attribute-names"]], "Regular expression matching correct class attribute names. Overrides class-": [[8, "regular-expression-matching-correct-class-attribute-names-overrides-class"]], "attribute-naming-style.": [[8, "attribute-naming-style"]], "Naming style matching correct class names.": [[8, "naming-style-matching-correct-class-names"]], "Regular expression matching correct class names. Overrides class-naming-": [[8, "regular-expression-matching-correct-class-names-overrides-class-naming"]], "Naming style matching correct constant names.": [[8, "naming-style-matching-correct-constant-names"]], "Regular expression matching correct constant names. Overrides const-naming-": [[8, "regular-expression-matching-correct-constant-names-overrides-const-naming"]], "Minimum line length for functions/classes that require docstrings, shorter": [[8, "minimum-line-length-for-functions-classes-that-require-docstrings-shorter"]], "ones are exempt.": [[8, "ones-are-exempt"]], "Naming style matching correct function names.": [[8, "naming-style-matching-correct-function-names"]], "Regular expression matching correct function names. Overrides function-": [[8, "regular-expression-matching-correct-function-names-overrides-function"]], "Good variable names which should always be accepted, separated by a comma.": [[8, "good-variable-names-which-should-always-be-accepted-separated-by-a-comma"]], "Include a hint for the correct naming format with invalid-name.": [[8, "include-a-hint-for-the-correct-naming-format-with-invalid-name"]], "Naming style matching correct inline iteration names.": [[8, "naming-style-matching-correct-inline-iteration-names"]], "Regular expression matching correct inline iteration names. Overrides": [[8, "regular-expression-matching-correct-inline-iteration-names-overrides"]], "inlinevar-naming-style.": [[8, "inlinevar-naming-style"]], "Naming style matching correct method names.": [[8, "naming-style-matching-correct-method-names"]], "Regular expression matching correct method names. Overrides method-naming-": [[8, "regular-expression-matching-correct-method-names-overrides-method-naming"]], "Naming style matching correct module names.": [[8, "naming-style-matching-correct-module-names"]], "Regular expression matching correct module names. Overrides module-naming-": [[8, "regular-expression-matching-correct-module-names-overrides-module-naming"]], "Colon-delimited sets of names that determine each other\u2019s naming style when": [[8, "colon-delimited-sets-of-names-that-determine-each-other-s-naming-style-when"]], "the name regexes allow several styles.": [[8, "the-name-regexes-allow-several-styles"]], "Regular expression which should only match function or class names that do": [[8, "regular-expression-which-should-only-match-function-or-class-names-that-do"]], "not require a docstring.": [[8, "not-require-a-docstring"]], "List of decorators that produce properties, such as abc.abstractproperty. Add": [[8, "list-of-decorators-that-produce-properties-such-as-abc-abstractproperty-add"]], "to this list to register other decorators that produce valid properties.": [[8, "to-this-list-to-register-other-decorators-that-produce-valid-properties"]], "These decorators are taken in consideration only for invalid-name.": [[8, "these-decorators-are-taken-in-consideration-only-for-invalid-name"]], "Naming style matching correct variable names.": [[8, "naming-style-matching-correct-variable-names"]], "Regular expression matching correct variable names. Overrides variable-": [[8, "regular-expression-matching-correct-variable-names-overrides-variable"]], "Expected format of line ending, e.g. empty (any line ending), LF or CRLF.": [[8, "expected-format-of-line-ending-e-g-empty-any-line-ending-lf-or-crlf"]], "Regexp for a line that is allowed to be longer than the limit.": [[8, "regexp-for-a-line-that-is-allowed-to-be-longer-than-the-limit"]], "Number of spaces of indent required inside a hanging or continued line.": [[8, "number-of-spaces-of-indent-required-inside-a-hanging-or-continued-line"]], "String used as indentation unit. This is usually \u201c \u201c (4 spaces) or \u201c\\t\u201d (1": [[8, "string-used-as-indentation-unit-this-is-usually-4-spaces-or-t-1"]], "tab).": [[8, "tab"]], "Maximum number of characters on a single line.": [[8, "maximum-number-of-characters-on-a-single-line"]], "Maximum number of lines in a module.": [[8, "maximum-number-of-lines-in-a-module"]], "List of optional constructs for which whitespace checking is disabled. `dict-": [[8, "list-of-optional-constructs-for-which-whitespace-checking-is-disabled-dict"]], "separator` is used to allow tabulation in dicts, etc.: {1 : 1,\\n222: 2}.": [[8, "separator-is-used-to-allow-tabulation-in-dicts-etc-1-1-n222-2"]], "trailing-comma allows a space between comma and closing bracket: (a, ).": [[8, "trailing-comma-allows-a-space-between-comma-and-closing-bracket-a"]], "empty-line allows space-only lines.": [[8, "empty-line-allows-space-only-lines"]], "Allow the body of a class to be on the same line as the declaration if body": [[8, "allow-the-body-of-a-class-to-be-on-the-same-line-as-the-declaration-if-body"]], "contains single statement.": [[8, "contains-single-statement"]], "Allow the body of an if to be on the same line as the test if there is no": [[8, "allow-the-body-of-an-if-to-be-on-the-same-line-as-the-test-if-there-is-no"]], "else.": [[8, "else"]], "Format style used to check logging format string. old means using %": [[8, "format-style-used-to-check-logging-format-string-old-means-using"]], "formatting, new is for {} formatting,and fstr is for f-strings.": [[8, "formatting-new-is-for-formatting-and-fstr-is-for-f-strings"]], "Logging modules to check that the string format arguments are in logging": [[8, "logging-modules-to-check-that-the-string-format-arguments-are-in-logging"]], "function parameter format.": [[8, "function-parameter-format"]], "List of note tags to take in consideration, separated by a comma.": [[8, "list-of-note-tags-to-take-in-consideration-separated-by-a-comma"]], "Ignore comments when computing similarities.": [[8, "ignore-comments-when-computing-similarities"]], "Ignore docstrings when computing similarities.": [[8, "ignore-docstrings-when-computing-similarities"]], "Ignore imports when computing similarities.": [[8, "ignore-imports-when-computing-similarities"]], "Minimum lines number of a similarity.": [[8, "minimum-lines-number-of-a-similarity"]], "Limits count of emitted suggestions for spelling mistakes.": [[8, "limits-count-of-emitted-suggestions-for-spelling-mistakes"]], "Spelling dictionary name. Available dictionaries: none. To make it work,": [[8, "spelling-dictionary-name-available-dictionaries-none-to-make-it-work"]], "install the python-enchant package.": [[8, "install-the-python-enchant-package"]], "List of comma separated words that should not be checked.": [[8, "list-of-comma-separated-words-that-should-not-be-checked"]], "A path to a file that contains the private dictionary; one word per line.": [[8, "a-path-to-a-file-that-contains-the-private-dictionary-one-word-per-line"]], "Tells whether to store unknown words to the private dictionary (see the": [[8, "tells-whether-to-store-unknown-words-to-the-private-dictionary-see-the"]], "\u2013spelling-private-dict-file option) instead of raising a message.": [[8, "spelling-private-dict-file-option-instead-of-raising-a-message"]], "This flag controls whether the implicit-str-concat-in-sequence should": [[8, "this-flag-controls-whether-the-implicit-str-concat-in-sequence-should"]], "generate a warning on implicit string concatenation in sequences defined over": [[8, "generate-a-warning-on-implicit-string-concatenation-in-sequences-defined-over"]], "several lines.": [[8, "several-lines"]], "List of decorators that produce context managers, such as": [[8, "list-of-decorators-that-produce-context-managers-such-as"]], "contextlib.contextmanager. Add to this list to register other decorators that": [[8, "contextlib-contextmanager-add-to-this-list-to-register-other-decorators-that"]], "produce valid context managers.": [[8, "produce-valid-context-managers"]], "List of members which are set dynamically and missed by pylint inference": [[8, "list-of-members-which-are-set-dynamically-and-missed-by-pylint-inference"]], "system, and so shouldn\u2019t trigger E1101 when accessed. Python regular": [[8, "system-and-so-shouldn-t-trigger-e1101-when-accessed-python-regular"]], "expressions are accepted.": [[8, "expressions-are-accepted"]], "Tells whether missing members accessed in mixin class should be ignored. A": [[8, "tells-whether-missing-members-accessed-in-mixin-class-should-be-ignored-a"]], "mixin class is detected if its name ends with \u201cmixin\u201d (case insensitive).": [[8, "mixin-class-is-detected-if-its-name-ends-with-mixin-case-insensitive"]], "Tells whether to warn about missing members when the owner of the attribute": [[8, "tells-whether-to-warn-about-missing-members-when-the-owner-of-the-attribute"]], "is inferred to be None.": [[8, "is-inferred-to-be-none"]], "This flag controls whether pylint should warn about no-member and similar": [[8, "this-flag-controls-whether-pylint-should-warn-about-no-member-and-similar"]], "checks whenever an opaque object is returned when inferring. The inference": [[8, "checks-whenever-an-opaque-object-is-returned-when-inferring-the-inference"]], "can return multiple potential results while evaluating a Python object, but": [[8, "can-return-multiple-potential-results-while-evaluating-a-python-object-but"]], "some branches might not be evaluated, which results in partial inference. In": [[8, "some-branches-might-not-be-evaluated-which-results-in-partial-inference-in"]], "that case, it might be useful to still emit no-member and other checks for": [[8, "that-case-it-might-be-useful-to-still-emit-no-member-and-other-checks-for"]], "the rest of the inferred objects.": [[8, "the-rest-of-the-inferred-objects"]], "List of class names for which member attributes should not be checked (useful": [[8, "list-of-class-names-for-which-member-attributes-should-not-be-checked-useful"]], "for classes with dynamically set attributes). This supports the use of": [[8, "for-classes-with-dynamically-set-attributes-this-supports-the-use-of"]], "qualified names.": [[8, "qualified-names"]], "List of module names for which member attributes should not be checked": [[8, "list-of-module-names-for-which-member-attributes-should-not-be-checked"]], "(useful for modules/projects where namespaces are manipulated during runtime": [[8, "useful-for-modules-projects-where-namespaces-are-manipulated-during-runtime"]], "and thus existing member attributes cannot be deduced by static analysis). It": [[8, "and-thus-existing-member-attributes-cannot-be-deduced-by-static-analysis-it"]], "supports qualified module names, as well as Unix pattern matching.": [[8, "supports-qualified-module-names-as-well-as-unix-pattern-matching"]], "Show a hint with possible names when a member name was not found. The aspect": [[8, "show-a-hint-with-possible-names-when-a-member-name-was-not-found-the-aspect"]], "of finding the hint is based on edit distance.": [[8, "of-finding-the-hint-is-based-on-edit-distance"]], "The minimum edit distance a name should have in order to be considered a": [[8, "the-minimum-edit-distance-a-name-should-have-in-order-to-be-considered-a"]], "similar match for a missing member name.": [[8, "similar-match-for-a-missing-member-name"]], "The total number of similar names that should be taken in consideration when": [[8, "the-total-number-of-similar-names-that-should-be-taken-in-consideration-when"]], "showing a hint for a missing member.": [[8, "showing-a-hint-for-a-missing-member"]], "List of decorators that change the signature of a decorated function.": [[8, "list-of-decorators-that-change-the-signature-of-a-decorated-function"]], "List of additional names supposed to be defined in builtins. Remember that": [[8, "list-of-additional-names-supposed-to-be-defined-in-builtins-remember-that"]], "you should avoid defining new builtins when possible.": [[8, "you-should-avoid-defining-new-builtins-when-possible"]], "Tells whether unused global variables should be treated as a violation.": [[8, "tells-whether-unused-global-variables-should-be-treated-as-a-violation"]], "List of strings which can identify a callback function by name. A callback": [[8, "list-of-strings-which-can-identify-a-callback-function-by-name-a-callback"]], "name must start or end with one of those strings.": [[8, "name-must-start-or-end-with-one-of-those-strings"]], "A regular expression matching the name of dummy variables (i.e. expected to": [[8, "a-regular-expression-matching-the-name-of-dummy-variables-i-e-expected-to"]], "not be used).": [[8, "not-be-used"]], "Argument names that match this expression will be ignored. Default to name": [[8, "argument-names-that-match-this-expression-will-be-ignored-default-to-name"]], "with leading underscore.": [[8, "with-leading-underscore"]], "Tells whether we should check for unused import in init files.": [[8, "tells-whether-we-should-check-for-unused-import-in-init-files"]], "List of qualified module names which can have objects that can redefine": [[8, "list-of-qualified-module-names-which-can-have-objects-that-can-redefine"]], "builtins.": [[8, "builtins"]], "List of method names used to declare (i.e. assign) instance attributes.": [[8, "list-of-method-names-used-to-declare-i-e-assign-instance-attributes"]], "List of member names, which should be excluded from the protected access": [[8, "list-of-member-names-which-should-be-excluded-from-the-protected-access"]], "warning.": [[8, "warning"]], "List of valid names for the first argument in a class method.": [[8, "list-of-valid-names-for-the-first-argument-in-a-class-method"]], "List of valid names for the first argument in a metaclass class method.": [[8, "list-of-valid-names-for-the-first-argument-in-a-metaclass-class-method"]], "Maximum number of arguments for function / method.": [[8, "maximum-number-of-arguments-for-function-method"]], "Maximum number of attributes for a class (see R0902).": [[8, "maximum-number-of-attributes-for-a-class-see-r0902"]], "Maximum number of boolean expressions in an if statement (see R0916).": [[8, "maximum-number-of-boolean-expressions-in-an-if-statement-see-r0916"]], "Maximum number of branch for function / method body.": [[8, "maximum-number-of-branch-for-function-method-body"]], "Maximum number of locals for function / method body.": [[8, "maximum-number-of-locals-for-function-method-body"]], "Maximum number of parents for a class (see R0901).": [[8, "maximum-number-of-parents-for-a-class-see-r0901"]], "Maximum number of public methods for a class (see R0904).": [[8, "maximum-number-of-public-methods-for-a-class-see-r0904"]], "Maximum number of return / yield for function / method body.": [[8, "maximum-number-of-return-yield-for-function-method-body"]], "Maximum number of statements in function / method body.": [[8, "maximum-number-of-statements-in-function-method-body"]], "Minimum number of public methods for a class (see R0903).": [[8, "minimum-number-of-public-methods-for-a-class-see-r0903"]], "List of modules that can be imported at any level, not just the top level": [[8, "list-of-modules-that-can-be-imported-at-any-level-not-just-the-top-level"]], "one.": [[8, "one"]], "Allow wildcard imports from modules that define all.": [[8, "allow-wildcard-imports-from-modules-that-define-all"]], "Analyse import fallback blocks. This can be used to support both Python 2 and": [[8, "analyse-import-fallback-blocks-this-can-be-used-to-support-both-python-2-and"]], "3 compatible code, which means that the block might have code that exists": [[8, "compatible-code-which-means-that-the-block-might-have-code-that-exists"]], "only in one or another interpreter, leading to false positives when analysed.": [[8, "only-in-one-or-another-interpreter-leading-to-false-positives-when-analysed"]], "Deprecated modules which should not be used, separated by a comma.": [[8, "deprecated-modules-which-should-not-be-used-separated-by-a-comma"]], "Create a graph of external dependencies in the given file (report RP0402 must": [[8, "create-a-graph-of-external-dependencies-in-the-given-file-report-rp0402-must"]], "not be disabled).": [[8, "not-be-disabled"], [8, "id7"]], "Create a graph of every (i.e. internal and external) dependencies in the": [[8, "create-a-graph-of-every-i-e-internal-and-external-dependencies-in-the"]], "given file (report RP0402 must not be disabled).": [[8, "given-file-report-rp0402-must-not-be-disabled"]], "Create a graph of internal dependencies in the given file (report RP0402 must": [[8, "create-a-graph-of-internal-dependencies-in-the-given-file-report-rp0402-must"]], "Force import order to recognize a module as part of the standard": [[8, "force-import-order-to-recognize-a-module-as-part-of-the-standard"]], "compatibility libraries.": [[8, "compatibility-libraries"]], "Force import order to recognize a module as part of a third party library.": [[8, "force-import-order-to-recognize-a-module-as-part-of-a-third-party-library"]], "Couples of modules and preferred modules, separated by a comma.": [[8, "couples-of-modules-and-preferred-modules-separated-by-a-comma"]], "Exceptions that will emit a warning when being caught. Defaults to": [[8, "exceptions-that-will-emit-a-warning-when-being-caught-defaults-to"]], "\u201cBaseException, Exception\u201d.": [[8, "baseexception-exception"]], "pypyroject.toml": [[9, "pypyroject-toml"]], "Bailo Python Client": [[10, "bailo-python-client"], [2, "bailo-python-client"]], "Key Features": [[10, "key-features"]], "Installing": [[10, "installing"]], "Getting Started": [[10, "getting-started"]], "Documentation": [[10, "documentation"]], "Building locally": [[10, "building-locally"]], "Development": [[10, "development"]], "Install and add precommit": [[10, "install-and-add-precommit"]], "Install the package locally": [[10, "install-the-package-locally"]], "Testing": [[10, "testing"]], "bailo.core package": [[0, "bailo-core-package"]], "bailo.helper package": [[1, "module-bailo.helper.access_request"]], "Welcome to Bailo\u2019s Python Client documentation!": [[2, "module-bailo"]], "Packages:": [[2, null]], "Notebooks:": [[2, null]], "Experiment Tracking with Bailo & MLFlow": [[4, "Experiment-Tracking-with-Bailo-&-MLFlow"]], "Connecting with Bailo": [[4, "Connecting-with-Bailo"]], "Setting up MLFlow Tracking": [[4, "Setting-up-MLFlow-Tracking"]], "Preparing a custom schema for tracking": [[4, "Preparing-a-custom-schema-for-tracking"]], "Creating a new experiment": [[4, "Creating-a-new-experiment"]], "Conducting experiment runs": [[4, "Conducting-experiment-runs"]], "Running an experiment with the Bailo python client": [[4, "Running-an-experiment-with-the-Bailo-python-client"]], "Creating a dummy MLFlow experiment run": [[4, "Creating-a-dummy-MLFlow-experiment-run"]], "Importing existing experiments from MLFlow into Bailo": [[4, "Importing-existing-experiments-from-MLFlow-into-Bailo"]], "Publishing results to Bailo": [[4, "Publishing-results-to-Bailo"]], "Managing Models & Releases (ResNet-50 Example with PyTorch)": [[5, "Managing-Models-&-Releases-(ResNet-50-Example-with-PyTorch)"]], "Creating a new ResNet-50 model in Bailo": [[5, "Creating-a-new-ResNet-50-model-in-Bailo"]], "Creating and updating the base model": [[5, "Creating-and-updating-the-base-model"]], "Creating and populating a model card": [[5, "Creating-and-populating-a-model-card"]], "Retrieving an existing model": [[5, "Retrieving-an-existing-model"]], "Creating and managing releases for models": [[5, "Creating-and-managing-releases-for-models"]], "Creating a release": [[5, "Creating-a-release"]], "Preparing the model weights using PyTorch": [[5, "Preparing-the-model-weights-using-PyTorch"]], "Uploading weights to the release": [[5, "Uploading-weights-to-the-release"]], "Retrieving a release": [[5, "Retrieving-a-release"]], "Downloading weights from the release": [[5, "Downloading-weights-from-the-release"]], "Loading the model using PyTorch": [[5, "Loading-the-model-using-PyTorch"]]}, "indexentries": {"access_request (bailo.core.enums.schemakind attribute)": [[0, "bailo.core.enums.SchemaKind.ACCESS_REQUEST"]], "agent (class in bailo.core.agent)": [[0, "bailo.core.agent.Agent"]], "bailoexception": [[0, "bailo.core.exceptions.BailoException"]], "client (class in bailo.core.client)": [[0, "bailo.core.client.Client"]], "model (bailo.core.enums.schemakind attribute)": [[0, "bailo.core.enums.SchemaKind.MODEL"]], "model_senior_responsible_officer (bailo.core.enums.role attribute)": [[0, "bailo.core.enums.Role.MODEL_SENIOR_RESPONSIBLE_OFFICER"]], "model_technical_reviewer (bailo.core.enums.role attribute)": [[0, "bailo.core.enums.Role.MODEL_TECHNICAL_REVIEWER"]], "modelvisibility (class in bailo.core.enums)": [[0, "bailo.core.enums.ModelVisibility"]], "owner (bailo.core.enums.role attribute)": [[0, "bailo.core.enums.Role.OWNER"]], "private (bailo.core.enums.modelvisibility attribute)": [[0, "bailo.core.enums.ModelVisibility.PRIVATE"]], "public (bailo.core.enums.modelvisibility attribute)": [[0, "bailo.core.enums.ModelVisibility.PUBLIC"]], "pkiagent (class in bailo.core.agent)": [[0, "bailo.core.agent.PkiAgent"]], "responseexception": [[0, "bailo.core.exceptions.ResponseException"]], "role (class in bailo.core.enums)": [[0, "bailo.core.enums.Role"]], "schemakind (class in bailo.core.enums)": [[0, "bailo.core.enums.SchemaKind"]], "tokenagent (class in bailo.core.agent)": [[0, "bailo.core.agent.TokenAgent"]], "__init__() (bailo.core.agent.pkiagent method)": [[0, "bailo.core.agent.PkiAgent.__init__"]], "__init__() (bailo.core.agent.tokenagent method)": [[0, "bailo.core.agent.TokenAgent.__init__"]], "bailo.core.agent": [[0, "module-bailo.core.agent"]], "bailo.core.client": [[0, "module-bailo.core.client"]], "bailo.core.enums": [[0, "module-bailo.core.enums"]], "bailo.core.exceptions": [[0, "module-bailo.core.exceptions"]], "delete() (bailo.core.agent.agent method)": [[0, "bailo.core.agent.Agent.delete"]], "delete() (bailo.core.agent.pkiagent method)": [[0, "bailo.core.agent.PkiAgent.delete"]], "delete() (bailo.core.agent.tokenagent method)": [[0, "bailo.core.agent.TokenAgent.delete"]], "delete_access_request() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.delete_access_request"]], "delete_file() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.delete_file"]], "delete_release() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.delete_release"]], "get() (bailo.core.agent.agent method)": [[0, "bailo.core.agent.Agent.get"]], "get() (bailo.core.agent.pkiagent method)": [[0, "bailo.core.agent.PkiAgent.get"]], "get() (bailo.core.agent.tokenagent method)": [[0, "bailo.core.agent.TokenAgent.get"]], "get_access_request() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_access_request"]], "get_access_requests() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_access_requests"]], "get_all_images() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_all_images"]], "get_all_releases() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_all_releases"]], "get_all_schemas() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_all_schemas"]], "get_all_teams() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_all_teams"]], "get_download_by_filename() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_download_by_filename"]], "get_download_file() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_download_file"]], "get_files() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_files"]], "get_model() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_model"]], "get_model_card() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_model_card"]], "get_model_roles() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_model_roles"]], "get_model_user_roles() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_model_user_roles"]], "get_models() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_models"]], "get_release() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_release"]], "get_reviews() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_reviews"]], "get_schema() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_schema"]], "get_team() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_team"]], "get_user_teams() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_user_teams"]], "model_card_from_schema() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.model_card_from_schema"]], "module": [[0, "module-bailo.core.agent"], [0, "module-bailo.core.client"], [0, "module-bailo.core.enums"], [0, "module-bailo.core.exceptions"], [1, "module-bailo.helper.access_request"], [1, "module-bailo.helper.model"], [1, "module-bailo.helper.release"], [1, "module-bailo.helper.schema"], [2, "module-bailo"]], "patch() (bailo.core.agent.agent method)": [[0, "bailo.core.agent.Agent.patch"]], "patch() (bailo.core.agent.pkiagent method)": [[0, "bailo.core.agent.PkiAgent.patch"]], "patch() (bailo.core.agent.tokenagent method)": [[0, "bailo.core.agent.TokenAgent.patch"]], "patch_access_request() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.patch_access_request"]], "patch_model() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.patch_model"]], "patch_team() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.patch_team"]], "post() (bailo.core.agent.agent method)": [[0, "bailo.core.agent.Agent.post"]], "post() (bailo.core.agent.pkiagent method)": [[0, "bailo.core.agent.PkiAgent.post"]], "post() (bailo.core.agent.tokenagent method)": [[0, "bailo.core.agent.TokenAgent.post"]], "post_access_request() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.post_access_request"]], "post_model() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.post_model"]], "post_release() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.post_release"]], "post_review() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.post_review"]], "post_schema() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.post_schema"]], "post_team() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.post_team"]], "push() (bailo.core.agent.agent method)": [[0, "bailo.core.agent.Agent.push"]], "put() (bailo.core.agent.agent method)": [[0, "bailo.core.agent.Agent.put"]], "put() (bailo.core.agent.pkiagent method)": [[0, "bailo.core.agent.PkiAgent.put"]], "put() (bailo.core.agent.tokenagent method)": [[0, "bailo.core.agent.TokenAgent.put"]], "put_model_card() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.put_model_card"]], "put_release() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.put_release"]], "simple_upload() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.simple_upload"]], "accessrequest (class in bailo.helper.access_request)": [[1, "bailo.helper.access_request.AccessRequest"]], "experiment (class in bailo.helper.model)": [[1, "bailo.helper.model.Experiment"]], "model (class in bailo.helper.model)": [[1, "bailo.helper.model.Model"]], "release (class in bailo.helper.release)": [[1, "bailo.helper.release.Release"]], "schema (class in bailo.helper.schema)": [[1, "bailo.helper.schema.Schema"]], "__init__() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.__init__"]], "bailo.helper.access_request": [[1, "module-bailo.helper.access_request"]], "bailo.helper.model": [[1, "module-bailo.helper.model"]], "bailo.helper.release": [[1, "module-bailo.helper.release"]], "bailo.helper.schema": [[1, "module-bailo.helper.schema"]], "card_from_model() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.card_from_model"]], "card_from_schema() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.card_from_schema"]], "card_from_template() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.card_from_template"]], "create() (bailo.helper.access_request.accessrequest class method)": [[1, "bailo.helper.access_request.AccessRequest.create"]], "create() (bailo.helper.model.experiment class method)": [[1, "bailo.helper.model.Experiment.create"]], "create() (bailo.helper.model.model class method)": [[1, "bailo.helper.model.Model.create"]], "create() (bailo.helper.release.release class method)": [[1, "bailo.helper.release.Release.create"]], "create() (bailo.helper.schema.schema class method)": [[1, "bailo.helper.schema.Schema.create"]], "create_experiment() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.create_experiment"]], "create_release() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.create_release"]], "delete() (bailo.helper.access_request.accessrequest method)": [[1, "bailo.helper.access_request.AccessRequest.delete"]], "delete() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.delete"]], "download() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.download"]], "from_id() (bailo.helper.access_request.accessrequest class method)": [[1, "bailo.helper.access_request.AccessRequest.from_id"]], "from_id() (bailo.helper.model.model class method)": [[1, "bailo.helper.model.Model.from_id"]], "from_id() (bailo.helper.schema.schema class method)": [[1, "bailo.helper.schema.Schema.from_id"]], "from_mlflow() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.from_mlflow"]], "from_version() (bailo.helper.release.release class method)": [[1, "bailo.helper.release.Release.from_version"]], "get_card_latest() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_card_latest"]], "get_card_revision() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_card_revision"]], "get_image() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_image"]], "get_images() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_images"]], "get_latest_release() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_latest_release"]], "get_release() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_release"]], "get_releases() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_releases"]], "get_roles() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_roles"]], "get_user_roles() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_user_roles"]], "log_artifacts() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_artifacts"]], "log_dataset() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_dataset"]], "log_metrics() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_metrics"]], "log_params() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_params"]], "publish() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.publish"]], "start_run() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.start_run"]], "update() (bailo.helper.access_request.accessrequest method)": [[1, "bailo.helper.access_request.AccessRequest.update"]], "update() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.update"]], "update() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.update"]], "update_model_card() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.update_model_card"]], "upload() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.upload"]], "bailo": [[2, "module-bailo"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["bailo.core", "bailo.helper", "index", "notebooks/access_requests_demo", "notebooks/datacards_demo", "notebooks/experiment_tracking_demo", "notebooks/models_and_releases_demo_pytorch", "notebooks/schemas_demo", "pre-commit-config", "pylint", "pyproject", "readme_link"], "filenames": ["bailo.core.rst", "bailo.helper.rst", "index.rst", "notebooks/access_requests_demo.ipynb", "notebooks/datacards_demo.ipynb", "notebooks/experiment_tracking_demo.ipynb", "notebooks/models_and_releases_demo_pytorch.ipynb", "notebooks/schemas_demo.ipynb", "pre-commit-config.md", "pylint.md", "pyproject.md", "readme_link.md"], "titles": ["bailo.core package", "bailo.helper package", "Welcome to Bailo\u2019s Python Client documentation!", "Managing Access Requests", "Managing Datacards", "Experiment Tracking with Bailo & MLFlow", "Managing Models & Releases (ResNet-50 Example with PyTorch)", "Managing Schemas", "pre-commit-config.yaml", "A comma-separated list of package or module names from where C extensions may", "pypyroject.toml", "Bailo Python Client"], "terms": {"The": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "contain": [0, 5, 6, 10], "suppport": 0, "one": [0, 5, 6], "endpoint": [0, 3, 4, 6, 7], "It": [0, 10], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "recommend": 0, "us": [0, 1, 5, 8, 10, 11], "helper": [0, 2, 3, 4, 6, 7], "most": [0, 5], "class": [0, 1, 3, 4, 5, 6, 7], "agent": [0, 2, 3, 4, 6, 7], "sourc": [0, 1], "base": [0, 1], "object": [0, 1, 3, 4, 5, 6, 7], "api": [0, 11], "talk": 0, "wrap": 0, "each": [0, 4, 6], "request": [0, 1, 2], "an": [0, 1], "except": 0, "handler": 0, "map": 0, "error": [0, 1, 4, 6], "python": [0, 1, 3, 4, 6, 7, 8, 10], "among": 0, "statu": 0, "code": [0, 6, 8], "less": 0, "than": 0, "400": 0, "default": [0, 1, 3, 4, 6, 7, 11], "timeout": [], "5": [1, 5, 7, 9], "second": [], "delet": [0, 1], "arg": [0, 9], "kwarg": 0, "get": [0, 1, 2], "patch": 0, "post": [0, 1], "push": 0, "put": 0, "pkiagent": [0, 2, 3, 4, 6, 7], "cert": [0, 3, 4, 6, 7], "str": [0, 1, 5], "kei": [0, 2, 3, 4, 6, 7], "auth": [0, 3, 4, 6, 7], "__init__": [0, 1], "initi": [0, 6], "pki": [0, 3, 4, 6, 7], "authent": [0, 3, 4, 6, 7], "paramet": [0, 1, 3, 4, 5, 6, 7], "path": [0, 1, 6], "file": [0, 1, 6, 10, 11], "certif": 0, "author": 0, "tokenag": [0, 2], "access_kei": 0, "secret_kei": 0, "token": 0, "access": [0, 1, 2, 5], "secret": 0, "client": [0, 1, 3, 4, 6, 7], "url": [0, 3, 4, 5, 6, 7], "creat": [0, 1, 8, 11], "can": [0, 1, 3, 4, 5, 6, 7, 8, 11], "websit": 0, "handl": [0, 3, 4, 6, 7], "delete_access_request": 0, "model_id": [0, 1, 3, 6], "access_request_id": [0, 1, 3], "specif": [0, 1, 4, 6], "associ": 0, "model": [0, 1, 2, 3, 4, 5, 7, 11], "uniqu": [0, 1, 7], "id": [0, 1, 5], "return": [0, 1, 6, 7], "json": [0, 1, 6, 7], "respons": [0, 1], "delete_fil": 0, "file_id": 0, "delete_releas": 0, "release_vers": 0, "releas": [0, 1, 2, 4, 5, 11], "version": [0, 1, 4, 6, 11], "get_access_request": 0, "retriev": [0, 1], "given": [0, 1, 11], "its": 0, "all": [0, 1, 6, 11], "get_all_imag": 0, "imag": [0, 1, 4, 6], "A": [0, 1, 3, 4, 5, 6, 7, 11], "get_all_releas": 0, "get_all_schema": 0, "kind": [0, 1, 5, 7], "schemakind": [0, 1, 2, 5, 7], "none": [0, 1], "schema": [0, 1, 2, 4, 6], "enum": [0, 1], "defin": [0, 5], "e": [0, 1, 3, 4, 6, 7, 11], "g": [0, 1, 3, 4, 6, 7], "accessrequest": [0, 1, 2, 3], "get_all_team": 0, "team": [0, 1], "get_download_by_filenam": 0, "semver": [0, 1], "filenam": [0, 1, 6], "download": [0, 1, 11], "try": 0, "from": [0, 1, 3, 4, 7, 8, 11], "get_download_fil": 0, "": [0, 1], "get_fil": 0, "get_model": 0, "get_model_card": 0, "card": [0, 1, 4, 5], "get_model_rol": 0, "role": [0, 1, 2], "get_model_user_rol": 0, "current": [0, 1, 10], "user": [0, 1, 3, 8], "task": 0, "librari": [0, 6], "list": [0, 1, 6], "filter": 0, "search": 0, "find": [0, 7], "provid": [0, 1, 2, 5, 6], "term": 0, "classif": [0, 6], "tensorflow": 0, "custom": [0, 4, 6], "string": [0, 1, 7], "locat": [0, 1, 5], "get_releas": [0, 1, 6], "get_review": 0, "activ": 0, "bool": [0, 1, 9], "review": [0, 1], "within": [0, 1, 2, 3, 4, 5, 6, 7, 11], "boolean": 0, "repres": [0, 1, 6], "get_schema": 0, "schema_id": [0, 1, 3, 4, 5, 6, 7], "get_team": 0, "team_id": [0, 1, 3, 4, 5, 6, 11], "get_user_team": 0, "model_card_from_schema": 0, "patch_access_request": 0, "metadata": [0, 1, 3], "ani": [0, 1, 3, 4, 5, 6, 7], "updat": [0, 1, 3], "patch_model": 0, "name": [0, 1, 3, 4, 5, 6, 7, 11], "descript": [0, 1, 3, 4, 5, 6, 7, 11], "visibl": [0, 1, 4, 6], "public": [0, 1], "privat": [0, 1], "patch_team": 0, "post_access_request": 0, "post_model": 0, "modelvis": [0, 1, 2], "post_releas": 0, "note": [0, 1, 4, 5, 6, 7, 11], "model_card_vers": [0, 1, 6], "int": [0, 1, 9], "minor": [0, 1, 6], "fals": [0, 1, 7], "draft": [0, 1, 7], "new": [0, 1, 11], "signifi": 0, "post_review": 0, "decis": 0, "comment": 0, "semant": [0, 1], "make": [0, 1, 4, 6, 11], "either": [0, 1, 4, 6, 11], "approv": 0, "chang": [0, 1, 4, 6], "go": 0, "post_schema": 0, "json_schema": [0, 1, 5, 7], "dict": [0, 1], "post_team": 0, "put_model_card": 0, "latest": [0, 1, 4, 6], "put_releas": 0, "simple_upload": 0, "buffer": 0, "bytesio": [0, 1, 6], "simpl": [0, 11], "upload": [0, 1, 11], "valu": [0, 1], "whether": [0, 1], "publicli": 0, "model_senior_responsible_offic": 0, "msro": 0, "model_technical_review": 0, "mtr": 0, "owner": 0, "type": [0, 6, 7], "access_request": [0, 1, 3], "bailoexcept": [0, 1, 2], "gener": [0, 3, 4, 6, 7, 8, 11], "responseexcept": [0, 2], "gave": 0, "created_bi": 1, "being": 1, "made": 1, "thi": [1, 2, 3, 4, 5, 6, 7, 10, 11], "ha": [1, 4], "been": [1, 4, 5], "classmethod": [1, 3, 4, 6, 7, 9], "interact": [1, 2, 3, 4, 6, 7], "messag": [1, 6], "confirm": 1, "remov": 1, "from_id": 1, "exist": [1, 3], "state": 1, "experi": [1, 2], "local": [1, 3, 4, 5, 6, 7], "which": [1, 3, 4, 5, 6, 7, 8], "run": [1, 3, 4, 6, 7, 11], "raw": 1, "inform": [1, 3, 4, 6, 7], "about": 1, "create_experi": [1, 5], "x": [1, 5], "rang": [1, 5], "start_run": [1, 5], "log_param": [1, 5], "lr": [1, 5], "0": [1, 3, 4, 5, 6, 7, 11], "01": [1, 3, 5], "insert": [1, 3, 4, 5, 6, 7], "train": [1, 5], "here": [1, 11], "log_metr": [1, 5], "accuraci": [1, 5], "86": [1, 5], "log_artifact": [1, 5], "weight": [1, 5], "pth": [1, 6], "publish": [1, 10], "mc_loc": [1, 5], "perform": [1, 5, 8], "performancemetr": [1, 5], "run_id": [1, 5], "1": [1, 3, 4, 5, 6, 7, 11], "from_mlflow": [1, 5], "tracking_uri": [1, 5], "experiment_id": [1, 5], "import": [1, 3, 4, 6, 7, 11], "mlflow": [1, 2], "track": [1, 2], "server": [1, 5], "uri": [1, 5], "rais": 1, "importerror": 1, "instal": [1, 2, 4, 5, 6], "artifact": [1, 5], "log": [1, 5], "log_dataset": 1, "dataset": [1, 4], "arbitrari": [1, 5], "titl": [1, 7], "metric": [1, 5], "dictionari": 1, "param": [1, 5], "result": 1, "select": [1, 6], "present": 1, "next": [1, 4, 5, 6], "depend": [1, 5, 8], "is_mlflow": 1, "start": [1, 2], "mark": 1, "card_from_model": [], "copi": [], "differ": 6, "yet": 1, "implement": 1, "notimplementederror": 1, "Not": 1, "card_from_schema": [1, 4, 5, 6, 11], "card_from_templ": 1, "templat": 1, "build": [1, 8, 10], "create_releas": [1, 6, 11], "true": [1, 7], "call": [1, 3, 4, 6], "method": [1, 5], "get_card_latest": 1, "get_card_revis": 1, "revis": 1, "get_imag": 1, "refer": [1, 6], "get_latest_releas": [1, 6], "from_vers": 1, "get_rol": 1, "get_user_rol": 1, "summari": [1, 7], "update_model_card": [1, 5, 6], "model_card": [1, 5, 6], "If": [1, 4, 5, 6, 11], "attribut": [1, 3, 4, 6], "option": [1, 10], "ar": [1, 3, 4, 5, 6, 7, 8, 10, 11], "store": 1, "write": [1, 6], "give": [], "read": [], "determin": 1, "disk": [1, 6], "set": [1, 4, 6], "data": [0, 1, 4], "directori": [1, 6, 11], "load": 1, "zip": 1, "ecosystem": 2, "manag": 2, "lifecycl": [2, 5], "machin": [2, 5], "learn": [2, 4, 5, 6], "support": [1, 2, 3, 4, 5, 6, 7], "featur": 2, "develop": 2, "core": [2, 3, 4, 5, 6, 7], "resnet": 2, "50": [2, 9], "exampl": [2, 3, 4, 5, 7, 10], "pytorch": 2, "bailo": [3, 7], "enabl": [3, 4, 6, 7], "intuit": [3, 4, 6, 7], "servic": [3, 4, 5, 6, 7], "environ": [3, 4, 5, 6, 7], "notebook": [3, 4, 5, 6, 7], "through": [3, 4, 5, 6, 7], "follow": [3, 4, 5, 6, 7, 11], "concept": [3, 4, 5, 6, 7], "prerequisit": [3, 4, 5, 6, 7], "3": [3, 4, 5, 6, 7, 11], "8": [3, 4, 5, 6, 7, 9, 11], "higher": [3, 4, 5, 6, 7, 11], "includ": [1, 3, 4, 5, 6, 7, 8, 10], "demo": [3, 4, 5, 6, 7], "remot": [3, 4, 5, 6, 7], "see": [3, 4, 5, 6, 7], "http": [3, 4, 5, 6, 7, 9, 11], "github": [3, 4, 5, 6, 7], "com": [3, 4, 5, 6, 7], "gchq": [3, 4, 5, 6, 7], "split": [3, 4, 6, 7, 11], "two": [3, 4, 6, 7], "sub": [3, 4, 6, 7], "packag": [3, 4, 6, 7, 8, 10], "For": [3, 4, 6, 7], "direct": [3, 4, 6, 7], "more": [3, 4, 5, 6, 7], "oper": [3, 4, 6, 7], "In": [3, 4, 5, 6, 7, 8, 11], "order": [3, 4, 5, 6, 7, 11], "you": [3, 4, 5, 6, 7, 11], "first": [3, 4, 5, 6, 7], "need": [3, 4, 5, 6, 7], "instanti": [3, 4, 5, 6, 7], "By": [3, 4, 6, 7], "howev": [3, 4, 6, 7], "also": [3, 4, 5, 6, 7, 10], "pass": [3, 4, 6, 7], "when": [3, 4, 6, 7, 10], "necessari": [3, 4, 5, 6, 7], "statement": [1, 3, 4, 5, 6, 7], "127": [3, 4, 5, 6, 7], "8080": [3, 4, 5, 6, 7, 11], "host": [3, 4, 5, 6, 7], "section": [3, 4, 5, 6, 7, 11], "we": [3, 4, 5, 6, 7], "ll": [3, 4, 5, 6, 7], "On": [3, 4, 6, 7], "must": [3, 4, 5, 6, 7], "consist": [3, 4, 6, 7], "least": [3, 4, 6], "upon": [3, 4, 6, 7], "creation": [3, 4, 6, 7], "These": [3, 4, 6, 7, 8], "below": [3, 4, 6, 7], "befor": [3, 4, 5, 6, 7], "our": [3, 4, 5, 6, 7], "yolov5": [3, 5], "detect": [3, 5], "uncategoris": [3, 4, 5, 6, 11], "overview": [3, 4, 5, 6, 7], "entiti": 3, "test": [3, 7, 10], "enddat": 3, "1970": 3, "minim": [3, 4, 6, 11], "v10": [3, 4, 6, 11], "previou": [3, 4, 5, 6, 7], "your": [3, 4, 5, 6, 7], "edit": 3, "directli": [3, 5, 6], "demonstr": [3, 5, 6], "new_metadata": 3, "newnam": 3, "simpli": 3, "addit": [5, 6], "cover": 5, "offer": 5, "integr": [5, 6, 11], "might": 5, "wider": 5, "particular": 5, "complet": 5, "basic": [5, 9], "models_and_releases_demo_pytorch": 5, "ipynb": 5, "step": [5, 6], "have": [4, 5, 6], "thu": 5, "too": [4, 5, 6, 7], "how": [4, 5, 6], "do": [5, 6, 7], "time": [4, 5, 6], "later": [4, 5, 6], "pip": [4, 5, 6, 11], "random": [5, 7], "element": 5, "tutori": 5, "instanc": [4, 5, 6, 7], "sampl": 5, "actual": [4, 5], "onli": [5, 6, 8, 10, 11], "function": [5, 7], "ui": 5, "command": [5, 6], "line": 5, "typic": [5, 7], "localhost": [5, 11], "5000": [5, 7], "browser": 5, "design": [5, 9], "displai": [5, 6], "wai": 5, "therefor": 5, "extern": 5, "script": 5, "quit": 5, "larg": 5, "set_schema": 5, "py": [5, 9, 10], "assign": [1, 4, 5, 6], "randint": 5, "1000000": 5, "mandatori": 5, "field": 5, "new_card": [4, 5, 6], "tag": [5, 6, 7], "modelsummari": [5, 6], "work": [5, 11], "sequenti": 5, "so": 5, "re": [5, 6], "parallel": 5, "would": [5, 7], "better": 5, "anchor_t": 5, "4": [4, 5, 6], "scale": 5, "98": 5, "txt": [5, 6], "2": [4, 5, 6], "set_tracking_uri": 5, "set_experi": 5, "demonst": 5, "same": [5, 6], "set_tag": 5, "info": 5, "As": 5, "previous": 5, "mention": 5, "experiment_mlflow": 5, "BE": 5, "found": 5, "ON": 5, "THE": 5, "becaus": 5, "intend": 5, "success": [4, 5, 6], "specifi": 5, "well": 5, "case": [5, 6], "per": 5, "earlier": [5, 6], "should": [4, 5, 6], "now": [4, 5, 6], "under": 5, "tab": 5, "addition": 5, "relev": 6, "linux": 6, "cpu": 6, "torch": [6, 9], "torchvis": 6, "index": 6, "org": [6, 7], "whl": 6, "mac": 6, "window": [6, 11], "resnet50": 6, "resnet50_weight": 6, "other": [6, 7, 11], "like": [4, 6], "ad": 6, "backend": [4, 6, 11], "mai": [4, 6, 10, 11], "relai": [4, 6], "empti": [4, 6], "beta": 11, "out": [4, 6], "scope": [4, 6], "print": [4, 6], "f": [4, 6, 11], "abov": [4, 6], "want": [4, 6], "match": [4, 6], "otherwis": [4, 6], "thrown": [4, 6], "adjust": 6, "don": 6, "t": 6, "drastic": 6, "behaviour": 6, "separ": 6, "itself": 6, "release_on": 6, "save": 6, "them": 6, "take": 6, "allow": 6, "u": 6, "without": 6, "up": 6, "space": 6, "torch_model": 6, "state_dict": 6, "To": 6, "content": [6, 11], "last": 6, "s3": [4, 6], "large_fil": [], "open": 11, "rb": [], "altern": 6, "both": [6, 10], "release_latest": 6, "successfulli": 6, "ident": 6, "similarli": 6, "bailo_resnet50_weight": 6, "wb": [], "final": 6, "ve": 6, "load_state_dict": 6, "init": 6, "identifi": 7, "suffic": 7, "reserv": 7, "administr": 7, "def": 7, "random_gener": 7, "n": [7, 9], "10": 7, "join": 7, "choic": [7, 9], "ascii_uppercas": 7, "digit": 7, "k": [7, 9], "07": 7, "properti": [1, 7], "modeloverview": 7, "what": 7, "doe": 7, "minlength": 7, "maxlength": 7, "searchabl": 7, "help": [7, 8], "arrai": 7, "widget": 7, "tagselectorbeta": 7, "item": 7, "uniqueitem": 7, "requir": [7, 10, 11], "additionalproperti": 7, "git": [1, 8, 11], "hook": [8, 9], "scan": 8, "prior": 8, "checkin": 8, "configur": [8, 10], "focus": 8, "action": 8, "prevent": 8, "fail": 8, "dure": 8, "format": 8, "automat": 8, "auto": 8, "black": 8, "sort": 8, "isort": 8, "lint": [8, 10], "left": 8, "discret": 8, "master": 9, "pkg": 9, "whitelist": 9, "numpi": 9, "cv2": 9, "pyodbc": 9, "pydant": 9, "ciso8601": 9, "netcdf4": 9, "scipi": 9, "cv": 9, "conftest": 9, "setrecursionlimit": 9, "getrecursionlimit": 9, "job": 9, "100": 9, "persist": 9, "ye": 9, "rcfile": 9, "mode": 9, "unsaf": 9, "float": 9, "_": 9, "msg": 9, "max": 9, "exit": 9, "snake_cas": 9, "rgx": 9, "foo": 9, "bar": 9, "baz": 9, "toto": 9, "tutu": 9, "tata": 9, "pascalcas": 9, "upper_cas": 9, "min": 9, "j": 9, "ex": 9, "df": 9, "ax": 9, "group": 9, "long": 9, "after": 9, "paren": 9, "120": 9, "1000": 9, "stmt": 9, "miscellan": 9, "fixm": 9, "xxx": 9, "todo": 9, "9": 9, "jump": 9, "typecheck": 9, "np": 9, "pyspark": 9, "sql": 9, "collect_list": 9, "optpars": 9, "thread": 9, "_local": 9, "_thread": 9, "swagger_cli": 9, "mutat": 9, "dbutil": 9, "cb_": 9, "_cb": 9, "za": 9, "z0": 9, "9_": 9, "unused_": 9, "six": 9, "move": 9, "past": 9, "futur": [9, 10], "io": 9, "setup": [9, 10], "post_init": 9, "_asdict": 9, "_field": 9, "_replac": 9, "_sourc": 9, "_make": 9, "cl": 9, "7": 9, "expr": 9, "12": 9, "15": 9, "20": 9, "6": 9, "tkinter": 9, "tix": 9, "ext": 9, "known": 9, "azureiai": 9, "logist": 9, "inventoryplan": 9, "overgener": 9, "pyproject": 10, "main": 10, "project": 10, "replac": 10, "flit": 10, "poetri": 10, "consid": 10, "viabl": 10, "setuptool": 10, "cfg": 10, "still": 10, "wrapper": 11, "tabl": 11, "binari": 11, "yolo": 11, "yolov4": 11, "look": 11, "onc": 11, "my_releas": 11, "onnx": 11, "documen": 11, "render": 11, "sphinx": 11, "serv": 11, "doc": [1, 11], "html": 11, "bat": 11, "alreadi": 11, "prompt": 11, "overwrit": 11, "huski": 11, "instruct": 11, "cli": 11, "pre": 11, "commit": 11, "pytest": 11, "ran": 11, "accordingli": 11, "categori": 11, "autom": 11, "purpos": 11, "sure": 11, "m": 11, "datacard": [0, 1, 2], "entrykind": [0, 1, 2], "entri": [1, 2], "model_card_schema": 1, "download_al": [1, 6], "home": 1, "ubuntu": 1, "lib": 1, "exclud": [1, 6], "fnmatch": 1, "unix": 1, "shell": 1, "style": 1, "wildcard": 1, "datacard_id": [1, 4], "stage": 4, "imagenet": 4, "data_card_vers": [1, 4], "update_data_card": [1, 4], "storageloc": 4, "data_card": [1, 4], "destin": 6, "data_card_schema": 1}, "objects": {"": [[2, 0, 0, "-", "bailo"]], "bailo.core": [[0, 0, 0, "-", "agent"], [0, 0, 0, "-", "client"], [0, 0, 0, "-", "enums"], [0, 0, 0, "-", "exceptions"]], "bailo.core.agent": [[0, 1, 1, "", "Agent"], [0, 1, 1, "", "PkiAgent"], [0, 1, 1, "", "TokenAgent"]], "bailo.core.agent.Agent": [[0, 2, 1, "", "delete"], [0, 2, 1, "", "get"], [0, 2, 1, "", "patch"], [0, 2, 1, "", "post"], [0, 2, 1, "", "push"], [0, 2, 1, "", "put"]], "bailo.core.agent.PkiAgent": [[0, 2, 1, "", "__init__"], [0, 2, 1, "", "delete"], [0, 2, 1, "", "get"], [0, 2, 1, "", "patch"], [0, 2, 1, "", "post"], [0, 2, 1, "", "put"]], "bailo.core.agent.TokenAgent": [[0, 2, 1, "", "__init__"], [0, 2, 1, "", "delete"], [0, 2, 1, "", "get"], [0, 2, 1, "", "patch"], [0, 2, 1, "", "post"], [0, 2, 1, "", "put"]], "bailo.core.client": [[0, 1, 1, "", "Client"]], "bailo.core.client.Client": [[0, 2, 1, "", "delete_access_request"], [0, 2, 1, "", "delete_file"], [0, 2, 1, "", "delete_release"], [0, 2, 1, "", "get_access_request"], [0, 2, 1, "", "get_access_requests"], [0, 2, 1, "", "get_all_images"], [0, 2, 1, "", "get_all_releases"], [0, 2, 1, "", "get_all_schemas"], [0, 2, 1, "", "get_all_teams"], [0, 2, 1, "", "get_download_by_filename"], [0, 2, 1, "", "get_download_file"], [0, 2, 1, "", "get_files"], [0, 2, 1, "", "get_model"], [0, 2, 1, "", "get_model_card"], [0, 2, 1, "", "get_model_roles"], [0, 2, 1, "", "get_model_user_roles"], [0, 2, 1, "", "get_models"], [0, 2, 1, "", "get_release"], [0, 2, 1, "", "get_reviews"], [0, 2, 1, "", "get_schema"], [0, 2, 1, "", "get_team"], [0, 2, 1, "", "get_user_teams"], [0, 2, 1, "", "model_card_from_schema"], [0, 2, 1, "", "patch_access_request"], [0, 2, 1, "", "patch_model"], [0, 2, 1, "", "patch_team"], [0, 2, 1, "", "post_access_request"], [0, 2, 1, "", "post_model"], [0, 2, 1, "", "post_release"], [0, 2, 1, "", "post_review"], [0, 2, 1, "", "post_schema"], [0, 2, 1, "", "post_team"], [0, 2, 1, "", "put_model_card"], [0, 2, 1, "", "put_release"], [0, 2, 1, "", "simple_upload"]], "bailo.core.enums": [[0, 1, 1, "", "EntryKind"], [0, 1, 1, "", "ModelVisibility"], [0, 1, 1, "", "Role"], [0, 1, 1, "", "SchemaKind"]], "bailo.core.enums.EntryKind": [[0, 3, 1, "", "DATACARD"], [0, 3, 1, "", "MODEL"]], "bailo.core.enums.ModelVisibility": [[0, 3, 1, "", "PRIVATE"], [0, 3, 1, "", "PUBLIC"]], "bailo.core.enums.Role": [[0, 3, 1, "", "MODEL_SENIOR_RESPONSIBLE_OFFICER"], [0, 3, 1, "", "MODEL_TECHNICAL_REVIEWER"], [0, 3, 1, "", "OWNER"]], "bailo.core.enums.SchemaKind": [[0, 3, 1, "", "ACCESS_REQUEST"], [0, 3, 1, "", "MODEL"]], "bailo.core.exceptions": [[0, 4, 1, "", "BailoException"], [0, 4, 1, "", "ResponseException"]], "bailo.helper": [[1, 0, 0, "-", "access_request"], [1, 0, 0, "-", "datacard"], [1, 0, 0, "-", "entry"], [1, 0, 0, "-", "model"], [1, 0, 0, "-", "release"], [1, 0, 0, "-", "schema"]], "bailo.helper.access_request": [[1, 1, 1, "", "AccessRequest"]], "bailo.helper.access_request.AccessRequest": [[1, 2, 1, "", "create"], [1, 2, 1, "", "delete"], [1, 2, 1, "", "from_id"], [1, 2, 1, "", "update"]], "bailo.helper.datacard": [[1, 1, 1, "", "Datacard"]], "bailo.helper.datacard.Datacard": [[1, 2, 1, "", "create"], [1, 5, 1, "", "data_card"], [1, 5, 1, "", "data_card_schema"], [1, 5, 1, "", "data_card_version"], [1, 2, 1, "", "from_id"], [1, 2, 1, "", "update_data_card"]], "bailo.helper.entry": [[1, 1, 1, "", "Entry"]], "bailo.helper.entry.Entry": [[1, 2, 1, "", "card_from_schema"], [1, 2, 1, "", "card_from_template"], [1, 2, 1, "", "get_card_latest"], [1, 2, 1, "", "get_card_revision"], [1, 2, 1, "", "get_roles"], [1, 2, 1, "", "get_user_roles"], [1, 2, 1, "", "update"]], "bailo.helper.model": [[1, 1, 1, "", "Experiment"], [1, 1, 1, "", "Model"]], "bailo.helper.model.Experiment": [[1, 2, 1, "", "create"], [1, 2, 1, "", "from_mlflow"], [1, 2, 1, "", "log_artifacts"], [1, 2, 1, "", "log_dataset"], [1, 2, 1, "", "log_metrics"], [1, 2, 1, "", "log_params"], [1, 2, 1, "", "publish"], [1, 2, 1, "", "start_run"]], "bailo.helper.model.Model": [[1, 2, 1, "", "create"], [1, 2, 1, "", "create_experiment"], [1, 2, 1, "", "create_release"], [1, 2, 1, "", "from_id"], [1, 2, 1, "", "get_image"], [1, 2, 1, "", "get_images"], [1, 2, 1, "", "get_latest_release"], [1, 2, 1, "", "get_release"], [1, 2, 1, "", "get_releases"], [1, 5, 1, "", "model_card"], [1, 5, 1, "", "model_card_schema"], [1, 5, 1, "", "model_card_version"], [1, 2, 1, "", "update_model_card"]], "bailo.helper.release": [[1, 1, 1, "", "Release"]], "bailo.helper.release.Release": [[1, 2, 1, "", "__init__"], [1, 2, 1, "", "create"], [1, 2, 1, "", "delete"], [1, 2, 1, "", "download"], [1, 2, 1, "", "download_all"], [1, 2, 1, "", "from_version"], [1, 2, 1, "", "update"], [1, 2, 1, "", "upload"]], "bailo.helper.schema": [[1, 1, 1, "", "Schema"]], "bailo.helper.schema.Schema": [[1, 2, 1, "", "create"], [1, 2, 1, "", "from_id"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:exception", "5": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "exception", "Python exception"], "5": ["py", "property", "Python property"]}, "titleterms": {"bailo": [0, 1, 2, 4, 5, 6, 11], "core": 0, "packag": [0, 1, 2, 9, 11], "helper": 1, "welcom": 2, "": [2, 9], "python": [2, 5, 9, 11], "client": [2, 5, 11], "document": [2, 11], "notebook": 2, "manag": [3, 4, 6, 7, 9], "access": [3, 9], "request": 3, "introduct": [3, 4, 5, 6, 7], "creat": [3, 4, 5, 6, 7, 9], "new": [3, 4, 5, 6, 7, 9], "retriev": [3, 4, 6, 7], "an": [3, 4, 5, 6, 7, 9], "us": [3, 4, 6, 7, 9], "from_id": [3, 4, 6, 7], "method": [3, 4, 6, 7, 9], "make": [3, 9], "chang": [3, 9], "delet": 3, "experi": 5, "track": 5, "mlflow": 5, "connect": 5, "set": [5, 9], "up": [5, 9], "prepar": [5, 6], "custom": 5, "schema": [5, 7], "conduct": 5, "run": [5, 9], "dummi": [5, 9], "import": [5, 9], "exist": [4, 5, 6, 7, 9], "from": [5, 6, 9], "publish": 5, "result": [5, 9], "model": 6, "releas": 6, "resnet": 6, "50": 6, "exampl": [6, 9], "pytorch": 6, "updat": [4, 6], "base": [4, 6, 9], "popul": [4, 6], "card": 6, "weight": 6, "upload": 6, "download": 6, "load": [6, 9], "pre": 8, "commit": 8, "config": 8, "yaml": 8, "A": 9, "comma": 9, "separ": 9, "list": 9, "modul": 9, "name": 9, "where": 9, "c": 9, "extens": 9, "mai": 9, "ar": 9, "activ": 9, "interpret": 9, "arbitrari": 9, "code": 9, "add": [9, 11], "file": 9, "directori": 9, "blacklist": 9, "thei": 9, "should": 9, "path": 9, "match": 9, "regex": 9, "pattern": 9, "The": 9, "against": 9, "execut": 9, "usual": 9, "sy": 9, "manipul": 9, "pygtk": 9, "requir": 9, "multipl": 9, "process": 9, "speed": 9, "pylint": 9, "specifi": 9, "0": 9, "auto": 9, "detect": 9, "number": 9, "processor": 9, "avail": 9, "control": 9, "amount": 9, "potenti": 9, "infer": 9, "valu": 9, "when": 9, "singl": 9, "object": 9, "thi": 9, "can": 9, "help": 9, "perform": 9, "deal": 9, "larg": 9, "function": 9, "complex": 9, "nest": 9, "condit": 9, "plugin": 9, "regist": 9, "addit": 9, "checker": 9, "pickl": 9, "collect": 9, "data": 9, "later": 9, "comparison": 9, "configur": 9, "enabl": 9, "would": 9, "attempt": 9, "guess": 9, "common": 9, "misconfigur": 9, "emit": 9, "user": 9, "friendli": 9, "hint": 9, "instead": 9, "fals": 9, "posit": 9, "error": 9, "messag": 9, "allow": 9, "onli": 9, "show": 9, "warn": 9, "confid": 9, "level": 9, "leav": 9, "empti": 9, "all": 9, "valid": 9, "high": 9, "inference_failur": 9, "undefin": 9, "disabl": 9, "report": 9, "categori": 9, "given": 9, "id": 9, "you": 9, "either": 9, "give": 9, "identifi": 9, "put": 9, "option": 9, "time": 9, "command": 9, "line": 9, "appear": 9, "onc": 9, "also": 9, "everyth": 9, "first": 9, "reenabl": 9, "specif": 9, "check": 9, "For": 9, "want": 9, "similar": 9, "If": 9, "class": 9, "have": 9, "displai": 9, "w": 9, "see": 9, "express": 9, "which": 9, "return": 9, "score": 9, "less": 9, "than": 9, "equal": 9, "10": 9, "variabl": 9, "refactor": 9, "convent": 9, "contain": 9, "each": 9, "well": 9, "statement": 9, "i": 9, "total": 9, "analyz": 9, "global": 9, "evalu": 9, "rp0004": 9, "templat": 9, "style": 9, "format": 9, "string": 9, "inform": 9, "doc": 9, "detail": 9, "output": 9, "text": 9, "parseabl": 9, "color": 9, "json": 9, "msv": 9, "visual": 9, "studio": 9, "e": 9, "g": 9, "mypackag": 9, "mymodul": 9, "myreporterclass": 9, "tell": 9, "whether": 9, "full": 9, "maximum": 9, "block": 9, "bodi": 9, "complet": 9, "never": 9, "inconsist": 9, "call": 9, "consid": 9, "explicit": 9, "print": 9, "correct": 9, "argument": 9, "regular": 9, "overrid": 9, "attribut": 9, "attr": 9, "bad": 9, "alwai": 9, "refus": 9, "constant": 9, "const": 9, "minimum": 9, "length": 9, "docstr": 9, "shorter": 9, "ones": 9, "exempt": 9, "good": 9, "accept": 9, "includ": 9, "invalid": 9, "inlin": 9, "iter": 9, "inlinevar": 9, "colon": 9, "delimit": 9, "determin": 9, "other": 9, "sever": 9, "do": 9, "decor": 9, "produc": 9, "properti": 9, "abc": 9, "abstractproperti": 9, "These": 9, "taken": 9, "consider": 9, "expect": 9, "end": 9, "ani": 9, "lf": 9, "crlf": 9, "regexp": 9, "longer": 9, "limit": 9, "space": 9, "indent": 9, "insid": 9, "hang": 9, "continu": 9, "unit": 9, "4": 9, "t": 9, "1": 9, "tab": 9, "charact": 9, "construct": 9, "whitespac": 9, "dict": 9, "tabul": 9, "etc": 9, "n222": 9, "2": 9, "trail": 9, "between": 9, "close": 9, "bracket": 9, "same": 9, "declar": 9, "test": [9, 11], "els": 9, "log": 9, "old": 9, "mean": 9, "fstr": 9, "f": 9, "paramet": 9, "note": 9, "tag": 9, "take": 9, "ignor": 9, "comment": 9, "comput": 9, "count": 9, "suggest": 9, "spell": 9, "mistak": 9, "dictionari": 9, "none": 9, "To": 9, "work": 9, "instal": [9, 11], "enchant": 9, "word": 9, "privat": 9, "one": 9, "per": 9, "store": 9, "unknown": 9, "rais": 9, "flag": 9, "implicit": 9, "str": 9, "concat": 9, "sequenc": 9, "gener": 9, "concaten": 9, "defin": 9, "over": 9, "context": 9, "contextlib": 9, "contextmanag": 9, "member": 9, "dynam": 9, "miss": 9, "system": 9, "so": 9, "shouldn": 9, "trigger": 9, "e1101": 9, "mixin": 9, "its": 9, "case": 9, "insensit": 9, "about": 9, "owner": 9, "whenev": 9, "opaqu": 9, "while": 9, "some": 9, "branch": 9, "might": 9, "partial": 9, "In": 9, "still": 9, "rest": 9, "support": 9, "qualifi": 9, "project": 9, "namespac": 9, "dure": 9, "runtim": 9, "thu": 9, "cannot": 9, "deduc": 9, "static": 9, "analysi": 9, "It": 9, "unix": 9, "possibl": 9, "wa": 9, "found": 9, "aspect": 9, "find": 9, "edit": 9, "distanc": 9, "order": 9, "signatur": 9, "suppos": 9, "builtin": 9, "rememb": 9, "avoid": 9, "unus": 9, "treat": 9, "violat": 9, "callback": 9, "must": 9, "start": [9, 11], "those": 9, "default": 9, "lead": 9, "underscor": 9, "we": 9, "init": 9, "redefin": 9, "assign": 9, "instanc": 9, "exclud": 9, "protect": 9, "metaclass": 9, "r0902": 9, "boolean": 9, "r0916": 9, "local": [9, 11], "parent": 9, "r0901": 9, "public": 9, "r0904": 9, "yield": 9, "r0903": 9, "just": 9, "top": 9, "wildcard": 9, "analys": 9, "fallback": 9, "both": 9, "3": 9, "compat": 9, "anoth": 9, "deprec": 9, "graph": 9, "extern": 9, "depend": 9, "rp0402": 9, "everi": 9, "intern": 9, "forc": 9, "recogn": 9, "part": 9, "standard": 9, "librari": 9, "third": 9, "parti": 9, "coupl": 9, "prefer": 9, "except": 9, "being": 9, "caught": 9, "baseexcept": 9, "pypyroject": 10, "toml": 10, "kei": 11, "featur": 11, "get": 11, "build": 11, "develop": 11, "precommit": 11, "datacard": 4}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "nbsphinx": 4, "sphinx": 60}, "alltitles": {"Managing Access Requests": [[3, "Managing-Access-Requests"]], "Introduction": [[3, "Introduction"], [7, "Introduction"], [4, "Introduction"], [5, "Introduction"], [6, "Introduction"]], "Creating a new access request": [[3, "Creating-a-new-access-request"]], "Retrieving an access request": [[3, "Retrieving-an-access-request"]], "Using the .from_id() method": [[3, "Using-the-.from_id()-method"], [7, "Using-the-.from_id()-method"], [4, "Using-the-.from_id()-method"], [6, "Using-the-.from_id()-method"]], "Making changes to an access request": [[3, "Making-changes-to-an-access-request"]], "Deleting an access request": [[3, "Deleting-an-access-request"]], "Managing Schemas": [[7, "Managing-Schemas"]], "Creating a new schema": [[7, "Creating-a-new-schema"]], "Retrieving an existing schema": [[7, "Retrieving-an-existing-schema"]], "pre-commit-config.yaml": [[8, "pre-commit-config-yaml"]], "A comma-separated list of package or module names from where C extensions may": [[9, "a-comma-separated-list-of-package-or-module-names-from-where-c-extensions-may"]], "be loaded. Extensions are loading into the active Python interpreter and may": [[9, "be-loaded-extensions-are-loading-into-the-active-python-interpreter-and-may"]], "run arbitrary code.": [[9, "run-arbitrary-code"]], "Add files or directories to the blacklist. They should be base names, not": [[9, "add-files-or-directories-to-the-blacklist-they-should-be-base-names-not"]], "paths.": [[9, "paths"]], "Add files or directories matching the regex patterns to the blacklist. The": [[9, "add-files-or-directories-matching-the-regex-patterns-to-the-blacklist-the"]], "regex matches against base names, not paths.": [[9, "regex-matches-against-base-names-not-paths"]], "Python code to execute, usually for sys.path manipulation such as": [[9, "python-code-to-execute-usually-for-sys-path-manipulation-such-as"]], "pygtk.require().": [[9, "pygtk-require"]], "Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the": [[9, "use-multiple-processes-to-speed-up-pylint-specifying-0-will-auto-detect-the"]], "number of processors available to use.": [[9, "number-of-processors-available-to-use"]], "Control the amount of potential inferred values when inferring a single": [[9, "control-the-amount-of-potential-inferred-values-when-inferring-a-single"]], "object. This can help the performance when dealing with large functions or": [[9, "object-this-can-help-the-performance-when-dealing-with-large-functions-or"]], "complex, nested conditions.": [[9, "complex-nested-conditions"]], "List of plugins (as comma separated values of python module names) to load,": [[9, "list-of-plugins-as-comma-separated-values-of-python-module-names-to-load"]], "usually to register additional checkers.": [[9, "usually-to-register-additional-checkers"]], "Pickle collected data for later comparisons.": [[9, "pickle-collected-data-for-later-comparisons"]], "Specify a configuration file.": [[9, "specify-a-configuration-file"]], "When enabled, pylint would attempt to guess common misconfiguration and emit": [[9, "when-enabled-pylint-would-attempt-to-guess-common-misconfiguration-and-emit"]], "user-friendly hints instead of false-positive error messages.": [[9, "user-friendly-hints-instead-of-false-positive-error-messages"]], "Allow loading of arbitrary C extensions. Extensions are imported into the": [[9, "allow-loading-of-arbitrary-c-extensions-extensions-are-imported-into-the"]], "active Python interpreter and may run arbitrary code.": [[9, "active-python-interpreter-and-may-run-arbitrary-code"]], "Only show warnings with the listed confidence levels. Leave empty to show": [[9, "only-show-warnings-with-the-listed-confidence-levels-leave-empty-to-show"]], "all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED.": [[9, "all-valid-levels-high-inference-inference-failure-undefined"]], "Disable the message, report, category or checker with the given id(s). You": [[9, "disable-the-message-report-category-or-checker-with-the-given-id-s-you"]], "can either give multiple identifiers separated by comma (,) or put this": [[9, "can-either-give-multiple-identifiers-separated-by-comma-or-put-this"]], "option multiple times (only on the command line, not in the configuration": [[9, "option-multiple-times-only-on-the-command-line-not-in-the-configuration"]], "file where it should appear only once). You can also use \u201c\u2013disable=all\u201d to": [[9, "file-where-it-should-appear-only-once-you-can-also-use-disable-all-to"]], "disable everything first and then reenable specific checks. For example, if": [[9, "disable-everything-first-and-then-reenable-specific-checks-for-example-if"]], "you want to run only the similarities checker, you can use \u201c\u2013disable=all": [[9, "you-want-to-run-only-the-similarities-checker-you-can-use-disable-all"]], "\u2013enable=similarities\u201d. If you want to run only the classes checker, but have": [[9, "enable-similarities-if-you-want-to-run-only-the-classes-checker-but-have"]], "no Warning level messages displayed, use \u201c\u2013disable=all \u2013enable=classes": [[9, "no-warning-level-messages-displayed-use-disable-all-enable-classes"]], "\u2013disable=W\u201d.": [[9, "disable-w"]], "Enable the message, report, category or checker with the given id(s). You can": [[9, "enable-the-message-report-category-or-checker-with-the-given-id-s-you-can"]], "either give multiple identifier separated by comma (,) or put this option": [[9, "either-give-multiple-identifier-separated-by-comma-or-put-this-option"]], "multiple time (only on the command line, not in the configuration file where": [[9, "multiple-time-only-on-the-command-line-not-in-the-configuration-file-where"]], "it should appear only once). See also the \u201c\u2013disable\u201d option for examples.": [[9, "it-should-appear-only-once-see-also-the-disable-option-for-examples"]], "Python expression which should return a score less than or equal to 10. You": [[9, "python-expression-which-should-return-a-score-less-than-or-equal-to-10-you"]], "have access to the variables \u2018error\u2019, \u2018warning\u2019, \u2018refactor\u2019, and \u2018convention\u2019": [[9, "have-access-to-the-variables-error-warning-refactor-and-convention"]], "which contain the number of messages in each category, as well as \u2018statement\u2019": [[9, "which-contain-the-number-of-messages-in-each-category-as-well-as-statement"]], "which is the total number of statements analyzed. This score is used by the": [[9, "which-is-the-total-number-of-statements-analyzed-this-score-is-used-by-the"]], "global evaluation report (RP0004).": [[9, "global-evaluation-report-rp0004"]], "Template used to display messages. This is a python new-style format string": [[9, "template-used-to-display-messages-this-is-a-python-new-style-format-string"]], "used to format the message information. See doc for all details.": [[9, "used-to-format-the-message-information-see-doc-for-all-details"]], "Set the output format. Available formats are text, parseable, colorized, json": [[9, "set-the-output-format-available-formats-are-text-parseable-colorized-json"]], "and msvs (visual studio). You can also give a reporter class, e.g.": [[9, "and-msvs-visual-studio-you-can-also-give-a-reporter-class-e-g"]], "mypackage.mymodule.MyReporterClass.": [[9, "mypackage-mymodule-myreporterclass"]], "Tells whether to display a full report or only the messages.": [[9, "tells-whether-to-display-a-full-report-or-only-the-messages"]], "Activate the evaluation score.": [[9, "activate-the-evaluation-score"]], "Maximum number of nested blocks for function / method body": [[9, "maximum-number-of-nested-blocks-for-function-method-body"]], "Complete name of functions that never returns. When checking for": [[9, "complete-name-of-functions-that-never-returns-when-checking-for"]], "inconsistent-return-statements if a never returning function is called then": [[9, "inconsistent-return-statements-if-a-never-returning-function-is-called-then"]], "it will be considered as an explicit return statement and no message will be": [[9, "it-will-be-considered-as-an-explicit-return-statement-and-no-message-will-be"]], "printed.": [[9, "printed"]], "Naming style matching correct argument names.": [[9, "naming-style-matching-correct-argument-names"]], "Regular expression matching correct argument names. Overrides argument-": [[9, "regular-expression-matching-correct-argument-names-overrides-argument"]], "naming-style.": [[9, "naming-style"], [9, "id3"], [9, "id6"]], "Naming style matching correct attribute names.": [[9, "naming-style-matching-correct-attribute-names"]], "Regular expression matching correct attribute names. Overrides attr-naming-": [[9, "regular-expression-matching-correct-attribute-names-overrides-attr-naming"]], "style.": [[9, "style"], [9, "id1"], [9, "id2"], [9, "id4"], [9, "id5"]], "Bad variable names which should always be refused, separated by a comma.": [[9, "bad-variable-names-which-should-always-be-refused-separated-by-a-comma"]], "Naming style matching correct class attribute names.": [[9, "naming-style-matching-correct-class-attribute-names"]], "Regular expression matching correct class attribute names. Overrides class-": [[9, "regular-expression-matching-correct-class-attribute-names-overrides-class"]], "attribute-naming-style.": [[9, "attribute-naming-style"]], "Naming style matching correct class names.": [[9, "naming-style-matching-correct-class-names"]], "Regular expression matching correct class names. Overrides class-naming-": [[9, "regular-expression-matching-correct-class-names-overrides-class-naming"]], "Naming style matching correct constant names.": [[9, "naming-style-matching-correct-constant-names"]], "Regular expression matching correct constant names. Overrides const-naming-": [[9, "regular-expression-matching-correct-constant-names-overrides-const-naming"]], "Minimum line length for functions/classes that require docstrings, shorter": [[9, "minimum-line-length-for-functions-classes-that-require-docstrings-shorter"]], "ones are exempt.": [[9, "ones-are-exempt"]], "Naming style matching correct function names.": [[9, "naming-style-matching-correct-function-names"]], "Regular expression matching correct function names. Overrides function-": [[9, "regular-expression-matching-correct-function-names-overrides-function"]], "Good variable names which should always be accepted, separated by a comma.": [[9, "good-variable-names-which-should-always-be-accepted-separated-by-a-comma"]], "Include a hint for the correct naming format with invalid-name.": [[9, "include-a-hint-for-the-correct-naming-format-with-invalid-name"]], "Naming style matching correct inline iteration names.": [[9, "naming-style-matching-correct-inline-iteration-names"]], "Regular expression matching correct inline iteration names. Overrides": [[9, "regular-expression-matching-correct-inline-iteration-names-overrides"]], "inlinevar-naming-style.": [[9, "inlinevar-naming-style"]], "Naming style matching correct method names.": [[9, "naming-style-matching-correct-method-names"]], "Regular expression matching correct method names. Overrides method-naming-": [[9, "regular-expression-matching-correct-method-names-overrides-method-naming"]], "Naming style matching correct module names.": [[9, "naming-style-matching-correct-module-names"]], "Regular expression matching correct module names. Overrides module-naming-": [[9, "regular-expression-matching-correct-module-names-overrides-module-naming"]], "Colon-delimited sets of names that determine each other\u2019s naming style when": [[9, "colon-delimited-sets-of-names-that-determine-each-other-s-naming-style-when"]], "the name regexes allow several styles.": [[9, "the-name-regexes-allow-several-styles"]], "Regular expression which should only match function or class names that do": [[9, "regular-expression-which-should-only-match-function-or-class-names-that-do"]], "not require a docstring.": [[9, "not-require-a-docstring"]], "List of decorators that produce properties, such as abc.abstractproperty. Add": [[9, "list-of-decorators-that-produce-properties-such-as-abc-abstractproperty-add"]], "to this list to register other decorators that produce valid properties.": [[9, "to-this-list-to-register-other-decorators-that-produce-valid-properties"]], "These decorators are taken in consideration only for invalid-name.": [[9, "these-decorators-are-taken-in-consideration-only-for-invalid-name"]], "Naming style matching correct variable names.": [[9, "naming-style-matching-correct-variable-names"]], "Regular expression matching correct variable names. Overrides variable-": [[9, "regular-expression-matching-correct-variable-names-overrides-variable"]], "Expected format of line ending, e.g. empty (any line ending), LF or CRLF.": [[9, "expected-format-of-line-ending-e-g-empty-any-line-ending-lf-or-crlf"]], "Regexp for a line that is allowed to be longer than the limit.": [[9, "regexp-for-a-line-that-is-allowed-to-be-longer-than-the-limit"]], "Number of spaces of indent required inside a hanging or continued line.": [[9, "number-of-spaces-of-indent-required-inside-a-hanging-or-continued-line"]], "String used as indentation unit. This is usually \u201c \u201c (4 spaces) or \u201c\\t\u201d (1": [[9, "string-used-as-indentation-unit-this-is-usually-4-spaces-or-t-1"]], "tab).": [[9, "tab"]], "Maximum number of characters on a single line.": [[9, "maximum-number-of-characters-on-a-single-line"]], "Maximum number of lines in a module.": [[9, "maximum-number-of-lines-in-a-module"]], "List of optional constructs for which whitespace checking is disabled. `dict-": [[9, "list-of-optional-constructs-for-which-whitespace-checking-is-disabled-dict"]], "separator` is used to allow tabulation in dicts, etc.: {1 : 1,\\n222: 2}.": [[9, "separator-is-used-to-allow-tabulation-in-dicts-etc-1-1-n222-2"]], "trailing-comma allows a space between comma and closing bracket: (a, ).": [[9, "trailing-comma-allows-a-space-between-comma-and-closing-bracket-a"]], "empty-line allows space-only lines.": [[9, "empty-line-allows-space-only-lines"]], "Allow the body of a class to be on the same line as the declaration if body": [[9, "allow-the-body-of-a-class-to-be-on-the-same-line-as-the-declaration-if-body"]], "contains single statement.": [[9, "contains-single-statement"]], "Allow the body of an if to be on the same line as the test if there is no": [[9, "allow-the-body-of-an-if-to-be-on-the-same-line-as-the-test-if-there-is-no"]], "else.": [[9, "else"]], "Format style used to check logging format string. old means using %": [[9, "format-style-used-to-check-logging-format-string-old-means-using"]], "formatting, new is for {} formatting,and fstr is for f-strings.": [[9, "formatting-new-is-for-formatting-and-fstr-is-for-f-strings"]], "Logging modules to check that the string format arguments are in logging": [[9, "logging-modules-to-check-that-the-string-format-arguments-are-in-logging"]], "function parameter format.": [[9, "function-parameter-format"]], "List of note tags to take in consideration, separated by a comma.": [[9, "list-of-note-tags-to-take-in-consideration-separated-by-a-comma"]], "Ignore comments when computing similarities.": [[9, "ignore-comments-when-computing-similarities"]], "Ignore docstrings when computing similarities.": [[9, "ignore-docstrings-when-computing-similarities"]], "Ignore imports when computing similarities.": [[9, "ignore-imports-when-computing-similarities"]], "Minimum lines number of a similarity.": [[9, "minimum-lines-number-of-a-similarity"]], "Limits count of emitted suggestions for spelling mistakes.": [[9, "limits-count-of-emitted-suggestions-for-spelling-mistakes"]], "Spelling dictionary name. Available dictionaries: none. To make it work,": [[9, "spelling-dictionary-name-available-dictionaries-none-to-make-it-work"]], "install the python-enchant package.": [[9, "install-the-python-enchant-package"]], "List of comma separated words that should not be checked.": [[9, "list-of-comma-separated-words-that-should-not-be-checked"]], "A path to a file that contains the private dictionary; one word per line.": [[9, "a-path-to-a-file-that-contains-the-private-dictionary-one-word-per-line"]], "Tells whether to store unknown words to the private dictionary (see the": [[9, "tells-whether-to-store-unknown-words-to-the-private-dictionary-see-the"]], "\u2013spelling-private-dict-file option) instead of raising a message.": [[9, "spelling-private-dict-file-option-instead-of-raising-a-message"]], "This flag controls whether the implicit-str-concat-in-sequence should": [[9, "this-flag-controls-whether-the-implicit-str-concat-in-sequence-should"]], "generate a warning on implicit string concatenation in sequences defined over": [[9, "generate-a-warning-on-implicit-string-concatenation-in-sequences-defined-over"]], "several lines.": [[9, "several-lines"]], "List of decorators that produce context managers, such as": [[9, "list-of-decorators-that-produce-context-managers-such-as"]], "contextlib.contextmanager. Add to this list to register other decorators that": [[9, "contextlib-contextmanager-add-to-this-list-to-register-other-decorators-that"]], "produce valid context managers.": [[9, "produce-valid-context-managers"]], "List of members which are set dynamically and missed by pylint inference": [[9, "list-of-members-which-are-set-dynamically-and-missed-by-pylint-inference"]], "system, and so shouldn\u2019t trigger E1101 when accessed. Python regular": [[9, "system-and-so-shouldn-t-trigger-e1101-when-accessed-python-regular"]], "expressions are accepted.": [[9, "expressions-are-accepted"]], "Tells whether missing members accessed in mixin class should be ignored. A": [[9, "tells-whether-missing-members-accessed-in-mixin-class-should-be-ignored-a"]], "mixin class is detected if its name ends with \u201cmixin\u201d (case insensitive).": [[9, "mixin-class-is-detected-if-its-name-ends-with-mixin-case-insensitive"]], "Tells whether to warn about missing members when the owner of the attribute": [[9, "tells-whether-to-warn-about-missing-members-when-the-owner-of-the-attribute"]], "is inferred to be None.": [[9, "is-inferred-to-be-none"]], "This flag controls whether pylint should warn about no-member and similar": [[9, "this-flag-controls-whether-pylint-should-warn-about-no-member-and-similar"]], "checks whenever an opaque object is returned when inferring. The inference": [[9, "checks-whenever-an-opaque-object-is-returned-when-inferring-the-inference"]], "can return multiple potential results while evaluating a Python object, but": [[9, "can-return-multiple-potential-results-while-evaluating-a-python-object-but"]], "some branches might not be evaluated, which results in partial inference. In": [[9, "some-branches-might-not-be-evaluated-which-results-in-partial-inference-in"]], "that case, it might be useful to still emit no-member and other checks for": [[9, "that-case-it-might-be-useful-to-still-emit-no-member-and-other-checks-for"]], "the rest of the inferred objects.": [[9, "the-rest-of-the-inferred-objects"]], "List of class names for which member attributes should not be checked (useful": [[9, "list-of-class-names-for-which-member-attributes-should-not-be-checked-useful"]], "for classes with dynamically set attributes). This supports the use of": [[9, "for-classes-with-dynamically-set-attributes-this-supports-the-use-of"]], "qualified names.": [[9, "qualified-names"]], "List of module names for which member attributes should not be checked": [[9, "list-of-module-names-for-which-member-attributes-should-not-be-checked"]], "(useful for modules/projects where namespaces are manipulated during runtime": [[9, "useful-for-modules-projects-where-namespaces-are-manipulated-during-runtime"]], "and thus existing member attributes cannot be deduced by static analysis). It": [[9, "and-thus-existing-member-attributes-cannot-be-deduced-by-static-analysis-it"]], "supports qualified module names, as well as Unix pattern matching.": [[9, "supports-qualified-module-names-as-well-as-unix-pattern-matching"]], "Show a hint with possible names when a member name was not found. The aspect": [[9, "show-a-hint-with-possible-names-when-a-member-name-was-not-found-the-aspect"]], "of finding the hint is based on edit distance.": [[9, "of-finding-the-hint-is-based-on-edit-distance"]], "The minimum edit distance a name should have in order to be considered a": [[9, "the-minimum-edit-distance-a-name-should-have-in-order-to-be-considered-a"]], "similar match for a missing member name.": [[9, "similar-match-for-a-missing-member-name"]], "The total number of similar names that should be taken in consideration when": [[9, "the-total-number-of-similar-names-that-should-be-taken-in-consideration-when"]], "showing a hint for a missing member.": [[9, "showing-a-hint-for-a-missing-member"]], "List of decorators that change the signature of a decorated function.": [[9, "list-of-decorators-that-change-the-signature-of-a-decorated-function"]], "List of additional names supposed to be defined in builtins. Remember that": [[9, "list-of-additional-names-supposed-to-be-defined-in-builtins-remember-that"]], "you should avoid defining new builtins when possible.": [[9, "you-should-avoid-defining-new-builtins-when-possible"]], "Tells whether unused global variables should be treated as a violation.": [[9, "tells-whether-unused-global-variables-should-be-treated-as-a-violation"]], "List of strings which can identify a callback function by name. A callback": [[9, "list-of-strings-which-can-identify-a-callback-function-by-name-a-callback"]], "name must start or end with one of those strings.": [[9, "name-must-start-or-end-with-one-of-those-strings"]], "A regular expression matching the name of dummy variables (i.e. expected to": [[9, "a-regular-expression-matching-the-name-of-dummy-variables-i-e-expected-to"]], "not be used).": [[9, "not-be-used"]], "Argument names that match this expression will be ignored. Default to name": [[9, "argument-names-that-match-this-expression-will-be-ignored-default-to-name"]], "with leading underscore.": [[9, "with-leading-underscore"]], "Tells whether we should check for unused import in init files.": [[9, "tells-whether-we-should-check-for-unused-import-in-init-files"]], "List of qualified module names which can have objects that can redefine": [[9, "list-of-qualified-module-names-which-can-have-objects-that-can-redefine"]], "builtins.": [[9, "builtins"]], "List of method names used to declare (i.e. assign) instance attributes.": [[9, "list-of-method-names-used-to-declare-i-e-assign-instance-attributes"]], "List of member names, which should be excluded from the protected access": [[9, "list-of-member-names-which-should-be-excluded-from-the-protected-access"]], "warning.": [[9, "warning"]], "List of valid names for the first argument in a class method.": [[9, "list-of-valid-names-for-the-first-argument-in-a-class-method"]], "List of valid names for the first argument in a metaclass class method.": [[9, "list-of-valid-names-for-the-first-argument-in-a-metaclass-class-method"]], "Maximum number of arguments for function / method.": [[9, "maximum-number-of-arguments-for-function-method"]], "Maximum number of attributes for a class (see R0902).": [[9, "maximum-number-of-attributes-for-a-class-see-r0902"]], "Maximum number of boolean expressions in an if statement (see R0916).": [[9, "maximum-number-of-boolean-expressions-in-an-if-statement-see-r0916"]], "Maximum number of branch for function / method body.": [[9, "maximum-number-of-branch-for-function-method-body"]], "Maximum number of locals for function / method body.": [[9, "maximum-number-of-locals-for-function-method-body"]], "Maximum number of parents for a class (see R0901).": [[9, "maximum-number-of-parents-for-a-class-see-r0901"]], "Maximum number of public methods for a class (see R0904).": [[9, "maximum-number-of-public-methods-for-a-class-see-r0904"]], "Maximum number of return / yield for function / method body.": [[9, "maximum-number-of-return-yield-for-function-method-body"]], "Maximum number of statements in function / method body.": [[9, "maximum-number-of-statements-in-function-method-body"]], "Minimum number of public methods for a class (see R0903).": [[9, "minimum-number-of-public-methods-for-a-class-see-r0903"]], "List of modules that can be imported at any level, not just the top level": [[9, "list-of-modules-that-can-be-imported-at-any-level-not-just-the-top-level"]], "one.": [[9, "one"]], "Allow wildcard imports from modules that define all.": [[9, "allow-wildcard-imports-from-modules-that-define-all"]], "Analyse import fallback blocks. This can be used to support both Python 2 and": [[9, "analyse-import-fallback-blocks-this-can-be-used-to-support-both-python-2-and"]], "3 compatible code, which means that the block might have code that exists": [[9, "compatible-code-which-means-that-the-block-might-have-code-that-exists"]], "only in one or another interpreter, leading to false positives when analysed.": [[9, "only-in-one-or-another-interpreter-leading-to-false-positives-when-analysed"]], "Deprecated modules which should not be used, separated by a comma.": [[9, "deprecated-modules-which-should-not-be-used-separated-by-a-comma"]], "Create a graph of external dependencies in the given file (report RP0402 must": [[9, "create-a-graph-of-external-dependencies-in-the-given-file-report-rp0402-must"]], "not be disabled).": [[9, "not-be-disabled"], [9, "id7"]], "Create a graph of every (i.e. internal and external) dependencies in the": [[9, "create-a-graph-of-every-i-e-internal-and-external-dependencies-in-the"]], "given file (report RP0402 must not be disabled).": [[9, "given-file-report-rp0402-must-not-be-disabled"]], "Create a graph of internal dependencies in the given file (report RP0402 must": [[9, "create-a-graph-of-internal-dependencies-in-the-given-file-report-rp0402-must"]], "Force import order to recognize a module as part of the standard": [[9, "force-import-order-to-recognize-a-module-as-part-of-the-standard"]], "compatibility libraries.": [[9, "compatibility-libraries"]], "Force import order to recognize a module as part of a third party library.": [[9, "force-import-order-to-recognize-a-module-as-part-of-a-third-party-library"]], "Couples of modules and preferred modules, separated by a comma.": [[9, "couples-of-modules-and-preferred-modules-separated-by-a-comma"]], "Exceptions that will emit a warning when being caught. Defaults to": [[9, "exceptions-that-will-emit-a-warning-when-being-caught-defaults-to"]], "\u201cBaseException, Exception\u201d.": [[9, "baseexception-exception"]], "pypyroject.toml": [[10, "pypyroject-toml"]], "Bailo Python Client": [[11, "bailo-python-client"], [2, "bailo-python-client"]], "Key Features": [[11, "key-features"]], "Installing": [[11, "installing"]], "Getting Started": [[11, "getting-started"]], "Documentation": [[11, "documentation"]], "Building locally": [[11, "building-locally"]], "Development": [[11, "development"]], "Install and add precommit": [[11, "install-and-add-precommit"]], "Install the package locally": [[11, "install-the-package-locally"]], "Testing": [[11, "testing"]], "bailo.core package": [[0, "bailo-core-package"]], "Welcome to Bailo\u2019s Python Client documentation!": [[2, "module-bailo"]], "Packages:": [[2, null]], "Notebooks:": [[2, null]], "Managing Datacards": [[4, "Managing-Datacards"]], "Creating a new datacard in Bailo": [[4, "Creating-a-new-datacard-in-Bailo"]], "Creating and updating the base datacard": [[4, "Creating-and-updating-the-base-datacard"]], "Populating the datacard": [[4, "Populating-the-datacard"]], "Retrieving an existing datacard": [[4, "Retrieving-an-existing-datacard"]], "Experiment Tracking with Bailo & MLFlow": [[5, "Experiment-Tracking-with-Bailo-&-MLFlow"]], "Connecting with Bailo": [[5, "Connecting-with-Bailo"]], "Setting up MLFlow Tracking": [[5, "Setting-up-MLFlow-Tracking"]], "Preparing a custom schema for tracking": [[5, "Preparing-a-custom-schema-for-tracking"]], "Creating a new experiment": [[5, "Creating-a-new-experiment"]], "Conducting experiment runs": [[5, "Conducting-experiment-runs"]], "Running an experiment with the Bailo python client": [[5, "Running-an-experiment-with-the-Bailo-python-client"]], "Creating a dummy MLFlow experiment run": [[5, "Creating-a-dummy-MLFlow-experiment-run"]], "Importing existing experiments from MLFlow into Bailo": [[5, "Importing-existing-experiments-from-MLFlow-into-Bailo"]], "Publishing results to Bailo": [[5, "Publishing-results-to-Bailo"]], "Managing Models & Releases (ResNet-50 Example with PyTorch)": [[6, "Managing-Models-&-Releases-(ResNet-50-Example-with-PyTorch)"]], "Creating a new ResNet-50 model in Bailo": [[6, "Creating-a-new-ResNet-50-model-in-Bailo"]], "Creating and updating the base model": [[6, "Creating-and-updating-the-base-model"]], "Creating and populating a model card": [[6, "Creating-and-populating-a-model-card"]], "Retrieving an existing model": [[6, "Retrieving-an-existing-model"]], "Creating and managing releases for models": [[6, "Creating-and-managing-releases-for-models"]], "Creating a release": [[6, "Creating-a-release"]], "Preparing the model weights using PyTorch": [[6, "Preparing-the-model-weights-using-PyTorch"]], "Uploading weights to the release": [[6, "Uploading-weights-to-the-release"]], "Retrieving a release": [[6, "Retrieving-a-release"]], "Downloading weights from the release": [[6, "Downloading-weights-from-the-release"]], "Loading the model using PyTorch": [[6, "Loading-the-model-using-PyTorch"]], "bailo.helper package": [[1, "module-bailo.helper.access_request"]]}, "indexentries": {"accessrequest (class in bailo.helper.access_request)": [[1, "bailo.helper.access_request.AccessRequest"]], "datacard (class in bailo.helper.datacard)": [[1, "bailo.helper.datacard.Datacard"]], "entry (class in bailo.helper.entry)": [[1, "bailo.helper.entry.Entry"]], "experiment (class in bailo.helper.model)": [[1, "bailo.helper.model.Experiment"]], "model (class in bailo.helper.model)": [[1, "bailo.helper.model.Model"]], "release (class in bailo.helper.release)": [[1, "bailo.helper.release.Release"]], "schema (class in bailo.helper.schema)": [[1, "bailo.helper.schema.Schema"]], "__init__() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.__init__"]], "bailo.helper.access_request": [[1, "module-bailo.helper.access_request"]], "bailo.helper.datacard": [[1, "module-bailo.helper.datacard"]], "bailo.helper.entry": [[1, "module-bailo.helper.entry"]], "bailo.helper.model": [[1, "module-bailo.helper.model"]], "bailo.helper.release": [[1, "module-bailo.helper.release"]], "bailo.helper.schema": [[1, "module-bailo.helper.schema"]], "card_from_schema() (bailo.helper.entry.entry method)": [[1, "bailo.helper.entry.Entry.card_from_schema"]], "card_from_template() (bailo.helper.entry.entry method)": [[1, "bailo.helper.entry.Entry.card_from_template"]], "create() (bailo.helper.access_request.accessrequest class method)": [[1, "bailo.helper.access_request.AccessRequest.create"]], "create() (bailo.helper.datacard.datacard class method)": [[1, "bailo.helper.datacard.Datacard.create"]], "create() (bailo.helper.model.experiment class method)": [[1, "bailo.helper.model.Experiment.create"]], "create() (bailo.helper.model.model class method)": [[1, "bailo.helper.model.Model.create"]], "create() (bailo.helper.release.release class method)": [[1, "bailo.helper.release.Release.create"]], "create() (bailo.helper.schema.schema class method)": [[1, "bailo.helper.schema.Schema.create"]], "create_experiment() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.create_experiment"]], "create_release() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.create_release"]], "data_card (bailo.helper.datacard.datacard property)": [[1, "bailo.helper.datacard.Datacard.data_card"]], "data_card_schema (bailo.helper.datacard.datacard property)": [[1, "bailo.helper.datacard.Datacard.data_card_schema"]], "data_card_version (bailo.helper.datacard.datacard property)": [[1, "bailo.helper.datacard.Datacard.data_card_version"]], "delete() (bailo.helper.access_request.accessrequest method)": [[1, "bailo.helper.access_request.AccessRequest.delete"]], "delete() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.delete"]], "download() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.download"]], "download_all() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.download_all"]], "from_id() (bailo.helper.access_request.accessrequest class method)": [[1, "bailo.helper.access_request.AccessRequest.from_id"]], "from_id() (bailo.helper.datacard.datacard class method)": [[1, "bailo.helper.datacard.Datacard.from_id"]], "from_id() (bailo.helper.model.model class method)": [[1, "bailo.helper.model.Model.from_id"]], "from_id() (bailo.helper.schema.schema class method)": [[1, "bailo.helper.schema.Schema.from_id"]], "from_mlflow() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.from_mlflow"]], "from_version() (bailo.helper.release.release class method)": [[1, "bailo.helper.release.Release.from_version"]], "get_card_latest() (bailo.helper.entry.entry method)": [[1, "bailo.helper.entry.Entry.get_card_latest"]], "get_card_revision() (bailo.helper.entry.entry method)": [[1, "bailo.helper.entry.Entry.get_card_revision"]], "get_image() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_image"]], "get_images() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_images"]], "get_latest_release() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_latest_release"]], "get_release() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_release"]], "get_releases() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_releases"]], "get_roles() (bailo.helper.entry.entry method)": [[1, "bailo.helper.entry.Entry.get_roles"]], "get_user_roles() (bailo.helper.entry.entry method)": [[1, "bailo.helper.entry.Entry.get_user_roles"]], "log_artifacts() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_artifacts"]], "log_dataset() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_dataset"]], "log_metrics() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_metrics"]], "log_params() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_params"]], "model_card (bailo.helper.model.model property)": [[1, "bailo.helper.model.Model.model_card"]], "model_card_schema (bailo.helper.model.model property)": [[1, "bailo.helper.model.Model.model_card_schema"]], "model_card_version (bailo.helper.model.model property)": [[1, "bailo.helper.model.Model.model_card_version"]], "module": [[1, "module-bailo.helper.access_request"], [1, "module-bailo.helper.datacard"], [1, "module-bailo.helper.entry"], [1, "module-bailo.helper.model"], [1, "module-bailo.helper.release"], [1, "module-bailo.helper.schema"], [2, "module-bailo"]], "publish() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.publish"]], "start_run() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.start_run"]], "update() (bailo.helper.access_request.accessrequest method)": [[1, "bailo.helper.access_request.AccessRequest.update"]], "update() (bailo.helper.entry.entry method)": [[1, "bailo.helper.entry.Entry.update"]], "update() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.update"]], "update_data_card() (bailo.helper.datacard.datacard method)": [[1, "bailo.helper.datacard.Datacard.update_data_card"]], "update_model_card() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.update_model_card"]], "upload() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.upload"]], "bailo": [[2, "module-bailo"]]}}) \ No newline at end of file diff --git a/backend/python-docs/_build/html/_modules/bailo/core/agent.html b/backend/python-docs/_build/html/_modules/bailo/core/agent.html index 6fa97ab9f..7f0eee259 100644 --- a/backend/python-docs/_build/html/_modules/bailo/core/agent.html +++ b/backend/python-docs/_build/html/_modules/bailo/core/agent.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/datacards_demo.html">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/models_and_releases_demo_pytorch.html">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/schemas_demo.html">Managing Schemas</a></li> diff --git a/backend/python-docs/_build/html/_modules/bailo/core/client.html b/backend/python-docs/_build/html/_modules/bailo/core/client.html index cf858b170..c3befcad7 100644 --- a/backend/python-docs/_build/html/_modules/bailo/core/client.html +++ b/backend/python-docs/_build/html/_modules/bailo/core/client.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/datacards_demo.html">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/models_and_releases_demo_pytorch.html">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/schemas_demo.html">Managing Schemas</a></li> @@ -87,12 +88,11 @@ <h1>Source code for bailo.core.client</h1><div class="highlight"><pre> <span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span> -<span class="kn">import</span> <span class="nn">shutil</span> <span class="kn">from</span> <span class="nn">io</span> <span class="kn">import</span> <span class="n">BytesIO</span> <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span> <span class="kn">from</span> <span class="nn">bailo.core.agent</span> <span class="kn">import</span> <span class="n">Agent</span><span class="p">,</span> <span class="n">TokenAgent</span> -<span class="kn">from</span> <span class="nn">bailo.core.enums</span> <span class="kn">import</span> <span class="n">ModelVisibility</span><span class="p">,</span> <span class="n">SchemaKind</span> +<span class="kn">from</span> <span class="nn">bailo.core.enums</span> <span class="kn">import</span> <span class="n">EntryKind</span><span class="p">,</span> <span class="n">ModelVisibility</span><span class="p">,</span> <span class="n">SchemaKind</span> <span class="kn">from</span> <span class="nn">bailo.core.utils</span> <span class="kn">import</span> <span class="n">filter_none</span> @@ -114,6 +114,7 @@ <h1>Source code for bailo.core.client</h1><div class="highlight"><pre> <span class="k">def</span> <span class="nf">post_model</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">kind</span><span class="p">:</span> <span class="n">EntryKind</span><span class="p">,</span> <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">team_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">visibility</span><span class="p">:</span> <span class="n">ModelVisibility</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> @@ -121,6 +122,7 @@ <h1>Source code for bailo.core.client</h1><div class="highlight"><pre> <span class="w"> </span><span class="sd">"""Create a model.</span> <span class="sd"> :param name: Name of the model</span> +<span class="sd"> :param kind: Either a Model or a Datacard</span> <span class="sd"> :param description: Description of the model</span> <span class="sd"> :param visibility: Enum to define model visibility (e.g public or private)</span> <span class="sd"> :return: JSON response object</span> @@ -131,6 +133,7 @@ <h1>Source code for bailo.core.client</h1><div class="highlight"><pre> <span class="n">filtered_json</span> <span class="o">=</span> <span class="n">filter_none</span><span class="p">(</span> <span class="p">{</span> <span class="s2">"name"</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span> + <span class="s2">"kind"</span><span class="p">:</span> <span class="n">kind</span><span class="p">,</span> <span class="s2">"description"</span><span class="p">:</span> <span class="n">description</span><span class="p">,</span> <span class="s2">"visibility"</span><span class="p">:</span> <span class="n">visibility</span><span class="p">,</span> <span class="s2">"teamId"</span><span class="p">:</span> <span class="n">team_id</span><span class="p">,</span> @@ -199,6 +202,7 @@ <h1>Source code for bailo.core.client</h1><div class="highlight"><pre> <span class="bp">self</span><span class="p">,</span> <span class="n">model_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="n">kind</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">description</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">visibility</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">):</span> @@ -206,11 +210,12 @@ <h1>Source code for bailo.core.client</h1><div class="highlight"><pre> <span class="sd"> :param model_id: Unique model ID</span> <span class="sd"> :param name: Name of the model, defaults to None</span> +<span class="sd"> :param kind: Either a Model or a Datacard</span> <span class="sd"> :param description: Description of the model, defaults to None</span> <span class="sd"> :param visibility: Enum to define model visibility (e.g. public or private), defaults to None</span> <span class="sd"> :return: JSON response object</span> <span class="sd"> """</span> - <span class="n">filtered_json</span> <span class="o">=</span> <span class="n">filter_none</span><span class="p">({</span><span class="s2">"name"</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span> <span class="s2">"description"</span><span class="p">:</span> <span class="n">description</span><span class="p">,</span> <span class="s2">"visibility"</span><span class="p">:</span> <span class="n">visibility</span><span class="p">})</span> + <span class="n">filtered_json</span> <span class="o">=</span> <span class="n">filter_none</span><span class="p">({</span><span class="s2">"name"</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span> <span class="s2">"kind"</span><span class="p">:</span> <span class="n">kind</span><span class="p">,</span> <span class="s2">"description"</span><span class="p">:</span> <span class="n">description</span><span class="p">,</span> <span class="s2">"visibility"</span><span class="p">:</span> <span class="n">visibility</span><span class="p">})</span> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">agent</span><span class="o">.</span><span class="n">patch</span><span class="p">(</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">url</span><span class="si">}</span><span class="s2">/v2/model/</span><span class="si">{</span><span class="n">model_id</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">json</span><span class="o">=</span><span class="n">filtered_json</span><span class="p">)</span><span class="o">.</span><span class="n">json</span><span class="p">()</span></div> diff --git a/backend/python-docs/_build/html/_modules/bailo/core/enums.html b/backend/python-docs/_build/html/_modules/bailo/core/enums.html index 8b2459162..54a519b80 100644 --- a/backend/python-docs/_build/html/_modules/bailo/core/enums.html +++ b/backend/python-docs/_build/html/_modules/bailo/core/enums.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/datacards_demo.html">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/models_and_releases_demo_pytorch.html">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/schemas_demo.html">Managing Schemas</a></li> @@ -124,6 +125,16 @@ <h1>Source code for bailo.core.enums</h1><div class="highlight"><pre> <span class="n">MODEL_TECHNICAL_REVIEWER</span> <span class="o">=</span> <span class="s2">"mtr"</span> <span class="n">MODEL_SENIOR_RESPONSIBLE_OFFICER</span> <span class="o">=</span> <span class="s2">"msro"</span></div> + + +<div class="viewcode-block" id="EntryKind"> +<a class="viewcode-back" href="../../../bailo.core.html#bailo.core.enums.EntryKind">[docs]</a> +<span class="k">class</span> <span class="nc">EntryKind</span><span class="p">(</span><span class="n">ValuedEnum</span><span class="p">):</span> +<span class="w"> </span><span class="sd">"""The type of model."""</span> + + <span class="n">MODEL</span> <span class="o">=</span> <span class="s2">"model"</span> + <span class="n">DATACARD</span> <span class="o">=</span> <span class="s2">"data-card"</span></div> + </pre></div> </div> diff --git a/backend/python-docs/_build/html/_modules/bailo/helper/datacard.html b/backend/python-docs/_build/html/_modules/bailo/helper/datacard.html new file mode 100644 index 000000000..3f662e7f3 --- /dev/null +++ b/backend/python-docs/_build/html/_modules/bailo/helper/datacard.html @@ -0,0 +1,260 @@ +<!DOCTYPE html> +<html class="writer-html5" lang="en" data-content_root="../../../"> +<head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>bailo.helper.datacard — Bailo Python Client Docs 0.1.0 documentation</title> + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=19f00094" /> + + + <link rel="shortcut icon" href="../../../_static/favicon.png"/> + <!--[if lt IE 9]> + <script src="../../../_static/js/html5shiv.min.js"></script> + <![endif]--> + + <script src="../../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../../_static/documentation_options.js?v=01f34227"></script> + <script src="../../../_static/doctools.js?v=888ff710"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script> + <script src="../../../_static/js/theme.js"></script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> +</head> + +<body class="wy-body-for-nav"> + <div class="wy-grid-for-nav"> + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../../../index.html" class="icon icon-home"> + Bailo Python Client Docs + <img src="../../../_static/vertical-white.png" class="logo" alt="Logo"/> + </a> +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> + <ul> +<li class="toctree-l1"><a class="reference internal" href="../../../readme_link.html">Bailo Python Client</a></li> +</ul> +<p class="caption" role="heading"><span class="caption-text">Packages:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../../../bailo.core.html">bailo.core package</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../bailo.helper.html">bailo.helper package</a></li> +</ul> +<p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/datacards_demo.html">Managing Datacards</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/models_and_releases_demo_pytorch.html">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/schemas_demo.html">Managing Schemas</a></li> +</ul> + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../../../index.html">Bailo Python Client Docs</a> + </nav> + + <div class="wy-nav-content"> + <div class="rst-content"> + <div role="navigation" aria-label="Page navigation"> + <ul class="wy-breadcrumbs"> + <li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li> + <li class="breadcrumb-item"><a href="../../index.html">Module code</a></li> + <li class="breadcrumb-item active">bailo.helper.datacard</li> + <li class="wy-breadcrumbs-aside"> + </li> + </ul> + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <h1>Source code for bailo.helper.datacard</h1><div class="highlight"><pre> +<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span> + +<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span> + +<span class="kn">from</span> <span class="nn">bailo.core.client</span> <span class="kn">import</span> <span class="n">Client</span> +<span class="kn">from</span> <span class="nn">bailo.core.enums</span> <span class="kn">import</span> <span class="n">EntryKind</span><span class="p">,</span> <span class="n">ModelVisibility</span> +<span class="kn">from</span> <span class="nn">bailo.core.exceptions</span> <span class="kn">import</span> <span class="n">BailoException</span> +<span class="kn">from</span> <span class="nn">bailo.helper.entry</span> <span class="kn">import</span> <span class="n">Entry</span> + + +<div class="viewcode-block" id="Datacard"> +<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.datacard.Datacard">[docs]</a> +<span class="k">class</span> <span class="nc">Datacard</span><span class="p">(</span><span class="n">Entry</span><span class="p">):</span> +<span class="w"> </span><span class="sd">"""Represent a datacard within Bailo.</span> + +<span class="sd"> :param client: A client object used to interact with Bailo</span> +<span class="sd"> :param datacard_id: A unique ID for the datacard</span> +<span class="sd"> :param name: Name of datacard</span> +<span class="sd"> :param description: Description of datacard</span> +<span class="sd"> :param visibility: Visibility of datacard, using ModelVisibility enum (e.g Public or Private), defaults to None</span> +<span class="sd"> """</span> + + <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">client</span><span class="p">:</span> <span class="n">Client</span><span class="p">,</span> + <span class="n">datacard_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">visibility</span><span class="p">:</span> <span class="n">ModelVisibility</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span> + <span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> + <span class="nb">id</span><span class="o">=</span><span class="n">datacard_id</span><span class="p">,</span> + <span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> + <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">,</span> + <span class="n">kind</span><span class="o">=</span><span class="n">EntryKind</span><span class="o">.</span><span class="n">DATACARD</span><span class="p">,</span> + <span class="n">visibility</span><span class="o">=</span><span class="n">visibility</span><span class="p">,</span> + <span class="p">)</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">datacard_id</span> <span class="o">=</span> <span class="n">datacard_id</span> + +<div class="viewcode-block" id="Datacard.create"> +<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.datacard.Datacard.create">[docs]</a> + <span class="nd">@classmethod</span> + <span class="k">def</span> <span class="nf">create</span><span class="p">(</span> + <span class="bp">cls</span><span class="p">,</span> + <span class="n">client</span><span class="p">:</span> <span class="n">Client</span><span class="p">,</span> + <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">team_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">visibility</span><span class="p">:</span> <span class="n">ModelVisibility</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-></span> <span class="n">Datacard</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Build a datacard from Bailo and upload it.</span> + +<span class="sd"> :param client: A client object used to interact with Bailo</span> +<span class="sd"> :param name: Name of datacard</span> +<span class="sd"> :param description: Description of datacard</span> +<span class="sd"> :param team_id: A unique team ID</span> +<span class="sd"> :param visibility: Visibility of datacard, using ModelVisibility enum (e.g Public or Private), defaults to None</span> +<span class="sd"> :return: Datacard object</span> +<span class="sd"> """</span> + <span class="n">res</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">post_model</span><span class="p">(</span> + <span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">EntryKind</span><span class="o">.</span><span class="n">DATACARD</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">,</span> <span class="n">team_id</span><span class="o">=</span><span class="n">team_id</span><span class="p">,</span> <span class="n">visibility</span><span class="o">=</span><span class="n">visibility</span> + <span class="p">)</span> + <span class="n">datacard</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">(</span> + <span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> + <span class="n">datacard_id</span><span class="o">=</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">][</span><span class="s2">"id"</span><span class="p">],</span> + <span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> + <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">,</span> + <span class="n">visibility</span><span class="o">=</span><span class="n">visibility</span><span class="p">,</span> + <span class="p">)</span> + + <span class="n">datacard</span><span class="o">.</span><span class="n">_unpack</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">])</span> + + <span class="k">return</span> <span class="n">datacard</span></div> + + +<div class="viewcode-block" id="Datacard.from_id"> +<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.datacard.Datacard.from_id">[docs]</a> + <span class="nd">@classmethod</span> + <span class="k">def</span> <span class="nf">from_id</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">client</span><span class="p">:</span> <span class="n">Client</span><span class="p">,</span> <span class="n">datacard_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="n">Datacard</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Return an existing datacard from Bailo.</span> + +<span class="sd"> :param client: A client object used to interact with Bailo</span> +<span class="sd"> :param datacard_id: A unique datacard ID</span> +<span class="sd"> :return: A datacard object</span> +<span class="sd"> """</span> + <span class="n">res</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="n">datacard_id</span><span class="p">)[</span><span class="s2">"model"</span><span class="p">]</span> + <span class="k">if</span> <span class="n">res</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">"data-card"</span><span class="p">:</span> + <span class="k">raise</span> <span class="n">BailoException</span><span class="p">(</span> + <span class="sa">f</span><span class="s2">"ID </span><span class="si">{</span><span class="n">datacard_id</span><span class="si">}</span><span class="s2"> does not belong to a datacard. Did you mean to use Model.from_id()?"</span> + <span class="p">)</span> + + <span class="n">datacard</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">(</span> + <span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> + <span class="n">datacard_id</span><span class="o">=</span><span class="n">datacard_id</span><span class="p">,</span> + <span class="n">name</span><span class="o">=</span><span class="n">res</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> + <span class="n">description</span><span class="o">=</span><span class="n">res</span><span class="p">[</span><span class="s2">"description"</span><span class="p">],</span> + <span class="p">)</span> + <span class="n">datacard</span><span class="o">.</span><span class="n">_unpack</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> + + <span class="n">datacard</span><span class="o">.</span><span class="n">get_card_latest</span><span class="p">()</span> + + <span class="k">return</span> <span class="n">datacard</span></div> + + +<div class="viewcode-block" id="Datacard.update_data_card"> +<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.datacard.Datacard.update_data_card">[docs]</a> + <span class="k">def</span> <span class="nf">update_data_card</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data_card</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Upload and retrieve any changes to the datacard on Bailo.</span> + +<span class="sd"> :param data_card: Datacard dictionary, defaults to None</span> + +<span class="sd"> ..note:: If a datacard is not provided, the current datacard attribute value is used</span> +<span class="sd"> """</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_update_card</span><span class="p">(</span><span class="n">card</span><span class="o">=</span><span class="n">data_card</span><span class="p">)</span></div> + + + <span class="nd">@property</span> + <span class="k">def</span> <span class="nf">data_card</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> + + <span class="nd">@data_card</span><span class="o">.</span><span class="n">setter</span> + <span class="k">def</span> <span class="nf">data_card</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> <span class="o">=</span> <span class="n">value</span> + + <span class="nd">@property</span> + <span class="k">def</span> <span class="nf">data_card_version</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_card_version</span> + + <span class="nd">@data_card_version</span><span class="o">.</span><span class="n">setter</span> + <span class="k">def</span> <span class="nf">data_card_version</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_version</span> <span class="o">=</span> <span class="n">value</span> + + <span class="nd">@property</span> + <span class="k">def</span> <span class="nf">data_card_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_card_schema</span> + + <span class="nd">@data_card_schema</span><span class="o">.</span><span class="n">setter</span> + <span class="k">def</span> <span class="nf">data_card_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_schema</span> <span class="o">=</span> <span class="n">value</span></div> + +</pre></div> + + </div> + </div> + <footer> + + <hr/> + + <div role="contentinfo"> + <p>© Copyright 2024, GCHQ.</p> + </div> + + Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a + <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> + provided by <a href="https://readthedocs.org">Read the Docs</a>. + + +</footer> + </div> + </div> + </section> + </div> + <script> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/backend/python-docs/_build/html/_modules/bailo/helper/entry.html b/backend/python-docs/_build/html/_modules/bailo/helper/entry.html new file mode 100644 index 000000000..63ab383e8 --- /dev/null +++ b/backend/python-docs/_build/html/_modules/bailo/helper/entry.html @@ -0,0 +1,258 @@ +<!DOCTYPE html> +<html class="writer-html5" lang="en" data-content_root="../../../"> +<head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>bailo.helper.entry — Bailo Python Client Docs 0.1.0 documentation</title> + <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../../../_static/css/theme.css?v=19f00094" /> + + + <link rel="shortcut icon" href="../../../_static/favicon.png"/> + <!--[if lt IE 9]> + <script src="../../../_static/js/html5shiv.min.js"></script> + <![endif]--> + + <script src="../../../_static/jquery.js?v=5d32c60e"></script> + <script src="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../../../_static/documentation_options.js?v=01f34227"></script> + <script src="../../../_static/doctools.js?v=888ff710"></script> + <script src="../../../_static/sphinx_highlight.js?v=dc90522c"></script> + <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script> + <script src="../../../_static/js/theme.js"></script> + <link rel="index" title="Index" href="../../../genindex.html" /> + <link rel="search" title="Search" href="../../../search.html" /> +</head> + +<body class="wy-body-for-nav"> + <div class="wy-grid-for-nav"> + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../../../index.html" class="icon icon-home"> + Bailo Python Client Docs + <img src="../../../_static/vertical-white.png" class="logo" alt="Logo"/> + </a> +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../../../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> + <ul> +<li class="toctree-l1"><a class="reference internal" href="../../../readme_link.html">Bailo Python Client</a></li> +</ul> +<p class="caption" role="heading"><span class="caption-text">Packages:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../../../bailo.core.html">bailo.core package</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../bailo.helper.html">bailo.helper package</a></li> +</ul> +<p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/datacards_demo.html">Managing Datacards</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/models_and_releases_demo_pytorch.html">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/schemas_demo.html">Managing Schemas</a></li> +</ul> + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../../../index.html">Bailo Python Client Docs</a> + </nav> + + <div class="wy-nav-content"> + <div class="rst-content"> + <div role="navigation" aria-label="Page navigation"> + <ul class="wy-breadcrumbs"> + <li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li> + <li class="breadcrumb-item"><a href="../../index.html">Module code</a></li> + <li class="breadcrumb-item active">bailo.helper.entry</li> + <li class="wy-breadcrumbs-aside"> + </li> + </ul> + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <h1>Source code for bailo.helper.entry</h1><div class="highlight"><pre> +<span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span> + +<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span> + +<span class="kn">from</span> <span class="nn">bailo.core.client</span> <span class="kn">import</span> <span class="n">Client</span> +<span class="kn">from</span> <span class="nn">bailo.core.enums</span> <span class="kn">import</span> <span class="n">EntryKind</span><span class="p">,</span> <span class="n">ModelVisibility</span> +<span class="kn">from</span> <span class="nn">bailo.core.exceptions</span> <span class="kn">import</span> <span class="n">BailoException</span> + + +<div class="viewcode-block" id="Entry"> +<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.entry.Entry">[docs]</a> +<span class="k">class</span> <span class="nc">Entry</span><span class="p">:</span> + <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span> + <span class="bp">self</span><span class="p">,</span> + <span class="n">client</span><span class="p">:</span> <span class="n">Client</span><span class="p">,</span> + <span class="nb">id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> + <span class="n">kind</span><span class="p">:</span> <span class="n">EntryKind</span><span class="p">,</span> + <span class="n">visibility</span><span class="p">:</span> <span class="n">ModelVisibility</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> + <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">client</span> <span class="o">=</span> <span class="n">client</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="nb">id</span> + <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span> + <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">description</span> + <span class="bp">self</span><span class="o">.</span><span class="n">kind</span> <span class="o">=</span> <span class="n">kind</span> + <span class="bp">self</span><span class="o">.</span><span class="n">visibility</span> <span class="o">=</span> <span class="n">visibility</span> + + <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_version</span> <span class="o">=</span> <span class="kc">None</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_schema</span> <span class="o">=</span> <span class="kc">None</span> + +<div class="viewcode-block" id="Entry.update"> +<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.entry.Entry.update">[docs]</a> + <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Upload and retrieve any changes to the entry summary on Bailo."""</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">patch_model</span><span class="p">(</span> + <span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> + <span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> + <span class="n">kind</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">kind</span><span class="p">,</span> + <span class="n">description</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">description</span><span class="p">,</span> + <span class="n">visibility</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">visibility</span><span class="p">,</span> + <span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_unpack</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">])</span></div> + + +<div class="viewcode-block" id="Entry.card_from_schema"> +<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.entry.Entry.card_from_schema">[docs]</a> + <span class="k">def</span> <span class="nf">card_from_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Create a card using a schema on Bailo.</span> + +<span class="sd"> :param schema_id: A unique schema ID</span> +<span class="sd"> """</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">model_card_from_schema</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="n">schema_id</span><span class="o">=</span><span class="n">schema_id</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_card</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"card"</span><span class="p">])</span></div> + + +<div class="viewcode-block" id="Entry.card_from_template"> +<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.entry.Entry.card_from_template">[docs]</a> + <span class="k">def</span> <span class="nf">card_from_template</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">"""Create a card using a template (not yet implemented).</span> + +<span class="sd"> :raises NotImplementedError: Not implemented error</span> +<span class="sd"> """</span> + <span class="k">raise</span> <span class="ne">NotImplementedError</span></div> + + +<div class="viewcode-block" id="Entry.get_card_latest"> +<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.entry.Entry.get_card_latest">[docs]</a> + <span class="k">def</span> <span class="nf">get_card_latest</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Get the latest card from Bailo."""</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> + <span class="k">if</span> <span class="s2">"card"</span> <span class="ow">in</span> <span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">]:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_card</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">][</span><span class="s2">"card"</span><span class="p">])</span> + <span class="k">else</span><span class="p">:</span> + <span class="k">raise</span> <span class="n">BailoException</span><span class="p">(</span><span class="sa">f</span><span class="s2">"A model card doesn't exist for model </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div> + + +<div class="viewcode-block" id="Entry.get_card_revision"> +<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.entry.Entry.get_card_revision">[docs]</a> + <span class="k">def</span> <span class="nf">get_card_revision</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Get a specific entry card revision from Bailo.</span> + +<span class="sd"> :param version: Entry card version</span> +<span class="sd"> """</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model_card</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="n">version</span><span class="o">=</span><span class="n">version</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_card</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"modelCard"</span><span class="p">])</span></div> + + +<div class="viewcode-block" id="Entry.get_roles"> +<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.entry.Entry.get_roles">[docs]</a> + <span class="k">def</span> <span class="nf">get_roles</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">"""Get all roles for the entry.</span> + +<span class="sd"> :return: List of roles</span> +<span class="sd"> """</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model_roles</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">res</span><span class="p">[</span><span class="s2">"roles"</span><span class="p">]</span></div> + + +<div class="viewcode-block" id="Entry.get_user_roles"> +<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.entry.Entry.get_user_roles">[docs]</a> + <span class="k">def</span> <span class="nf">get_user_roles</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<span class="w"> </span><span class="sd">"""Get all user roles for the entry.</span> + +<span class="sd"> :return: List of user roles</span> +<span class="sd"> """</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model_user_roles</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">)</span> + + <span class="k">return</span> <span class="n">res</span><span class="p">[</span><span class="s2">"roles"</span><span class="p">]</span></div> + + + <span class="k">def</span> <span class="nf">_update_card</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">card</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> + <span class="k">if</span> <span class="n">card</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">card</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> + + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">put_model_card</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="n">card</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_card</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"card"</span><span class="p">])</span> + + <span class="k">def</span> <span class="nf">_unpack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">res</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"id"</span><span class="p">]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"description"</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">res</span><span class="p">[</span><span class="s2">"visibility"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"private"</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">visibility</span> <span class="o">=</span> <span class="n">ModelVisibility</span><span class="o">.</span><span class="n">PRIVATE</span> + <span class="k">else</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">visibility</span> <span class="o">=</span> <span class="n">ModelVisibility</span><span class="o">.</span><span class="n">PUBLIC</span> + + <span class="k">def</span> <span class="nf">__unpack_card</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">res</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_version</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"version"</span><span class="p">]</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_schema</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"schemaId"</span><span class="p">]</span> + + <span class="k">try</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"metadata"</span><span class="p">]</span> + <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> <span class="o">=</span> <span class="kc">None</span></div> + +</pre></div> + + </div> + </div> + <footer> + + <hr/> + + <div role="contentinfo"> + <p>© Copyright 2024, GCHQ.</p> + </div> + + Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a + <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> + provided by <a href="https://readthedocs.org">Read the Docs</a>. + + +</footer> + </div> + </div> + </section> + </div> + <script> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/backend/python-docs/_build/html/_modules/bailo/helper/model.html b/backend/python-docs/_build/html/_modules/bailo/helper/model.html index b30a69d4e..56d39feb0 100644 --- a/backend/python-docs/_build/html/_modules/bailo/helper/model.html +++ b/backend/python-docs/_build/html/_modules/bailo/helper/model.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/datacards_demo.html">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/models_and_releases_demo_pytorch.html">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/schemas_demo.html">Managing Schemas</a></li> @@ -87,17 +88,17 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span> +<span class="kn">import</span> <span class="nn">os</span> +<span class="kn">import</span> <span class="nn">shutil</span> +<span class="kn">import</span> <span class="nn">tempfile</span> <span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span> <span class="kn">from</span> <span class="nn">bailo.core.client</span> <span class="kn">import</span> <span class="n">Client</span> -<span class="kn">from</span> <span class="nn">bailo.core.enums</span> <span class="kn">import</span> <span class="n">ModelVisibility</span> -<span class="kn">from</span> <span class="nn">bailo.helper.release</span> <span class="kn">import</span> <span class="n">Release</span> +<span class="kn">from</span> <span class="nn">bailo.core.enums</span> <span class="kn">import</span> <span class="n">EntryKind</span><span class="p">,</span> <span class="n">ModelVisibility</span> <span class="kn">from</span> <span class="nn">bailo.core.exceptions</span> <span class="kn">import</span> <span class="n">BailoException</span> <span class="kn">from</span> <span class="nn">bailo.core.utils</span> <span class="kn">import</span> <span class="n">NestedDict</span> - -<span class="kn">import</span> <span class="nn">os</span> -<span class="kn">import</span> <span class="nn">shutil</span> -<span class="kn">import</span> <span class="nn">tempfile</span> +<span class="kn">from</span> <span class="nn">bailo.helper.entry</span> <span class="kn">import</span> <span class="n">Entry</span> +<span class="kn">from</span> <span class="nn">bailo.helper.release</span> <span class="kn">import</span> <span class="n">Release</span> <span class="kn">from</span> <span class="nn">semantic_version</span> <span class="kn">import</span> <span class="n">Version</span> <span class="k">try</span><span class="p">:</span> @@ -110,7 +111,7 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <div class="viewcode-block" id="Model"> <a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.model.Model">[docs]</a> -<span class="k">class</span> <span class="nc">Model</span><span class="p">:</span> +<span class="k">class</span> <span class="nc">Model</span><span class="p">(</span><span class="n">Entry</span><span class="p">):</span> <span class="w"> </span><span class="sd">"""Represent a model within Bailo.</span> <span class="sd"> :param client: A client object used to interact with Bailo</span> @@ -128,16 +129,11 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span class="n">description</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">visibility</span><span class="p">:</span> <span class="n">ModelVisibility</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">client</span> <span class="o">=</span> <span class="n">client</span> + <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span> + <span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> <span class="nb">id</span><span class="o">=</span><span class="n">model_id</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">EntryKind</span><span class="o">.</span><span class="n">MODEL</span><span class="p">,</span> <span class="n">visibility</span><span class="o">=</span><span class="n">visibility</span> + <span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_id</span> <span class="o">=</span> <span class="n">model_id</span> - <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span> - <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">description</span> - <span class="bp">self</span><span class="o">.</span><span class="n">visibility</span> <span class="o">=</span> <span class="n">visibility</span> - - <span class="bp">self</span><span class="o">.</span><span class="n">model_card</span> <span class="o">=</span> <span class="kc">None</span> - <span class="bp">self</span><span class="o">.</span><span class="n">model_card_version</span> <span class="o">=</span> <span class="kc">None</span> - <span class="bp">self</span><span class="o">.</span><span class="n">model_card_schema</span> <span class="o">=</span> <span class="kc">None</span> <div class="viewcode-block" id="Model.create"> <a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.model.Model.create">[docs]</a> @@ -150,7 +146,7 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span class="n">team_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">visibility</span><span class="p">:</span> <span class="n">ModelVisibility</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n">Model</span><span class="p">:</span> -<span class="w"> </span><span class="sd">"""Build a model from Bailo and uploads it.</span> +<span class="w"> </span><span class="sd">"""Build a model from Bailo and upload it.</span> <span class="sd"> :param client: A client object used to interact with Bailo</span> <span class="sd"> :param name: Name of model</span> @@ -159,7 +155,9 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span class="sd"> :param visibility: Visibility of model, using ModelVisibility enum (e.g Public or Private), defaults to None</span> <span class="sd"> :return: Model object</span> <span class="sd"> """</span> - <span class="n">res</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">post_model</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">,</span> <span class="n">team_id</span><span class="o">=</span><span class="n">team_id</span><span class="p">,</span> <span class="n">visibility</span><span class="o">=</span><span class="n">visibility</span><span class="p">)</span> + <span class="n">res</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">post_model</span><span class="p">(</span> + <span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">kind</span><span class="o">=</span><span class="n">EntryKind</span><span class="o">.</span><span class="n">MODEL</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">description</span><span class="p">,</span> <span class="n">team_id</span><span class="o">=</span><span class="n">team_id</span><span class="p">,</span> <span class="n">visibility</span><span class="o">=</span><span class="n">visibility</span> + <span class="p">)</span> <span class="n">model</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">(</span> <span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> <span class="n">model_id</span><span class="o">=</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">][</span><span class="s2">"id"</span><span class="p">],</span> @@ -168,7 +166,7 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span class="n">visibility</span><span class="o">=</span><span class="n">visibility</span><span class="p">,</span> <span class="p">)</span> - <span class="n">model</span><span class="o">.</span><span class="n">__unpack</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">])</span> + <span class="n">model</span><span class="o">.</span><span class="n">_unpack</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">])</span> <span class="k">return</span> <span class="n">model</span></div> @@ -184,98 +182,32 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span class="sd"> :return: A model object</span> <span class="sd"> """</span> <span class="n">res</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="n">model_id</span><span class="p">)[</span><span class="s2">"model"</span><span class="p">]</span> + <span class="k">if</span> <span class="n">res</span><span class="p">[</span><span class="s2">"kind"</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">"model"</span><span class="p">:</span> + <span class="k">raise</span> <span class="n">BailoException</span><span class="p">(</span><span class="sa">f</span><span class="s2">"ID </span><span class="si">{</span><span class="n">model_id</span><span class="si">}</span><span class="s2"> does not belong to a model. Did you mean to use Datacard.from_id()?"</span><span class="p">)</span> + <span class="n">model</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">(</span> <span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> <span class="n">model_id</span><span class="o">=</span><span class="n">model_id</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">res</span><span class="p">[</span><span class="s2">"name"</span><span class="p">],</span> <span class="n">description</span><span class="o">=</span><span class="n">res</span><span class="p">[</span><span class="s2">"description"</span><span class="p">],</span> <span class="p">)</span> - <span class="n">model</span><span class="o">.</span><span class="n">__unpack</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> + <span class="n">model</span><span class="o">.</span><span class="n">_unpack</span><span class="p">(</span><span class="n">res</span><span class="p">)</span> <span class="n">model</span><span class="o">.</span><span class="n">get_card_latest</span><span class="p">()</span> <span class="k">return</span> <span class="n">model</span></div> -<div class="viewcode-block" id="Model.update"> -<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.model.Model.update">[docs]</a> - <span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -<span class="w"> </span><span class="sd">"""Upload and retrieves any changes to the model summary on Bailo."""</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">patch_model</span><span class="p">(</span> - <span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> - <span class="n">name</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> - <span class="n">description</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">description</span><span class="p">,</span> - <span class="n">visibility</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">visibility</span><span class="p">,</span> - <span class="p">)</span> - <span class="bp">self</span><span class="o">.</span><span class="n">__unpack</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">])</span></div> - - <div class="viewcode-block" id="Model.update_model_card"> <a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.model.Model.update_model_card">[docs]</a> <span class="k">def</span> <span class="nf">update_model_card</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">model_card</span><span class="p">:</span> <span class="nb">dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Any</span><span class="p">]</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -<span class="w"> </span><span class="sd">"""Upload and retrieves any changes to the model card on Bailo.</span> +<span class="w"> </span><span class="sd">"""Upload and retrieve any changes to the model card on Bailo.</span> <span class="sd"> :param model_card: Model card dictionary, defaults to None</span> <span class="sd"> ..note:: If a model card is not provided, the current model card attribute value is used</span> <span class="sd"> """</span> - <span class="k">if</span> <span class="n">model_card</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> - <span class="n">model_card</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">model_card</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">put_model_card</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> <span class="n">metadata</span><span class="o">=</span><span class="n">model_card</span><span class="p">)</span> - <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_mc</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"card"</span><span class="p">])</span></div> - - -<div class="viewcode-block" id="Model.card_from_schema"> -<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.model.Model.card_from_schema">[docs]</a> - <span class="k">def</span> <span class="nf">card_from_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">schema_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -<span class="w"> </span><span class="sd">"""Create a model card using a schema on Bailo.</span> - -<span class="sd"> :param schema_id: A unique schema ID</span> -<span class="sd"> """</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">model_card_from_schema</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> <span class="n">schema_id</span><span class="o">=</span><span class="n">schema_id</span><span class="p">)</span> - <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_mc</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"card"</span><span class="p">])</span></div> - - -<div class="viewcode-block" id="Model.card_from_model"> -<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.model.Model.card_from_model">[docs]</a> - <span class="k">def</span> <span class="nf">card_from_model</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -<span class="w"> </span><span class="sd">"""Copy a model card from a different model (not yet implemented).</span> - -<span class="sd"> :raises NotImplementedError: Not implemented error</span> -<span class="sd"> """</span> - <span class="k">raise</span> <span class="ne">NotImplementedError</span></div> - - -<div class="viewcode-block" id="Model.card_from_template"> -<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.model.Model.card_from_template">[docs]</a> - <span class="k">def</span> <span class="nf">card_from_template</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -<span class="w"> </span><span class="sd">"""Create a model card using a template (not yet implemented).</span> - -<span class="sd"> :raises NotImplementedError: Not implemented error</span> -<span class="sd"> """</span> - <span class="k">raise</span> <span class="ne">NotImplementedError</span></div> - - -<div class="viewcode-block" id="Model.get_card_latest"> -<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.model.Model.get_card_latest">[docs]</a> - <span class="k">def</span> <span class="nf">get_card_latest</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -<span class="w"> </span><span class="sd">"""Get the latest model card from Bailo."""</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">)</span> - <span class="k">if</span> <span class="s2">"card"</span> <span class="ow">in</span> <span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">]:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_mc</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"model"</span><span class="p">][</span><span class="s2">"card"</span><span class="p">])</span> - <span class="k">else</span><span class="p">:</span> - <span class="k">raise</span> <span class="n">BailoException</span><span class="p">(</span><span class="sa">f</span><span class="s2">"A model card doesn't exist for model </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span></div> - - -<div class="viewcode-block" id="Model.get_card_revision"> -<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.model.Model.get_card_revision">[docs]</a> - <span class="k">def</span> <span class="nf">get_card_revision</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">version</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span> -<span class="w"> </span><span class="sd">"""Get a specific model card revision from Bailo.</span> - -<span class="sd"> :param version: Model card version</span> -<span class="sd"> """</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model_card</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> <span class="n">version</span><span class="o">=</span><span class="n">version</span><span class="p">)</span> - <span class="bp">self</span><span class="o">.</span><span class="n">__unpack_mc</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"modelCard"</span><span class="p">])</span></div> + <span class="bp">self</span><span class="o">.</span><span class="n">_update_card</span><span class="p">(</span><span class="n">card</span><span class="o">=</span><span class="n">model_card</span><span class="p">)</span></div> <div class="viewcode-block" id="Model.create_experiment"> @@ -283,6 +215,10 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span class="k">def</span> <span class="nf">create_experiment</span><span class="p">(</span> <span class="bp">self</span><span class="p">,</span> <span class="p">)</span> <span class="o">-></span> <span class="n">Experiment</span><span class="p">:</span> +<span class="w"> </span><span class="sd">"""Create an experiment locally</span> + +<span class="sd"> :return: An experiment object</span> +<span class="sd"> """</span> <span class="k">return</span> <span class="n">Experiment</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">model</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span></div> @@ -384,48 +320,29 @@ <h1>Source code for bailo.helper.model</h1><div class="highlight"><pre> <span class="k">raise</span> <span class="ne">NotImplementedError</span></div> -<div class="viewcode-block" id="Model.get_roles"> -<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.model.Model.get_roles">[docs]</a> - <span class="k">def</span> <span class="nf">get_roles</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -<span class="w"> </span><span class="sd">"""Get all roles for the model.</span> - -<span class="sd"> :return: List of roles</span> -<span class="sd"> """</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model_roles</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">)</span> - - <span class="k">return</span> <span class="n">res</span><span class="p">[</span><span class="s2">"roles"</span><span class="p">]</span></div> - - -<div class="viewcode-block" id="Model.get_user_roles"> -<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.model.Model.get_user_roles">[docs]</a> - <span class="k">def</span> <span class="nf">get_user_roles</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> -<span class="w"> </span><span class="sd">"""Get all user roles for the model.</span> - -<span class="sd"> :return: List of user roles</span> -<span class="sd"> """</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_model_user_roles</span><span class="p">(</span><span class="n">model_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">)</span> - - <span class="k">return</span> <span class="n">res</span><span class="p">[</span><span class="s2">"roles"</span><span class="p">]</span></div> + <span class="nd">@property</span> + <span class="k">def</span> <span class="nf">model_card</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> + <span class="nd">@model_card</span><span class="o">.</span><span class="n">setter</span> + <span class="k">def</span> <span class="nf">model_card</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card</span> <span class="o">=</span> <span class="n">value</span> - <span class="k">def</span> <span class="nf">__unpack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">res</span><span class="p">):</span> - <span class="bp">self</span><span class="o">.</span><span class="n">model_id</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"id"</span><span class="p">]</span> - <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> - <span class="bp">self</span><span class="o">.</span><span class="n">description</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"description"</span><span class="p">]</span> + <span class="nd">@property</span> + <span class="k">def</span> <span class="nf">model_card_version</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_card_version</span> - <span class="k">if</span> <span class="n">res</span><span class="p">[</span><span class="s2">"visibility"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"private"</span><span class="p">:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">visibility</span> <span class="o">=</span> <span class="n">ModelVisibility</span><span class="o">.</span><span class="n">PRIVATE</span> - <span class="k">else</span><span class="p">:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">visibility</span> <span class="o">=</span> <span class="n">ModelVisibility</span><span class="o">.</span><span class="n">PUBLIC</span> + <span class="nd">@model_card_version</span><span class="o">.</span><span class="n">setter</span> + <span class="k">def</span> <span class="nf">model_card_version</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_version</span> <span class="o">=</span> <span class="n">value</span> - <span class="k">def</span> <span class="nf">__unpack_mc</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">res</span><span class="p">):</span> - <span class="bp">self</span><span class="o">.</span><span class="n">model_card_version</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"version"</span><span class="p">]</span> - <span class="bp">self</span><span class="o">.</span><span class="n">model_card_schema</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"schemaId"</span><span class="p">]</span> + <span class="nd">@property</span> + <span class="k">def</span> <span class="nf">model_card_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_card_schema</span> - <span class="k">try</span><span class="p">:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">model_card</span> <span class="o">=</span> <span class="n">res</span><span class="p">[</span><span class="s2">"metadata"</span><span class="p">]</span> - <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">model_card</span> <span class="o">=</span> <span class="kc">None</span></div> + <span class="nd">@model_card_schema</span><span class="o">.</span><span class="n">setter</span> + <span class="k">def</span> <span class="nf">model_card_schema</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span> + <span class="bp">self</span><span class="o">.</span><span class="n">_card_schema</span> <span class="o">=</span> <span class="n">value</span></div> diff --git a/backend/python-docs/_build/html/_modules/bailo/helper/release.html b/backend/python-docs/_build/html/_modules/bailo/helper/release.html index 0c275bb10..7672b0c2e 100644 --- a/backend/python-docs/_build/html/_modules/bailo/helper/release.html +++ b/backend/python-docs/_build/html/_modules/bailo/helper/release.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/datacards_demo.html">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/models_and_releases_demo_pytorch.html">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/schemas_demo.html">Managing Schemas</a></li> @@ -88,13 +89,20 @@ <h1>Source code for bailo.helper.release</h1><div class="highlight"><pre> <span></span><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span> <span class="kn">import</span> <span class="nn">os</span> +<span class="kn">import</span> <span class="nn">fnmatch</span> <span class="kn">import</span> <span class="nn">shutil</span> <span class="kn">from</span> <span class="nn">io</span> <span class="kn">import</span> <span class="n">BytesIO</span> -<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span> +<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">Union</span> +<span class="kn">from</span> <span class="nn">tqdm</span> <span class="kn">import</span> <span class="n">tqdm</span> +<span class="kn">from</span> <span class="nn">tqdm.utils</span> <span class="kn">import</span> <span class="n">CallbackIOWrapper</span> <span class="kn">from</span> <span class="nn">bailo.core.client</span> <span class="kn">import</span> <span class="n">Client</span> +<span class="kn">from</span> <span class="nn">bailo.core.exceptions</span> <span class="kn">import</span> <span class="n">BailoException</span> +<span class="kn">from</span> <span class="nn">bailo.core.utils</span> <span class="kn">import</span> <span class="n">NO_COLOR</span> <span class="kn">from</span> <span class="nn">semantic_version</span> <span class="kn">import</span> <span class="n">Version</span> +<span class="n">BLOCK_SIZE</span> <span class="o">=</span> <span class="mi">1024</span> + <div class="viewcode-block" id="Release"> <a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.release.Release">[docs]</a> @@ -235,7 +243,7 @@ <h1>Source code for bailo.helper.release</h1><div class="highlight"><pre> <div class="viewcode-block" id="Release.download"> <a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.release.Release.download">[docs]</a> <span class="k">def</span> <span class="nf">download</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">write</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="n">Any</span><span class="p">:</span> -<span class="w"> </span><span class="sd">"""Give returns a Reading object given the file id.</span> +<span class="w"> </span><span class="sd">"""Returns a response object given the file name and optionally writes file to disk.</span> <span class="sd"> :param filename: The name of the file to retrieve</span> <span class="sd"> :param write: Bool to determine if writing file to disk, defaults to True</span> @@ -248,12 +256,64 @@ <h1>Source code for bailo.helper.release</h1><div class="highlight"><pre> <span class="k">if</span> <span class="n">write</span><span class="p">:</span> <span class="k">if</span> <span class="n">path</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> <span class="n">path</span> <span class="o">=</span> <span class="n">filename</span> - <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s2">"wb"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> - <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">content</span><span class="p">)</span> + <span class="n">total_size</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">headers</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"content-length"</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span> + + <span class="k">if</span> <span class="n">NO_COLOR</span><span class="p">:</span> + <span class="n">colour</span> <span class="o">=</span> <span class="s2">"white"</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">colour</span> <span class="o">=</span> <span class="s2">"green"</span> + + <span class="k">with</span> <span class="n">tqdm</span><span class="p">(</span> + <span class="n">total</span><span class="o">=</span><span class="n">total_size</span><span class="p">,</span> + <span class="n">unit</span><span class="o">=</span><span class="s2">"B"</span><span class="p">,</span> + <span class="n">unit_scale</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">unit_divisor</span><span class="o">=</span><span class="n">BLOCK_SIZE</span><span class="p">,</span> + <span class="n">postfix</span><span class="o">=</span><span class="sa">f</span><span class="s2">"downloading </span><span class="si">{</span><span class="n">filename</span><span class="si">}</span><span class="s2"> as </span><span class="si">{</span><span class="n">path</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> + <span class="n">colour</span><span class="o">=</span><span class="n">colour</span><span class="p">,</span> + <span class="p">)</span> <span class="k">as</span> <span class="n">t</span><span class="p">:</span> + <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s2">"wb"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> + <span class="k">for</span> <span class="n">data</span> <span class="ow">in</span> <span class="n">res</span><span class="o">.</span><span class="n">iter_content</span><span class="p">(</span><span class="n">BLOCK_SIZE</span><span class="p">):</span> + <span class="n">t</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">))</span> + <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="k">return</span> <span class="n">res</span></div> +<div class="viewcode-block" id="Release.download_all"> +<a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.release.Release.download_all">[docs]</a> + <span class="k">def</span> <span class="nf">download_all</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">(),</span> <span class="n">include</span><span class="p">:</span> <span class="nb">list</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">exclude</span><span class="p">:</span> <span class="nb">list</span> <span class="o">|</span> <span class="nb">str</span> <span class="o">=</span> <span class="kc">None</span><span class="p">):</span> +<span class="w"> </span><span class="sd">"""Writes all files to disk given a local directory.</span> + +<span class="sd"> :param include: List or string of fnmatch statements for file names to include, defaults to None</span> +<span class="sd"> :param exclude: List or string of fnmatch statements for file names to exclude, defaults to None</span> +<span class="sd"> :param path: Local directory to write files to</span> +<span class="sd"> :raises BailoException: If the release has no files assigned to it</span> +<span class="sd"> ..note:: Fnmatch statements support Unix shell-style wildcards.</span> +<span class="sd"> """</span> + <span class="n">files_metadata</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">get_release</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">version</span><span class="p">))[</span><span class="s2">"release"</span><span class="p">][</span><span class="s2">"files"</span><span class="p">]</span> + <span class="k">if</span> <span class="n">files_metadata</span> <span class="o">==</span> <span class="p">[]:</span> + <span class="k">raise</span> <span class="n">BailoException</span><span class="p">(</span><span class="s2">"Release has no associated files."</span><span class="p">)</span> + <span class="n">file_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">file_metadata</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> <span class="k">for</span> <span class="n">file_metadata</span> <span class="ow">in</span> <span class="n">files_metadata</span><span class="p">]</span> + + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">include</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> + <span class="n">include</span> <span class="o">=</span> <span class="p">[</span><span class="n">include</span><span class="p">]</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">exclude</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> + <span class="n">exclude</span> <span class="o">=</span> <span class="p">[</span><span class="n">exclude</span><span class="p">]</span> + + <span class="k">if</span> <span class="n">include</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">file_names</span> <span class="o">=</span> <span class="p">[</span><span class="n">file</span> <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">file_names</span> <span class="k">if</span> <span class="nb">any</span><span class="p">([</span><span class="n">fnmatch</span><span class="o">.</span><span class="n">fnmatch</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="n">pattern</span><span class="p">)</span> <span class="k">for</span> <span class="n">pattern</span> <span class="ow">in</span> <span class="n">include</span><span class="p">])]</span> + + <span class="k">if</span> <span class="n">exclude</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">file_names</span> <span class="o">=</span> <span class="p">[</span> + <span class="n">file</span> <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">file_names</span> <span class="k">if</span> <span class="ow">not</span> <span class="nb">any</span><span class="p">([</span><span class="n">fnmatch</span><span class="o">.</span><span class="n">fnmatch</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="n">pattern</span><span class="p">)</span> <span class="k">for</span> <span class="n">pattern</span> <span class="ow">in</span> <span class="n">exclude</span><span class="p">])</span> + <span class="p">]</span> + + <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">exist_ok</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + <span class="k">for</span> <span class="n">file</span> <span class="ow">in</span> <span class="n">file_names</span><span class="p">:</span> + <span class="n">file_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">file</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">download</span><span class="p">(</span><span class="n">filename</span><span class="o">=</span><span class="n">file</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">file_path</span><span class="p">)</span></div> + + <div class="viewcode-block" id="Release.upload"> <a class="viewcode-back" href="../../../bailo.helper.html#bailo.helper.release.Release.upload">[docs]</a> <span class="k">def</span> <span class="nf">upload</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">data</span><span class="p">:</span> <span class="n">BytesIO</span> <span class="o">|</span> <span class="kc">None</span> <span class="o">=</span> <span class="kc">None</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span> @@ -265,7 +325,7 @@ <h1>Source code for bailo.helper.release</h1><div class="highlight"><pre> <span class="sd"> :return: The unique file ID of the file uploaded</span> <span class="sd"> ..note:: If path provided is a directory, it will be uploaded as a zip</span> <span class="sd"> """</span> - <span class="n">name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">path</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span> + <span class="n">name</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">path</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="k">if</span> <span class="n">data</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> <span class="k">if</span> <span class="n">is_zip</span> <span class="o">:=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">path</span><span class="p">):</span> @@ -273,16 +333,31 @@ <h1>Source code for bailo.helper.release</h1><div class="highlight"><pre> <span class="n">path</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">.zip"</span> <span class="n">name</span> <span class="o">=</span> <span class="n">path</span> - <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s2">"rb"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">simple_upload</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">f</span><span class="p">)</span><span class="o">.</span><span class="n">json</span><span class="p">()</span> + <span class="n">data</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="s2">"rb"</span><span class="p">)</span> <span class="k">if</span> <span class="n">is_zip</span><span class="p">:</span> <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">path</span><span class="p">)</span> + + <span class="n">old_file_position</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span> + <span class="n">data</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">SEEK_END</span><span class="p">)</span> + <span class="n">size</span> <span class="o">=</span> <span class="n">data</span><span class="o">.</span><span class="n">tell</span><span class="p">()</span> + <span class="n">data</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="n">old_file_position</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">SEEK_SET</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">NO_COLOR</span><span class="p">:</span> + <span class="n">colour</span> <span class="o">=</span> <span class="s2">"white"</span> <span class="k">else</span><span class="p">:</span> - <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">simple_upload</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">data</span><span class="p">)</span><span class="o">.</span><span class="n">json</span><span class="p">()</span> + <span class="n">colour</span> <span class="o">=</span> <span class="s2">"blue"</span> + + <span class="k">with</span> <span class="n">tqdm</span><span class="p">(</span> + <span class="n">total</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> <span class="n">unit</span><span class="o">=</span><span class="s2">"B"</span><span class="p">,</span> <span class="n">unit_scale</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">unit_divisor</span><span class="o">=</span><span class="n">BLOCK_SIZE</span><span class="p">,</span> <span class="n">postfix</span><span class="o">=</span><span class="sa">f</span><span class="s2">"uploading </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span><span class="p">,</span> <span class="n">colour</span><span class="o">=</span><span class="n">colour</span> + <span class="p">)</span> <span class="k">as</span> <span class="n">t</span><span class="p">:</span> + <span class="n">wrapped_buffer</span> <span class="o">=</span> <span class="n">CallbackIOWrapper</span><span class="p">(</span><span class="n">t</span><span class="o">.</span><span class="n">update</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="s2">"read"</span><span class="p">)</span> + <span class="n">res</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">client</span><span class="o">.</span><span class="n">simple_upload</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">model_id</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">wrapped_buffer</span><span class="p">)</span><span class="o">.</span><span class="n">json</span><span class="p">()</span> <span class="bp">self</span><span class="o">.</span><span class="n">files</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">res</span><span class="p">[</span><span class="s2">"file"</span><span class="p">][</span><span class="s2">"id"</span><span class="p">])</span> <span class="bp">self</span><span class="o">.</span><span class="n">update</span><span class="p">()</span> + <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">BytesIO</span><span class="p">):</span> + <span class="n">data</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> <span class="k">return</span> <span class="n">res</span><span class="p">[</span><span class="s2">"file"</span><span class="p">][</span><span class="s2">"id"</span><span class="p">]</span></div> diff --git a/backend/python-docs/_build/html/_modules/index.html b/backend/python-docs/_build/html/_modules/index.html index fce3eb065..57a17ebc9 100644 --- a/backend/python-docs/_build/html/_modules/index.html +++ b/backend/python-docs/_build/html/_modules/index.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../notebooks/access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="../notebooks/datacards_demo.html">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/models_and_releases_demo_pytorch.html">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="../notebooks/schemas_demo.html">Managing Schemas</a></li> @@ -89,6 +90,8 @@ <h1>All modules for which code is available</h1> <li><a href="bailo/core/enums.html">bailo.core.enums</a></li> <li><a href="bailo/core/exceptions.html">bailo.core.exceptions</a></li> <li><a href="bailo/helper/access_request.html">bailo.helper.access_request</a></li> +<li><a href="bailo/helper/datacard.html">bailo.helper.datacard</a></li> +<li><a href="bailo/helper/entry.html">bailo.helper.entry</a></li> <li><a href="bailo/helper/model.html">bailo.helper.model</a></li> <li><a href="bailo/helper/release.html">bailo.helper.release</a></li> <li><a href="bailo/helper/schema.html">bailo.helper.schema</a></li> diff --git a/backend/python-docs/_build/html/_sources/bailo.helper.rst.txt b/backend/python-docs/_build/html/_sources/bailo.helper.rst.txt index 8103996a7..a06dc4ab6 100644 --- a/backend/python-docs/_build/html/_sources/bailo.helper.rst.txt +++ b/backend/python-docs/_build/html/_sources/bailo.helper.rst.txt @@ -7,11 +7,20 @@ bailo.helper package :undoc-members: :show-inheritance: -.. automodule:: bailo.helper.model +.. automodule:: bailo.helper.datacard + :members: + :undoc-members: + :show-inheritance: + +.. automodule:: bailo.helper.entry :members: :undoc-members: :show-inheritance: +.. automodule:: bailo.helper.model + :members: + :undoc-members: + :show-inheritance: .. automodule:: bailo.helper.release :members: diff --git a/backend/python-docs/_build/html/_sources/notebooks/datacards_demo.ipynb.txt b/backend/python-docs/_build/html/_sources/notebooks/datacards_demo.ipynb.txt new file mode 100644 index 000000000..7fa8bf248 --- /dev/null +++ b/backend/python-docs/_build/html/_sources/notebooks/datacards_demo.ipynb.txt @@ -0,0 +1,217 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Managing Datacards" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Bailo python client enables intuitive interaction with the Bailo service, from within a python environment. This example notebook will run through the following concepts:\n", + "\n", + "* Creating and populating a new datacard on Bailo.\n", + "* Retrieving datacards from the service.\n", + "* Making changes to the datacard.\n", + "\n", + "Prerequisites:\n", + "\n", + "* Python 3.8.1 or higher (including a notebook environment for this demo).\n", + "* A local or remote Bailo service (see https://github.com/gchq/Bailo)." + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Introduction" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Bailo python client is split into two sub-packages: **core** and **helper**.\n", + "\n", + "* **Core:** For direct interactions with the service endpoints.\n", + "* **Helper:** For more intuitive interactions with the service, using classes (e.g. Datacard) to handle operations.\n", + "\n", + "In order to create helper classes, you will first need to instantiate a `Client()` object from the core. By default, this object will not support any authentication. However, Bailo also supports PKI authentication, which you can use from Python by passing a `PkiAgent()` object into the `Client()` object when you instantiate it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "! pip install bailo -e ../.." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Necessary import statements\n", + "\n", + "from bailo import Datacard, Client\n", + "\n", + "# Instantiating the PkiAgent(), if using.\n", + "# agent = PkiAgent(cert='', key='', auth='')\n", + "\n", + "# Instantiating the Bailo client\n", + "\n", + "client = Client(\"http://127.0.0.1:8080\") # <- INSERT BAILO URL (if not hosting locally)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Creating a new datacard in Bailo\n", + "\n", + "### Creating and updating the base datacard\n", + "\n", + "In this section, we'll create a new datacard using the `Datacard.create()` classmethod. On the Bailo service, a datacard must consist of at least 4 parameters upon creation. These are **name**, **description**, **visibility** and **team_id**. Below, we use the `Client()` object created before when instantiating the new `Datacard()` object. \n", + "\n", + "NOTE: This creates the datacard on your Bailo service too! The `datacard_id` is assigned by the backend, and we will use this later to retrieve the datacard. *Like with models on Bailo, the actual datacard has not been populated at this stage.*" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "datacard = Datacard.create(client=client, name=\"ImageNet\", description=\"ImageNet dataset consisting of images.\", team_id=\"uncategorised\")\n", + "\n", + "datacard_id = datacard.datacard_id" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You may make changes to these attributes and then call the `update()` method to relay the changes to the service, as below:\n", + "\n", + "```python\n", + "datacard.name = \"New Name\"\n", + "datacard.update()\n", + "```\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Populating the datacard\n", + "\n", + "When creating a datacard, first we need to generate an empty card using the `card_from_schema()` method. In this instance, we will use **minimal-data-card-v10**. You can manage custom schemas using the `Schema()` helper class, but this is out of scope for this demo." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "datacard.card_from_schema(schema_id='minimal-data-card-v10')\n", + "\n", + "print(f\"Datacard version is {datacard.data_card_version}.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If successful, the above will have created a new datacard, and the `data_card_version` attribute should be set to 1.\n", + "\n", + "Next, we can populate the data using the `update_data_card()` method. This can be used any time you want to make changes, and the backend will create a new datacard version each time. We'll learn how to retrieve datacards later (either the latest, or a specific release).\n", + "\n", + "NOTE: Your datacard must match the schema, otherwise an error will be thrown." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "new_card = {\n", + " 'overview': {\n", + " 'storageLocation': 'S3',\n", + " }\n", + "}\n", + "\n", + "datacard.update_data_card(data_card=new_card)\n", + "\n", + "print(f\"Datacard version is {datacard.data_card_version}.\")" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If successful, the `data_card_version` will now be 2!" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Retrieving an existing datacard\n", + "\n", + "### Using the .from_id() method\n", + "\n", + "In this section, we'll retrieve our previous datacard using the `Datacard.from_id()` classmethod. This will create your `Datacard()` object as before, but using existing information retrieved from the service." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "datacard = Datacard.from_id(client=client, datacard_id=datacard_id)\n", + "\n", + "print(f\"Datacard description: {datacard.description}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/backend/python-docs/_build/html/_sources/notebooks/models_and_releases_demo_pytorch.ipynb.txt b/backend/python-docs/_build/html/_sources/notebooks/models_and_releases_demo_pytorch.ipynb.txt index 22faba3b3..8eacdfee8 100644 --- a/backend/python-docs/_build/html/_sources/notebooks/models_and_releases_demo_pytorch.ipynb.txt +++ b/backend/python-docs/_build/html/_sources/notebooks/models_and_releases_demo_pytorch.ipynb.txt @@ -56,8 +56,7 @@ "outputs": [], "source": [ "# LINUX - CPU\n", - "#! pip install bailo torch torchvision --index-url https://download.pytorch.org/whl/cpu\n", - "! pip install bailo\n", + "! pip install bailo torch torchvision --index-url https://download.pytorch.org/whl/cpu\n", "\n", "# MAC & WINDOWS - CPU\n", "#! pip install bailo torch torchvision" @@ -128,7 +127,7 @@ "source": [ "### Creating and populating a model card\n", "\n", - "When creating a model card, first we need to generate an empty one using the `card_from_schema()` method. In this instance, we will use **minimal-general-v10-beta**. You can manage custom schemas using the `Schema()` helper class, but this is out of scope for this demo." + "When creating a model card, first we need to generate an empty one using the `card_from_schema()` method. In this instance, we will use **minimal-general-v10**. You can manage custom schemas using the `Schema()` helper class, but this is out of scope for this demo." ] }, { @@ -272,12 +271,7 @@ "metadata": {}, "outputs": [], "source": [ - "#release_one.upload(path=\"resnet50_weights.pth\")\n", - "\n", - "release_one.upload(path=\"large_file.txt\")\n", - "\n", - "#with open(\"resnet50_weights.pth\", \"rb\") as f:\n", - " #release_one.upload(\"resnet50_weights.pth\", f)" + "release_one.upload(path=\"resnet50_weights.pth\")" ] }, { @@ -311,7 +305,9 @@ "source": [ "### Downloading weights from the release\n", "\n", - "Similarly you can also download files from release using a response object. In this case, we'll write them to a new file: **bailo_resnet50_weights.pth**." + "Similarly you can also download specific files from release using the `download()` method. In this case, we'll write them to a new file: **bailo_resnet50_weights.pth**. **NOTE**: `filename` refers to the filename on Bailo, and `path` is the local destination for your download.\n", + "\n", + "In addition to this, you can also use the `download_all()` method by providing a local directory path as `path`. By default, this will download all files, but you can provide `include` and `exclude` lists, e.g. `include=[\"*.txt\", \"*.json\"]` to only include TXT or JSON files. " ] }, { @@ -320,11 +316,8 @@ "metadata": {}, "outputs": [], "source": [ - "#res = release_latest.download(\"resnet50_weights.pth\")\n", - "res = release_latest.download(filename=\"resnet50_weights.pth\", path=\"bailo_resnet50_weights.pth\")\n", - "\n", - "#with open(\"bailo_resnet50_weights.pth\", \"wb\") as f:\n", - " #f.write(res.content)" + "#release_latest.download(filename=\"resnet50_weights.pth\", path=\"bailo_resnet50_weights.pth\")\n", + "release_latest.download_all(path=\"downloads\")" ] }, { diff --git a/backend/python-docs/_build/html/bailo.helper.html b/backend/python-docs/_build/html/bailo.helper.html index 894a38f45..39ff7ce8e 100644 --- a/backend/python-docs/_build/html/bailo.helper.html +++ b/backend/python-docs/_build/html/bailo.helper.html @@ -61,6 +61,25 @@ <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.access_request.AccessRequest.update"><code class="docutils literal notranslate"><span class="pre">AccessRequest.update()</span></code></a></li> </ul> </li> +<li class="toctree-l2"><a class="reference internal" href="#bailo.helper.datacard.Datacard"><code class="docutils literal notranslate"><span class="pre">Datacard</span></code></a><ul> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.datacard.Datacard.create"><code class="docutils literal notranslate"><span class="pre">Datacard.create()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.datacard.Datacard.data_card"><code class="docutils literal notranslate"><span class="pre">Datacard.data_card</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.datacard.Datacard.data_card_schema"><code class="docutils literal notranslate"><span class="pre">Datacard.data_card_schema</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.datacard.Datacard.data_card_version"><code class="docutils literal notranslate"><span class="pre">Datacard.data_card_version</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.datacard.Datacard.from_id"><code class="docutils literal notranslate"><span class="pre">Datacard.from_id()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.datacard.Datacard.update_data_card"><code class="docutils literal notranslate"><span class="pre">Datacard.update_data_card()</span></code></a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#bailo.helper.entry.Entry"><code class="docutils literal notranslate"><span class="pre">Entry</span></code></a><ul> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.entry.Entry.card_from_schema"><code class="docutils literal notranslate"><span class="pre">Entry.card_from_schema()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.entry.Entry.card_from_template"><code class="docutils literal notranslate"><span class="pre">Entry.card_from_template()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.entry.Entry.get_card_latest"><code class="docutils literal notranslate"><span class="pre">Entry.get_card_latest()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.entry.Entry.get_card_revision"><code class="docutils literal notranslate"><span class="pre">Entry.get_card_revision()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.entry.Entry.get_roles"><code class="docutils literal notranslate"><span class="pre">Entry.get_roles()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.entry.Entry.get_user_roles"><code class="docutils literal notranslate"><span class="pre">Entry.get_user_roles()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.entry.Entry.update"><code class="docutils literal notranslate"><span class="pre">Entry.update()</span></code></a></li> +</ul> +</li> <li class="toctree-l2"><a class="reference internal" href="#bailo.helper.model.Experiment"><code class="docutils literal notranslate"><span class="pre">Experiment</span></code></a><ul> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Experiment.create"><code class="docutils literal notranslate"><span class="pre">Experiment.create()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Experiment.from_mlflow"><code class="docutils literal notranslate"><span class="pre">Experiment.from_mlflow()</span></code></a></li> @@ -73,23 +92,18 @@ </ul> </li> <li class="toctree-l2"><a class="reference internal" href="#bailo.helper.model.Model"><code class="docutils literal notranslate"><span class="pre">Model</span></code></a><ul> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.card_from_model"><code class="docutils literal notranslate"><span class="pre">Model.card_from_model()</span></code></a></li> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.card_from_schema"><code class="docutils literal notranslate"><span class="pre">Model.card_from_schema()</span></code></a></li> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.card_from_template"><code class="docutils literal notranslate"><span class="pre">Model.card_from_template()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.create"><code class="docutils literal notranslate"><span class="pre">Model.create()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.create_experiment"><code class="docutils literal notranslate"><span class="pre">Model.create_experiment()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.create_release"><code class="docutils literal notranslate"><span class="pre">Model.create_release()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.from_id"><code class="docutils literal notranslate"><span class="pre">Model.from_id()</span></code></a></li> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_card_latest"><code class="docutils literal notranslate"><span class="pre">Model.get_card_latest()</span></code></a></li> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_card_revision"><code class="docutils literal notranslate"><span class="pre">Model.get_card_revision()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_image"><code class="docutils literal notranslate"><span class="pre">Model.get_image()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_images"><code class="docutils literal notranslate"><span class="pre">Model.get_images()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_latest_release"><code class="docutils literal notranslate"><span class="pre">Model.get_latest_release()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_release"><code class="docutils literal notranslate"><span class="pre">Model.get_release()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_releases"><code class="docutils literal notranslate"><span class="pre">Model.get_releases()</span></code></a></li> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_roles"><code class="docutils literal notranslate"><span class="pre">Model.get_roles()</span></code></a></li> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.get_user_roles"><code class="docutils literal notranslate"><span class="pre">Model.get_user_roles()</span></code></a></li> -<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.update"><code class="docutils literal notranslate"><span class="pre">Model.update()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.model_card"><code class="docutils literal notranslate"><span class="pre">Model.model_card</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.model_card_schema"><code class="docutils literal notranslate"><span class="pre">Model.model_card_schema</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.model_card_version"><code class="docutils literal notranslate"><span class="pre">Model.model_card_version</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.model.Model.update_model_card"><code class="docutils literal notranslate"><span class="pre">Model.update_model_card()</span></code></a></li> </ul> </li> @@ -98,6 +112,7 @@ <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.release.Release.create"><code class="docutils literal notranslate"><span class="pre">Release.create()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.release.Release.delete"><code class="docutils literal notranslate"><span class="pre">Release.delete()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.release.Release.download"><code class="docutils literal notranslate"><span class="pre">Release.download()</span></code></a></li> +<li class="toctree-l3"><a class="reference internal" href="#bailo.helper.release.Release.download_all"><code class="docutils literal notranslate"><span class="pre">Release.download_all()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.release.Release.from_version"><code class="docutils literal notranslate"><span class="pre">Release.from_version()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.release.Release.update"><code class="docutils literal notranslate"><span class="pre">Release.update()</span></code></a></li> <li class="toctree-l3"><a class="reference internal" href="#bailo.helper.release.Release.upload"><code class="docutils literal notranslate"><span class="pre">Release.upload()</span></code></a></li> @@ -114,6 +129,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="notebooks/access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="notebooks/datacards_demo.html">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch.html">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/schemas_demo.html">Managing Schemas</a></li> @@ -218,6 +234,161 @@ </dd></dl> +<dl class="py class" id="module-bailo.helper.datacard"> +<dt class="sig sig-object py" id="bailo.helper.datacard.Datacard"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">bailo.helper.datacard.</span></span><span class="sig-name descname"><span class="pre">Datacard</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="bailo.core.html#bailo.core.client.Client" title="bailo.core.client.Client"><span class="pre">Client</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">datacard_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">visibility</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="bailo.core.html#bailo.core.enums.ModelVisibility" title="bailo.core.enums.ModelVisibility"><span class="pre">ModelVisibility</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/bailo/helper/datacard.html#Datacard"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.datacard.Datacard" title="Link to this definition"></a></dt> +<dd><p>Bases: <a class="reference internal" href="#bailo.helper.entry.Entry" title="bailo.helper.entry.Entry"><code class="xref py py-class docutils literal notranslate"><span class="pre">Entry</span></code></a></p> +<p>Represent a datacard within Bailo.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>client</strong> – A client object used to interact with Bailo</p></li> +<li><p><strong>datacard_id</strong> – A unique ID for the datacard</p></li> +<li><p><strong>name</strong> – Name of datacard</p></li> +<li><p><strong>description</strong> – Description of datacard</p></li> +<li><p><strong>visibility</strong> – Visibility of datacard, using ModelVisibility enum (e.g Public or Private), defaults to None</p></li> +</ul> +</dd> +</dl> +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.datacard.Datacard.create"> +<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">create</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="bailo.core.html#bailo.core.client.Client" title="bailo.core.client.Client"><span class="pre">Client</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">team_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">visibility</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="bailo.core.html#bailo.core.enums.ModelVisibility" title="bailo.core.enums.ModelVisibility"><span class="pre">ModelVisibility</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#bailo.helper.datacard.Datacard" title="bailo.helper.datacard.Datacard"><span class="pre">Datacard</span></a></span></span><a class="reference internal" href="_modules/bailo/helper/datacard.html#Datacard.create"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.datacard.Datacard.create" title="Link to this definition"></a></dt> +<dd><p>Build a datacard from Bailo and upload it.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>client</strong> – A client object used to interact with Bailo</p></li> +<li><p><strong>name</strong> – Name of datacard</p></li> +<li><p><strong>description</strong> – Description of datacard</p></li> +<li><p><strong>team_id</strong> – A unique team ID</p></li> +<li><p><strong>visibility</strong> – Visibility of datacard, using ModelVisibility enum (e.g Public or Private), defaults to None</p></li> +</ul> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><p>Datacard object</p> +</dd> +</dl> +</dd></dl> + +<dl class="py property"> +<dt class="sig sig-object py" id="bailo.helper.datacard.Datacard.data_card"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">data_card</span></span><a class="headerlink" href="#bailo.helper.datacard.Datacard.data_card" title="Link to this definition"></a></dt> +<dd></dd></dl> + +<dl class="py property"> +<dt class="sig sig-object py" id="bailo.helper.datacard.Datacard.data_card_schema"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">data_card_schema</span></span><a class="headerlink" href="#bailo.helper.datacard.Datacard.data_card_schema" title="Link to this definition"></a></dt> +<dd></dd></dl> + +<dl class="py property"> +<dt class="sig sig-object py" id="bailo.helper.datacard.Datacard.data_card_version"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">data_card_version</span></span><a class="headerlink" href="#bailo.helper.datacard.Datacard.data_card_version" title="Link to this definition"></a></dt> +<dd></dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.datacard.Datacard.from_id"> +<em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_id</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="bailo.core.html#bailo.core.client.Client" title="bailo.core.client.Client"><span class="pre">Client</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">datacard_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#bailo.helper.datacard.Datacard" title="bailo.helper.datacard.Datacard"><span class="pre">Datacard</span></a></span></span><a class="reference internal" href="_modules/bailo/helper/datacard.html#Datacard.from_id"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.datacard.Datacard.from_id" title="Link to this definition"></a></dt> +<dd><p>Return an existing datacard from Bailo.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>client</strong> – A client object used to interact with Bailo</p></li> +<li><p><strong>datacard_id</strong> – A unique datacard ID</p></li> +</ul> +</dd> +<dt class="field-even">Returns<span class="colon">:</span></dt> +<dd class="field-even"><p>A datacard object</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.datacard.Datacard.update_data_card"> +<span class="sig-name descname"><span class="pre">update_data_card</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data_card</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="_modules/bailo/helper/datacard.html#Datacard.update_data_card"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.datacard.Datacard.update_data_card" title="Link to this definition"></a></dt> +<dd><p>Upload and retrieve any changes to the datacard on Bailo.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>data_card</strong> – Datacard dictionary, defaults to None</p> +</dd> +</dl> +<p>..note:: If a datacard is not provided, the current datacard attribute value is used</p> +</dd></dl> + +</dd></dl> + +<dl class="py class" id="module-bailo.helper.entry"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry"> +<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">bailo.helper.entry.</span></span><span class="sig-name descname"><span class="pre">Entry</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="bailo.core.html#bailo.core.client.Client" title="bailo.core.client.Client"><span class="pre">Client</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">kind</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="bailo.core.html#bailo.core.enums.EntryKind" title="bailo.core.enums.EntryKind"><span class="pre">EntryKind</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">visibility</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="bailo.core.html#bailo.core.enums.ModelVisibility" title="bailo.core.enums.ModelVisibility"><span class="pre">ModelVisibility</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/bailo/helper/entry.html#Entry"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry" title="Link to this definition"></a></dt> +<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p> +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry.card_from_schema"> +<span class="sig-name descname"><span class="pre">card_from_schema</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">schema_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="_modules/bailo/helper/entry.html#Entry.card_from_schema"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry.card_from_schema" title="Link to this definition"></a></dt> +<dd><p>Create a card using a schema on Bailo.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>schema_id</strong> – A unique schema ID</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry.card_from_template"> +<span class="sig-name descname"><span class="pre">card_from_template</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/bailo/helper/entry.html#Entry.card_from_template"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry.card_from_template" title="Link to this definition"></a></dt> +<dd><p>Create a card using a template (not yet implemented).</p> +<dl class="field-list simple"> +<dt class="field-odd">Raises<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>NotImplementedError</strong> – Not implemented error</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry.get_card_latest"> +<span class="sig-name descname"><span class="pre">get_card_latest</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="_modules/bailo/helper/entry.html#Entry.get_card_latest"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry.get_card_latest" title="Link to this definition"></a></dt> +<dd><p>Get the latest card from Bailo.</p> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry.get_card_revision"> +<span class="sig-name descname"><span class="pre">get_card_revision</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">version</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="_modules/bailo/helper/entry.html#Entry.get_card_revision"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry.get_card_revision" title="Link to this definition"></a></dt> +<dd><p>Get a specific entry card revision from Bailo.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><p><strong>version</strong> – Entry card version</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry.get_roles"> +<span class="sig-name descname"><span class="pre">get_roles</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/bailo/helper/entry.html#Entry.get_roles"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry.get_roles" title="Link to this definition"></a></dt> +<dd><p>Get all roles for the entry.</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>List of roles</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry.get_user_roles"> +<span class="sig-name descname"><span class="pre">get_user_roles</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/bailo/helper/entry.html#Entry.get_user_roles"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry.get_user_roles" title="Link to this definition"></a></dt> +<dd><p>Get all user roles for the entry.</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>List of user roles</p> +</dd> +</dl> +</dd></dl> + +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.entry.Entry.update"> +<span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="_modules/bailo/helper/entry.html#Entry.update"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.entry.Entry.update" title="Link to this definition"></a></dt> +<dd><p>Upload and retrieve any changes to the entry summary on Bailo.</p> +</dd></dl> + +</dd></dl> + <dl class="py class" id="module-bailo.helper.model"> <dt class="sig sig-object py" id="bailo.helper.model.Experiment"> <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">bailo.helper.model.</span></span><span class="sig-name descname"><span class="pre">Experiment</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="#bailo.helper.model.Model" title="bailo.helper.model.Model"><span class="pre">Model</span></a></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/bailo/helper/model.html#Experiment"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Experiment" title="Link to this definition"></a></dt> @@ -350,7 +521,7 @@ <dl class="py class"> <dt class="sig sig-object py" id="bailo.helper.model.Model"> <em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">bailo.helper.model.</span></span><span class="sig-name descname"><span class="pre">Model</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="bailo.core.html#bailo.core.client.Client" title="bailo.core.client.Client"><span class="pre">Client</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">visibility</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="bailo.core.html#bailo.core.enums.ModelVisibility" title="bailo.core.enums.ModelVisibility"><span class="pre">ModelVisibility</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/bailo/helper/model.html#Model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model" title="Link to this definition"></a></dt> -<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p> +<dd><p>Bases: <a class="reference internal" href="#bailo.helper.entry.Entry" title="bailo.helper.entry.Entry"><code class="xref py py-class docutils literal notranslate"><span class="pre">Entry</span></code></a></p> <p>Represent a model within Bailo.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> @@ -363,43 +534,10 @@ </ul> </dd> </dl> -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.card_from_model"> -<span class="sig-name descname"><span class="pre">card_from_model</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/bailo/helper/model.html#Model.card_from_model"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.card_from_model" title="Link to this definition"></a></dt> -<dd><p>Copy a model card from a different model (not yet implemented).</p> -<dl class="field-list simple"> -<dt class="field-odd">Raises<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>NotImplementedError</strong> – Not implemented error</p> -</dd> -</dl> -</dd></dl> - -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.card_from_schema"> -<span class="sig-name descname"><span class="pre">card_from_schema</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">schema_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="_modules/bailo/helper/model.html#Model.card_from_schema"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.card_from_schema" title="Link to this definition"></a></dt> -<dd><p>Create a model card using a schema on Bailo.</p> -<dl class="field-list simple"> -<dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>schema_id</strong> – A unique schema ID</p> -</dd> -</dl> -</dd></dl> - -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.card_from_template"> -<span class="sig-name descname"><span class="pre">card_from_template</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/bailo/helper/model.html#Model.card_from_template"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.card_from_template" title="Link to this definition"></a></dt> -<dd><p>Create a model card using a template (not yet implemented).</p> -<dl class="field-list simple"> -<dt class="field-odd">Raises<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>NotImplementedError</strong> – Not implemented error</p> -</dd> -</dl> -</dd></dl> - <dl class="py method"> <dt class="sig sig-object py" id="bailo.helper.model.Model.create"> <em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">create</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="bailo.core.html#bailo.core.client.Client" title="bailo.core.client.Client"><span class="pre">Client</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">team_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">visibility</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="bailo.core.html#bailo.core.enums.ModelVisibility" title="bailo.core.enums.ModelVisibility"><span class="pre">ModelVisibility</span></a><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#bailo.helper.model.Model" title="bailo.helper.model.Model"><span class="pre">Model</span></a></span></span><a class="reference internal" href="_modules/bailo/helper/model.html#Model.create"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.create" title="Link to this definition"></a></dt> -<dd><p>Build a model from Bailo and uploads it.</p> +<dd><p>Build a model from Bailo and upload it.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> @@ -419,7 +557,13 @@ <dl class="py method"> <dt class="sig sig-object py" id="bailo.helper.model.Model.create_experiment"> <span class="sig-name descname"><span class="pre">create_experiment</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#bailo.helper.model.Experiment" title="bailo.helper.model.Experiment"><span class="pre">Experiment</span></a></span></span><a class="reference internal" href="_modules/bailo/helper/model.html#Model.create_experiment"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.create_experiment" title="Link to this definition"></a></dt> -<dd></dd></dl> +<dd><p>Create an experiment locally</p> +<dl class="field-list simple"> +<dt class="field-odd">Returns<span class="colon">:</span></dt> +<dd class="field-odd"><p>An experiment object</p> +</dd> +</dl> +</dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="bailo.helper.model.Model.create_release"> @@ -459,23 +603,6 @@ </dl> </dd></dl> -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.get_card_latest"> -<span class="sig-name descname"><span class="pre">get_card_latest</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="_modules/bailo/helper/model.html#Model.get_card_latest"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.get_card_latest" title="Link to this definition"></a></dt> -<dd><p>Get the latest model card from Bailo.</p> -</dd></dl> - -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.get_card_revision"> -<span class="sig-name descname"><span class="pre">get_card_revision</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">version</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="_modules/bailo/helper/model.html#Model.get_card_revision"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.get_card_revision" title="Link to this definition"></a></dt> -<dd><p>Get a specific model card revision from Bailo.</p> -<dl class="field-list simple"> -<dt class="field-odd">Parameters<span class="colon">:</span></dt> -<dd class="field-odd"><p><strong>version</strong> – Model card version</p> -</dd> -</dl> -</dd></dl> - <dl class="py method"> <dt class="sig sig-object py" id="bailo.helper.model.Model.get_image"> <span class="sig-name descname"><span class="pre">get_image</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/bailo/helper/model.html#Model.get_image"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.get_image" title="Link to this definition"></a></dt> @@ -534,38 +661,25 @@ </dl> </dd></dl> -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.get_roles"> -<span class="sig-name descname"><span class="pre">get_roles</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/bailo/helper/model.html#Model.get_roles"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.get_roles" title="Link to this definition"></a></dt> -<dd><p>Get all roles for the model.</p> -<dl class="field-list simple"> -<dt class="field-odd">Returns<span class="colon">:</span></dt> -<dd class="field-odd"><p>List of roles</p> -</dd> -</dl> -</dd></dl> +<dl class="py property"> +<dt class="sig sig-object py" id="bailo.helper.model.Model.model_card"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">model_card</span></span><a class="headerlink" href="#bailo.helper.model.Model.model_card" title="Link to this definition"></a></dt> +<dd></dd></dl> -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.get_user_roles"> -<span class="sig-name descname"><span class="pre">get_user_roles</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/bailo/helper/model.html#Model.get_user_roles"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.get_user_roles" title="Link to this definition"></a></dt> -<dd><p>Get all user roles for the model.</p> -<dl class="field-list simple"> -<dt class="field-odd">Returns<span class="colon">:</span></dt> -<dd class="field-odd"><p>List of user roles</p> -</dd> -</dl> -</dd></dl> +<dl class="py property"> +<dt class="sig sig-object py" id="bailo.helper.model.Model.model_card_schema"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">model_card_schema</span></span><a class="headerlink" href="#bailo.helper.model.Model.model_card_schema" title="Link to this definition"></a></dt> +<dd></dd></dl> -<dl class="py method"> -<dt class="sig sig-object py" id="bailo.helper.model.Model.update"> -<span class="sig-name descname"><span class="pre">update</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="_modules/bailo/helper/model.html#Model.update"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.update" title="Link to this definition"></a></dt> -<dd><p>Upload and retrieves any changes to the model summary on Bailo.</p> -</dd></dl> +<dl class="py property"> +<dt class="sig sig-object py" id="bailo.helper.model.Model.model_card_version"> +<em class="property"><span class="pre">property</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">model_card_version</span></span><a class="headerlink" href="#bailo.helper.model.Model.model_card_version" title="Link to this definition"></a></dt> +<dd></dd></dl> <dl class="py method"> <dt class="sig sig-object py" id="bailo.helper.model.Model.update_model_card"> <span class="sig-name descname"><span class="pre">update_model_card</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">model_card</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">dict</span><span class="p"><span class="pre">[</span></span><span class="pre">str</span><span class="p"><span class="pre">,</span></span><span class="w"> </span><span class="pre">Any</span><span class="p"><span class="pre">]</span></span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">None</span></span></span><a class="reference internal" href="_modules/bailo/helper/model.html#Model.update_model_card"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.model.Model.update_model_card" title="Link to this definition"></a></dt> -<dd><p>Upload and retrieves any changes to the model card on Bailo.</p> +<dd><p>Upload and retrieve any changes to the model card on Bailo.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><p><strong>model_card</strong> – Model card dictionary, defaults to None</p> @@ -631,7 +745,7 @@ <dl class="py method"> <dt class="sig sig-object py" id="bailo.helper.release.Release.download"> <span class="sig-name descname"><span class="pre">download</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">write</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">bool</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><span class="pre">Any</span></span></span><a class="reference internal" href="_modules/bailo/helper/release.html#Release.download"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.release.Release.download" title="Link to this definition"></a></dt> -<dd><p>Give returns a Reading object given the file id.</p> +<dd><p>Returns a response object given the file name and optionally writes file to disk.</p> <dl class="field-list simple"> <dt class="field-odd">Parameters<span class="colon">:</span></dt> <dd class="field-odd"><ul class="simple"> @@ -646,6 +760,25 @@ </dl> </dd></dl> +<dl class="py method"> +<dt class="sig sig-object py" id="bailo.helper.release.Release.download_all"> +<span class="sig-name descname"><span class="pre">download_all</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">'/home/ubuntu/git/Bailo/lib/python/docs'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">include</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">exclude</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">list</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/bailo/helper/release.html#Release.download_all"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.release.Release.download_all" title="Link to this definition"></a></dt> +<dd><p>Writes all files to disk given a local directory.</p> +<dl class="field-list simple"> +<dt class="field-odd">Parameters<span class="colon">:</span></dt> +<dd class="field-odd"><ul class="simple"> +<li><p><strong>include</strong> – List or string of fnmatch statements for file names to include, defaults to None</p></li> +<li><p><strong>exclude</strong> – List or string of fnmatch statements for file names to exclude, defaults to None</p></li> +<li><p><strong>path</strong> – Local directory to write files to</p></li> +</ul> +</dd> +<dt class="field-even">Raises<span class="colon">:</span></dt> +<dd class="field-even"><p><a class="reference internal" href="bailo.core.html#bailo.core.exceptions.BailoException" title="bailo.core.exceptions.BailoException"><strong>BailoException</strong></a> – If the release has no files assigned to it</p> +</dd> +</dl> +<p>..note:: Fnmatch statements support Unix shell-style wildcards.</p> +</dd></dl> + <dl class="py method"> <dt class="sig sig-object py" id="bailo.helper.release.Release.from_version"> <em class="property"><span class="pre">classmethod</span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">from_version</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">client</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><a class="reference internal" href="bailo.core.html#bailo.core.client.Client" title="bailo.core.client.Client"><span class="pre">Client</span></a></span></em>, <em class="sig-param"><span class="n"><span class="pre">model_id</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">version</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">Version</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">str</span></span></em><span class="sig-paren">)</span> <span class="sig-return"><span class="sig-return-icon">→</span> <span class="sig-return-typehint"><a class="reference internal" href="#bailo.helper.release.Release" title="bailo.helper.release.Release"><span class="pre">Release</span></a></span></span><a class="reference internal" href="_modules/bailo/helper/release.html#Release.from_version"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#bailo.helper.release.Release.from_version" title="Link to this definition"></a></dt> diff --git a/backend/python-docs/_build/html/genindex.html b/backend/python-docs/_build/html/genindex.html index c202302a2..c33c85f2d 100644 --- a/backend/python-docs/_build/html/genindex.html +++ b/backend/python-docs/_build/html/genindex.html @@ -55,6 +55,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="notebooks/access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="notebooks/datacards_demo.html">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch.html">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/schemas_demo.html">Managing Schemas</a></li> @@ -171,13 +172,27 @@ <h2 id="B">B</h2> <li><a href="bailo.core.html#module-bailo.core.exceptions">module</a> </li> </ul></li> - </ul></td> - <td style="width: 33%; vertical-align: top;"><ul> <li> bailo.helper.access_request <ul> <li><a href="bailo.helper.html#module-bailo.helper.access_request">module</a> +</li> + </ul></li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li> + bailo.helper.datacard + + <ul> + <li><a href="bailo.helper.html#module-bailo.helper.datacard">module</a> +</li> + </ul></li> + <li> + bailo.helper.entry + + <ul> + <li><a href="bailo.helper.html#module-bailo.helper.entry">module</a> </li> </ul></li> <li> @@ -209,17 +224,17 @@ <h2 id="B">B</h2> <h2 id="C">C</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="bailo.helper.html#bailo.helper.model.Model.card_from_model">card_from_model() (bailo.helper.model.Model method)</a> + <li><a href="bailo.helper.html#bailo.helper.entry.Entry.card_from_schema">card_from_schema() (bailo.helper.entry.Entry method)</a> </li> - <li><a href="bailo.helper.html#bailo.helper.model.Model.card_from_schema">card_from_schema() (bailo.helper.model.Model method)</a> -</li> - <li><a href="bailo.helper.html#bailo.helper.model.Model.card_from_template">card_from_template() (bailo.helper.model.Model method)</a> + <li><a href="bailo.helper.html#bailo.helper.entry.Entry.card_from_template">card_from_template() (bailo.helper.entry.Entry method)</a> </li> <li><a href="bailo.core.html#bailo.core.client.Client">Client (class in bailo.core.client)</a> </li> <li><a href="bailo.helper.html#bailo.helper.access_request.AccessRequest.create">create() (bailo.helper.access_request.AccessRequest class method)</a> <ul> + <li><a href="bailo.helper.html#bailo.helper.datacard.Datacard.create">(bailo.helper.datacard.Datacard class method)</a> +</li> <li><a href="bailo.helper.html#bailo.helper.model.Experiment.create">(bailo.helper.model.Experiment class method)</a> </li> <li><a href="bailo.helper.html#bailo.helper.model.Model.create">(bailo.helper.model.Model class method)</a> @@ -241,6 +256,16 @@ <h2 id="C">C</h2> <h2 id="D">D</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="bailo.helper.html#bailo.helper.datacard.Datacard.data_card">data_card (bailo.helper.datacard.Datacard property)</a> +</li> + <li><a href="bailo.helper.html#bailo.helper.datacard.Datacard.data_card_schema">data_card_schema (bailo.helper.datacard.Datacard property)</a> +</li> + <li><a href="bailo.helper.html#bailo.helper.datacard.Datacard.data_card_version">data_card_version (bailo.helper.datacard.Datacard property)</a> +</li> + <li><a href="bailo.core.html#bailo.core.enums.EntryKind.DATACARD">DATACARD (bailo.core.enums.EntryKind attribute)</a> +</li> + <li><a href="bailo.helper.html#bailo.helper.datacard.Datacard">Datacard (class in bailo.helper.datacard)</a> +</li> <li><a href="bailo.core.html#bailo.core.agent.Agent.delete">delete() (bailo.core.agent.Agent method)</a> <ul> @@ -262,6 +287,8 @@ <h2 id="D">D</h2> <li><a href="bailo.core.html#bailo.core.client.Client.delete_release">delete_release() (bailo.core.client.Client method)</a> </li> <li><a href="bailo.helper.html#bailo.helper.release.Release.download">download() (bailo.helper.release.Release method)</a> +</li> + <li><a href="bailo.helper.html#bailo.helper.release.Release.download_all">download_all() (bailo.helper.release.Release method)</a> </li> </ul></td> </tr></table> @@ -269,6 +296,12 @@ <h2 id="D">D</h2> <h2 id="E">E</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="bailo.helper.html#bailo.helper.entry.Entry">Entry (class in bailo.helper.entry)</a> +</li> + </ul></td> + <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="bailo.core.html#bailo.core.enums.EntryKind">EntryKind (class in bailo.core.enums)</a> +</li> <li><a href="bailo.helper.html#bailo.helper.model.Experiment">Experiment (class in bailo.helper.model)</a> </li> </ul></td> @@ -280,6 +313,8 @@ <h2 id="F">F</h2> <li><a href="bailo.helper.html#bailo.helper.access_request.AccessRequest.from_id">from_id() (bailo.helper.access_request.AccessRequest class method)</a> <ul> + <li><a href="bailo.helper.html#bailo.helper.datacard.Datacard.from_id">(bailo.helper.datacard.Datacard class method)</a> +</li> <li><a href="bailo.helper.html#bailo.helper.model.Model.from_id">(bailo.helper.model.Model class method)</a> </li> <li><a href="bailo.helper.html#bailo.helper.schema.Schema.from_id">(bailo.helper.schema.Schema class method)</a> @@ -317,9 +352,9 @@ <h2 id="G">G</h2> </li> <li><a href="bailo.core.html#bailo.core.client.Client.get_all_teams">get_all_teams() (bailo.core.client.Client method)</a> </li> - <li><a href="bailo.helper.html#bailo.helper.model.Model.get_card_latest">get_card_latest() (bailo.helper.model.Model method)</a> + <li><a href="bailo.helper.html#bailo.helper.entry.Entry.get_card_latest">get_card_latest() (bailo.helper.entry.Entry method)</a> </li> - <li><a href="bailo.helper.html#bailo.helper.model.Model.get_card_revision">get_card_revision() (bailo.helper.model.Model method)</a> + <li><a href="bailo.helper.html#bailo.helper.entry.Entry.get_card_revision">get_card_revision() (bailo.helper.entry.Entry method)</a> </li> <li><a href="bailo.core.html#bailo.core.client.Client.get_download_by_filename">get_download_by_filename() (bailo.core.client.Client method)</a> </li> @@ -355,13 +390,13 @@ <h2 id="G">G</h2> </li> <li><a href="bailo.core.html#bailo.core.client.Client.get_reviews">get_reviews() (bailo.core.client.Client method)</a> </li> - <li><a href="bailo.helper.html#bailo.helper.model.Model.get_roles">get_roles() (bailo.helper.model.Model method)</a> + <li><a href="bailo.helper.html#bailo.helper.entry.Entry.get_roles">get_roles() (bailo.helper.entry.Entry method)</a> </li> <li><a href="bailo.core.html#bailo.core.client.Client.get_schema">get_schema() (bailo.core.client.Client method)</a> </li> <li><a href="bailo.core.html#bailo.core.client.Client.get_team">get_team() (bailo.core.client.Client method)</a> </li> - <li><a href="bailo.helper.html#bailo.helper.model.Model.get_user_roles">get_user_roles() (bailo.helper.model.Model method)</a> + <li><a href="bailo.helper.html#bailo.helper.entry.Entry.get_user_roles">get_user_roles() (bailo.helper.entry.Entry method)</a> </li> <li><a href="bailo.core.html#bailo.core.client.Client.get_user_teams">get_user_teams() (bailo.core.client.Client method)</a> </li> @@ -387,11 +422,21 @@ <h2 id="L">L</h2> <h2 id="M">M</h2> <table style="width: 100%" class="indextable genindextable"><tr> <td style="width: 33%; vertical-align: top;"><ul> - <li><a href="bailo.core.html#bailo.core.enums.SchemaKind.MODEL">MODEL (bailo.core.enums.SchemaKind attribute)</a> + <li><a href="bailo.core.html#bailo.core.enums.EntryKind.MODEL">MODEL (bailo.core.enums.EntryKind attribute)</a> + + <ul> + <li><a href="bailo.core.html#bailo.core.enums.SchemaKind.MODEL">(bailo.core.enums.SchemaKind attribute)</a> </li> + </ul></li> <li><a href="bailo.helper.html#bailo.helper.model.Model">Model (class in bailo.helper.model)</a> +</li> + <li><a href="bailo.helper.html#bailo.helper.model.Model.model_card">model_card (bailo.helper.model.Model property)</a> </li> <li><a href="bailo.core.html#bailo.core.client.Client.model_card_from_schema">model_card_from_schema() (bailo.core.client.Client method)</a> +</li> + <li><a href="bailo.helper.html#bailo.helper.model.Model.model_card_schema">model_card_schema (bailo.helper.model.Model property)</a> +</li> + <li><a href="bailo.helper.html#bailo.helper.model.Model.model_card_version">model_card_version (bailo.helper.model.Model property)</a> </li> <li><a href="bailo.core.html#bailo.core.enums.Role.MODEL_SENIOR_RESPONSIBLE_OFFICER">MODEL_SENIOR_RESPONSIBLE_OFFICER (bailo.core.enums.Role attribute)</a> </li> @@ -414,6 +459,10 @@ <h2 id="M">M</h2> <li><a href="bailo.core.html#module-bailo.core.exceptions">bailo.core.exceptions</a> </li> <li><a href="bailo.helper.html#module-bailo.helper.access_request">bailo.helper.access_request</a> +</li> + <li><a href="bailo.helper.html#module-bailo.helper.datacard">bailo.helper.datacard</a> +</li> + <li><a href="bailo.helper.html#module-bailo.helper.entry">bailo.helper.entry</a> </li> <li><a href="bailo.helper.html#module-bailo.helper.model">bailo.helper.model</a> </li> @@ -541,13 +590,15 @@ <h2 id="U">U</h2> <li><a href="bailo.helper.html#bailo.helper.access_request.AccessRequest.update">update() (bailo.helper.access_request.AccessRequest method)</a> <ul> - <li><a href="bailo.helper.html#bailo.helper.model.Model.update">(bailo.helper.model.Model method)</a> + <li><a href="bailo.helper.html#bailo.helper.entry.Entry.update">(bailo.helper.entry.Entry method)</a> </li> <li><a href="bailo.helper.html#bailo.helper.release.Release.update">(bailo.helper.release.Release method)</a> </li> </ul></li> </ul></td> <td style="width: 33%; vertical-align: top;"><ul> + <li><a href="bailo.helper.html#bailo.helper.datacard.Datacard.update_data_card">update_data_card() (bailo.helper.datacard.Datacard method)</a> +</li> <li><a href="bailo.helper.html#bailo.helper.model.Model.update_model_card">update_model_card() (bailo.helper.model.Model method)</a> </li> <li><a href="bailo.helper.html#bailo.helper.release.Release.upload">upload() (bailo.helper.release.Release method)</a> diff --git a/backend/python-docs/_build/html/index.html b/backend/python-docs/_build/html/index.html index 470800d40..54f35e708 100644 --- a/backend/python-docs/_build/html/index.html +++ b/backend/python-docs/_build/html/index.html @@ -57,6 +57,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="notebooks/access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="notebooks/datacards_demo.html">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch.html">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/schemas_demo.html">Managing Schemas</a></li> @@ -112,6 +113,7 @@ <h2>Bailo Python Client<a class="headerlink" href="#bailo-python-client" title=" <li class="toctree-l2"><a class="reference internal" href="bailo.core.html#bailo.core.agent.PkiAgent"><code class="docutils literal notranslate"><span class="pre">PkiAgent</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.core.html#bailo.core.agent.TokenAgent"><code class="docutils literal notranslate"><span class="pre">TokenAgent</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.core.html#bailo.core.client.Client"><code class="docutils literal notranslate"><span class="pre">Client</span></code></a></li> +<li class="toctree-l2"><a class="reference internal" href="bailo.core.html#bailo.core.enums.EntryKind"><code class="docutils literal notranslate"><span class="pre">EntryKind</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.core.html#bailo.core.enums.ModelVisibility"><code class="docutils literal notranslate"><span class="pre">ModelVisibility</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.core.html#bailo.core.enums.Role"><code class="docutils literal notranslate"><span class="pre">Role</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.core.html#bailo.core.enums.SchemaKind"><code class="docutils literal notranslate"><span class="pre">SchemaKind</span></code></a></li> @@ -121,6 +123,8 @@ <h2>Bailo Python Client<a class="headerlink" href="#bailo-python-client" title=" </li> <li class="toctree-l1"><a class="reference internal" href="bailo.helper.html">bailo.helper package</a><ul> <li class="toctree-l2"><a class="reference internal" href="bailo.helper.html#bailo.helper.access_request.AccessRequest"><code class="docutils literal notranslate"><span class="pre">AccessRequest</span></code></a></li> +<li class="toctree-l2"><a class="reference internal" href="bailo.helper.html#bailo.helper.datacard.Datacard"><code class="docutils literal notranslate"><span class="pre">Datacard</span></code></a></li> +<li class="toctree-l2"><a class="reference internal" href="bailo.helper.html#bailo.helper.entry.Entry"><code class="docutils literal notranslate"><span class="pre">Entry</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.helper.html#bailo.helper.model.Experiment"><code class="docutils literal notranslate"><span class="pre">Experiment</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.helper.html#bailo.helper.model.Model"><code class="docutils literal notranslate"><span class="pre">Model</span></code></a></li> <li class="toctree-l2"><a class="reference internal" href="bailo.helper.html#bailo.helper.release.Release"><code class="docutils literal notranslate"><span class="pre">Release</span></code></a></li> @@ -133,6 +137,7 @@ <h2>Bailo Python Client<a class="headerlink" href="#bailo-python-client" title=" <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="notebooks/access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="notebooks/datacards_demo.html">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch.html">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/schemas_demo.html">Managing Schemas</a></li> diff --git a/backend/python-docs/_build/html/notebooks/datacards_demo.html b/backend/python-docs/_build/html/notebooks/datacards_demo.html new file mode 100644 index 000000000..b6200c583 --- /dev/null +++ b/backend/python-docs/_build/html/notebooks/datacards_demo.html @@ -0,0 +1,260 @@ +<!DOCTYPE html> +<html class="writer-html5" lang="en" data-content_root="../"> +<head> + <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> + + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <title>Managing Datacards — Bailo Python Client Docs 0.1.0 documentation</title> + <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" /> + <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=19f00094" /> + <link rel="stylesheet" type="text/css" href="../_static/nbsphinx-code-cells.css?v=2aa19091" /> + + + <link rel="shortcut icon" href="../_static/favicon.png"/> + <!--[if lt IE 9]> + <script src="../_static/js/html5shiv.min.js"></script> + <![endif]--> + + <script src="../_static/jquery.js?v=5d32c60e"></script> + <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> + <script src="../_static/documentation_options.js?v=01f34227"></script> + <script src="../_static/doctools.js?v=888ff710"></script> + <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> + <script crossorigin="anonymous" integrity="sha256-Ae2Vz/4ePdIu6ZyI/5ZGsYnb+m0JlOmKPjt6XZ9JJkA=" src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"></script> + <script>window.MathJax = {"tex": {"inlineMath": [["$", "$"], ["\\(", "\\)"]], "processEscapes": true}, "options": {"ignoreHtmlClass": "tex2jax_ignore|mathjax_ignore|document", "processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script> + <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> + <script src="../_static/js/theme.js"></script> + <link rel="index" title="Index" href="../genindex.html" /> + <link rel="search" title="Search" href="../search.html" /> + <link rel="next" title="Experiment Tracking with Bailo & MLFlow" href="experiment_tracking_demo.html" /> + <link rel="prev" title="Managing Access Requests" href="access_requests_demo.html" /> +</head> + +<body class="wy-body-for-nav"> + <div class="wy-grid-for-nav"> + <nav data-toggle="wy-nav-shift" class="wy-nav-side"> + <div class="wy-side-scroll"> + <div class="wy-side-nav-search" > + + + + <a href="../index.html" class="icon icon-home"> + Bailo Python Client Docs + <img src="../_static/vertical-white.png" class="logo" alt="Logo"/> + </a> +<div role="search"> + <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> + <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> +</div> + </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> + <ul> +<li class="toctree-l1"><a class="reference internal" href="../readme_link.html">Bailo Python Client</a></li> +</ul> +<p class="caption" role="heading"><span class="caption-text">Packages:</span></p> +<ul> +<li class="toctree-l1"><a class="reference internal" href="../bailo.core.html">bailo.core package</a></li> +<li class="toctree-l1"><a class="reference internal" href="../bailo.helper.html">bailo.helper package</a></li> +</ul> +<p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> +<ul class="current"> +<li class="toctree-l1"><a class="reference internal" href="access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1 current"><a class="current reference internal" href="#">Managing Datacards</a><ul> +<li class="toctree-l2"><a class="reference internal" href="#Introduction">Introduction</a></li> +<li class="toctree-l2"><a class="reference internal" href="#Creating-a-new-datacard-in-Bailo">Creating a new datacard in Bailo</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#Creating-and-updating-the-base-datacard">Creating and updating the base datacard</a></li> +<li class="toctree-l3"><a class="reference internal" href="#Populating-the-datacard">Populating the datacard</a></li> +</ul> +</li> +<li class="toctree-l2"><a class="reference internal" href="#Retrieving-an-existing-datacard">Retrieving an existing datacard</a><ul> +<li class="toctree-l3"><a class="reference internal" href="#Using-the-.from_id()-method">Using the .from_id() method</a></li> +</ul> +</li> +</ul> +</li> +<li class="toctree-l1"><a class="reference internal" href="experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> +<li class="toctree-l1"><a class="reference internal" href="models_and_releases_demo_pytorch.html">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> +<li class="toctree-l1"><a class="reference internal" href="schemas_demo.html">Managing Schemas</a></li> +</ul> + + </div> + </div> + </nav> + + <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > + <i data-toggle="wy-nav-top" class="fa fa-bars"></i> + <a href="../index.html">Bailo Python Client Docs</a> + </nav> + + <div class="wy-nav-content"> + <div class="rst-content"> + <div role="navigation" aria-label="Page navigation"> + <ul class="wy-breadcrumbs"> + <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li> + <li class="breadcrumb-item active">Managing Datacards</li> + <li class="wy-breadcrumbs-aside"> + <a href="../_sources/notebooks/datacards_demo.ipynb.txt" rel="nofollow"> View page source</a> + </li> + </ul> + <hr/> +</div> + <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> + <div itemprop="articleBody"> + + <section id="Managing-Datacards"> +<h1>Managing Datacards<a class="headerlink" href="#Managing-Datacards" title="Link to this heading"></a></h1> +<p>The Bailo python client enables intuitive interaction with the Bailo service, from within a python environment. This example notebook will run through the following concepts:</p> +<ul class="simple"> +<li><p>Creating and populating a new datacard on Bailo.</p></li> +<li><p>Retrieving datacards from the service.</p></li> +<li><p>Making changes to the datacard.</p></li> +</ul> +<p>Prerequisites:</p> +<ul class="simple"> +<li><p>Python 3.8.1 or higher (including a notebook environment for this demo).</p></li> +<li><p>A local or remote Bailo service (see <a class="reference external" href="https://github.com/gchq/Bailo">https://github.com/gchq/Bailo</a>).</p></li> +</ul> +<section id="Introduction"> +<h2>Introduction<a class="headerlink" href="#Introduction" title="Link to this heading"></a></h2> +<p>The Bailo python client is split into two sub-packages: <strong>core</strong> and <strong>helper</strong>.</p> +<ul class="simple"> +<li><p><strong>Core:</strong> For direct interactions with the service endpoints.</p></li> +<li><p><strong>Helper:</strong> For more intuitive interactions with the service, using classes (e.g. Datacard) to handle operations.</p></li> +</ul> +<p>In order to create helper classes, you will first need to instantiate a <code class="docutils literal notranslate"><span class="pre">Client()</span></code> object from the core. By default, this object will not support any authentication. However, Bailo also supports PKI authentication, which you can use from Python by passing a <code class="docutils literal notranslate"><span class="pre">PkiAgent()</span></code> object into the <code class="docutils literal notranslate"><span class="pre">Client()</span></code> object when you instantiate it.</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="o">!</span><span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>bailo<span class="w"> </span>-e<span class="w"> </span>../.. +</pre></div> +</div> +</div> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># Necessary import statements</span> + +<span class="kn">from</span> <span class="nn">bailo</span> <span class="kn">import</span> <span class="n">Datacard</span><span class="p">,</span> <span class="n">Client</span> + +<span class="c1"># Instantiating the PkiAgent(), if using.</span> +<span class="c1"># agent = PkiAgent(cert='', key='', auth='')</span> + +<span class="c1"># Instantiating the Bailo client</span> + +<span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="s2">"http://127.0.0.1:8080"</span><span class="p">)</span> <span class="c1"># <- INSERT BAILO URL (if not hosting locally)</span> +</pre></div> +</div> +</div> +</section> +<section id="Creating-a-new-datacard-in-Bailo"> +<h2>Creating a new datacard in Bailo<a class="headerlink" href="#Creating-a-new-datacard-in-Bailo" title="Link to this heading"></a></h2> +<section id="Creating-and-updating-the-base-datacard"> +<h3>Creating and updating the base datacard<a class="headerlink" href="#Creating-and-updating-the-base-datacard" title="Link to this heading"></a></h3> +<p>In this section, we’ll create a new datacard using the <code class="docutils literal notranslate"><span class="pre">Datacard.create()</span></code> classmethod. On the Bailo service, a datacard must consist of at least 4 parameters upon creation. These are <strong>name</strong>, <strong>description</strong>, <strong>visibility</strong> and <strong>team_id</strong>. Below, we use the <code class="docutils literal notranslate"><span class="pre">Client()</span></code> object created before when instantiating the new <code class="docutils literal notranslate"><span class="pre">Datacard()</span></code> object.</p> +<p>NOTE: This creates the datacard on your Bailo service too! The <code class="docutils literal notranslate"><span class="pre">datacard_id</span></code> is assigned by the backend, and we will use this later to retrieve the datacard. <em>Like with models on Bailo, the actual datacard has not been populated at this stage.</em></p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">datacard</span> <span class="o">=</span> <span class="n">Datacard</span><span class="o">.</span><span class="n">create</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"ImageNet"</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s2">"ImageNet dataset consisting of images."</span><span class="p">,</span> <span class="n">team_id</span><span class="o">=</span><span class="s2">"uncategorised"</span><span class="p">)</span> + +<span class="n">datacard_id</span> <span class="o">=</span> <span class="n">datacard</span><span class="o">.</span><span class="n">datacard_id</span> +</pre></div> +</div> +</div> +<p>You may make changes to these attributes and then call the <code class="docutils literal notranslate"><span class="pre">update()</span></code> method to relay the changes to the service, as below:</p> +<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">datacard</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="s2">"New Name"</span> +<span class="n">datacard</span><span class="o">.</span><span class="n">update</span><span class="p">()</span> +</pre></div> +</div> +</section> +<section id="Populating-the-datacard"> +<h3>Populating the datacard<a class="headerlink" href="#Populating-the-datacard" title="Link to this heading"></a></h3> +<p>When creating a datacard, first we need to generate an empty card using the <code class="docutils literal notranslate"><span class="pre">card_from_schema()</span></code> method. In this instance, we will use <strong>minimal-data-card-v10</strong>. You can manage custom schemas using the <code class="docutils literal notranslate"><span class="pre">Schema()</span></code> helper class, but this is out of scope for this demo.</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">datacard</span><span class="o">.</span><span class="n">card_from_schema</span><span class="p">(</span><span class="n">schema_id</span><span class="o">=</span><span class="s1">'minimal-data-card-v10'</span><span class="p">)</span> + +<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Datacard version is </span><span class="si">{</span><span class="n">datacard</span><span class="o">.</span><span class="n">data_card_version</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> +</pre></div> +</div> +</div> +<p>If successful, the above will have created a new datacard, and the <code class="docutils literal notranslate"><span class="pre">data_card_version</span></code> attribute should be set to 1.</p> +<p>Next, we can populate the data using the <code class="docutils literal notranslate"><span class="pre">update_data_card()</span></code> method. This can be used any time you want to make changes, and the backend will create a new datacard version each time. We’ll learn how to retrieve datacards later (either the latest, or a specific release).</p> +<p>NOTE: Your datacard must match the schema, otherwise an error will be thrown.</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">new_card</span> <span class="o">=</span> <span class="p">{</span> + <span class="s1">'overview'</span><span class="p">:</span> <span class="p">{</span> + <span class="s1">'storageLocation'</span><span class="p">:</span> <span class="s1">'S3'</span><span class="p">,</span> + <span class="p">}</span> +<span class="p">}</span> + +<span class="n">datacard</span><span class="o">.</span><span class="n">update_data_card</span><span class="p">(</span><span class="n">data_card</span><span class="o">=</span><span class="n">new_card</span><span class="p">)</span> + +<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Datacard version is </span><span class="si">{</span><span class="n">datacard</span><span class="o">.</span><span class="n">data_card_version</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span> +</pre></div> +</div> +</div> +<p>If successful, the <code class="docutils literal notranslate"><span class="pre">data_card_version</span></code> will now be 2!</p> +</section> +</section> +<section id="Retrieving-an-existing-datacard"> +<h2>Retrieving an existing datacard<a class="headerlink" href="#Retrieving-an-existing-datacard" title="Link to this heading"></a></h2> +<section id="Using-the-.from_id()-method"> +<h3>Using the .from_id() method<a class="headerlink" href="#Using-the-.from_id()-method" title="Link to this heading"></a></h3> +<p>In this section, we’ll retrieve our previous datacard using the <code class="docutils literal notranslate"><span class="pre">Datacard.from_id()</span></code> classmethod. This will create your <code class="docutils literal notranslate"><span class="pre">Datacard()</span></code> object as before, but using existing information retrieved from the service.</p> +<div class="nbinput nblast docutils container"> +<div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: +</pre></div> +</div> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">datacard</span> <span class="o">=</span> <span class="n">Datacard</span><span class="o">.</span><span class="n">from_id</span><span class="p">(</span><span class="n">client</span><span class="o">=</span><span class="n">client</span><span class="p">,</span> <span class="n">datacard_id</span><span class="o">=</span><span class="n">datacard_id</span><span class="p">)</span> + +<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Datacard description: </span><span class="si">{</span><span class="n">datacard</span><span class="o">.</span><span class="n">description</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span> +</pre></div> +</div> +</div> +</section> +</section> +</section> + + + </div> + </div> + <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> + <a href="access_requests_demo.html" class="btn btn-neutral float-left" title="Managing Access Requests" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> + <a href="experiment_tracking_demo.html" class="btn btn-neutral float-right" title="Experiment Tracking with Bailo & MLFlow" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> + </div> + + <hr/> + + <div role="contentinfo"> + <p>© Copyright 2024, GCHQ.</p> + </div> + + Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a + <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> + provided by <a href="https://readthedocs.org">Read the Docs</a>. + + +</footer> + </div> + </div> + </section> + </div> + <script> + jQuery(function () { + SphinxRtdTheme.Navigation.enable(true); + }); + </script> + +</body> +</html> \ No newline at end of file diff --git a/backend/python-docs/_build/html/notebooks/experiment_tracking_demo.html b/backend/python-docs/_build/html/notebooks/experiment_tracking_demo.html index a15311734..1e65fb1e1 100644 --- a/backend/python-docs/_build/html/notebooks/experiment_tracking_demo.html +++ b/backend/python-docs/_build/html/notebooks/experiment_tracking_demo.html @@ -27,7 +27,7 @@ <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> <link rel="next" title="Managing Models & Releases (ResNet-50 Example with PyTorch)" href="models_and_releases_demo_pytorch.html" /> - <link rel="prev" title="Managing Access Requests" href="access_requests_demo.html" /> + <link rel="prev" title="Managing Datacards" href="datacards_demo.html" /> </head> <body class="wy-body-for-nav"> @@ -61,6 +61,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul class="current"> <li class="toctree-l1"><a class="reference internal" href="access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="datacards_demo.html">Managing Datacards</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="#">Experiment Tracking with Bailo & MLFlow</a><ul> <li class="toctree-l2"><a class="reference internal" href="#Introduction">Introduction</a><ul> <li class="toctree-l3"><a class="reference internal" href="#Connecting-with-Bailo">Connecting with Bailo</a></li> @@ -298,7 +299,7 @@ <h2>Publishing results to Bailo<a class="headerlink" href="#Publishing-results-t </div> </div> <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> - <a href="access_requests_demo.html" class="btn btn-neutral float-left" title="Managing Access Requests" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> + <a href="datacards_demo.html" class="btn btn-neutral float-left" title="Managing Datacards" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> <a href="models_and_releases_demo_pytorch.html" class="btn btn-neutral float-right" title="Managing Models & Releases (ResNet-50 Example with PyTorch)" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> </div> diff --git a/backend/python-docs/_build/html/notebooks/models_and_releases_demo_pytorch.html b/backend/python-docs/_build/html/notebooks/models_and_releases_demo_pytorch.html index 77aadf515..5c2dba1b1 100644 --- a/backend/python-docs/_build/html/notebooks/models_and_releases_demo_pytorch.html +++ b/backend/python-docs/_build/html/notebooks/models_and_releases_demo_pytorch.html @@ -61,6 +61,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul class="current"> <li class="toctree-l1"><a class="reference internal" href="access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="datacards_demo.html">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1 current"><a class="current reference internal" href="#">Managing Models & Releases (ResNet-50 Example with PyTorch)</a><ul> <li class="toctree-l2"><a class="reference internal" href="#Introduction">Introduction</a></li> @@ -142,8 +143,7 @@ <h2>Introduction<a class="headerlink" href="#Introduction" title="Link to this h </pre></div> </div> <div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># LINUX - CPU</span> -<span class="c1">#! pip install bailo torch torchvision --index-url https://download.pytorch.org/whl/cpu</span> -<span class="o">!</span><span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>bailo +<span class="o">!</span><span class="w"> </span>pip<span class="w"> </span>install<span class="w"> </span>bailo<span class="w"> </span>torch<span class="w"> </span>torchvision<span class="w"> </span>--index-url<span class="w"> </span>https://download.pytorch.org/whl/cpu <span class="c1"># MAC & WINDOWS - CPU</span> <span class="c1">#! pip install bailo torch torchvision</span> @@ -194,7 +194,7 @@ <h3>Creating and updating the base model<a class="headerlink" href="#Creating-an </section> <section id="Creating-and-populating-a-model-card"> <h3>Creating and populating a model card<a class="headerlink" href="#Creating-and-populating-a-model-card" title="Link to this heading"></a></h3> -<p>When creating a model card, first we need to generate an empty one using the <code class="docutils literal notranslate"><span class="pre">card_from_schema()</span></code> method. In this instance, we will use <strong>minimal-general-v10-beta</strong>. You can manage custom schemas using the <code class="docutils literal notranslate"><span class="pre">Schema()</span></code> helper class, but this is out of scope for this demo.</p> +<p>When creating a model card, first we need to generate an empty one using the <code class="docutils literal notranslate"><span class="pre">card_from_schema()</span></code> method. In this instance, we will use <strong>minimal-general-v10</strong>. You can manage custom schemas using the <code class="docutils literal notranslate"><span class="pre">Schema()</span></code> helper class, but this is out of scope for this demo.</p> <div class="nbinput nblast docutils container"> <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: </pre></div> @@ -282,12 +282,7 @@ <h3>Uploading weights to the release<a class="headerlink" href="#Uploading-weigh <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: </pre></div> </div> -<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1">#release_one.upload(path="resnet50_weights.pth")</span> - -<span class="n">release_one</span><span class="o">.</span><span class="n">upload</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s2">"large_file.txt"</span><span class="p">)</span> - -<span class="c1">#with open("resnet50_weights.pth", "rb") as f:</span> - <span class="c1">#release_one.upload("resnet50_weights.pth", f)</span> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="n">release_one</span><span class="o">.</span><span class="n">upload</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s2">"resnet50_weights.pth"</span><span class="p">)</span> </pre></div> </div> </div> @@ -311,16 +306,14 @@ <h2>Retrieving a release<a class="headerlink" href="#Retrieving-a-release" title </div> <section id="Downloading-weights-from-the-release"> <h3>Downloading weights from the release<a class="headerlink" href="#Downloading-weights-from-the-release" title="Link to this heading"></a></h3> -<p>Similarly you can also download files from release using a response object. In this case, we’ll write them to a new file: <strong>bailo_resnet50_weights.pth</strong>.</p> +<p>Similarly you can also download specific files from release using the <code class="docutils literal notranslate"><span class="pre">download()</span></code> method. In this case, we’ll write them to a new file: <strong>bailo_resnet50_weights.pth</strong>. <strong>NOTE</strong>: <code class="docutils literal notranslate"><span class="pre">filename</span></code> refers to the filename on Bailo, and <code class="docutils literal notranslate"><span class="pre">path</span></code> is the local destination for your download.</p> +<p>In addition to this, you can also use the <code class="docutils literal notranslate"><span class="pre">download_all()</span></code> method by providing a local directory path as <code class="docutils literal notranslate"><span class="pre">path</span></code>. By default, this will download all files, but you can provide <code class="docutils literal notranslate"><span class="pre">include</span></code> and <code class="docutils literal notranslate"><span class="pre">exclude</span></code> lists, e.g. <code class="docutils literal notranslate"><span class="pre">include=["*.txt",</span> <span class="pre">"*.json"]</span></code> to only include TXT or JSON files.</p> <div class="nbinput nblast docutils container"> <div class="prompt highlight-none notranslate"><div class="highlight"><pre><span></span>[ ]: </pre></div> </div> -<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1">#res = release_latest.download("resnet50_weights.pth")</span> -<span class="n">res</span> <span class="o">=</span> <span class="n">release_latest</span><span class="o">.</span><span class="n">download</span><span class="p">(</span><span class="n">filename</span><span class="o">=</span><span class="s2">"resnet50_weights.pth"</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="s2">"bailo_resnet50_weights.pth"</span><span class="p">)</span> - -<span class="c1">#with open("bailo_resnet50_weights.pth", "wb") as f:</span> - <span class="c1">#f.write(res.content)</span> +<div class="input_area highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1">#release_latest.download(filename="resnet50_weights.pth", path="bailo_resnet50_weights.pth")</span> +<span class="n">release_latest</span><span class="o">.</span><span class="n">download_all</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="s2">"downloads"</span><span class="p">)</span> </pre></div> </div> </div> diff --git a/backend/python-docs/_build/html/objects.inv b/backend/python-docs/_build/html/objects.inv index f01f0a7600ebc0c5d3aceb126c5e30b92f530552..a1b0236bdfbfd53c8e0805b40c80c82fce957561 100644 GIT binary patch delta 12899 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 N{{ZXE{{xjKSJ=G49nJs% delta 12474 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 Eq=<J>{{R30 diff --git a/backend/python-docs/_build/html/py-modindex.html b/backend/python-docs/_build/html/py-modindex.html index adfafc2d9..d8ddb4fc5 100644 --- a/backend/python-docs/_build/html/py-modindex.html +++ b/backend/python-docs/_build/html/py-modindex.html @@ -58,6 +58,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="notebooks/access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="notebooks/datacards_demo.html">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch.html">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/schemas_demo.html">Managing Schemas</a></li> @@ -128,6 +129,16 @@ <h1>Python Module Index</h1> <td>    <a href="bailo.helper.html#module-bailo.helper.access_request"><code class="xref">bailo.helper.access_request</code></a></td><td> <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>    + <a href="bailo.helper.html#module-bailo.helper.datacard"><code class="xref">bailo.helper.datacard</code></a></td><td> + <em></em></td></tr> + <tr class="cg-1"> + <td></td> + <td>    + <a href="bailo.helper.html#module-bailo.helper.entry"><code class="xref">bailo.helper.entry</code></a></td><td> + <em></em></td></tr> <tr class="cg-1"> <td></td> <td>    diff --git a/backend/python-docs/_build/html/search.html b/backend/python-docs/_build/html/search.html index 98f7a5262..2f8459375 100644 --- a/backend/python-docs/_build/html/search.html +++ b/backend/python-docs/_build/html/search.html @@ -58,6 +58,7 @@ <p class="caption" role="heading"><span class="caption-text">Notebooks:</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="notebooks/access_requests_demo.html">Managing Access Requests</a></li> +<li class="toctree-l1"><a class="reference internal" href="notebooks/datacards_demo.html">Managing Datacards</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/experiment_tracking_demo.html">Experiment Tracking with Bailo & MLFlow</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch.html">Managing Models & Releases (ResNet-50 Example with PyTorch)</a></li> <li class="toctree-l1"><a class="reference internal" href="notebooks/schemas_demo.html">Managing Schemas</a></li> diff --git a/backend/python-docs/_build/html/searchindex.js b/backend/python-docs/_build/html/searchindex.js index a2778d6e3..56ffd46cc 100644 --- a/backend/python-docs/_build/html/searchindex.js +++ b/backend/python-docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["bailo.core", "bailo.helper", "index", "notebooks/access_requests_demo", "notebooks/experiment_tracking_demo", "notebooks/models_and_releases_demo_pytorch", "notebooks/schemas_demo", "pre-commit-config", "pylint", "pyproject", "readme_link"], "filenames": ["bailo.core.rst", "bailo.helper.rst", "index.rst", "notebooks/access_requests_demo.ipynb", "notebooks/experiment_tracking_demo.ipynb", "notebooks/models_and_releases_demo_pytorch.ipynb", "notebooks/schemas_demo.ipynb", "pre-commit-config.md", "pylint.md", "pyproject.md", "readme_link.md"], "titles": ["bailo.core package", "bailo.helper package", "Welcome to Bailo\u2019s Python Client documentation!", "Managing Access Requests", "Experiment Tracking with Bailo & MLFlow", "Managing Models & Releases (ResNet-50 Example with PyTorch)", "Managing Schemas", "pre-commit-config.yaml", "A comma-separated list of package or module names from where C extensions may", "pypyroject.toml", "Bailo Python Client"], "terms": {"The": [0, 1, 3, 4, 5, 6, 7, 9, 10], "contain": [0, 4, 5, 9], "suppport": 0, "one": [0, 4, 5], "endpoint": [0, 3, 5, 6], "It": [0, 9], "i": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10], "recommend": 0, "us": [0, 1, 4, 7, 9, 10], "helper": [0, 2, 3, 5, 6], "most": [0, 4], "class": [0, 1, 3, 4, 5, 6], "agent": [0, 2, 3, 5, 6], "sourc": [0, 1], "base": [0, 1], "object": [0, 1, 3, 4, 5, 6], "api": [0, 10], "talk": 0, "wrap": 0, "each": [0, 5], "request": [0, 1, 2], "an": [0, 1], "except": 0, "handler": 0, "map": 0, "error": [0, 1, 5], "python": [0, 3, 5, 6, 7, 9], "among": 0, "statu": 0, "code": [0, 5, 7], "less": 0, "than": 0, "400": 0, "default": [0, 1, 3, 5, 6, 10], "timeout": [], "5": [1, 4, 6, 8], "second": [], "delet": [0, 1], "arg": [0, 8], "kwarg": 0, "get": [0, 1, 2], "patch": 0, "post": [0, 1], "push": 0, "put": 0, "pkiagent": [0, 2, 3, 5, 6], "cert": [0, 3, 5, 6], "str": [0, 1, 4], "kei": [0, 2, 3, 5, 6], "auth": [0, 3, 5, 6], "__init__": [0, 1], "initi": [0, 5], "pki": [0, 3, 5, 6], "authent": [0, 3, 5, 6], "paramet": [0, 1, 3, 4, 5, 6], "path": [0, 1, 5], "file": [0, 1, 5, 9, 10], "certif": 0, "author": 0, "tokenag": [0, 2], "access_kei": 0, "secret_kei": 0, "token": 0, "access": [0, 1, 2, 4], "secret": 0, "client": [0, 1, 3, 5, 6], "url": [0, 3, 4, 5, 6], "creat": [0, 1, 7, 10], "can": [0, 1, 3, 4, 5, 6, 7, 10], "websit": 0, "handl": [0, 3, 5, 6], "delete_access_request": 0, "model_id": [0, 1, 3, 5], "access_request_id": [0, 1, 3], "specif": [0, 1, 5], "associ": 0, "model": [0, 1, 2, 3, 4, 6, 10], "uniqu": [0, 1, 6], "id": [0, 1, 4], "return": [0, 1, 5, 6], "json": [0, 1, 6], "respons": [0, 1, 5], "delete_fil": 0, "file_id": 0, "delete_releas": 0, "release_vers": 0, "releas": [0, 1, 2, 4, 10], "version": [0, 1, 5, 10], "get_access_request": 0, "retriev": [0, 1], "given": [0, 1, 10], "its": 0, "all": [0, 1, 5, 10], "get_all_imag": 0, "imag": [0, 1, 5], "A": [0, 1, 3, 4, 5, 6, 10], "get_all_releas": 0, "get_all_schema": 0, "kind": [0, 1, 4, 6], "schemakind": [0, 1, 2, 4, 6], "none": [0, 1], "schema": [0, 1, 2, 5], "enum": [0, 1], "defin": [0, 4], "e": [0, 1, 3, 5, 6, 10], "g": [0, 1, 3, 5, 6], "accessrequest": [0, 1, 2, 3], "get_all_team": 0, "team": [0, 1], "get_download_by_filenam": 0, "semver": [0, 1], "filenam": [0, 1, 5], "download": [0, 1, 10], "try": 0, "from": [0, 1, 3, 6, 7, 10], "get_download_fil": 0, "": [0, 1], "get_fil": 0, "get_model": 0, "get_model_card": 0, "card": [0, 1, 4], "get_model_rol": 0, "role": [0, 1, 2], "get_model_user_rol": 0, "current": [0, 1, 9], "user": [0, 1, 3, 7], "task": 0, "librari": [0, 5], "list": [0, 1], "filter": 0, "search": 0, "find": [0, 6], "provid": [0, 1, 2, 4], "term": 0, "classif": [0, 5], "tensorflow": 0, "custom": [0, 5], "string": [0, 1, 6], "locat": [0, 1, 4], "get_releas": [0, 1, 5], "get_review": 0, "activ": 0, "bool": [0, 1, 8], "review": [0, 1], "within": [0, 1, 2, 3, 4, 5, 6, 10], "boolean": 0, "repres": [0, 1, 5], "get_schema": 0, "schema_id": [0, 1, 3, 4, 5, 6], "get_team": 0, "team_id": [0, 1, 3, 4, 5, 10], "get_user_team": 0, "model_card_from_schema": 0, "patch_access_request": 0, "metadata": [0, 1, 3], "ani": [0, 1, 3, 4, 5, 6], "updat": [0, 1, 3], "patch_model": 0, "name": [0, 1, 3, 4, 5, 6, 10], "descript": [0, 1, 3, 4, 5, 6, 10], "visibl": [0, 1, 5], "public": [0, 1], "privat": [0, 1], "patch_team": 0, "post_access_request": 0, "post_model": 0, "modelvis": [0, 1, 2], "post_releas": 0, "note": [0, 1, 4, 5, 6, 10], "model_card_vers": [0, 1, 5], "int": [0, 1, 8], "minor": [0, 1, 5], "fals": [0, 1, 6], "draft": [0, 1, 6], "new": [0, 1, 10], "signifi": 0, "post_review": 0, "decis": 0, "comment": 0, "semant": [0, 1], "make": [0, 1, 5, 10], "either": [0, 1, 5, 10], "approv": 0, "chang": [0, 1, 5], "go": 0, "post_schema": 0, "json_schema": [0, 1, 4, 6], "dict": [0, 1], "post_team": 0, "put_model_card": 0, "latest": [0, 1, 5], "put_releas": 0, "simple_upload": 0, "buffer": 0, "bytesio": [0, 1, 5], "simpl": [0, 10], "upload": [0, 1, 10], "valu": [0, 1], "whether": [0, 1], "publicli": 0, "model_senior_responsible_offic": 0, "msro": 0, "model_technical_review": 0, "mtr": 0, "owner": 0, "type": [0, 5, 6], "access_request": [0, 1, 3], "bailoexcept": [0, 2], "gener": [0, 3, 5, 6, 7, 10], "responseexcept": [0, 2], "gave": 0, "created_bi": 1, "being": 1, "made": 1, "thi": [1, 2, 3, 4, 5, 6, 9, 10], "ha": 1, "been": [1, 4], "classmethod": [1, 3, 5, 6, 8], "interact": [1, 2, 3, 5, 6], "messag": [1, 5], "confirm": 1, "remov": 1, "from_id": 1, "exist": [1, 3], "state": 1, "experi": [1, 2], "local": [1, 3, 4, 5, 6], "which": [1, 3, 4, 5, 6, 7], "run": [1, 3, 5, 6, 10], "raw": 1, "inform": [1, 3, 5, 6], "about": 1, "create_experi": [1, 4], "x": [1, 4], "rang": [1, 4], "start_run": [1, 4], "log_param": [1, 4], "lr": [1, 4], "0": [1, 3, 4, 5, 6, 10], "01": [1, 3, 4], "insert": [1, 3, 4, 5, 6], "train": [1, 4], "here": [1, 10], "log_metr": [1, 4], "accuraci": [1, 4], "86": [1, 4], "log_artifact": [1, 4], "weight": [1, 4], "pth": [1, 5], "publish": [1, 9], "mc_loc": [1, 4], "perform": [1, 4, 7], "performancemetr": [1, 4], "run_id": [1, 4], "1": [1, 3, 4, 5, 6, 10], "from_mlflow": [1, 4], "tracking_uri": [1, 4], "experiment_id": [1, 4], "import": [1, 3, 5, 6, 10], "mlflow": [1, 2], "track": [1, 2], "server": [1, 4], "uri": [1, 4], "rais": 1, "importerror": 1, "instal": [1, 2, 4, 5], "artifact": [1, 4], "log": [1, 4], "log_dataset": 1, "dataset": 1, "arbitrari": [1, 4], "titl": [1, 6], "metric": [1, 4], "dictionari": 1, "param": [1, 4], "result": 1, "select": [1, 5], "present": 1, "next": [1, 4, 5], "depend": [1, 4, 7], "is_mlflow": 1, "start": [1, 2], "mark": 1, "card_from_model": 1, "copi": 1, "differ": [1, 5], "yet": 1, "implement": 1, "notimplementederror": 1, "Not": 1, "card_from_schema": [1, 4, 5, 10], "card_from_templ": 1, "templat": 1, "build": [1, 7, 9], "create_releas": [1, 5, 10], "true": [1, 6], "call": [1, 3, 5], "method": [1, 4], "get_card_latest": 1, "get_card_revis": 1, "revis": 1, "get_imag": 1, "refer": 1, "get_latest_releas": [1, 5], "from_vers": 1, "get_rol": 1, "get_user_rol": 1, "summari": [1, 6], "update_model_card": [1, 4, 5], "model_card": [1, 4, 5], "If": [1, 4, 5, 10], "attribut": [1, 3, 5], "option": [1, 9], "ar": [1, 3, 4, 5, 6, 7, 9, 10], "store": 1, "write": [1, 5], "give": 1, "read": 1, "determin": 1, "disk": [1, 5], "set": [1, 5], "data": 1, "directori": [1, 10], "load": 1, "zip": 1, "ecosystem": 2, "manag": 2, "lifecycl": [2, 4], "machin": [2, 4], "learn": [2, 4, 5], "support": [2, 3, 4, 5, 6], "featur": 2, "develop": 2, "core": [2, 3, 4, 5, 6], "resnet": 2, "50": [2, 8], "exampl": [2, 3, 4, 6, 9], "pytorch": 2, "bailo": [3, 6], "enabl": [3, 5, 6], "intuit": [3, 5, 6], "servic": [3, 4, 5, 6], "environ": [3, 4, 5, 6], "notebook": [3, 4, 5, 6], "through": [3, 4, 5, 6], "follow": [3, 4, 5, 6, 10], "concept": [3, 4, 5, 6], "prerequisit": [3, 4, 5, 6], "3": [3, 4, 5, 6, 10], "8": [3, 4, 5, 6, 8, 10], "higher": [3, 4, 5, 6, 10], "includ": [3, 4, 5, 6, 7, 9], "demo": [3, 4, 5, 6], "remot": [3, 4, 5, 6], "see": [3, 4, 5, 6], "http": [3, 4, 5, 6, 8, 10], "github": [3, 4, 5, 6], "com": [3, 4, 5, 6], "gchq": [3, 4, 5, 6], "split": [3, 5, 6, 10], "two": [3, 5, 6], "sub": [3, 5, 6], "packag": [3, 5, 6, 7, 9], "For": [3, 5, 6], "direct": [3, 5, 6], "more": [3, 4, 5, 6], "oper": [3, 5, 6], "In": [3, 4, 5, 6, 7, 10], "order": [3, 4, 5, 6, 10], "you": [3, 4, 5, 6, 10], "first": [3, 4, 5, 6], "need": [3, 4, 5, 6], "instanti": [3, 4, 5, 6], "By": [3, 5, 6], "howev": [3, 5, 6], "also": [3, 4, 5, 6, 9], "pass": [3, 5, 6], "when": [3, 5, 6, 9], "necessari": [3, 4, 5, 6], "statement": [3, 4, 5, 6], "127": [3, 4, 5, 6], "8080": [3, 4, 5, 6, 10], "host": [3, 4, 5, 6], "section": [3, 4, 5, 6, 10], "we": [3, 4, 5, 6], "ll": [3, 4, 5, 6], "On": [3, 5, 6], "must": [3, 4, 5, 6], "consist": [3, 5, 6], "least": [3, 5], "upon": [3, 5, 6], "creation": [3, 5, 6], "These": [3, 5, 6, 7], "below": [3, 5, 6], "befor": [3, 4, 5, 6], "our": [3, 4, 5, 6], "yolov5": [3, 4], "detect": [3, 4], "uncategoris": [3, 4, 5, 10], "overview": [3, 4, 5, 6], "entiti": 3, "test": [3, 6, 9], "enddat": 3, "1970": 3, "minim": [3, 5, 10], "v10": [3, 5, 10], "previou": [3, 4, 5, 6], "your": [3, 4, 5, 6], "edit": 3, "directli": [3, 4, 5], "demonstr": [3, 4, 5], "new_metadata": 3, "newnam": 3, "simpli": 3, "addit": 4, "cover": 4, "offer": 4, "integr": [4, 5, 10], "might": 4, "wider": 4, "particular": 4, "complet": 4, "basic": [4, 8], "models_and_releases_demo_pytorch": 4, "ipynb": 4, "step": [4, 5], "have": [4, 5], "thu": 4, "too": [4, 5, 6], "how": [4, 5], "do": [4, 5, 6], "time": [4, 5], "later": [4, 5], "pip": [4, 5, 10], "random": [4, 6], "element": 4, "tutori": 4, "instanc": [4, 5, 6], "sampl": 4, "actual": 4, "onli": [4, 7, 9, 10], "function": [4, 6], "ui": 4, "command": [4, 5], "line": 4, "typic": [4, 6], "localhost": [4, 10], "5000": [4, 6], "browser": 4, "design": [4, 8], "displai": [4, 5], "wai": 4, "therefor": 4, "extern": 4, "script": 4, "quit": 4, "larg": 4, "set_schema": 4, "py": [4, 8, 9], "assign": [4, 5], "randint": 4, "1000000": 4, "mandatori": 4, "field": 4, "new_card": [4, 5], "tag": [4, 5, 6], "modelsummari": [4, 5], "work": [4, 10], "sequenti": 4, "so": 4, "re": [4, 5], "parallel": 4, "would": [4, 6], "better": 4, "anchor_t": 4, "4": [4, 5], "scale": 4, "98": 4, "txt": [4, 5], "2": [4, 5], "set_tracking_uri": 4, "set_experi": 4, "demonst": 4, "same": [4, 5], "set_tag": 4, "info": 4, "As": 4, "previous": 4, "mention": 4, "experiment_mlflow": 4, "BE": 4, "found": 4, "ON": 4, "THE": 4, "becaus": 4, "intend": 4, "success": [4, 5], "specifi": 4, "well": 4, "case": [4, 5], "per": 4, "earlier": [4, 5], "should": [4, 5], "now": [4, 5], "under": 4, "tab": 4, "addition": 4, "relev": 5, "linux": 5, "cpu": 5, "torch": [5, 8], "torchvis": 5, "index": 5, "org": [5, 6], "whl": 5, "mac": 5, "window": [5, 10], "resnet50": 5, "resnet50_weight": 5, "other": [5, 6, 10], "like": 5, "ad": 5, "backend": [5, 10], "mai": [5, 9, 10], "relai": 5, "empti": 5, "beta": [5, 10], "out": 5, "scope": 5, "print": 5, "f": [5, 10], "abov": 5, "want": 5, "match": 5, "otherwis": 5, "thrown": 5, "adjust": 5, "don": 5, "t": 5, "drastic": 5, "behaviour": 5, "separ": 5, "itself": 5, "release_on": 5, "save": 5, "them": 5, "take": 5, "allow": 5, "u": 5, "without": 5, "up": 5, "space": 5, "torch_model": 5, "state_dict": 5, "To": 5, "content": [5, 10], "last": 5, "s3": 5, "large_fil": 5, "open": [5, 10], "rb": 5, "altern": 5, "both": [5, 9], "release_latest": 5, "successfulli": 5, "ident": 5, "similarli": 5, "bailo_resnet50_weight": 5, "wb": 5, "final": 5, "ve": 5, "load_state_dict": 5, "init": 5, "identifi": 6, "suffic": 6, "reserv": 6, "administr": 6, "def": 6, "random_gener": 6, "n": [6, 8], "10": 6, "join": 6, "choic": [6, 8], "ascii_uppercas": 6, "digit": 6, "k": [6, 8], "07": 6, "properti": 6, "modeloverview": 6, "what": 6, "doe": 6, "minlength": 6, "maxlength": 6, "searchabl": 6, "help": [6, 7], "arrai": 6, "widget": 6, "tagselectorbeta": 6, "item": 6, "uniqueitem": 6, "requir": [6, 9, 10], "additionalproperti": 6, "git": [7, 10], "hook": [7, 8], "scan": 7, "prior": 7, "checkin": 7, "configur": [7, 9], "focus": 7, "action": 7, "prevent": 7, "fail": 7, "dure": 7, "format": 7, "automat": 7, "auto": 7, "black": 7, "sort": 7, "isort": 7, "lint": [7, 9], "left": 7, "discret": 7, "master": 8, "pkg": 8, "whitelist": 8, "numpi": 8, "cv2": 8, "pyodbc": 8, "pydant": 8, "ciso8601": 8, "netcdf4": 8, "scipi": 8, "cv": 8, "conftest": 8, "setrecursionlimit": 8, "getrecursionlimit": 8, "job": 8, "100": 8, "persist": 8, "ye": 8, "rcfile": 8, "mode": 8, "unsaf": 8, "float": 8, "_": 8, "msg": 8, "max": 8, "exit": 8, "snake_cas": 8, "rgx": 8, "foo": 8, "bar": 8, "baz": 8, "toto": 8, "tutu": 8, "tata": 8, "pascalcas": 8, "upper_cas": 8, "min": 8, "j": 8, "ex": 8, "df": 8, "ax": 8, "group": 8, "long": 8, "after": 8, "paren": 8, "120": 8, "1000": 8, "stmt": 8, "miscellan": 8, "fixm": 8, "xxx": 8, "todo": 8, "9": 8, "jump": 8, "typecheck": 8, "np": 8, "pyspark": 8, "sql": 8, "collect_list": 8, "optpars": 8, "thread": 8, "_local": 8, "_thread": 8, "swagger_cli": 8, "mutat": 8, "dbutil": 8, "cb_": 8, "_cb": 8, "za": 8, "z0": 8, "9_": 8, "unused_": 8, "six": 8, "move": 8, "past": 8, "futur": [8, 9], "io": 8, "setup": [8, 9], "post_init": 8, "_asdict": 8, "_field": 8, "_replac": 8, "_sourc": 8, "_make": 8, "cl": 8, "7": 8, "expr": 8, "12": 8, "15": 8, "20": 8, "6": 8, "tkinter": 8, "tix": 8, "ext": 8, "known": 8, "azureiai": 8, "logist": 8, "inventoryplan": 8, "overgener": 8, "pyproject": 9, "main": 9, "project": 9, "replac": 9, "flit": 9, "poetri": 9, "consid": 9, "viabl": 9, "setuptool": 9, "cfg": 9, "still": 9, "wrapper": 10, "tabl": 10, "binari": 10, "yolo": 10, "yolov4": 10, "look": 10, "onc": 10, "my_releas": 10, "onnx": 10, "documen": 10, "render": 10, "sphinx": 10, "serv": 10, "doc": 10, "html": 10, "bat": 10, "alreadi": 10, "prompt": 10, "overwrit": 10, "huski": 10, "instruct": 10, "cli": 10, "pre": 10, "commit": 10, "pytest": 10, "ran": 10, "accordingli": 10, "categori": 10, "autom": 10, "purpos": 10, "sure": 10, "m": 10}, "objects": {"": [[2, 0, 0, "-", "bailo"]], "bailo.core": [[0, 0, 0, "-", "agent"], [0, 0, 0, "-", "client"], [0, 0, 0, "-", "enums"], [0, 0, 0, "-", "exceptions"]], "bailo.core.agent": [[0, 1, 1, "", "Agent"], [0, 1, 1, "", "PkiAgent"], [0, 1, 1, "", "TokenAgent"]], "bailo.core.agent.Agent": [[0, 2, 1, "", "delete"], [0, 2, 1, "", "get"], [0, 2, 1, "", "patch"], [0, 2, 1, "", "post"], [0, 2, 1, "", "push"], [0, 2, 1, "", "put"]], "bailo.core.agent.PkiAgent": [[0, 2, 1, "", "__init__"], [0, 2, 1, "", "delete"], [0, 2, 1, "", "get"], [0, 2, 1, "", "patch"], [0, 2, 1, "", "post"], [0, 2, 1, "", "put"]], "bailo.core.agent.TokenAgent": [[0, 2, 1, "", "__init__"], [0, 2, 1, "", "delete"], [0, 2, 1, "", "get"], [0, 2, 1, "", "patch"], [0, 2, 1, "", "post"], [0, 2, 1, "", "put"]], "bailo.core.client": [[0, 1, 1, "", "Client"]], "bailo.core.client.Client": [[0, 2, 1, "", "delete_access_request"], [0, 2, 1, "", "delete_file"], [0, 2, 1, "", "delete_release"], [0, 2, 1, "", "get_access_request"], [0, 2, 1, "", "get_access_requests"], [0, 2, 1, "", "get_all_images"], [0, 2, 1, "", "get_all_releases"], [0, 2, 1, "", "get_all_schemas"], [0, 2, 1, "", "get_all_teams"], [0, 2, 1, "", "get_download_by_filename"], [0, 2, 1, "", "get_download_file"], [0, 2, 1, "", "get_files"], [0, 2, 1, "", "get_model"], [0, 2, 1, "", "get_model_card"], [0, 2, 1, "", "get_model_roles"], [0, 2, 1, "", "get_model_user_roles"], [0, 2, 1, "", "get_models"], [0, 2, 1, "", "get_release"], [0, 2, 1, "", "get_reviews"], [0, 2, 1, "", "get_schema"], [0, 2, 1, "", "get_team"], [0, 2, 1, "", "get_user_teams"], [0, 2, 1, "", "model_card_from_schema"], [0, 2, 1, "", "patch_access_request"], [0, 2, 1, "", "patch_model"], [0, 2, 1, "", "patch_team"], [0, 2, 1, "", "post_access_request"], [0, 2, 1, "", "post_model"], [0, 2, 1, "", "post_release"], [0, 2, 1, "", "post_review"], [0, 2, 1, "", "post_schema"], [0, 2, 1, "", "post_team"], [0, 2, 1, "", "put_model_card"], [0, 2, 1, "", "put_release"], [0, 2, 1, "", "simple_upload"]], "bailo.core.enums": [[0, 1, 1, "", "ModelVisibility"], [0, 1, 1, "", "Role"], [0, 1, 1, "", "SchemaKind"]], "bailo.core.enums.ModelVisibility": [[0, 3, 1, "", "PRIVATE"], [0, 3, 1, "", "PUBLIC"]], "bailo.core.enums.Role": [[0, 3, 1, "", "MODEL_SENIOR_RESPONSIBLE_OFFICER"], [0, 3, 1, "", "MODEL_TECHNICAL_REVIEWER"], [0, 3, 1, "", "OWNER"]], "bailo.core.enums.SchemaKind": [[0, 3, 1, "", "ACCESS_REQUEST"], [0, 3, 1, "", "MODEL"]], "bailo.core.exceptions": [[0, 4, 1, "", "BailoException"], [0, 4, 1, "", "ResponseException"]], "bailo.helper": [[1, 0, 0, "-", "access_request"], [1, 0, 0, "-", "model"], [1, 0, 0, "-", "release"], [1, 0, 0, "-", "schema"]], "bailo.helper.access_request": [[1, 1, 1, "", "AccessRequest"]], "bailo.helper.access_request.AccessRequest": [[1, 2, 1, "", "create"], [1, 2, 1, "", "delete"], [1, 2, 1, "", "from_id"], [1, 2, 1, "", "update"]], "bailo.helper.model": [[1, 1, 1, "", "Experiment"], [1, 1, 1, "", "Model"]], "bailo.helper.model.Experiment": [[1, 2, 1, "", "create"], [1, 2, 1, "", "from_mlflow"], [1, 2, 1, "", "log_artifacts"], [1, 2, 1, "", "log_dataset"], [1, 2, 1, "", "log_metrics"], [1, 2, 1, "", "log_params"], [1, 2, 1, "", "publish"], [1, 2, 1, "", "start_run"]], "bailo.helper.model.Model": [[1, 2, 1, "", "card_from_model"], [1, 2, 1, "", "card_from_schema"], [1, 2, 1, "", "card_from_template"], [1, 2, 1, "", "create"], [1, 2, 1, "", "create_experiment"], [1, 2, 1, "", "create_release"], [1, 2, 1, "", "from_id"], [1, 2, 1, "", "get_card_latest"], [1, 2, 1, "", "get_card_revision"], [1, 2, 1, "", "get_image"], [1, 2, 1, "", "get_images"], [1, 2, 1, "", "get_latest_release"], [1, 2, 1, "", "get_release"], [1, 2, 1, "", "get_releases"], [1, 2, 1, "", "get_roles"], [1, 2, 1, "", "get_user_roles"], [1, 2, 1, "", "update"], [1, 2, 1, "", "update_model_card"]], "bailo.helper.release": [[1, 1, 1, "", "Release"]], "bailo.helper.release.Release": [[1, 2, 1, "", "__init__"], [1, 2, 1, "", "create"], [1, 2, 1, "", "delete"], [1, 2, 1, "", "download"], [1, 2, 1, "", "from_version"], [1, 2, 1, "", "update"], [1, 2, 1, "", "upload"]], "bailo.helper.schema": [[1, 1, 1, "", "Schema"]], "bailo.helper.schema.Schema": [[1, 2, 1, "", "create"], [1, 2, 1, "", "from_id"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:exception"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "exception", "Python exception"]}, "titleterms": {"bailo": [0, 1, 2, 4, 5, 10], "core": 0, "packag": [0, 1, 2, 8, 10], "helper": 1, "welcom": 2, "": [2, 8], "python": [2, 4, 8, 10], "client": [2, 4, 10], "document": [2, 10], "notebook": 2, "manag": [3, 5, 6, 8], "access": [3, 8], "request": 3, "introduct": [3, 4, 5, 6], "creat": [3, 4, 5, 6, 8], "new": [3, 4, 5, 6, 8], "retriev": [3, 5, 6], "an": [3, 4, 5, 6, 8], "us": [3, 5, 6, 8], "from_id": [3, 5, 6], "method": [3, 5, 6, 8], "make": [3, 8], "chang": [3, 8], "delet": 3, "experi": 4, "track": 4, "mlflow": 4, "connect": 4, "set": [4, 8], "up": [4, 8], "prepar": [4, 5], "custom": 4, "schema": [4, 6], "conduct": 4, "run": [4, 8], "dummi": [4, 8], "import": [4, 8], "exist": [4, 5, 6, 8], "from": [4, 5, 8], "publish": 4, "result": [4, 8], "model": 5, "releas": 5, "resnet": 5, "50": 5, "exampl": [5, 8], "pytorch": 5, "updat": 5, "base": [5, 8], "popul": 5, "card": 5, "weight": 5, "upload": 5, "download": 5, "load": [5, 8], "pre": 7, "commit": 7, "config": 7, "yaml": 7, "A": 8, "comma": 8, "separ": 8, "list": 8, "modul": 8, "name": 8, "where": 8, "c": 8, "extens": 8, "mai": 8, "ar": 8, "activ": 8, "interpret": 8, "arbitrari": 8, "code": 8, "add": [8, 10], "file": 8, "directori": 8, "blacklist": 8, "thei": 8, "should": 8, "path": 8, "match": 8, "regex": 8, "pattern": 8, "The": 8, "against": 8, "execut": 8, "usual": 8, "sy": 8, "manipul": 8, "pygtk": 8, "requir": 8, "multipl": 8, "process": 8, "speed": 8, "pylint": 8, "specifi": 8, "0": 8, "auto": 8, "detect": 8, "number": 8, "processor": 8, "avail": 8, "control": 8, "amount": 8, "potenti": 8, "infer": 8, "valu": 8, "when": 8, "singl": 8, "object": 8, "thi": 8, "can": 8, "help": 8, "perform": 8, "deal": 8, "larg": 8, "function": 8, "complex": 8, "nest": 8, "condit": 8, "plugin": 8, "regist": 8, "addit": 8, "checker": 8, "pickl": 8, "collect": 8, "data": 8, "later": 8, "comparison": 8, "configur": 8, "enabl": 8, "would": 8, "attempt": 8, "guess": 8, "common": 8, "misconfigur": 8, "emit": 8, "user": 8, "friendli": 8, "hint": 8, "instead": 8, "fals": 8, "posit": 8, "error": 8, "messag": 8, "allow": 8, "onli": 8, "show": 8, "warn": 8, "confid": 8, "level": 8, "leav": 8, "empti": 8, "all": 8, "valid": 8, "high": 8, "inference_failur": 8, "undefin": 8, "disabl": 8, "report": 8, "categori": 8, "given": 8, "id": 8, "you": 8, "either": 8, "give": 8, "identifi": 8, "put": 8, "option": 8, "time": 8, "command": 8, "line": 8, "appear": 8, "onc": 8, "also": 8, "everyth": 8, "first": 8, "reenabl": 8, "specif": 8, "check": 8, "For": 8, "want": 8, "similar": 8, "If": 8, "class": 8, "have": 8, "displai": 8, "w": 8, "see": 8, "express": 8, "which": 8, "return": 8, "score": 8, "less": 8, "than": 8, "equal": 8, "10": 8, "variabl": 8, "refactor": 8, "convent": 8, "contain": 8, "each": 8, "well": 8, "statement": 8, "i": 8, "total": 8, "analyz": 8, "global": 8, "evalu": 8, "rp0004": 8, "templat": 8, "style": 8, "format": 8, "string": 8, "inform": 8, "doc": 8, "detail": 8, "output": 8, "text": 8, "parseabl": 8, "color": 8, "json": 8, "msv": 8, "visual": 8, "studio": 8, "e": 8, "g": 8, "mypackag": 8, "mymodul": 8, "myreporterclass": 8, "tell": 8, "whether": 8, "full": 8, "maximum": 8, "block": 8, "bodi": 8, "complet": 8, "never": 8, "inconsist": 8, "call": 8, "consid": 8, "explicit": 8, "print": 8, "correct": 8, "argument": 8, "regular": 8, "overrid": 8, "attribut": 8, "attr": 8, "bad": 8, "alwai": 8, "refus": 8, "constant": 8, "const": 8, "minimum": 8, "length": 8, "docstr": 8, "shorter": 8, "ones": 8, "exempt": 8, "good": 8, "accept": 8, "includ": 8, "invalid": 8, "inlin": 8, "iter": 8, "inlinevar": 8, "colon": 8, "delimit": 8, "determin": 8, "other": 8, "sever": 8, "do": 8, "decor": 8, "produc": 8, "properti": 8, "abc": 8, "abstractproperti": 8, "These": 8, "taken": 8, "consider": 8, "expect": 8, "end": 8, "ani": 8, "lf": 8, "crlf": 8, "regexp": 8, "longer": 8, "limit": 8, "space": 8, "indent": 8, "insid": 8, "hang": 8, "continu": 8, "unit": 8, "4": 8, "t": 8, "1": 8, "tab": 8, "charact": 8, "construct": 8, "whitespac": 8, "dict": 8, "tabul": 8, "etc": 8, "n222": 8, "2": 8, "trail": 8, "between": 8, "close": 8, "bracket": 8, "same": 8, "declar": 8, "test": [8, 10], "els": 8, "log": 8, "old": 8, "mean": 8, "fstr": 8, "f": 8, "paramet": 8, "note": 8, "tag": 8, "take": 8, "ignor": 8, "comment": 8, "comput": 8, "count": 8, "suggest": 8, "spell": 8, "mistak": 8, "dictionari": 8, "none": 8, "To": 8, "work": 8, "instal": [8, 10], "enchant": 8, "word": 8, "privat": 8, "one": 8, "per": 8, "store": 8, "unknown": 8, "rais": 8, "flag": 8, "implicit": 8, "str": 8, "concat": 8, "sequenc": 8, "gener": 8, "concaten": 8, "defin": 8, "over": 8, "context": 8, "contextlib": 8, "contextmanag": 8, "member": 8, "dynam": 8, "miss": 8, "system": 8, "so": 8, "shouldn": 8, "trigger": 8, "e1101": 8, "mixin": 8, "its": 8, "case": 8, "insensit": 8, "about": 8, "owner": 8, "whenev": 8, "opaqu": 8, "while": 8, "some": 8, "branch": 8, "might": 8, "partial": 8, "In": 8, "still": 8, "rest": 8, "support": 8, "qualifi": 8, "project": 8, "namespac": 8, "dure": 8, "runtim": 8, "thu": 8, "cannot": 8, "deduc": 8, "static": 8, "analysi": 8, "It": 8, "unix": 8, "possibl": 8, "wa": 8, "found": 8, "aspect": 8, "find": 8, "edit": 8, "distanc": 8, "order": 8, "signatur": 8, "suppos": 8, "builtin": 8, "rememb": 8, "avoid": 8, "unus": 8, "treat": 8, "violat": 8, "callback": 8, "must": 8, "start": [8, 10], "those": 8, "default": 8, "lead": 8, "underscor": 8, "we": 8, "init": 8, "redefin": 8, "assign": 8, "instanc": 8, "exclud": 8, "protect": 8, "metaclass": 8, "r0902": 8, "boolean": 8, "r0916": 8, "local": [8, 10], "parent": 8, "r0901": 8, "public": 8, "r0904": 8, "yield": 8, "r0903": 8, "just": 8, "top": 8, "wildcard": 8, "analys": 8, "fallback": 8, "both": 8, "3": 8, "compat": 8, "anoth": 8, "deprec": 8, "graph": 8, "extern": 8, "depend": 8, "rp0402": 8, "everi": 8, "intern": 8, "forc": 8, "recogn": 8, "part": 8, "standard": 8, "librari": 8, "third": 8, "parti": 8, "coupl": 8, "prefer": 8, "except": 8, "being": 8, "caught": 8, "baseexcept": 8, "pypyroject": 9, "toml": 9, "kei": 10, "featur": 10, "get": 10, "build": 10, "develop": 10, "precommit": 10}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "nbsphinx": 4, "sphinx": 60}, "alltitles": {"Managing Access Requests": [[3, "Managing-Access-Requests"]], "Introduction": [[3, "Introduction"], [6, "Introduction"], [4, "Introduction"], [5, "Introduction"]], "Creating a new access request": [[3, "Creating-a-new-access-request"]], "Retrieving an access request": [[3, "Retrieving-an-access-request"]], "Using the .from_id() method": [[3, "Using-the-.from_id()-method"], [6, "Using-the-.from_id()-method"], [5, "Using-the-.from_id()-method"]], "Making changes to an access request": [[3, "Making-changes-to-an-access-request"]], "Deleting an access request": [[3, "Deleting-an-access-request"]], "Managing Schemas": [[6, "Managing-Schemas"]], "Creating a new schema": [[6, "Creating-a-new-schema"]], "Retrieving an existing schema": [[6, "Retrieving-an-existing-schema"]], "pre-commit-config.yaml": [[7, "pre-commit-config-yaml"]], "A comma-separated list of package or module names from where C extensions may": [[8, "a-comma-separated-list-of-package-or-module-names-from-where-c-extensions-may"]], "be loaded. Extensions are loading into the active Python interpreter and may": [[8, "be-loaded-extensions-are-loading-into-the-active-python-interpreter-and-may"]], "run arbitrary code.": [[8, "run-arbitrary-code"]], "Add files or directories to the blacklist. They should be base names, not": [[8, "add-files-or-directories-to-the-blacklist-they-should-be-base-names-not"]], "paths.": [[8, "paths"]], "Add files or directories matching the regex patterns to the blacklist. The": [[8, "add-files-or-directories-matching-the-regex-patterns-to-the-blacklist-the"]], "regex matches against base names, not paths.": [[8, "regex-matches-against-base-names-not-paths"]], "Python code to execute, usually for sys.path manipulation such as": [[8, "python-code-to-execute-usually-for-sys-path-manipulation-such-as"]], "pygtk.require().": [[8, "pygtk-require"]], "Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the": [[8, "use-multiple-processes-to-speed-up-pylint-specifying-0-will-auto-detect-the"]], "number of processors available to use.": [[8, "number-of-processors-available-to-use"]], "Control the amount of potential inferred values when inferring a single": [[8, "control-the-amount-of-potential-inferred-values-when-inferring-a-single"]], "object. This can help the performance when dealing with large functions or": [[8, "object-this-can-help-the-performance-when-dealing-with-large-functions-or"]], "complex, nested conditions.": [[8, "complex-nested-conditions"]], "List of plugins (as comma separated values of python module names) to load,": [[8, "list-of-plugins-as-comma-separated-values-of-python-module-names-to-load"]], "usually to register additional checkers.": [[8, "usually-to-register-additional-checkers"]], "Pickle collected data for later comparisons.": [[8, "pickle-collected-data-for-later-comparisons"]], "Specify a configuration file.": [[8, "specify-a-configuration-file"]], "When enabled, pylint would attempt to guess common misconfiguration and emit": [[8, "when-enabled-pylint-would-attempt-to-guess-common-misconfiguration-and-emit"]], "user-friendly hints instead of false-positive error messages.": [[8, "user-friendly-hints-instead-of-false-positive-error-messages"]], "Allow loading of arbitrary C extensions. Extensions are imported into the": [[8, "allow-loading-of-arbitrary-c-extensions-extensions-are-imported-into-the"]], "active Python interpreter and may run arbitrary code.": [[8, "active-python-interpreter-and-may-run-arbitrary-code"]], "Only show warnings with the listed confidence levels. Leave empty to show": [[8, "only-show-warnings-with-the-listed-confidence-levels-leave-empty-to-show"]], "all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED.": [[8, "all-valid-levels-high-inference-inference-failure-undefined"]], "Disable the message, report, category or checker with the given id(s). You": [[8, "disable-the-message-report-category-or-checker-with-the-given-id-s-you"]], "can either give multiple identifiers separated by comma (,) or put this": [[8, "can-either-give-multiple-identifiers-separated-by-comma-or-put-this"]], "option multiple times (only on the command line, not in the configuration": [[8, "option-multiple-times-only-on-the-command-line-not-in-the-configuration"]], "file where it should appear only once). You can also use \u201c\u2013disable=all\u201d to": [[8, "file-where-it-should-appear-only-once-you-can-also-use-disable-all-to"]], "disable everything first and then reenable specific checks. For example, if": [[8, "disable-everything-first-and-then-reenable-specific-checks-for-example-if"]], "you want to run only the similarities checker, you can use \u201c\u2013disable=all": [[8, "you-want-to-run-only-the-similarities-checker-you-can-use-disable-all"]], "\u2013enable=similarities\u201d. If you want to run only the classes checker, but have": [[8, "enable-similarities-if-you-want-to-run-only-the-classes-checker-but-have"]], "no Warning level messages displayed, use \u201c\u2013disable=all \u2013enable=classes": [[8, "no-warning-level-messages-displayed-use-disable-all-enable-classes"]], "\u2013disable=W\u201d.": [[8, "disable-w"]], "Enable the message, report, category or checker with the given id(s). You can": [[8, "enable-the-message-report-category-or-checker-with-the-given-id-s-you-can"]], "either give multiple identifier separated by comma (,) or put this option": [[8, "either-give-multiple-identifier-separated-by-comma-or-put-this-option"]], "multiple time (only on the command line, not in the configuration file where": [[8, "multiple-time-only-on-the-command-line-not-in-the-configuration-file-where"]], "it should appear only once). See also the \u201c\u2013disable\u201d option for examples.": [[8, "it-should-appear-only-once-see-also-the-disable-option-for-examples"]], "Python expression which should return a score less than or equal to 10. You": [[8, "python-expression-which-should-return-a-score-less-than-or-equal-to-10-you"]], "have access to the variables \u2018error\u2019, \u2018warning\u2019, \u2018refactor\u2019, and \u2018convention\u2019": [[8, "have-access-to-the-variables-error-warning-refactor-and-convention"]], "which contain the number of messages in each category, as well as \u2018statement\u2019": [[8, "which-contain-the-number-of-messages-in-each-category-as-well-as-statement"]], "which is the total number of statements analyzed. This score is used by the": [[8, "which-is-the-total-number-of-statements-analyzed-this-score-is-used-by-the"]], "global evaluation report (RP0004).": [[8, "global-evaluation-report-rp0004"]], "Template used to display messages. This is a python new-style format string": [[8, "template-used-to-display-messages-this-is-a-python-new-style-format-string"]], "used to format the message information. See doc for all details.": [[8, "used-to-format-the-message-information-see-doc-for-all-details"]], "Set the output format. Available formats are text, parseable, colorized, json": [[8, "set-the-output-format-available-formats-are-text-parseable-colorized-json"]], "and msvs (visual studio). You can also give a reporter class, e.g.": [[8, "and-msvs-visual-studio-you-can-also-give-a-reporter-class-e-g"]], "mypackage.mymodule.MyReporterClass.": [[8, "mypackage-mymodule-myreporterclass"]], "Tells whether to display a full report or only the messages.": [[8, "tells-whether-to-display-a-full-report-or-only-the-messages"]], "Activate the evaluation score.": [[8, "activate-the-evaluation-score"]], "Maximum number of nested blocks for function / method body": [[8, "maximum-number-of-nested-blocks-for-function-method-body"]], "Complete name of functions that never returns. When checking for": [[8, "complete-name-of-functions-that-never-returns-when-checking-for"]], "inconsistent-return-statements if a never returning function is called then": [[8, "inconsistent-return-statements-if-a-never-returning-function-is-called-then"]], "it will be considered as an explicit return statement and no message will be": [[8, "it-will-be-considered-as-an-explicit-return-statement-and-no-message-will-be"]], "printed.": [[8, "printed"]], "Naming style matching correct argument names.": [[8, "naming-style-matching-correct-argument-names"]], "Regular expression matching correct argument names. Overrides argument-": [[8, "regular-expression-matching-correct-argument-names-overrides-argument"]], "naming-style.": [[8, "naming-style"], [8, "id3"], [8, "id6"]], "Naming style matching correct attribute names.": [[8, "naming-style-matching-correct-attribute-names"]], "Regular expression matching correct attribute names. Overrides attr-naming-": [[8, "regular-expression-matching-correct-attribute-names-overrides-attr-naming"]], "style.": [[8, "style"], [8, "id1"], [8, "id2"], [8, "id4"], [8, "id5"]], "Bad variable names which should always be refused, separated by a comma.": [[8, "bad-variable-names-which-should-always-be-refused-separated-by-a-comma"]], "Naming style matching correct class attribute names.": [[8, "naming-style-matching-correct-class-attribute-names"]], "Regular expression matching correct class attribute names. Overrides class-": [[8, "regular-expression-matching-correct-class-attribute-names-overrides-class"]], "attribute-naming-style.": [[8, "attribute-naming-style"]], "Naming style matching correct class names.": [[8, "naming-style-matching-correct-class-names"]], "Regular expression matching correct class names. Overrides class-naming-": [[8, "regular-expression-matching-correct-class-names-overrides-class-naming"]], "Naming style matching correct constant names.": [[8, "naming-style-matching-correct-constant-names"]], "Regular expression matching correct constant names. Overrides const-naming-": [[8, "regular-expression-matching-correct-constant-names-overrides-const-naming"]], "Minimum line length for functions/classes that require docstrings, shorter": [[8, "minimum-line-length-for-functions-classes-that-require-docstrings-shorter"]], "ones are exempt.": [[8, "ones-are-exempt"]], "Naming style matching correct function names.": [[8, "naming-style-matching-correct-function-names"]], "Regular expression matching correct function names. Overrides function-": [[8, "regular-expression-matching-correct-function-names-overrides-function"]], "Good variable names which should always be accepted, separated by a comma.": [[8, "good-variable-names-which-should-always-be-accepted-separated-by-a-comma"]], "Include a hint for the correct naming format with invalid-name.": [[8, "include-a-hint-for-the-correct-naming-format-with-invalid-name"]], "Naming style matching correct inline iteration names.": [[8, "naming-style-matching-correct-inline-iteration-names"]], "Regular expression matching correct inline iteration names. Overrides": [[8, "regular-expression-matching-correct-inline-iteration-names-overrides"]], "inlinevar-naming-style.": [[8, "inlinevar-naming-style"]], "Naming style matching correct method names.": [[8, "naming-style-matching-correct-method-names"]], "Regular expression matching correct method names. Overrides method-naming-": [[8, "regular-expression-matching-correct-method-names-overrides-method-naming"]], "Naming style matching correct module names.": [[8, "naming-style-matching-correct-module-names"]], "Regular expression matching correct module names. Overrides module-naming-": [[8, "regular-expression-matching-correct-module-names-overrides-module-naming"]], "Colon-delimited sets of names that determine each other\u2019s naming style when": [[8, "colon-delimited-sets-of-names-that-determine-each-other-s-naming-style-when"]], "the name regexes allow several styles.": [[8, "the-name-regexes-allow-several-styles"]], "Regular expression which should only match function or class names that do": [[8, "regular-expression-which-should-only-match-function-or-class-names-that-do"]], "not require a docstring.": [[8, "not-require-a-docstring"]], "List of decorators that produce properties, such as abc.abstractproperty. Add": [[8, "list-of-decorators-that-produce-properties-such-as-abc-abstractproperty-add"]], "to this list to register other decorators that produce valid properties.": [[8, "to-this-list-to-register-other-decorators-that-produce-valid-properties"]], "These decorators are taken in consideration only for invalid-name.": [[8, "these-decorators-are-taken-in-consideration-only-for-invalid-name"]], "Naming style matching correct variable names.": [[8, "naming-style-matching-correct-variable-names"]], "Regular expression matching correct variable names. Overrides variable-": [[8, "regular-expression-matching-correct-variable-names-overrides-variable"]], "Expected format of line ending, e.g. empty (any line ending), LF or CRLF.": [[8, "expected-format-of-line-ending-e-g-empty-any-line-ending-lf-or-crlf"]], "Regexp for a line that is allowed to be longer than the limit.": [[8, "regexp-for-a-line-that-is-allowed-to-be-longer-than-the-limit"]], "Number of spaces of indent required inside a hanging or continued line.": [[8, "number-of-spaces-of-indent-required-inside-a-hanging-or-continued-line"]], "String used as indentation unit. This is usually \u201c \u201c (4 spaces) or \u201c\\t\u201d (1": [[8, "string-used-as-indentation-unit-this-is-usually-4-spaces-or-t-1"]], "tab).": [[8, "tab"]], "Maximum number of characters on a single line.": [[8, "maximum-number-of-characters-on-a-single-line"]], "Maximum number of lines in a module.": [[8, "maximum-number-of-lines-in-a-module"]], "List of optional constructs for which whitespace checking is disabled. `dict-": [[8, "list-of-optional-constructs-for-which-whitespace-checking-is-disabled-dict"]], "separator` is used to allow tabulation in dicts, etc.: {1 : 1,\\n222: 2}.": [[8, "separator-is-used-to-allow-tabulation-in-dicts-etc-1-1-n222-2"]], "trailing-comma allows a space between comma and closing bracket: (a, ).": [[8, "trailing-comma-allows-a-space-between-comma-and-closing-bracket-a"]], "empty-line allows space-only lines.": [[8, "empty-line-allows-space-only-lines"]], "Allow the body of a class to be on the same line as the declaration if body": [[8, "allow-the-body-of-a-class-to-be-on-the-same-line-as-the-declaration-if-body"]], "contains single statement.": [[8, "contains-single-statement"]], "Allow the body of an if to be on the same line as the test if there is no": [[8, "allow-the-body-of-an-if-to-be-on-the-same-line-as-the-test-if-there-is-no"]], "else.": [[8, "else"]], "Format style used to check logging format string. old means using %": [[8, "format-style-used-to-check-logging-format-string-old-means-using"]], "formatting, new is for {} formatting,and fstr is for f-strings.": [[8, "formatting-new-is-for-formatting-and-fstr-is-for-f-strings"]], "Logging modules to check that the string format arguments are in logging": [[8, "logging-modules-to-check-that-the-string-format-arguments-are-in-logging"]], "function parameter format.": [[8, "function-parameter-format"]], "List of note tags to take in consideration, separated by a comma.": [[8, "list-of-note-tags-to-take-in-consideration-separated-by-a-comma"]], "Ignore comments when computing similarities.": [[8, "ignore-comments-when-computing-similarities"]], "Ignore docstrings when computing similarities.": [[8, "ignore-docstrings-when-computing-similarities"]], "Ignore imports when computing similarities.": [[8, "ignore-imports-when-computing-similarities"]], "Minimum lines number of a similarity.": [[8, "minimum-lines-number-of-a-similarity"]], "Limits count of emitted suggestions for spelling mistakes.": [[8, "limits-count-of-emitted-suggestions-for-spelling-mistakes"]], "Spelling dictionary name. Available dictionaries: none. To make it work,": [[8, "spelling-dictionary-name-available-dictionaries-none-to-make-it-work"]], "install the python-enchant package.": [[8, "install-the-python-enchant-package"]], "List of comma separated words that should not be checked.": [[8, "list-of-comma-separated-words-that-should-not-be-checked"]], "A path to a file that contains the private dictionary; one word per line.": [[8, "a-path-to-a-file-that-contains-the-private-dictionary-one-word-per-line"]], "Tells whether to store unknown words to the private dictionary (see the": [[8, "tells-whether-to-store-unknown-words-to-the-private-dictionary-see-the"]], "\u2013spelling-private-dict-file option) instead of raising a message.": [[8, "spelling-private-dict-file-option-instead-of-raising-a-message"]], "This flag controls whether the implicit-str-concat-in-sequence should": [[8, "this-flag-controls-whether-the-implicit-str-concat-in-sequence-should"]], "generate a warning on implicit string concatenation in sequences defined over": [[8, "generate-a-warning-on-implicit-string-concatenation-in-sequences-defined-over"]], "several lines.": [[8, "several-lines"]], "List of decorators that produce context managers, such as": [[8, "list-of-decorators-that-produce-context-managers-such-as"]], "contextlib.contextmanager. Add to this list to register other decorators that": [[8, "contextlib-contextmanager-add-to-this-list-to-register-other-decorators-that"]], "produce valid context managers.": [[8, "produce-valid-context-managers"]], "List of members which are set dynamically and missed by pylint inference": [[8, "list-of-members-which-are-set-dynamically-and-missed-by-pylint-inference"]], "system, and so shouldn\u2019t trigger E1101 when accessed. Python regular": [[8, "system-and-so-shouldn-t-trigger-e1101-when-accessed-python-regular"]], "expressions are accepted.": [[8, "expressions-are-accepted"]], "Tells whether missing members accessed in mixin class should be ignored. A": [[8, "tells-whether-missing-members-accessed-in-mixin-class-should-be-ignored-a"]], "mixin class is detected if its name ends with \u201cmixin\u201d (case insensitive).": [[8, "mixin-class-is-detected-if-its-name-ends-with-mixin-case-insensitive"]], "Tells whether to warn about missing members when the owner of the attribute": [[8, "tells-whether-to-warn-about-missing-members-when-the-owner-of-the-attribute"]], "is inferred to be None.": [[8, "is-inferred-to-be-none"]], "This flag controls whether pylint should warn about no-member and similar": [[8, "this-flag-controls-whether-pylint-should-warn-about-no-member-and-similar"]], "checks whenever an opaque object is returned when inferring. The inference": [[8, "checks-whenever-an-opaque-object-is-returned-when-inferring-the-inference"]], "can return multiple potential results while evaluating a Python object, but": [[8, "can-return-multiple-potential-results-while-evaluating-a-python-object-but"]], "some branches might not be evaluated, which results in partial inference. In": [[8, "some-branches-might-not-be-evaluated-which-results-in-partial-inference-in"]], "that case, it might be useful to still emit no-member and other checks for": [[8, "that-case-it-might-be-useful-to-still-emit-no-member-and-other-checks-for"]], "the rest of the inferred objects.": [[8, "the-rest-of-the-inferred-objects"]], "List of class names for which member attributes should not be checked (useful": [[8, "list-of-class-names-for-which-member-attributes-should-not-be-checked-useful"]], "for classes with dynamically set attributes). This supports the use of": [[8, "for-classes-with-dynamically-set-attributes-this-supports-the-use-of"]], "qualified names.": [[8, "qualified-names"]], "List of module names for which member attributes should not be checked": [[8, "list-of-module-names-for-which-member-attributes-should-not-be-checked"]], "(useful for modules/projects where namespaces are manipulated during runtime": [[8, "useful-for-modules-projects-where-namespaces-are-manipulated-during-runtime"]], "and thus existing member attributes cannot be deduced by static analysis). It": [[8, "and-thus-existing-member-attributes-cannot-be-deduced-by-static-analysis-it"]], "supports qualified module names, as well as Unix pattern matching.": [[8, "supports-qualified-module-names-as-well-as-unix-pattern-matching"]], "Show a hint with possible names when a member name was not found. The aspect": [[8, "show-a-hint-with-possible-names-when-a-member-name-was-not-found-the-aspect"]], "of finding the hint is based on edit distance.": [[8, "of-finding-the-hint-is-based-on-edit-distance"]], "The minimum edit distance a name should have in order to be considered a": [[8, "the-minimum-edit-distance-a-name-should-have-in-order-to-be-considered-a"]], "similar match for a missing member name.": [[8, "similar-match-for-a-missing-member-name"]], "The total number of similar names that should be taken in consideration when": [[8, "the-total-number-of-similar-names-that-should-be-taken-in-consideration-when"]], "showing a hint for a missing member.": [[8, "showing-a-hint-for-a-missing-member"]], "List of decorators that change the signature of a decorated function.": [[8, "list-of-decorators-that-change-the-signature-of-a-decorated-function"]], "List of additional names supposed to be defined in builtins. Remember that": [[8, "list-of-additional-names-supposed-to-be-defined-in-builtins-remember-that"]], "you should avoid defining new builtins when possible.": [[8, "you-should-avoid-defining-new-builtins-when-possible"]], "Tells whether unused global variables should be treated as a violation.": [[8, "tells-whether-unused-global-variables-should-be-treated-as-a-violation"]], "List of strings which can identify a callback function by name. A callback": [[8, "list-of-strings-which-can-identify-a-callback-function-by-name-a-callback"]], "name must start or end with one of those strings.": [[8, "name-must-start-or-end-with-one-of-those-strings"]], "A regular expression matching the name of dummy variables (i.e. expected to": [[8, "a-regular-expression-matching-the-name-of-dummy-variables-i-e-expected-to"]], "not be used).": [[8, "not-be-used"]], "Argument names that match this expression will be ignored. Default to name": [[8, "argument-names-that-match-this-expression-will-be-ignored-default-to-name"]], "with leading underscore.": [[8, "with-leading-underscore"]], "Tells whether we should check for unused import in init files.": [[8, "tells-whether-we-should-check-for-unused-import-in-init-files"]], "List of qualified module names which can have objects that can redefine": [[8, "list-of-qualified-module-names-which-can-have-objects-that-can-redefine"]], "builtins.": [[8, "builtins"]], "List of method names used to declare (i.e. assign) instance attributes.": [[8, "list-of-method-names-used-to-declare-i-e-assign-instance-attributes"]], "List of member names, which should be excluded from the protected access": [[8, "list-of-member-names-which-should-be-excluded-from-the-protected-access"]], "warning.": [[8, "warning"]], "List of valid names for the first argument in a class method.": [[8, "list-of-valid-names-for-the-first-argument-in-a-class-method"]], "List of valid names for the first argument in a metaclass class method.": [[8, "list-of-valid-names-for-the-first-argument-in-a-metaclass-class-method"]], "Maximum number of arguments for function / method.": [[8, "maximum-number-of-arguments-for-function-method"]], "Maximum number of attributes for a class (see R0902).": [[8, "maximum-number-of-attributes-for-a-class-see-r0902"]], "Maximum number of boolean expressions in an if statement (see R0916).": [[8, "maximum-number-of-boolean-expressions-in-an-if-statement-see-r0916"]], "Maximum number of branch for function / method body.": [[8, "maximum-number-of-branch-for-function-method-body"]], "Maximum number of locals for function / method body.": [[8, "maximum-number-of-locals-for-function-method-body"]], "Maximum number of parents for a class (see R0901).": [[8, "maximum-number-of-parents-for-a-class-see-r0901"]], "Maximum number of public methods for a class (see R0904).": [[8, "maximum-number-of-public-methods-for-a-class-see-r0904"]], "Maximum number of return / yield for function / method body.": [[8, "maximum-number-of-return-yield-for-function-method-body"]], "Maximum number of statements in function / method body.": [[8, "maximum-number-of-statements-in-function-method-body"]], "Minimum number of public methods for a class (see R0903).": [[8, "minimum-number-of-public-methods-for-a-class-see-r0903"]], "List of modules that can be imported at any level, not just the top level": [[8, "list-of-modules-that-can-be-imported-at-any-level-not-just-the-top-level"]], "one.": [[8, "one"]], "Allow wildcard imports from modules that define all.": [[8, "allow-wildcard-imports-from-modules-that-define-all"]], "Analyse import fallback blocks. This can be used to support both Python 2 and": [[8, "analyse-import-fallback-blocks-this-can-be-used-to-support-both-python-2-and"]], "3 compatible code, which means that the block might have code that exists": [[8, "compatible-code-which-means-that-the-block-might-have-code-that-exists"]], "only in one or another interpreter, leading to false positives when analysed.": [[8, "only-in-one-or-another-interpreter-leading-to-false-positives-when-analysed"]], "Deprecated modules which should not be used, separated by a comma.": [[8, "deprecated-modules-which-should-not-be-used-separated-by-a-comma"]], "Create a graph of external dependencies in the given file (report RP0402 must": [[8, "create-a-graph-of-external-dependencies-in-the-given-file-report-rp0402-must"]], "not be disabled).": [[8, "not-be-disabled"], [8, "id7"]], "Create a graph of every (i.e. internal and external) dependencies in the": [[8, "create-a-graph-of-every-i-e-internal-and-external-dependencies-in-the"]], "given file (report RP0402 must not be disabled).": [[8, "given-file-report-rp0402-must-not-be-disabled"]], "Create a graph of internal dependencies in the given file (report RP0402 must": [[8, "create-a-graph-of-internal-dependencies-in-the-given-file-report-rp0402-must"]], "Force import order to recognize a module as part of the standard": [[8, "force-import-order-to-recognize-a-module-as-part-of-the-standard"]], "compatibility libraries.": [[8, "compatibility-libraries"]], "Force import order to recognize a module as part of a third party library.": [[8, "force-import-order-to-recognize-a-module-as-part-of-a-third-party-library"]], "Couples of modules and preferred modules, separated by a comma.": [[8, "couples-of-modules-and-preferred-modules-separated-by-a-comma"]], "Exceptions that will emit a warning when being caught. Defaults to": [[8, "exceptions-that-will-emit-a-warning-when-being-caught-defaults-to"]], "\u201cBaseException, Exception\u201d.": [[8, "baseexception-exception"]], "pypyroject.toml": [[9, "pypyroject-toml"]], "Bailo Python Client": [[10, "bailo-python-client"], [2, "bailo-python-client"]], "Key Features": [[10, "key-features"]], "Installing": [[10, "installing"]], "Getting Started": [[10, "getting-started"]], "Documentation": [[10, "documentation"]], "Building locally": [[10, "building-locally"]], "Development": [[10, "development"]], "Install and add precommit": [[10, "install-and-add-precommit"]], "Install the package locally": [[10, "install-the-package-locally"]], "Testing": [[10, "testing"]], "bailo.core package": [[0, "bailo-core-package"]], "bailo.helper package": [[1, "module-bailo.helper.access_request"]], "Welcome to Bailo\u2019s Python Client documentation!": [[2, "module-bailo"]], "Packages:": [[2, null]], "Notebooks:": [[2, null]], "Experiment Tracking with Bailo & MLFlow": [[4, "Experiment-Tracking-with-Bailo-&-MLFlow"]], "Connecting with Bailo": [[4, "Connecting-with-Bailo"]], "Setting up MLFlow Tracking": [[4, "Setting-up-MLFlow-Tracking"]], "Preparing a custom schema for tracking": [[4, "Preparing-a-custom-schema-for-tracking"]], "Creating a new experiment": [[4, "Creating-a-new-experiment"]], "Conducting experiment runs": [[4, "Conducting-experiment-runs"]], "Running an experiment with the Bailo python client": [[4, "Running-an-experiment-with-the-Bailo-python-client"]], "Creating a dummy MLFlow experiment run": [[4, "Creating-a-dummy-MLFlow-experiment-run"]], "Importing existing experiments from MLFlow into Bailo": [[4, "Importing-existing-experiments-from-MLFlow-into-Bailo"]], "Publishing results to Bailo": [[4, "Publishing-results-to-Bailo"]], "Managing Models & Releases (ResNet-50 Example with PyTorch)": [[5, "Managing-Models-&-Releases-(ResNet-50-Example-with-PyTorch)"]], "Creating a new ResNet-50 model in Bailo": [[5, "Creating-a-new-ResNet-50-model-in-Bailo"]], "Creating and updating the base model": [[5, "Creating-and-updating-the-base-model"]], "Creating and populating a model card": [[5, "Creating-and-populating-a-model-card"]], "Retrieving an existing model": [[5, "Retrieving-an-existing-model"]], "Creating and managing releases for models": [[5, "Creating-and-managing-releases-for-models"]], "Creating a release": [[5, "Creating-a-release"]], "Preparing the model weights using PyTorch": [[5, "Preparing-the-model-weights-using-PyTorch"]], "Uploading weights to the release": [[5, "Uploading-weights-to-the-release"]], "Retrieving a release": [[5, "Retrieving-a-release"]], "Downloading weights from the release": [[5, "Downloading-weights-from-the-release"]], "Loading the model using PyTorch": [[5, "Loading-the-model-using-PyTorch"]]}, "indexentries": {"access_request (bailo.core.enums.schemakind attribute)": [[0, "bailo.core.enums.SchemaKind.ACCESS_REQUEST"]], "agent (class in bailo.core.agent)": [[0, "bailo.core.agent.Agent"]], "bailoexception": [[0, "bailo.core.exceptions.BailoException"]], "client (class in bailo.core.client)": [[0, "bailo.core.client.Client"]], "model (bailo.core.enums.schemakind attribute)": [[0, "bailo.core.enums.SchemaKind.MODEL"]], "model_senior_responsible_officer (bailo.core.enums.role attribute)": [[0, "bailo.core.enums.Role.MODEL_SENIOR_RESPONSIBLE_OFFICER"]], "model_technical_reviewer (bailo.core.enums.role attribute)": [[0, "bailo.core.enums.Role.MODEL_TECHNICAL_REVIEWER"]], "modelvisibility (class in bailo.core.enums)": [[0, "bailo.core.enums.ModelVisibility"]], "owner (bailo.core.enums.role attribute)": [[0, "bailo.core.enums.Role.OWNER"]], "private (bailo.core.enums.modelvisibility attribute)": [[0, "bailo.core.enums.ModelVisibility.PRIVATE"]], "public (bailo.core.enums.modelvisibility attribute)": [[0, "bailo.core.enums.ModelVisibility.PUBLIC"]], "pkiagent (class in bailo.core.agent)": [[0, "bailo.core.agent.PkiAgent"]], "responseexception": [[0, "bailo.core.exceptions.ResponseException"]], "role (class in bailo.core.enums)": [[0, "bailo.core.enums.Role"]], "schemakind (class in bailo.core.enums)": [[0, "bailo.core.enums.SchemaKind"]], "tokenagent (class in bailo.core.agent)": [[0, "bailo.core.agent.TokenAgent"]], "__init__() (bailo.core.agent.pkiagent method)": [[0, "bailo.core.agent.PkiAgent.__init__"]], "__init__() (bailo.core.agent.tokenagent method)": [[0, "bailo.core.agent.TokenAgent.__init__"]], "bailo.core.agent": [[0, "module-bailo.core.agent"]], "bailo.core.client": [[0, "module-bailo.core.client"]], "bailo.core.enums": [[0, "module-bailo.core.enums"]], "bailo.core.exceptions": [[0, "module-bailo.core.exceptions"]], "delete() (bailo.core.agent.agent method)": [[0, "bailo.core.agent.Agent.delete"]], "delete() (bailo.core.agent.pkiagent method)": [[0, "bailo.core.agent.PkiAgent.delete"]], "delete() (bailo.core.agent.tokenagent method)": [[0, "bailo.core.agent.TokenAgent.delete"]], "delete_access_request() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.delete_access_request"]], "delete_file() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.delete_file"]], "delete_release() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.delete_release"]], "get() (bailo.core.agent.agent method)": [[0, "bailo.core.agent.Agent.get"]], "get() (bailo.core.agent.pkiagent method)": [[0, "bailo.core.agent.PkiAgent.get"]], "get() (bailo.core.agent.tokenagent method)": [[0, "bailo.core.agent.TokenAgent.get"]], "get_access_request() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_access_request"]], "get_access_requests() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_access_requests"]], "get_all_images() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_all_images"]], "get_all_releases() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_all_releases"]], "get_all_schemas() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_all_schemas"]], "get_all_teams() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_all_teams"]], "get_download_by_filename() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_download_by_filename"]], "get_download_file() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_download_file"]], "get_files() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_files"]], "get_model() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_model"]], "get_model_card() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_model_card"]], "get_model_roles() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_model_roles"]], "get_model_user_roles() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_model_user_roles"]], "get_models() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_models"]], "get_release() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_release"]], "get_reviews() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_reviews"]], "get_schema() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_schema"]], "get_team() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_team"]], "get_user_teams() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.get_user_teams"]], "model_card_from_schema() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.model_card_from_schema"]], "module": [[0, "module-bailo.core.agent"], [0, "module-bailo.core.client"], [0, "module-bailo.core.enums"], [0, "module-bailo.core.exceptions"], [1, "module-bailo.helper.access_request"], [1, "module-bailo.helper.model"], [1, "module-bailo.helper.release"], [1, "module-bailo.helper.schema"], [2, "module-bailo"]], "patch() (bailo.core.agent.agent method)": [[0, "bailo.core.agent.Agent.patch"]], "patch() (bailo.core.agent.pkiagent method)": [[0, "bailo.core.agent.PkiAgent.patch"]], "patch() (bailo.core.agent.tokenagent method)": [[0, "bailo.core.agent.TokenAgent.patch"]], "patch_access_request() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.patch_access_request"]], "patch_model() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.patch_model"]], "patch_team() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.patch_team"]], "post() (bailo.core.agent.agent method)": [[0, "bailo.core.agent.Agent.post"]], "post() (bailo.core.agent.pkiagent method)": [[0, "bailo.core.agent.PkiAgent.post"]], "post() (bailo.core.agent.tokenagent method)": [[0, "bailo.core.agent.TokenAgent.post"]], "post_access_request() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.post_access_request"]], "post_model() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.post_model"]], "post_release() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.post_release"]], "post_review() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.post_review"]], "post_schema() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.post_schema"]], "post_team() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.post_team"]], "push() (bailo.core.agent.agent method)": [[0, "bailo.core.agent.Agent.push"]], "put() (bailo.core.agent.agent method)": [[0, "bailo.core.agent.Agent.put"]], "put() (bailo.core.agent.pkiagent method)": [[0, "bailo.core.agent.PkiAgent.put"]], "put() (bailo.core.agent.tokenagent method)": [[0, "bailo.core.agent.TokenAgent.put"]], "put_model_card() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.put_model_card"]], "put_release() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.put_release"]], "simple_upload() (bailo.core.client.client method)": [[0, "bailo.core.client.Client.simple_upload"]], "accessrequest (class in bailo.helper.access_request)": [[1, "bailo.helper.access_request.AccessRequest"]], "experiment (class in bailo.helper.model)": [[1, "bailo.helper.model.Experiment"]], "model (class in bailo.helper.model)": [[1, "bailo.helper.model.Model"]], "release (class in bailo.helper.release)": [[1, "bailo.helper.release.Release"]], "schema (class in bailo.helper.schema)": [[1, "bailo.helper.schema.Schema"]], "__init__() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.__init__"]], "bailo.helper.access_request": [[1, "module-bailo.helper.access_request"]], "bailo.helper.model": [[1, "module-bailo.helper.model"]], "bailo.helper.release": [[1, "module-bailo.helper.release"]], "bailo.helper.schema": [[1, "module-bailo.helper.schema"]], "card_from_model() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.card_from_model"]], "card_from_schema() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.card_from_schema"]], "card_from_template() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.card_from_template"]], "create() (bailo.helper.access_request.accessrequest class method)": [[1, "bailo.helper.access_request.AccessRequest.create"]], "create() (bailo.helper.model.experiment class method)": [[1, "bailo.helper.model.Experiment.create"]], "create() (bailo.helper.model.model class method)": [[1, "bailo.helper.model.Model.create"]], "create() (bailo.helper.release.release class method)": [[1, "bailo.helper.release.Release.create"]], "create() (bailo.helper.schema.schema class method)": [[1, "bailo.helper.schema.Schema.create"]], "create_experiment() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.create_experiment"]], "create_release() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.create_release"]], "delete() (bailo.helper.access_request.accessrequest method)": [[1, "bailo.helper.access_request.AccessRequest.delete"]], "delete() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.delete"]], "download() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.download"]], "from_id() (bailo.helper.access_request.accessrequest class method)": [[1, "bailo.helper.access_request.AccessRequest.from_id"]], "from_id() (bailo.helper.model.model class method)": [[1, "bailo.helper.model.Model.from_id"]], "from_id() (bailo.helper.schema.schema class method)": [[1, "bailo.helper.schema.Schema.from_id"]], "from_mlflow() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.from_mlflow"]], "from_version() (bailo.helper.release.release class method)": [[1, "bailo.helper.release.Release.from_version"]], "get_card_latest() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_card_latest"]], "get_card_revision() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_card_revision"]], "get_image() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_image"]], "get_images() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_images"]], "get_latest_release() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_latest_release"]], "get_release() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_release"]], "get_releases() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_releases"]], "get_roles() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_roles"]], "get_user_roles() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_user_roles"]], "log_artifacts() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_artifacts"]], "log_dataset() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_dataset"]], "log_metrics() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_metrics"]], "log_params() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_params"]], "publish() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.publish"]], "start_run() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.start_run"]], "update() (bailo.helper.access_request.accessrequest method)": [[1, "bailo.helper.access_request.AccessRequest.update"]], "update() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.update"]], "update() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.update"]], "update_model_card() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.update_model_card"]], "upload() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.upload"]], "bailo": [[2, "module-bailo"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["bailo.core", "bailo.helper", "index", "notebooks/access_requests_demo", "notebooks/datacards_demo", "notebooks/experiment_tracking_demo", "notebooks/models_and_releases_demo_pytorch", "notebooks/schemas_demo", "pre-commit-config", "pylint", "pyproject", "readme_link"], "filenames": ["bailo.core.rst", "bailo.helper.rst", "index.rst", "notebooks/access_requests_demo.ipynb", "notebooks/datacards_demo.ipynb", "notebooks/experiment_tracking_demo.ipynb", "notebooks/models_and_releases_demo_pytorch.ipynb", "notebooks/schemas_demo.ipynb", "pre-commit-config.md", "pylint.md", "pyproject.md", "readme_link.md"], "titles": ["bailo.core package", "bailo.helper package", "Welcome to Bailo\u2019s Python Client documentation!", "Managing Access Requests", "Managing Datacards", "Experiment Tracking with Bailo & MLFlow", "Managing Models & Releases (ResNet-50 Example with PyTorch)", "Managing Schemas", "pre-commit-config.yaml", "A comma-separated list of package or module names from where C extensions may", "pypyroject.toml", "Bailo Python Client"], "terms": {"The": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "contain": [0, 5, 6, 10], "suppport": 0, "one": [0, 5, 6], "endpoint": [0, 3, 4, 6, 7], "It": [0, 10], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11], "recommend": 0, "us": [0, 1, 5, 8, 10, 11], "helper": [0, 2, 3, 4, 6, 7], "most": [0, 5], "class": [0, 1, 3, 4, 5, 6, 7], "agent": [0, 2, 3, 4, 6, 7], "sourc": [0, 1], "base": [0, 1], "object": [0, 1, 3, 4, 5, 6, 7], "api": [0, 11], "talk": 0, "wrap": 0, "each": [0, 4, 6], "request": [0, 1, 2], "an": [0, 1], "except": 0, "handler": 0, "map": 0, "error": [0, 1, 4, 6], "python": [0, 1, 3, 4, 6, 7, 8, 10], "among": 0, "statu": 0, "code": [0, 6, 8], "less": 0, "than": 0, "400": 0, "default": [0, 1, 3, 4, 6, 7, 11], "timeout": [], "5": [1, 5, 7, 9], "second": [], "delet": [0, 1], "arg": [0, 9], "kwarg": 0, "get": [0, 1, 2], "patch": 0, "post": [0, 1], "push": 0, "put": 0, "pkiagent": [0, 2, 3, 4, 6, 7], "cert": [0, 3, 4, 6, 7], "str": [0, 1, 5], "kei": [0, 2, 3, 4, 6, 7], "auth": [0, 3, 4, 6, 7], "__init__": [0, 1], "initi": [0, 6], "pki": [0, 3, 4, 6, 7], "authent": [0, 3, 4, 6, 7], "paramet": [0, 1, 3, 4, 5, 6, 7], "path": [0, 1, 6], "file": [0, 1, 6, 10, 11], "certif": 0, "author": 0, "tokenag": [0, 2], "access_kei": 0, "secret_kei": 0, "token": 0, "access": [0, 1, 2, 5], "secret": 0, "client": [0, 1, 3, 4, 6, 7], "url": [0, 3, 4, 5, 6, 7], "creat": [0, 1, 8, 11], "can": [0, 1, 3, 4, 5, 6, 7, 8, 11], "websit": 0, "handl": [0, 3, 4, 6, 7], "delete_access_request": 0, "model_id": [0, 1, 3, 6], "access_request_id": [0, 1, 3], "specif": [0, 1, 4, 6], "associ": 0, "model": [0, 1, 2, 3, 4, 5, 7, 11], "uniqu": [0, 1, 7], "id": [0, 1, 5], "return": [0, 1, 6, 7], "json": [0, 1, 6, 7], "respons": [0, 1], "delete_fil": 0, "file_id": 0, "delete_releas": 0, "release_vers": 0, "releas": [0, 1, 2, 4, 5, 11], "version": [0, 1, 4, 6, 11], "get_access_request": 0, "retriev": [0, 1], "given": [0, 1, 11], "its": 0, "all": [0, 1, 6, 11], "get_all_imag": 0, "imag": [0, 1, 4, 6], "A": [0, 1, 3, 4, 5, 6, 7, 11], "get_all_releas": 0, "get_all_schema": 0, "kind": [0, 1, 5, 7], "schemakind": [0, 1, 2, 5, 7], "none": [0, 1], "schema": [0, 1, 2, 4, 6], "enum": [0, 1], "defin": [0, 5], "e": [0, 1, 3, 4, 6, 7, 11], "g": [0, 1, 3, 4, 6, 7], "accessrequest": [0, 1, 2, 3], "get_all_team": 0, "team": [0, 1], "get_download_by_filenam": 0, "semver": [0, 1], "filenam": [0, 1, 6], "download": [0, 1, 11], "try": 0, "from": [0, 1, 3, 4, 7, 8, 11], "get_download_fil": 0, "": [0, 1], "get_fil": 0, "get_model": 0, "get_model_card": 0, "card": [0, 1, 4, 5], "get_model_rol": 0, "role": [0, 1, 2], "get_model_user_rol": 0, "current": [0, 1, 10], "user": [0, 1, 3, 8], "task": 0, "librari": [0, 6], "list": [0, 1, 6], "filter": 0, "search": 0, "find": [0, 7], "provid": [0, 1, 2, 5, 6], "term": 0, "classif": [0, 6], "tensorflow": 0, "custom": [0, 4, 6], "string": [0, 1, 7], "locat": [0, 1, 5], "get_releas": [0, 1, 6], "get_review": 0, "activ": 0, "bool": [0, 1, 9], "review": [0, 1], "within": [0, 1, 2, 3, 4, 5, 6, 7, 11], "boolean": 0, "repres": [0, 1, 6], "get_schema": 0, "schema_id": [0, 1, 3, 4, 5, 6, 7], "get_team": 0, "team_id": [0, 1, 3, 4, 5, 6, 11], "get_user_team": 0, "model_card_from_schema": 0, "patch_access_request": 0, "metadata": [0, 1, 3], "ani": [0, 1, 3, 4, 5, 6, 7], "updat": [0, 1, 3], "patch_model": 0, "name": [0, 1, 3, 4, 5, 6, 7, 11], "descript": [0, 1, 3, 4, 5, 6, 7, 11], "visibl": [0, 1, 4, 6], "public": [0, 1], "privat": [0, 1], "patch_team": 0, "post_access_request": 0, "post_model": 0, "modelvis": [0, 1, 2], "post_releas": 0, "note": [0, 1, 4, 5, 6, 7, 11], "model_card_vers": [0, 1, 6], "int": [0, 1, 9], "minor": [0, 1, 6], "fals": [0, 1, 7], "draft": [0, 1, 7], "new": [0, 1, 11], "signifi": 0, "post_review": 0, "decis": 0, "comment": 0, "semant": [0, 1], "make": [0, 1, 4, 6, 11], "either": [0, 1, 4, 6, 11], "approv": 0, "chang": [0, 1, 4, 6], "go": 0, "post_schema": 0, "json_schema": [0, 1, 5, 7], "dict": [0, 1], "post_team": 0, "put_model_card": 0, "latest": [0, 1, 4, 6], "put_releas": 0, "simple_upload": 0, "buffer": 0, "bytesio": [0, 1, 6], "simpl": [0, 11], "upload": [0, 1, 11], "valu": [0, 1], "whether": [0, 1], "publicli": 0, "model_senior_responsible_offic": 0, "msro": 0, "model_technical_review": 0, "mtr": 0, "owner": 0, "type": [0, 6, 7], "access_request": [0, 1, 3], "bailoexcept": [0, 1, 2], "gener": [0, 3, 4, 6, 7, 8, 11], "responseexcept": [0, 2], "gave": 0, "created_bi": 1, "being": 1, "made": 1, "thi": [1, 2, 3, 4, 5, 6, 7, 10, 11], "ha": [1, 4], "been": [1, 4, 5], "classmethod": [1, 3, 4, 6, 7, 9], "interact": [1, 2, 3, 4, 6, 7], "messag": [1, 6], "confirm": 1, "remov": 1, "from_id": 1, "exist": [1, 3], "state": 1, "experi": [1, 2], "local": [1, 3, 4, 5, 6, 7], "which": [1, 3, 4, 5, 6, 7, 8], "run": [1, 3, 4, 6, 7, 11], "raw": 1, "inform": [1, 3, 4, 6, 7], "about": 1, "create_experi": [1, 5], "x": [1, 5], "rang": [1, 5], "start_run": [1, 5], "log_param": [1, 5], "lr": [1, 5], "0": [1, 3, 4, 5, 6, 7, 11], "01": [1, 3, 5], "insert": [1, 3, 4, 5, 6, 7], "train": [1, 5], "here": [1, 11], "log_metr": [1, 5], "accuraci": [1, 5], "86": [1, 5], "log_artifact": [1, 5], "weight": [1, 5], "pth": [1, 6], "publish": [1, 10], "mc_loc": [1, 5], "perform": [1, 5, 8], "performancemetr": [1, 5], "run_id": [1, 5], "1": [1, 3, 4, 5, 6, 7, 11], "from_mlflow": [1, 5], "tracking_uri": [1, 5], "experiment_id": [1, 5], "import": [1, 3, 4, 6, 7, 11], "mlflow": [1, 2], "track": [1, 2], "server": [1, 5], "uri": [1, 5], "rais": 1, "importerror": 1, "instal": [1, 2, 4, 5, 6], "artifact": [1, 5], "log": [1, 5], "log_dataset": 1, "dataset": [1, 4], "arbitrari": [1, 5], "titl": [1, 7], "metric": [1, 5], "dictionari": 1, "param": [1, 5], "result": 1, "select": [1, 6], "present": 1, "next": [1, 4, 5, 6], "depend": [1, 5, 8], "is_mlflow": 1, "start": [1, 2], "mark": 1, "card_from_model": [], "copi": [], "differ": 6, "yet": 1, "implement": 1, "notimplementederror": 1, "Not": 1, "card_from_schema": [1, 4, 5, 6, 11], "card_from_templ": 1, "templat": 1, "build": [1, 8, 10], "create_releas": [1, 6, 11], "true": [1, 7], "call": [1, 3, 4, 6], "method": [1, 5], "get_card_latest": 1, "get_card_revis": 1, "revis": 1, "get_imag": 1, "refer": [1, 6], "get_latest_releas": [1, 6], "from_vers": 1, "get_rol": 1, "get_user_rol": 1, "summari": [1, 7], "update_model_card": [1, 5, 6], "model_card": [1, 5, 6], "If": [1, 4, 5, 6, 11], "attribut": [1, 3, 4, 6], "option": [1, 10], "ar": [1, 3, 4, 5, 6, 7, 8, 10, 11], "store": 1, "write": [1, 6], "give": [], "read": [], "determin": 1, "disk": [1, 6], "set": [1, 4, 6], "data": [1, 4], "directori": [1, 6, 11], "load": 1, "zip": 1, "ecosystem": 2, "manag": 2, "lifecycl": [2, 5], "machin": [2, 5], "learn": [2, 4, 5, 6], "support": [1, 2, 3, 4, 5, 6, 7], "featur": 2, "develop": 2, "core": [2, 3, 4, 5, 6, 7], "resnet": 2, "50": [2, 9], "exampl": [2, 3, 4, 5, 7, 10], "pytorch": 2, "bailo": [3, 7], "enabl": [3, 4, 6, 7], "intuit": [3, 4, 6, 7], "servic": [3, 4, 5, 6, 7], "environ": [3, 4, 5, 6, 7], "notebook": [3, 4, 5, 6, 7], "through": [3, 4, 5, 6, 7], "follow": [3, 4, 5, 6, 7, 11], "concept": [3, 4, 5, 6, 7], "prerequisit": [3, 4, 5, 6, 7], "3": [3, 4, 5, 6, 7, 11], "8": [3, 4, 5, 6, 7, 9, 11], "higher": [3, 4, 5, 6, 7, 11], "includ": [1, 3, 4, 5, 6, 7, 8, 10], "demo": [3, 4, 5, 6, 7], "remot": [3, 4, 5, 6, 7], "see": [3, 4, 5, 6, 7], "http": [3, 4, 5, 6, 7, 9, 11], "github": [3, 4, 5, 6, 7], "com": [3, 4, 5, 6, 7], "gchq": [3, 4, 5, 6, 7], "split": [3, 4, 6, 7, 11], "two": [3, 4, 6, 7], "sub": [3, 4, 6, 7], "packag": [3, 4, 6, 7, 8, 10], "For": [3, 4, 6, 7], "direct": [3, 4, 6, 7], "more": [3, 4, 5, 6, 7], "oper": [3, 4, 6, 7], "In": [3, 4, 5, 6, 7, 8, 11], "order": [3, 4, 5, 6, 7, 11], "you": [3, 4, 5, 6, 7, 11], "first": [3, 4, 5, 6, 7], "need": [3, 4, 5, 6, 7], "instanti": [3, 4, 5, 6, 7], "By": [3, 4, 6, 7], "howev": [3, 4, 6, 7], "also": [3, 4, 5, 6, 7, 10], "pass": [3, 4, 6, 7], "when": [3, 4, 6, 7, 10], "necessari": [3, 4, 5, 6, 7], "statement": [1, 3, 4, 5, 6, 7], "127": [3, 4, 5, 6, 7], "8080": [3, 4, 5, 6, 7, 11], "host": [3, 4, 5, 6, 7], "section": [3, 4, 5, 6, 7, 11], "we": [3, 4, 5, 6, 7], "ll": [3, 4, 5, 6, 7], "On": [3, 4, 6, 7], "must": [3, 4, 5, 6, 7], "consist": [3, 4, 6, 7], "least": [3, 4, 6], "upon": [3, 4, 6, 7], "creation": [3, 4, 6, 7], "These": [3, 4, 6, 7, 8], "below": [3, 4, 6, 7], "befor": [3, 4, 5, 6, 7], "our": [3, 4, 5, 6, 7], "yolov5": [3, 5], "detect": [3, 5], "uncategoris": [3, 4, 5, 6, 11], "overview": [3, 4, 5, 6, 7], "entiti": 3, "test": [3, 7, 10], "enddat": 3, "1970": 3, "minim": [3, 4, 6, 11], "v10": [3, 4, 6, 11], "previou": [3, 4, 5, 6, 7], "your": [3, 4, 5, 6, 7], "edit": 3, "directli": [3, 5, 6], "demonstr": [3, 5, 6], "new_metadata": 3, "newnam": 3, "simpli": 3, "addit": [5, 6], "cover": 5, "offer": 5, "integr": [5, 6, 11], "might": 5, "wider": 5, "particular": 5, "complet": 5, "basic": [5, 9], "models_and_releases_demo_pytorch": 5, "ipynb": 5, "step": [5, 6], "have": [4, 5, 6], "thu": 5, "too": [4, 5, 6, 7], "how": [4, 5, 6], "do": [5, 6, 7], "time": [4, 5, 6], "later": [4, 5, 6], "pip": [4, 5, 6, 11], "random": [5, 7], "element": 5, "tutori": 5, "instanc": [4, 5, 6, 7], "sampl": 5, "actual": [4, 5], "onli": [5, 6, 8, 10, 11], "function": [5, 7], "ui": 5, "command": [5, 6], "line": 5, "typic": [5, 7], "localhost": [5, 11], "5000": [5, 7], "browser": 5, "design": [5, 9], "displai": [5, 6], "wai": 5, "therefor": 5, "extern": 5, "script": 5, "quit": 5, "larg": 5, "set_schema": 5, "py": [5, 9, 10], "assign": [1, 4, 5, 6], "randint": 5, "1000000": 5, "mandatori": 5, "field": 5, "new_card": [4, 5, 6], "tag": [5, 6, 7], "modelsummari": [5, 6], "work": [5, 11], "sequenti": 5, "so": 5, "re": [5, 6], "parallel": 5, "would": [5, 7], "better": 5, "anchor_t": 5, "4": [4, 5, 6], "scale": 5, "98": 5, "txt": [5, 6], "2": [4, 5, 6], "set_tracking_uri": 5, "set_experi": 5, "demonst": 5, "same": [5, 6], "set_tag": 5, "info": 5, "As": 5, "previous": 5, "mention": 5, "experiment_mlflow": 5, "BE": 5, "found": 5, "ON": 5, "THE": 5, "becaus": 5, "intend": 5, "success": [4, 5, 6], "specifi": 5, "well": 5, "case": [5, 6], "per": 5, "earlier": [5, 6], "should": [4, 5, 6], "now": [4, 5, 6], "under": 5, "tab": 5, "addition": 5, "relev": 6, "linux": 6, "cpu": 6, "torch": [6, 9], "torchvis": 6, "index": 6, "org": [6, 7], "whl": 6, "mac": 6, "window": [6, 11], "resnet50": 6, "resnet50_weight": 6, "other": [6, 7, 11], "like": [4, 6], "ad": 6, "backend": [4, 6, 11], "mai": [4, 6, 10, 11], "relai": [4, 6], "empti": [4, 6], "beta": 11, "out": [4, 6], "scope": [4, 6], "print": [4, 6], "f": [4, 6, 11], "abov": [4, 6], "want": [4, 6], "match": [4, 6], "otherwis": [4, 6], "thrown": [4, 6], "adjust": 6, "don": 6, "t": 6, "drastic": 6, "behaviour": 6, "separ": 6, "itself": 6, "release_on": 6, "save": 6, "them": 6, "take": 6, "allow": 6, "u": 6, "without": 6, "up": 6, "space": 6, "torch_model": 6, "state_dict": 6, "To": 6, "content": [6, 11], "last": 6, "s3": [4, 6], "large_fil": [], "open": 11, "rb": [], "altern": 6, "both": [6, 10], "release_latest": 6, "successfulli": 6, "ident": 6, "similarli": 6, "bailo_resnet50_weight": 6, "wb": [], "final": 6, "ve": 6, "load_state_dict": 6, "init": 6, "identifi": 7, "suffic": 7, "reserv": 7, "administr": 7, "def": 7, "random_gener": 7, "n": [7, 9], "10": 7, "join": 7, "choic": [7, 9], "ascii_uppercas": 7, "digit": 7, "k": [7, 9], "07": 7, "properti": [1, 7], "modeloverview": 7, "what": 7, "doe": 7, "minlength": 7, "maxlength": 7, "searchabl": 7, "help": [7, 8], "arrai": 7, "widget": 7, "tagselectorbeta": 7, "item": 7, "uniqueitem": 7, "requir": [7, 10, 11], "additionalproperti": 7, "git": [1, 8, 11], "hook": [8, 9], "scan": 8, "prior": 8, "checkin": 8, "configur": [8, 10], "focus": 8, "action": 8, "prevent": 8, "fail": 8, "dure": 8, "format": 8, "automat": 8, "auto": 8, "black": 8, "sort": 8, "isort": 8, "lint": [8, 10], "left": 8, "discret": 8, "master": 9, "pkg": 9, "whitelist": 9, "numpi": 9, "cv2": 9, "pyodbc": 9, "pydant": 9, "ciso8601": 9, "netcdf4": 9, "scipi": 9, "cv": 9, "conftest": 9, "setrecursionlimit": 9, "getrecursionlimit": 9, "job": 9, "100": 9, "persist": 9, "ye": 9, "rcfile": 9, "mode": 9, "unsaf": 9, "float": 9, "_": 9, "msg": 9, "max": 9, "exit": 9, "snake_cas": 9, "rgx": 9, "foo": 9, "bar": 9, "baz": 9, "toto": 9, "tutu": 9, "tata": 9, "pascalcas": 9, "upper_cas": 9, "min": 9, "j": 9, "ex": 9, "df": 9, "ax": 9, "group": 9, "long": 9, "after": 9, "paren": 9, "120": 9, "1000": 9, "stmt": 9, "miscellan": 9, "fixm": 9, "xxx": 9, "todo": 9, "9": 9, "jump": 9, "typecheck": 9, "np": 9, "pyspark": 9, "sql": 9, "collect_list": 9, "optpars": 9, "thread": 9, "_local": 9, "_thread": 9, "swagger_cli": 9, "mutat": 9, "dbutil": 9, "cb_": 9, "_cb": 9, "za": 9, "z0": 9, "9_": 9, "unused_": 9, "six": 9, "move": 9, "past": 9, "futur": [9, 10], "io": 9, "setup": [9, 10], "post_init": 9, "_asdict": 9, "_field": 9, "_replac": 9, "_sourc": 9, "_make": 9, "cl": 9, "7": 9, "expr": 9, "12": 9, "15": 9, "20": 9, "6": 9, "tkinter": 9, "tix": 9, "ext": 9, "known": 9, "azureiai": 9, "logist": 9, "inventoryplan": 9, "overgener": 9, "pyproject": 10, "main": 10, "project": 10, "replac": 10, "flit": 10, "poetri": 10, "consid": 10, "viabl": 10, "setuptool": 10, "cfg": 10, "still": 10, "wrapper": 11, "tabl": 11, "binari": 11, "yolo": 11, "yolov4": 11, "look": 11, "onc": 11, "my_releas": 11, "onnx": 11, "documen": 11, "render": 11, "sphinx": 11, "serv": 11, "doc": [1, 11], "html": 11, "bat": 11, "alreadi": 11, "prompt": 11, "overwrit": 11, "huski": 11, "instruct": 11, "cli": 11, "pre": 11, "commit": 11, "pytest": 11, "ran": 11, "accordingli": 11, "categori": 11, "autom": 11, "purpos": 11, "sure": 11, "m": 11, "datacard": [1, 2], "datacard_id": [1, 4], "entri": [1, 2], "data_card": [1, 4], "data_card_schema": 1, "data_card_vers": [1, 4], "update_data_card": [1, 4], "entrykind": [1, 2], "model_card_schema": 1, "download_al": [1, 6], "home": 1, "ubuntu": 1, "lib": 1, "exclud": [1, 6], "fnmatch": 1, "unix": 1, "shell": 1, "style": 1, "wildcard": 1, "stage": 4, "imagenet": 4, "storageloc": 4, "destin": 6}, "objects": {"": [[2, 0, 0, "-", "bailo"]], "bailo.core": [[0, 0, 0, "-", "agent"], [0, 0, 0, "-", "client"], [0, 0, 0, "-", "enums"], [0, 0, 0, "-", "exceptions"]], "bailo.core.agent": [[0, 1, 1, "", "Agent"], [0, 1, 1, "", "PkiAgent"], [0, 1, 1, "", "TokenAgent"]], "bailo.core.agent.Agent": [[0, 2, 1, "", "delete"], [0, 2, 1, "", "get"], [0, 2, 1, "", "patch"], [0, 2, 1, "", "post"], [0, 2, 1, "", "push"], [0, 2, 1, "", "put"]], "bailo.core.agent.PkiAgent": [[0, 2, 1, "", "__init__"], [0, 2, 1, "", "delete"], [0, 2, 1, "", "get"], [0, 2, 1, "", "patch"], [0, 2, 1, "", "post"], [0, 2, 1, "", "put"]], "bailo.core.agent.TokenAgent": [[0, 2, 1, "", "__init__"], [0, 2, 1, "", "delete"], [0, 2, 1, "", "get"], [0, 2, 1, "", "patch"], [0, 2, 1, "", "post"], [0, 2, 1, "", "put"]], "bailo.core.client": [[0, 1, 1, "", "Client"]], "bailo.core.client.Client": [[0, 2, 1, "", "delete_access_request"], [0, 2, 1, "", "delete_file"], [0, 2, 1, "", "delete_release"], [0, 2, 1, "", "get_access_request"], [0, 2, 1, "", "get_access_requests"], [0, 2, 1, "", "get_all_images"], [0, 2, 1, "", "get_all_releases"], [0, 2, 1, "", "get_all_schemas"], [0, 2, 1, "", "get_all_teams"], [0, 2, 1, "", "get_download_by_filename"], [0, 2, 1, "", "get_download_file"], [0, 2, 1, "", "get_files"], [0, 2, 1, "", "get_model"], [0, 2, 1, "", "get_model_card"], [0, 2, 1, "", "get_model_roles"], [0, 2, 1, "", "get_model_user_roles"], [0, 2, 1, "", "get_models"], [0, 2, 1, "", "get_release"], [0, 2, 1, "", "get_reviews"], [0, 2, 1, "", "get_schema"], [0, 2, 1, "", "get_team"], [0, 2, 1, "", "get_user_teams"], [0, 2, 1, "", "model_card_from_schema"], [0, 2, 1, "", "patch_access_request"], [0, 2, 1, "", "patch_model"], [0, 2, 1, "", "patch_team"], [0, 2, 1, "", "post_access_request"], [0, 2, 1, "", "post_model"], [0, 2, 1, "", "post_release"], [0, 2, 1, "", "post_review"], [0, 2, 1, "", "post_schema"], [0, 2, 1, "", "post_team"], [0, 2, 1, "", "put_model_card"], [0, 2, 1, "", "put_release"], [0, 2, 1, "", "simple_upload"]], "bailo.core.enums": [[0, 1, 1, "", "EntryKind"], [0, 1, 1, "", "ModelVisibility"], [0, 1, 1, "", "Role"], [0, 1, 1, "", "SchemaKind"]], "bailo.core.enums.EntryKind": [[0, 3, 1, "", "DATACARD"], [0, 3, 1, "", "MODEL"]], "bailo.core.enums.ModelVisibility": [[0, 3, 1, "", "PRIVATE"], [0, 3, 1, "", "PUBLIC"]], "bailo.core.enums.Role": [[0, 3, 1, "", "MODEL_SENIOR_RESPONSIBLE_OFFICER"], [0, 3, 1, "", "MODEL_TECHNICAL_REVIEWER"], [0, 3, 1, "", "OWNER"]], "bailo.core.enums.SchemaKind": [[0, 3, 1, "", "ACCESS_REQUEST"], [0, 3, 1, "", "MODEL"]], "bailo.core.exceptions": [[0, 4, 1, "", "BailoException"], [0, 4, 1, "", "ResponseException"]], "bailo.helper": [[1, 0, 0, "-", "access_request"], [1, 0, 0, "-", "datacard"], [1, 0, 0, "-", "entry"], [1, 0, 0, "-", "model"], [1, 0, 0, "-", "release"], [1, 0, 0, "-", "schema"]], "bailo.helper.access_request": [[1, 1, 1, "", "AccessRequest"]], "bailo.helper.access_request.AccessRequest": [[1, 2, 1, "", "create"], [1, 2, 1, "", "delete"], [1, 2, 1, "", "from_id"], [1, 2, 1, "", "update"]], "bailo.helper.datacard": [[1, 1, 1, "", "Datacard"]], "bailo.helper.datacard.Datacard": [[1, 2, 1, "", "create"], [1, 5, 1, "", "data_card"], [1, 5, 1, "", "data_card_schema"], [1, 5, 1, "", "data_card_version"], [1, 2, 1, "", "from_id"], [1, 2, 1, "", "update_data_card"]], "bailo.helper.entry": [[1, 1, 1, "", "Entry"]], "bailo.helper.entry.Entry": [[1, 2, 1, "", "card_from_schema"], [1, 2, 1, "", "card_from_template"], [1, 2, 1, "", "get_card_latest"], [1, 2, 1, "", "get_card_revision"], [1, 2, 1, "", "get_roles"], [1, 2, 1, "", "get_user_roles"], [1, 2, 1, "", "update"]], "bailo.helper.model": [[1, 1, 1, "", "Experiment"], [1, 1, 1, "", "Model"]], "bailo.helper.model.Experiment": [[1, 2, 1, "", "create"], [1, 2, 1, "", "from_mlflow"], [1, 2, 1, "", "log_artifacts"], [1, 2, 1, "", "log_dataset"], [1, 2, 1, "", "log_metrics"], [1, 2, 1, "", "log_params"], [1, 2, 1, "", "publish"], [1, 2, 1, "", "start_run"]], "bailo.helper.model.Model": [[1, 2, 1, "", "create"], [1, 2, 1, "", "create_experiment"], [1, 2, 1, "", "create_release"], [1, 2, 1, "", "from_id"], [1, 2, 1, "", "get_image"], [1, 2, 1, "", "get_images"], [1, 2, 1, "", "get_latest_release"], [1, 2, 1, "", "get_release"], [1, 2, 1, "", "get_releases"], [1, 5, 1, "", "model_card"], [1, 5, 1, "", "model_card_schema"], [1, 5, 1, "", "model_card_version"], [1, 2, 1, "", "update_model_card"]], "bailo.helper.release": [[1, 1, 1, "", "Release"]], "bailo.helper.release.Release": [[1, 2, 1, "", "__init__"], [1, 2, 1, "", "create"], [1, 2, 1, "", "delete"], [1, 2, 1, "", "download"], [1, 2, 1, "", "download_all"], [1, 2, 1, "", "from_version"], [1, 2, 1, "", "update"], [1, 2, 1, "", "upload"]], "bailo.helper.schema": [[1, 1, 1, "", "Schema"]], "bailo.helper.schema.Schema": [[1, 2, 1, "", "create"], [1, 2, 1, "", "from_id"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:attribute", "4": "py:exception", "5": "py:property"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "exception", "Python exception"], "5": ["py", "property", "Python property"]}, "titleterms": {"bailo": [0, 1, 2, 4, 5, 6, 11], "core": 0, "packag": [0, 1, 2, 9, 11], "helper": 1, "welcom": 2, "": [2, 9], "python": [2, 5, 9, 11], "client": [2, 5, 11], "document": [2, 11], "notebook": 2, "manag": [3, 4, 6, 7, 9], "access": [3, 9], "request": 3, "introduct": [3, 4, 5, 6, 7], "creat": [3, 4, 5, 6, 7, 9], "new": [3, 4, 5, 6, 7, 9], "retriev": [3, 4, 6, 7], "an": [3, 4, 5, 6, 7, 9], "us": [3, 4, 6, 7, 9], "from_id": [3, 4, 6, 7], "method": [3, 4, 6, 7, 9], "make": [3, 9], "chang": [3, 9], "delet": 3, "experi": 5, "track": 5, "mlflow": 5, "connect": 5, "set": [5, 9], "up": [5, 9], "prepar": [5, 6], "custom": 5, "schema": [5, 7], "conduct": 5, "run": [5, 9], "dummi": [5, 9], "import": [5, 9], "exist": [4, 5, 6, 7, 9], "from": [5, 6, 9], "publish": 5, "result": [5, 9], "model": 6, "releas": 6, "resnet": 6, "50": 6, "exampl": [6, 9], "pytorch": 6, "updat": [4, 6], "base": [4, 6, 9], "popul": [4, 6], "card": 6, "weight": 6, "upload": 6, "download": 6, "load": [6, 9], "pre": 8, "commit": 8, "config": 8, "yaml": 8, "A": 9, "comma": 9, "separ": 9, "list": 9, "modul": 9, "name": 9, "where": 9, "c": 9, "extens": 9, "mai": 9, "ar": 9, "activ": 9, "interpret": 9, "arbitrari": 9, "code": 9, "add": [9, 11], "file": 9, "directori": 9, "blacklist": 9, "thei": 9, "should": 9, "path": 9, "match": 9, "regex": 9, "pattern": 9, "The": 9, "against": 9, "execut": 9, "usual": 9, "sy": 9, "manipul": 9, "pygtk": 9, "requir": 9, "multipl": 9, "process": 9, "speed": 9, "pylint": 9, "specifi": 9, "0": 9, "auto": 9, "detect": 9, "number": 9, "processor": 9, "avail": 9, "control": 9, "amount": 9, "potenti": 9, "infer": 9, "valu": 9, "when": 9, "singl": 9, "object": 9, "thi": 9, "can": 9, "help": 9, "perform": 9, "deal": 9, "larg": 9, "function": 9, "complex": 9, "nest": 9, "condit": 9, "plugin": 9, "regist": 9, "addit": 9, "checker": 9, "pickl": 9, "collect": 9, "data": 9, "later": 9, "comparison": 9, "configur": 9, "enabl": 9, "would": 9, "attempt": 9, "guess": 9, "common": 9, "misconfigur": 9, "emit": 9, "user": 9, "friendli": 9, "hint": 9, "instead": 9, "fals": 9, "posit": 9, "error": 9, "messag": 9, "allow": 9, "onli": 9, "show": 9, "warn": 9, "confid": 9, "level": 9, "leav": 9, "empti": 9, "all": 9, "valid": 9, "high": 9, "inference_failur": 9, "undefin": 9, "disabl": 9, "report": 9, "categori": 9, "given": 9, "id": 9, "you": 9, "either": 9, "give": 9, "identifi": 9, "put": 9, "option": 9, "time": 9, "command": 9, "line": 9, "appear": 9, "onc": 9, "also": 9, "everyth": 9, "first": 9, "reenabl": 9, "specif": 9, "check": 9, "For": 9, "want": 9, "similar": 9, "If": 9, "class": 9, "have": 9, "displai": 9, "w": 9, "see": 9, "express": 9, "which": 9, "return": 9, "score": 9, "less": 9, "than": 9, "equal": 9, "10": 9, "variabl": 9, "refactor": 9, "convent": 9, "contain": 9, "each": 9, "well": 9, "statement": 9, "i": 9, "total": 9, "analyz": 9, "global": 9, "evalu": 9, "rp0004": 9, "templat": 9, "style": 9, "format": 9, "string": 9, "inform": 9, "doc": 9, "detail": 9, "output": 9, "text": 9, "parseabl": 9, "color": 9, "json": 9, "msv": 9, "visual": 9, "studio": 9, "e": 9, "g": 9, "mypackag": 9, "mymodul": 9, "myreporterclass": 9, "tell": 9, "whether": 9, "full": 9, "maximum": 9, "block": 9, "bodi": 9, "complet": 9, "never": 9, "inconsist": 9, "call": 9, "consid": 9, "explicit": 9, "print": 9, "correct": 9, "argument": 9, "regular": 9, "overrid": 9, "attribut": 9, "attr": 9, "bad": 9, "alwai": 9, "refus": 9, "constant": 9, "const": 9, "minimum": 9, "length": 9, "docstr": 9, "shorter": 9, "ones": 9, "exempt": 9, "good": 9, "accept": 9, "includ": 9, "invalid": 9, "inlin": 9, "iter": 9, "inlinevar": 9, "colon": 9, "delimit": 9, "determin": 9, "other": 9, "sever": 9, "do": 9, "decor": 9, "produc": 9, "properti": 9, "abc": 9, "abstractproperti": 9, "These": 9, "taken": 9, "consider": 9, "expect": 9, "end": 9, "ani": 9, "lf": 9, "crlf": 9, "regexp": 9, "longer": 9, "limit": 9, "space": 9, "indent": 9, "insid": 9, "hang": 9, "continu": 9, "unit": 9, "4": 9, "t": 9, "1": 9, "tab": 9, "charact": 9, "construct": 9, "whitespac": 9, "dict": 9, "tabul": 9, "etc": 9, "n222": 9, "2": 9, "trail": 9, "between": 9, "close": 9, "bracket": 9, "same": 9, "declar": 9, "test": [9, 11], "els": 9, "log": 9, "old": 9, "mean": 9, "fstr": 9, "f": 9, "paramet": 9, "note": 9, "tag": 9, "take": 9, "ignor": 9, "comment": 9, "comput": 9, "count": 9, "suggest": 9, "spell": 9, "mistak": 9, "dictionari": 9, "none": 9, "To": 9, "work": 9, "instal": [9, 11], "enchant": 9, "word": 9, "privat": 9, "one": 9, "per": 9, "store": 9, "unknown": 9, "rais": 9, "flag": 9, "implicit": 9, "str": 9, "concat": 9, "sequenc": 9, "gener": 9, "concaten": 9, "defin": 9, "over": 9, "context": 9, "contextlib": 9, "contextmanag": 9, "member": 9, "dynam": 9, "miss": 9, "system": 9, "so": 9, "shouldn": 9, "trigger": 9, "e1101": 9, "mixin": 9, "its": 9, "case": 9, "insensit": 9, "about": 9, "owner": 9, "whenev": 9, "opaqu": 9, "while": 9, "some": 9, "branch": 9, "might": 9, "partial": 9, "In": 9, "still": 9, "rest": 9, "support": 9, "qualifi": 9, "project": 9, "namespac": 9, "dure": 9, "runtim": 9, "thu": 9, "cannot": 9, "deduc": 9, "static": 9, "analysi": 9, "It": 9, "unix": 9, "possibl": 9, "wa": 9, "found": 9, "aspect": 9, "find": 9, "edit": 9, "distanc": 9, "order": 9, "signatur": 9, "suppos": 9, "builtin": 9, "rememb": 9, "avoid": 9, "unus": 9, "treat": 9, "violat": 9, "callback": 9, "must": 9, "start": [9, 11], "those": 9, "default": 9, "lead": 9, "underscor": 9, "we": 9, "init": 9, "redefin": 9, "assign": 9, "instanc": 9, "exclud": 9, "protect": 9, "metaclass": 9, "r0902": 9, "boolean": 9, "r0916": 9, "local": [9, 11], "parent": 9, "r0901": 9, "public": 9, "r0904": 9, "yield": 9, "r0903": 9, "just": 9, "top": 9, "wildcard": 9, "analys": 9, "fallback": 9, "both": 9, "3": 9, "compat": 9, "anoth": 9, "deprec": 9, "graph": 9, "extern": 9, "depend": 9, "rp0402": 9, "everi": 9, "intern": 9, "forc": 9, "recogn": 9, "part": 9, "standard": 9, "librari": 9, "third": 9, "parti": 9, "coupl": 9, "prefer": 9, "except": 9, "being": 9, "caught": 9, "baseexcept": 9, "pypyroject": 10, "toml": 10, "kei": 11, "featur": 11, "get": 11, "build": 11, "develop": 11, "precommit": 11, "datacard": 4}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "nbsphinx": 4, "sphinx": 60}, "alltitles": {"Managing Access Requests": [[3, "Managing-Access-Requests"]], "Introduction": [[3, "Introduction"], [7, "Introduction"], [4, "Introduction"], [5, "Introduction"], [6, "Introduction"]], "Creating a new access request": [[3, "Creating-a-new-access-request"]], "Retrieving an access request": [[3, "Retrieving-an-access-request"]], "Using the .from_id() method": [[3, "Using-the-.from_id()-method"], [7, "Using-the-.from_id()-method"], [4, "Using-the-.from_id()-method"], [6, "Using-the-.from_id()-method"]], "Making changes to an access request": [[3, "Making-changes-to-an-access-request"]], "Deleting an access request": [[3, "Deleting-an-access-request"]], "Managing Schemas": [[7, "Managing-Schemas"]], "Creating a new schema": [[7, "Creating-a-new-schema"]], "Retrieving an existing schema": [[7, "Retrieving-an-existing-schema"]], "pre-commit-config.yaml": [[8, "pre-commit-config-yaml"]], "A comma-separated list of package or module names from where C extensions may": [[9, "a-comma-separated-list-of-package-or-module-names-from-where-c-extensions-may"]], "be loaded. Extensions are loading into the active Python interpreter and may": [[9, "be-loaded-extensions-are-loading-into-the-active-python-interpreter-and-may"]], "run arbitrary code.": [[9, "run-arbitrary-code"]], "Add files or directories to the blacklist. They should be base names, not": [[9, "add-files-or-directories-to-the-blacklist-they-should-be-base-names-not"]], "paths.": [[9, "paths"]], "Add files or directories matching the regex patterns to the blacklist. The": [[9, "add-files-or-directories-matching-the-regex-patterns-to-the-blacklist-the"]], "regex matches against base names, not paths.": [[9, "regex-matches-against-base-names-not-paths"]], "Python code to execute, usually for sys.path manipulation such as": [[9, "python-code-to-execute-usually-for-sys-path-manipulation-such-as"]], "pygtk.require().": [[9, "pygtk-require"]], "Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the": [[9, "use-multiple-processes-to-speed-up-pylint-specifying-0-will-auto-detect-the"]], "number of processors available to use.": [[9, "number-of-processors-available-to-use"]], "Control the amount of potential inferred values when inferring a single": [[9, "control-the-amount-of-potential-inferred-values-when-inferring-a-single"]], "object. This can help the performance when dealing with large functions or": [[9, "object-this-can-help-the-performance-when-dealing-with-large-functions-or"]], "complex, nested conditions.": [[9, "complex-nested-conditions"]], "List of plugins (as comma separated values of python module names) to load,": [[9, "list-of-plugins-as-comma-separated-values-of-python-module-names-to-load"]], "usually to register additional checkers.": [[9, "usually-to-register-additional-checkers"]], "Pickle collected data for later comparisons.": [[9, "pickle-collected-data-for-later-comparisons"]], "Specify a configuration file.": [[9, "specify-a-configuration-file"]], "When enabled, pylint would attempt to guess common misconfiguration and emit": [[9, "when-enabled-pylint-would-attempt-to-guess-common-misconfiguration-and-emit"]], "user-friendly hints instead of false-positive error messages.": [[9, "user-friendly-hints-instead-of-false-positive-error-messages"]], "Allow loading of arbitrary C extensions. Extensions are imported into the": [[9, "allow-loading-of-arbitrary-c-extensions-extensions-are-imported-into-the"]], "active Python interpreter and may run arbitrary code.": [[9, "active-python-interpreter-and-may-run-arbitrary-code"]], "Only show warnings with the listed confidence levels. Leave empty to show": [[9, "only-show-warnings-with-the-listed-confidence-levels-leave-empty-to-show"]], "all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED.": [[9, "all-valid-levels-high-inference-inference-failure-undefined"]], "Disable the message, report, category or checker with the given id(s). You": [[9, "disable-the-message-report-category-or-checker-with-the-given-id-s-you"]], "can either give multiple identifiers separated by comma (,) or put this": [[9, "can-either-give-multiple-identifiers-separated-by-comma-or-put-this"]], "option multiple times (only on the command line, not in the configuration": [[9, "option-multiple-times-only-on-the-command-line-not-in-the-configuration"]], "file where it should appear only once). You can also use \u201c\u2013disable=all\u201d to": [[9, "file-where-it-should-appear-only-once-you-can-also-use-disable-all-to"]], "disable everything first and then reenable specific checks. For example, if": [[9, "disable-everything-first-and-then-reenable-specific-checks-for-example-if"]], "you want to run only the similarities checker, you can use \u201c\u2013disable=all": [[9, "you-want-to-run-only-the-similarities-checker-you-can-use-disable-all"]], "\u2013enable=similarities\u201d. If you want to run only the classes checker, but have": [[9, "enable-similarities-if-you-want-to-run-only-the-classes-checker-but-have"]], "no Warning level messages displayed, use \u201c\u2013disable=all \u2013enable=classes": [[9, "no-warning-level-messages-displayed-use-disable-all-enable-classes"]], "\u2013disable=W\u201d.": [[9, "disable-w"]], "Enable the message, report, category or checker with the given id(s). You can": [[9, "enable-the-message-report-category-or-checker-with-the-given-id-s-you-can"]], "either give multiple identifier separated by comma (,) or put this option": [[9, "either-give-multiple-identifier-separated-by-comma-or-put-this-option"]], "multiple time (only on the command line, not in the configuration file where": [[9, "multiple-time-only-on-the-command-line-not-in-the-configuration-file-where"]], "it should appear only once). See also the \u201c\u2013disable\u201d option for examples.": [[9, "it-should-appear-only-once-see-also-the-disable-option-for-examples"]], "Python expression which should return a score less than or equal to 10. You": [[9, "python-expression-which-should-return-a-score-less-than-or-equal-to-10-you"]], "have access to the variables \u2018error\u2019, \u2018warning\u2019, \u2018refactor\u2019, and \u2018convention\u2019": [[9, "have-access-to-the-variables-error-warning-refactor-and-convention"]], "which contain the number of messages in each category, as well as \u2018statement\u2019": [[9, "which-contain-the-number-of-messages-in-each-category-as-well-as-statement"]], "which is the total number of statements analyzed. This score is used by the": [[9, "which-is-the-total-number-of-statements-analyzed-this-score-is-used-by-the"]], "global evaluation report (RP0004).": [[9, "global-evaluation-report-rp0004"]], "Template used to display messages. This is a python new-style format string": [[9, "template-used-to-display-messages-this-is-a-python-new-style-format-string"]], "used to format the message information. See doc for all details.": [[9, "used-to-format-the-message-information-see-doc-for-all-details"]], "Set the output format. Available formats are text, parseable, colorized, json": [[9, "set-the-output-format-available-formats-are-text-parseable-colorized-json"]], "and msvs (visual studio). You can also give a reporter class, e.g.": [[9, "and-msvs-visual-studio-you-can-also-give-a-reporter-class-e-g"]], "mypackage.mymodule.MyReporterClass.": [[9, "mypackage-mymodule-myreporterclass"]], "Tells whether to display a full report or only the messages.": [[9, "tells-whether-to-display-a-full-report-or-only-the-messages"]], "Activate the evaluation score.": [[9, "activate-the-evaluation-score"]], "Maximum number of nested blocks for function / method body": [[9, "maximum-number-of-nested-blocks-for-function-method-body"]], "Complete name of functions that never returns. When checking for": [[9, "complete-name-of-functions-that-never-returns-when-checking-for"]], "inconsistent-return-statements if a never returning function is called then": [[9, "inconsistent-return-statements-if-a-never-returning-function-is-called-then"]], "it will be considered as an explicit return statement and no message will be": [[9, "it-will-be-considered-as-an-explicit-return-statement-and-no-message-will-be"]], "printed.": [[9, "printed"]], "Naming style matching correct argument names.": [[9, "naming-style-matching-correct-argument-names"]], "Regular expression matching correct argument names. Overrides argument-": [[9, "regular-expression-matching-correct-argument-names-overrides-argument"]], "naming-style.": [[9, "naming-style"], [9, "id3"], [9, "id6"]], "Naming style matching correct attribute names.": [[9, "naming-style-matching-correct-attribute-names"]], "Regular expression matching correct attribute names. Overrides attr-naming-": [[9, "regular-expression-matching-correct-attribute-names-overrides-attr-naming"]], "style.": [[9, "style"], [9, "id1"], [9, "id2"], [9, "id4"], [9, "id5"]], "Bad variable names which should always be refused, separated by a comma.": [[9, "bad-variable-names-which-should-always-be-refused-separated-by-a-comma"]], "Naming style matching correct class attribute names.": [[9, "naming-style-matching-correct-class-attribute-names"]], "Regular expression matching correct class attribute names. Overrides class-": [[9, "regular-expression-matching-correct-class-attribute-names-overrides-class"]], "attribute-naming-style.": [[9, "attribute-naming-style"]], "Naming style matching correct class names.": [[9, "naming-style-matching-correct-class-names"]], "Regular expression matching correct class names. Overrides class-naming-": [[9, "regular-expression-matching-correct-class-names-overrides-class-naming"]], "Naming style matching correct constant names.": [[9, "naming-style-matching-correct-constant-names"]], "Regular expression matching correct constant names. Overrides const-naming-": [[9, "regular-expression-matching-correct-constant-names-overrides-const-naming"]], "Minimum line length for functions/classes that require docstrings, shorter": [[9, "minimum-line-length-for-functions-classes-that-require-docstrings-shorter"]], "ones are exempt.": [[9, "ones-are-exempt"]], "Naming style matching correct function names.": [[9, "naming-style-matching-correct-function-names"]], "Regular expression matching correct function names. Overrides function-": [[9, "regular-expression-matching-correct-function-names-overrides-function"]], "Good variable names which should always be accepted, separated by a comma.": [[9, "good-variable-names-which-should-always-be-accepted-separated-by-a-comma"]], "Include a hint for the correct naming format with invalid-name.": [[9, "include-a-hint-for-the-correct-naming-format-with-invalid-name"]], "Naming style matching correct inline iteration names.": [[9, "naming-style-matching-correct-inline-iteration-names"]], "Regular expression matching correct inline iteration names. Overrides": [[9, "regular-expression-matching-correct-inline-iteration-names-overrides"]], "inlinevar-naming-style.": [[9, "inlinevar-naming-style"]], "Naming style matching correct method names.": [[9, "naming-style-matching-correct-method-names"]], "Regular expression matching correct method names. Overrides method-naming-": [[9, "regular-expression-matching-correct-method-names-overrides-method-naming"]], "Naming style matching correct module names.": [[9, "naming-style-matching-correct-module-names"]], "Regular expression matching correct module names. Overrides module-naming-": [[9, "regular-expression-matching-correct-module-names-overrides-module-naming"]], "Colon-delimited sets of names that determine each other\u2019s naming style when": [[9, "colon-delimited-sets-of-names-that-determine-each-other-s-naming-style-when"]], "the name regexes allow several styles.": [[9, "the-name-regexes-allow-several-styles"]], "Regular expression which should only match function or class names that do": [[9, "regular-expression-which-should-only-match-function-or-class-names-that-do"]], "not require a docstring.": [[9, "not-require-a-docstring"]], "List of decorators that produce properties, such as abc.abstractproperty. Add": [[9, "list-of-decorators-that-produce-properties-such-as-abc-abstractproperty-add"]], "to this list to register other decorators that produce valid properties.": [[9, "to-this-list-to-register-other-decorators-that-produce-valid-properties"]], "These decorators are taken in consideration only for invalid-name.": [[9, "these-decorators-are-taken-in-consideration-only-for-invalid-name"]], "Naming style matching correct variable names.": [[9, "naming-style-matching-correct-variable-names"]], "Regular expression matching correct variable names. Overrides variable-": [[9, "regular-expression-matching-correct-variable-names-overrides-variable"]], "Expected format of line ending, e.g. empty (any line ending), LF or CRLF.": [[9, "expected-format-of-line-ending-e-g-empty-any-line-ending-lf-or-crlf"]], "Regexp for a line that is allowed to be longer than the limit.": [[9, "regexp-for-a-line-that-is-allowed-to-be-longer-than-the-limit"]], "Number of spaces of indent required inside a hanging or continued line.": [[9, "number-of-spaces-of-indent-required-inside-a-hanging-or-continued-line"]], "String used as indentation unit. This is usually \u201c \u201c (4 spaces) or \u201c\\t\u201d (1": [[9, "string-used-as-indentation-unit-this-is-usually-4-spaces-or-t-1"]], "tab).": [[9, "tab"]], "Maximum number of characters on a single line.": [[9, "maximum-number-of-characters-on-a-single-line"]], "Maximum number of lines in a module.": [[9, "maximum-number-of-lines-in-a-module"]], "List of optional constructs for which whitespace checking is disabled. `dict-": [[9, "list-of-optional-constructs-for-which-whitespace-checking-is-disabled-dict"]], "separator` is used to allow tabulation in dicts, etc.: {1 : 1,\\n222: 2}.": [[9, "separator-is-used-to-allow-tabulation-in-dicts-etc-1-1-n222-2"]], "trailing-comma allows a space between comma and closing bracket: (a, ).": [[9, "trailing-comma-allows-a-space-between-comma-and-closing-bracket-a"]], "empty-line allows space-only lines.": [[9, "empty-line-allows-space-only-lines"]], "Allow the body of a class to be on the same line as the declaration if body": [[9, "allow-the-body-of-a-class-to-be-on-the-same-line-as-the-declaration-if-body"]], "contains single statement.": [[9, "contains-single-statement"]], "Allow the body of an if to be on the same line as the test if there is no": [[9, "allow-the-body-of-an-if-to-be-on-the-same-line-as-the-test-if-there-is-no"]], "else.": [[9, "else"]], "Format style used to check logging format string. old means using %": [[9, "format-style-used-to-check-logging-format-string-old-means-using"]], "formatting, new is for {} formatting,and fstr is for f-strings.": [[9, "formatting-new-is-for-formatting-and-fstr-is-for-f-strings"]], "Logging modules to check that the string format arguments are in logging": [[9, "logging-modules-to-check-that-the-string-format-arguments-are-in-logging"]], "function parameter format.": [[9, "function-parameter-format"]], "List of note tags to take in consideration, separated by a comma.": [[9, "list-of-note-tags-to-take-in-consideration-separated-by-a-comma"]], "Ignore comments when computing similarities.": [[9, "ignore-comments-when-computing-similarities"]], "Ignore docstrings when computing similarities.": [[9, "ignore-docstrings-when-computing-similarities"]], "Ignore imports when computing similarities.": [[9, "ignore-imports-when-computing-similarities"]], "Minimum lines number of a similarity.": [[9, "minimum-lines-number-of-a-similarity"]], "Limits count of emitted suggestions for spelling mistakes.": [[9, "limits-count-of-emitted-suggestions-for-spelling-mistakes"]], "Spelling dictionary name. Available dictionaries: none. To make it work,": [[9, "spelling-dictionary-name-available-dictionaries-none-to-make-it-work"]], "install the python-enchant package.": [[9, "install-the-python-enchant-package"]], "List of comma separated words that should not be checked.": [[9, "list-of-comma-separated-words-that-should-not-be-checked"]], "A path to a file that contains the private dictionary; one word per line.": [[9, "a-path-to-a-file-that-contains-the-private-dictionary-one-word-per-line"]], "Tells whether to store unknown words to the private dictionary (see the": [[9, "tells-whether-to-store-unknown-words-to-the-private-dictionary-see-the"]], "\u2013spelling-private-dict-file option) instead of raising a message.": [[9, "spelling-private-dict-file-option-instead-of-raising-a-message"]], "This flag controls whether the implicit-str-concat-in-sequence should": [[9, "this-flag-controls-whether-the-implicit-str-concat-in-sequence-should"]], "generate a warning on implicit string concatenation in sequences defined over": [[9, "generate-a-warning-on-implicit-string-concatenation-in-sequences-defined-over"]], "several lines.": [[9, "several-lines"]], "List of decorators that produce context managers, such as": [[9, "list-of-decorators-that-produce-context-managers-such-as"]], "contextlib.contextmanager. Add to this list to register other decorators that": [[9, "contextlib-contextmanager-add-to-this-list-to-register-other-decorators-that"]], "produce valid context managers.": [[9, "produce-valid-context-managers"]], "List of members which are set dynamically and missed by pylint inference": [[9, "list-of-members-which-are-set-dynamically-and-missed-by-pylint-inference"]], "system, and so shouldn\u2019t trigger E1101 when accessed. Python regular": [[9, "system-and-so-shouldn-t-trigger-e1101-when-accessed-python-regular"]], "expressions are accepted.": [[9, "expressions-are-accepted"]], "Tells whether missing members accessed in mixin class should be ignored. A": [[9, "tells-whether-missing-members-accessed-in-mixin-class-should-be-ignored-a"]], "mixin class is detected if its name ends with \u201cmixin\u201d (case insensitive).": [[9, "mixin-class-is-detected-if-its-name-ends-with-mixin-case-insensitive"]], "Tells whether to warn about missing members when the owner of the attribute": [[9, "tells-whether-to-warn-about-missing-members-when-the-owner-of-the-attribute"]], "is inferred to be None.": [[9, "is-inferred-to-be-none"]], "This flag controls whether pylint should warn about no-member and similar": [[9, "this-flag-controls-whether-pylint-should-warn-about-no-member-and-similar"]], "checks whenever an opaque object is returned when inferring. The inference": [[9, "checks-whenever-an-opaque-object-is-returned-when-inferring-the-inference"]], "can return multiple potential results while evaluating a Python object, but": [[9, "can-return-multiple-potential-results-while-evaluating-a-python-object-but"]], "some branches might not be evaluated, which results in partial inference. In": [[9, "some-branches-might-not-be-evaluated-which-results-in-partial-inference-in"]], "that case, it might be useful to still emit no-member and other checks for": [[9, "that-case-it-might-be-useful-to-still-emit-no-member-and-other-checks-for"]], "the rest of the inferred objects.": [[9, "the-rest-of-the-inferred-objects"]], "List of class names for which member attributes should not be checked (useful": [[9, "list-of-class-names-for-which-member-attributes-should-not-be-checked-useful"]], "for classes with dynamically set attributes). This supports the use of": [[9, "for-classes-with-dynamically-set-attributes-this-supports-the-use-of"]], "qualified names.": [[9, "qualified-names"]], "List of module names for which member attributes should not be checked": [[9, "list-of-module-names-for-which-member-attributes-should-not-be-checked"]], "(useful for modules/projects where namespaces are manipulated during runtime": [[9, "useful-for-modules-projects-where-namespaces-are-manipulated-during-runtime"]], "and thus existing member attributes cannot be deduced by static analysis). It": [[9, "and-thus-existing-member-attributes-cannot-be-deduced-by-static-analysis-it"]], "supports qualified module names, as well as Unix pattern matching.": [[9, "supports-qualified-module-names-as-well-as-unix-pattern-matching"]], "Show a hint with possible names when a member name was not found. The aspect": [[9, "show-a-hint-with-possible-names-when-a-member-name-was-not-found-the-aspect"]], "of finding the hint is based on edit distance.": [[9, "of-finding-the-hint-is-based-on-edit-distance"]], "The minimum edit distance a name should have in order to be considered a": [[9, "the-minimum-edit-distance-a-name-should-have-in-order-to-be-considered-a"]], "similar match for a missing member name.": [[9, "similar-match-for-a-missing-member-name"]], "The total number of similar names that should be taken in consideration when": [[9, "the-total-number-of-similar-names-that-should-be-taken-in-consideration-when"]], "showing a hint for a missing member.": [[9, "showing-a-hint-for-a-missing-member"]], "List of decorators that change the signature of a decorated function.": [[9, "list-of-decorators-that-change-the-signature-of-a-decorated-function"]], "List of additional names supposed to be defined in builtins. Remember that": [[9, "list-of-additional-names-supposed-to-be-defined-in-builtins-remember-that"]], "you should avoid defining new builtins when possible.": [[9, "you-should-avoid-defining-new-builtins-when-possible"]], "Tells whether unused global variables should be treated as a violation.": [[9, "tells-whether-unused-global-variables-should-be-treated-as-a-violation"]], "List of strings which can identify a callback function by name. A callback": [[9, "list-of-strings-which-can-identify-a-callback-function-by-name-a-callback"]], "name must start or end with one of those strings.": [[9, "name-must-start-or-end-with-one-of-those-strings"]], "A regular expression matching the name of dummy variables (i.e. expected to": [[9, "a-regular-expression-matching-the-name-of-dummy-variables-i-e-expected-to"]], "not be used).": [[9, "not-be-used"]], "Argument names that match this expression will be ignored. Default to name": [[9, "argument-names-that-match-this-expression-will-be-ignored-default-to-name"]], "with leading underscore.": [[9, "with-leading-underscore"]], "Tells whether we should check for unused import in init files.": [[9, "tells-whether-we-should-check-for-unused-import-in-init-files"]], "List of qualified module names which can have objects that can redefine": [[9, "list-of-qualified-module-names-which-can-have-objects-that-can-redefine"]], "builtins.": [[9, "builtins"]], "List of method names used to declare (i.e. assign) instance attributes.": [[9, "list-of-method-names-used-to-declare-i-e-assign-instance-attributes"]], "List of member names, which should be excluded from the protected access": [[9, "list-of-member-names-which-should-be-excluded-from-the-protected-access"]], "warning.": [[9, "warning"]], "List of valid names for the first argument in a class method.": [[9, "list-of-valid-names-for-the-first-argument-in-a-class-method"]], "List of valid names for the first argument in a metaclass class method.": [[9, "list-of-valid-names-for-the-first-argument-in-a-metaclass-class-method"]], "Maximum number of arguments for function / method.": [[9, "maximum-number-of-arguments-for-function-method"]], "Maximum number of attributes for a class (see R0902).": [[9, "maximum-number-of-attributes-for-a-class-see-r0902"]], "Maximum number of boolean expressions in an if statement (see R0916).": [[9, "maximum-number-of-boolean-expressions-in-an-if-statement-see-r0916"]], "Maximum number of branch for function / method body.": [[9, "maximum-number-of-branch-for-function-method-body"]], "Maximum number of locals for function / method body.": [[9, "maximum-number-of-locals-for-function-method-body"]], "Maximum number of parents for a class (see R0901).": [[9, "maximum-number-of-parents-for-a-class-see-r0901"]], "Maximum number of public methods for a class (see R0904).": [[9, "maximum-number-of-public-methods-for-a-class-see-r0904"]], "Maximum number of return / yield for function / method body.": [[9, "maximum-number-of-return-yield-for-function-method-body"]], "Maximum number of statements in function / method body.": [[9, "maximum-number-of-statements-in-function-method-body"]], "Minimum number of public methods for a class (see R0903).": [[9, "minimum-number-of-public-methods-for-a-class-see-r0903"]], "List of modules that can be imported at any level, not just the top level": [[9, "list-of-modules-that-can-be-imported-at-any-level-not-just-the-top-level"]], "one.": [[9, "one"]], "Allow wildcard imports from modules that define all.": [[9, "allow-wildcard-imports-from-modules-that-define-all"]], "Analyse import fallback blocks. This can be used to support both Python 2 and": [[9, "analyse-import-fallback-blocks-this-can-be-used-to-support-both-python-2-and"]], "3 compatible code, which means that the block might have code that exists": [[9, "compatible-code-which-means-that-the-block-might-have-code-that-exists"]], "only in one or another interpreter, leading to false positives when analysed.": [[9, "only-in-one-or-another-interpreter-leading-to-false-positives-when-analysed"]], "Deprecated modules which should not be used, separated by a comma.": [[9, "deprecated-modules-which-should-not-be-used-separated-by-a-comma"]], "Create a graph of external dependencies in the given file (report RP0402 must": [[9, "create-a-graph-of-external-dependencies-in-the-given-file-report-rp0402-must"]], "not be disabled).": [[9, "not-be-disabled"], [9, "id7"]], "Create a graph of every (i.e. internal and external) dependencies in the": [[9, "create-a-graph-of-every-i-e-internal-and-external-dependencies-in-the"]], "given file (report RP0402 must not be disabled).": [[9, "given-file-report-rp0402-must-not-be-disabled"]], "Create a graph of internal dependencies in the given file (report RP0402 must": [[9, "create-a-graph-of-internal-dependencies-in-the-given-file-report-rp0402-must"]], "Force import order to recognize a module as part of the standard": [[9, "force-import-order-to-recognize-a-module-as-part-of-the-standard"]], "compatibility libraries.": [[9, "compatibility-libraries"]], "Force import order to recognize a module as part of a third party library.": [[9, "force-import-order-to-recognize-a-module-as-part-of-a-third-party-library"]], "Couples of modules and preferred modules, separated by a comma.": [[9, "couples-of-modules-and-preferred-modules-separated-by-a-comma"]], "Exceptions that will emit a warning when being caught. Defaults to": [[9, "exceptions-that-will-emit-a-warning-when-being-caught-defaults-to"]], "\u201cBaseException, Exception\u201d.": [[9, "baseexception-exception"]], "pypyroject.toml": [[10, "pypyroject-toml"]], "Bailo Python Client": [[11, "bailo-python-client"], [2, "bailo-python-client"]], "Key Features": [[11, "key-features"]], "Installing": [[11, "installing"]], "Getting Started": [[11, "getting-started"]], "Documentation": [[11, "documentation"]], "Building locally": [[11, "building-locally"]], "Development": [[11, "development"]], "Install and add precommit": [[11, "install-and-add-precommit"]], "Install the package locally": [[11, "install-the-package-locally"]], "Testing": [[11, "testing"]], "bailo.core package": [[0, "bailo-core-package"]], "Welcome to Bailo\u2019s Python Client documentation!": [[2, "module-bailo"]], "Packages:": [[2, null]], "Notebooks:": [[2, null]], "Managing Datacards": [[4, "Managing-Datacards"]], "Creating a new datacard in Bailo": [[4, "Creating-a-new-datacard-in-Bailo"]], "Creating and updating the base datacard": [[4, "Creating-and-updating-the-base-datacard"]], "Populating the datacard": [[4, "Populating-the-datacard"]], "Retrieving an existing datacard": [[4, "Retrieving-an-existing-datacard"]], "Experiment Tracking with Bailo & MLFlow": [[5, "Experiment-Tracking-with-Bailo-&-MLFlow"]], "Connecting with Bailo": [[5, "Connecting-with-Bailo"]], "Setting up MLFlow Tracking": [[5, "Setting-up-MLFlow-Tracking"]], "Preparing a custom schema for tracking": [[5, "Preparing-a-custom-schema-for-tracking"]], "Creating a new experiment": [[5, "Creating-a-new-experiment"]], "Conducting experiment runs": [[5, "Conducting-experiment-runs"]], "Running an experiment with the Bailo python client": [[5, "Running-an-experiment-with-the-Bailo-python-client"]], "Creating a dummy MLFlow experiment run": [[5, "Creating-a-dummy-MLFlow-experiment-run"]], "Importing existing experiments from MLFlow into Bailo": [[5, "Importing-existing-experiments-from-MLFlow-into-Bailo"]], "Publishing results to Bailo": [[5, "Publishing-results-to-Bailo"]], "Managing Models & Releases (ResNet-50 Example with PyTorch)": [[6, "Managing-Models-&-Releases-(ResNet-50-Example-with-PyTorch)"]], "Creating a new ResNet-50 model in Bailo": [[6, "Creating-a-new-ResNet-50-model-in-Bailo"]], "Creating and updating the base model": [[6, "Creating-and-updating-the-base-model"]], "Creating and populating a model card": [[6, "Creating-and-populating-a-model-card"]], "Retrieving an existing model": [[6, "Retrieving-an-existing-model"]], "Creating and managing releases for models": [[6, "Creating-and-managing-releases-for-models"]], "Creating a release": [[6, "Creating-a-release"]], "Preparing the model weights using PyTorch": [[6, "Preparing-the-model-weights-using-PyTorch"]], "Uploading weights to the release": [[6, "Uploading-weights-to-the-release"]], "Retrieving a release": [[6, "Retrieving-a-release"]], "Downloading weights from the release": [[6, "Downloading-weights-from-the-release"]], "Loading the model using PyTorch": [[6, "Loading-the-model-using-PyTorch"]], "bailo.helper package": [[1, "module-bailo.helper.access_request"]]}, "indexentries": {"accessrequest (class in bailo.helper.access_request)": [[1, "bailo.helper.access_request.AccessRequest"]], "datacard (class in bailo.helper.datacard)": [[1, "bailo.helper.datacard.Datacard"]], "entry (class in bailo.helper.entry)": [[1, "bailo.helper.entry.Entry"]], "experiment (class in bailo.helper.model)": [[1, "bailo.helper.model.Experiment"]], "model (class in bailo.helper.model)": [[1, "bailo.helper.model.Model"]], "release (class in bailo.helper.release)": [[1, "bailo.helper.release.Release"]], "schema (class in bailo.helper.schema)": [[1, "bailo.helper.schema.Schema"]], "__init__() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.__init__"]], "bailo.helper.access_request": [[1, "module-bailo.helper.access_request"]], "bailo.helper.datacard": [[1, "module-bailo.helper.datacard"]], "bailo.helper.entry": [[1, "module-bailo.helper.entry"]], "bailo.helper.model": [[1, "module-bailo.helper.model"]], "bailo.helper.release": [[1, "module-bailo.helper.release"]], "bailo.helper.schema": [[1, "module-bailo.helper.schema"]], "card_from_schema() (bailo.helper.entry.entry method)": [[1, "bailo.helper.entry.Entry.card_from_schema"]], "card_from_template() (bailo.helper.entry.entry method)": [[1, "bailo.helper.entry.Entry.card_from_template"]], "create() (bailo.helper.access_request.accessrequest class method)": [[1, "bailo.helper.access_request.AccessRequest.create"]], "create() (bailo.helper.datacard.datacard class method)": [[1, "bailo.helper.datacard.Datacard.create"]], "create() (bailo.helper.model.experiment class method)": [[1, "bailo.helper.model.Experiment.create"]], "create() (bailo.helper.model.model class method)": [[1, "bailo.helper.model.Model.create"]], "create() (bailo.helper.release.release class method)": [[1, "bailo.helper.release.Release.create"]], "create() (bailo.helper.schema.schema class method)": [[1, "bailo.helper.schema.Schema.create"]], "create_experiment() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.create_experiment"]], "create_release() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.create_release"]], "data_card (bailo.helper.datacard.datacard property)": [[1, "bailo.helper.datacard.Datacard.data_card"]], "data_card_schema (bailo.helper.datacard.datacard property)": [[1, "bailo.helper.datacard.Datacard.data_card_schema"]], "data_card_version (bailo.helper.datacard.datacard property)": [[1, "bailo.helper.datacard.Datacard.data_card_version"]], "delete() (bailo.helper.access_request.accessrequest method)": [[1, "bailo.helper.access_request.AccessRequest.delete"]], "delete() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.delete"]], "download() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.download"]], "download_all() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.download_all"]], "from_id() (bailo.helper.access_request.accessrequest class method)": [[1, "bailo.helper.access_request.AccessRequest.from_id"]], "from_id() (bailo.helper.datacard.datacard class method)": [[1, "bailo.helper.datacard.Datacard.from_id"]], "from_id() (bailo.helper.model.model class method)": [[1, "bailo.helper.model.Model.from_id"]], "from_id() (bailo.helper.schema.schema class method)": [[1, "bailo.helper.schema.Schema.from_id"]], "from_mlflow() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.from_mlflow"]], "from_version() (bailo.helper.release.release class method)": [[1, "bailo.helper.release.Release.from_version"]], "get_card_latest() (bailo.helper.entry.entry method)": [[1, "bailo.helper.entry.Entry.get_card_latest"]], "get_card_revision() (bailo.helper.entry.entry method)": [[1, "bailo.helper.entry.Entry.get_card_revision"]], "get_image() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_image"]], "get_images() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_images"]], "get_latest_release() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_latest_release"]], "get_release() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_release"]], "get_releases() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.get_releases"]], "get_roles() (bailo.helper.entry.entry method)": [[1, "bailo.helper.entry.Entry.get_roles"]], "get_user_roles() (bailo.helper.entry.entry method)": [[1, "bailo.helper.entry.Entry.get_user_roles"]], "log_artifacts() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_artifacts"]], "log_dataset() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_dataset"]], "log_metrics() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_metrics"]], "log_params() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.log_params"]], "model_card (bailo.helper.model.model property)": [[1, "bailo.helper.model.Model.model_card"]], "model_card_schema (bailo.helper.model.model property)": [[1, "bailo.helper.model.Model.model_card_schema"]], "model_card_version (bailo.helper.model.model property)": [[1, "bailo.helper.model.Model.model_card_version"]], "module": [[1, "module-bailo.helper.access_request"], [1, "module-bailo.helper.datacard"], [1, "module-bailo.helper.entry"], [1, "module-bailo.helper.model"], [1, "module-bailo.helper.release"], [1, "module-bailo.helper.schema"], [2, "module-bailo"]], "publish() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.publish"]], "start_run() (bailo.helper.model.experiment method)": [[1, "bailo.helper.model.Experiment.start_run"]], "update() (bailo.helper.access_request.accessrequest method)": [[1, "bailo.helper.access_request.AccessRequest.update"]], "update() (bailo.helper.entry.entry method)": [[1, "bailo.helper.entry.Entry.update"]], "update() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.update"]], "update_data_card() (bailo.helper.datacard.datacard method)": [[1, "bailo.helper.datacard.Datacard.update_data_card"]], "update_model_card() (bailo.helper.model.model method)": [[1, "bailo.helper.model.Model.update_model_card"]], "upload() (bailo.helper.release.release method)": [[1, "bailo.helper.release.Release.upload"]], "bailo": [[2, "module-bailo"]]}}) \ No newline at end of file diff --git a/lib/python/docs/bailo.helper.rst b/lib/python/docs/bailo.helper.rst index 8103996a7..a06dc4ab6 100644 --- a/lib/python/docs/bailo.helper.rst +++ b/lib/python/docs/bailo.helper.rst @@ -7,11 +7,20 @@ bailo.helper package :undoc-members: :show-inheritance: -.. automodule:: bailo.helper.model +.. automodule:: bailo.helper.datacard + :members: + :undoc-members: + :show-inheritance: + +.. automodule:: bailo.helper.entry :members: :undoc-members: :show-inheritance: +.. automodule:: bailo.helper.model + :members: + :undoc-members: + :show-inheritance: .. automodule:: bailo.helper.release :members: From b0829d2a468f39d0b03551965f92660346f04601 Mon Sep 17 00:00:00 2001 From: BW27492 <BW27492@euro.ngc.com> Date: Fri, 17 May 2024 15:04:36 +0000 Subject: [PATCH 11/12] Python version bump to 2.3.0 --- lib/python/src/bailo/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/python/src/bailo/__init__.py b/lib/python/src/bailo/__init__.py index 7cd90707c..f1bfd2277 100644 --- a/lib/python/src/bailo/__init__.py +++ b/lib/python/src/bailo/__init__.py @@ -8,7 +8,7 @@ # Package Version -__version__ = "2.2.0" +__version__ = "2.3.0" from bailo.core.agent import Agent, PkiAgent, TokenAgent From 10c3020d3a5b3b7285d5c883483f52770fb18a0e Mon Sep 17 00:00:00 2001 From: BW27492 <BW27492@euro.ngc.com> Date: Fri, 17 May 2024 15:06:45 +0000 Subject: [PATCH 12/12] Python version bump to 2.3.0 --- lib/python/src/bailo/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/python/src/bailo/__init__.py b/lib/python/src/bailo/__init__.py index f1bfd2277..29e08f375 100644 --- a/lib/python/src/bailo/__init__.py +++ b/lib/python/src/bailo/__init__.py @@ -7,7 +7,7 @@ from __future__ import annotations -# Package Version +# Package Version 2.3.0 __version__ = "2.3.0"