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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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">&quot;&quot;&quot;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">&quot;name&quot;</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span>
+                <span class="s2">&quot;kind&quot;</span><span class="p">:</span> <span class="n">kind</span><span class="p">,</span>
                 <span class="s2">&quot;description&quot;</span><span class="p">:</span> <span class="n">description</span><span class="p">,</span>
                 <span class="s2">&quot;visibility&quot;</span><span class="p">:</span> <span class="n">visibility</span><span class="p">,</span>
                 <span class="s2">&quot;teamId&quot;</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">        &quot;&quot;&quot;</span>
-        <span class="n">filtered_json</span> <span class="o">=</span> <span class="n">filter_none</span><span class="p">({</span><span class="s2">&quot;name&quot;</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span> <span class="s2">&quot;description&quot;</span><span class="p">:</span> <span class="n">description</span><span class="p">,</span> <span class="s2">&quot;visibility&quot;</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">&quot;name&quot;</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span> <span class="s2">&quot;kind&quot;</span><span class="p">:</span> <span class="n">kind</span><span class="p">,</span> <span class="s2">&quot;description&quot;</span><span class="p">:</span> <span class="n">description</span><span class="p">,</span> <span class="s2">&quot;visibility&quot;</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">&quot;</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">&quot;</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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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">&quot;mtr&quot;</span>
     <span class="n">MODEL_SENIOR_RESPONSIBLE_OFFICER</span> <span class="o">=</span> <span class="s2">&quot;msro&quot;</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">&quot;&quot;&quot;The type of model.&quot;&quot;&quot;</span>
+
+    <span class="n">MODEL</span> <span class="o">=</span> <span class="s2">&quot;model&quot;</span>
+    <span class="n">DATACARD</span> <span class="o">=</span> <span class="s2">&quot;data-card&quot;</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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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 &mdash; 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 &amp; MLFlow</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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">&quot;&quot;&quot;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">    &quot;&quot;&quot;</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">-&gt;</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">-&gt;</span> <span class="n">Datacard</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;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">        &quot;&quot;&quot;</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">&quot;model&quot;</span><span class="p">][</span><span class="s2">&quot;id&quot;</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">&quot;model&quot;</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">-&gt;</span> <span class="n">Datacard</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;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">        &quot;&quot;&quot;</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">&quot;model&quot;</span><span class="p">]</span>
+        <span class="k">if</span> <span class="n">res</span><span class="p">[</span><span class="s2">&quot;kind&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;data-card&quot;</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">&quot;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()?&quot;</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">&quot;name&quot;</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">&quot;description&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;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">        &quot;&quot;&quot;</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>&#169; 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 &mdash; 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 &amp; MLFlow</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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">-&gt;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;Upload and retrieve any changes to the entry summary on Bailo.&quot;&quot;&quot;</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">&quot;model&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;Create a card using a schema on Bailo.</span>
+
+<span class="sd">        :param schema_id: A unique schema ID</span>
+<span class="sd">        &quot;&quot;&quot;</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">&quot;card&quot;</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">&quot;&quot;&quot;Create a card using a template (not yet implemented).</span>
+
+<span class="sd">        :raises NotImplementedError: Not implemented error</span>
+<span class="sd">        &quot;&quot;&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;Get the latest card from Bailo.&quot;&quot;&quot;</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">&quot;card&quot;</span> <span class="ow">in</span> <span class="n">res</span><span class="p">[</span><span class="s2">&quot;model&quot;</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">&quot;model&quot;</span><span class="p">][</span><span class="s2">&quot;card&quot;</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">&quot;A model card doesn&#39;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">&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;Get a specific entry card revision from Bailo.</span>
+
+<span class="sd">        :param version: Entry card version</span>
+<span class="sd">        &quot;&quot;&quot;</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">&quot;modelCard&quot;</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">&quot;&quot;&quot;Get all roles for the entry.</span>
+
+<span class="sd">        :return: List of roles</span>
+<span class="sd">        &quot;&quot;&quot;</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">&quot;roles&quot;</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">&quot;&quot;&quot;Get all user roles for the entry.</span>
+
+<span class="sd">        :return: List of user roles</span>
+<span class="sd">        &quot;&quot;&quot;</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">&quot;roles&quot;</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">-&gt;</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">&quot;card&quot;</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">&quot;id&quot;</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">&quot;name&quot;</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">&quot;description&quot;</span><span class="p">]</span>
+
+        <span class="k">if</span> <span class="n">res</span><span class="p">[</span><span class="s2">&quot;visibility&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;private&quot;</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">&quot;version&quot;</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">&quot;schemaId&quot;</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">&quot;metadata&quot;</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>&#169; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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">&quot;&quot;&quot;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">-&gt;</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">-&gt;</span> <span class="n">Model</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Build a model from Bailo and uploads it.</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;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">        &quot;&quot;&quot;</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">&quot;model&quot;</span><span class="p">][</span><span class="s2">&quot;id&quot;</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">&quot;model&quot;</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">&quot;model&quot;</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">        &quot;&quot;&quot;</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">&quot;model&quot;</span><span class="p">]</span>
+        <span class="k">if</span> <span class="n">res</span><span class="p">[</span><span class="s2">&quot;kind&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;model&quot;</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">&quot;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()?&quot;</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">&quot;name&quot;</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">&quot;description&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Upload and retrieves any changes to the model summary on Bailo.&quot;&quot;&quot;</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">&quot;model&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Upload and retrieves any changes to the model card on Bailo.</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;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">        &quot;&quot;&quot;</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">&quot;card&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Create a model card using a schema on Bailo.</span>
-
-<span class="sd">        :param schema_id: A unique schema ID</span>
-<span class="sd">        &quot;&quot;&quot;</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">&quot;card&quot;</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">&quot;&quot;&quot;Copy a model card from a different model (not yet implemented).</span>
-
-<span class="sd">        :raises NotImplementedError: Not implemented error</span>
-<span class="sd">        &quot;&quot;&quot;</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">&quot;&quot;&quot;Create a model card using a template (not yet implemented).</span>
-
-<span class="sd">        :raises NotImplementedError: Not implemented error</span>
-<span class="sd">        &quot;&quot;&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Get the latest model card from Bailo.&quot;&quot;&quot;</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">&quot;card&quot;</span> <span class="ow">in</span> <span class="n">res</span><span class="p">[</span><span class="s2">&quot;model&quot;</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">&quot;model&quot;</span><span class="p">][</span><span class="s2">&quot;card&quot;</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">&quot;A model card doesn&#39;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">&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Get a specific model card revision from Bailo.</span>
-
-<span class="sd">        :param version: Model card version</span>
-<span class="sd">        &quot;&quot;&quot;</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">&quot;modelCard&quot;</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">-&gt;</span> <span class="n">Experiment</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;Create an experiment locally</span>
+
+<span class="sd">        :return: An experiment object</span>
+<span class="sd">        &quot;&quot;&quot;</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">&quot;&quot;&quot;Get all roles for the model.</span>
-
-<span class="sd">        :return: List of roles</span>
-<span class="sd">        &quot;&quot;&quot;</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">&quot;roles&quot;</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">&quot;&quot;&quot;Get all user roles for the model.</span>
-
-<span class="sd">        :return: List of user roles</span>
-<span class="sd">        &quot;&quot;&quot;</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">&quot;roles&quot;</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">&quot;id&quot;</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">&quot;name&quot;</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">&quot;description&quot;</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">&quot;visibility&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;private&quot;</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">&quot;version&quot;</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">&quot;schemaId&quot;</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">&quot;metadata&quot;</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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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">-&gt;</span> <span class="n">Any</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Give returns a Reading object given the file id.</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;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">&quot;wb&quot;</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">&quot;content-length&quot;</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">&quot;white&quot;</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="n">colour</span> <span class="o">=</span> <span class="s2">&quot;green&quot;</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">&quot;B&quot;</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">&quot;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">&quot;</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">&quot;wb&quot;</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">&quot;&quot;&quot;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">        &quot;&quot;&quot;</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">&quot;release&quot;</span><span class="p">][</span><span class="s2">&quot;files&quot;</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">&quot;Release has no associated files.&quot;</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">&quot;name&quot;</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">-&gt;</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">        &quot;&quot;&quot;</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">&quot;</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">.zip&quot;</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">&quot;rb&quot;</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">&quot;rb&quot;</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">&quot;white&quot;</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">&quot;blue&quot;</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">&quot;B&quot;</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">&quot;uploading </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</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">&quot;read&quot;</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">&quot;file&quot;</span><span class="p">][</span><span class="s2">&quot;id&quot;</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">&quot;file&quot;</span><span class="p">][</span><span class="s2">&quot;id&quot;</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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../../../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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 &mdash; 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 &amp; 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 &amp; MLFlow</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../models_and_releases_demo_pytorch/">Managing Models &amp; 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=&#39;&#39;, key=&#39;&#39;, auth=&#39;&#39;)</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">&quot;http://127.0.0.1:8080&quot;</span><span class="p">)</span> <span class="c1"># &lt;- 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">&quot;ImageNet&quot;</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;ImageNet dataset consisting of images.&quot;</span><span class="p">,</span> <span class="n">team_id</span><span class="o">=</span><span class="s2">&quot;uncategorised&quot;</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">&quot;New Name&quot;</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">&#39;minimal-data-card-v10&#39;</span><span class="p">)</span>
+
+<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;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">.&quot;</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">&#39;overview&#39;</span><span class="p">:</span> <span class="p">{</span>
+    <span class="s1">&#39;storageLocation&#39;</span><span class="p">:</span> <span class="s1">&#39;S3&#39;</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">&quot;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">.&quot;</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">&quot;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">&quot;</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 &amp; MLFlow" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+    </div>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; 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 &amp; 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 &amp; 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 &amp; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Managing Models &amp; 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 &amp; 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=&quot;resnet50_weights.pth&quot;)</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">&quot;large_file.txt&quot;</span><span class="p">)</span>
-
-<span class="c1">#with open(&quot;resnet50_weights.pth&quot;, &quot;rb&quot;) as f:</span>
-    <span class="c1">#release_one.upload(&quot;resnet50_weights.pth&quot;, 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">&quot;resnet50_weights.pth&quot;</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=[&quot;*.txt&quot;,</span> <span class="pre">&quot;*.json&quot;]</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(&quot;resnet50_weights.pth&quot;)</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">&quot;resnet50_weights.pth&quot;</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="s2">&quot;bailo_resnet50_weights.pth&quot;</span><span class="p">)</span>
-
-<span class="c1">#with open(&quot;bailo_resnet50_weights.pth&quot;, &quot;wb&quot;) 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=&quot;resnet50_weights.pth&quot;, path=&quot;bailo_resnet50_weights.pth&quot;)</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">&quot;downloads&quot;</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
zcmV-6GRe)ZVbf%gh=1#j-8how|9T2edAG|3QpcCB?!ne#ez@#(w=uTMlXi7sfdO)q
z=P)zX){#!@;`Hgk0P`CAdix~9xR4?xQ6eSHVlZ9Kqlk|Yyat28;7yw4r8u2`I+lkv
zm*SatME^?uhe*D=fv>xLS;<{`CyT}*>^?r7;@Q2_oclbjYk%?FVf1tC4l<XG#3E&L
zUmn6a?_{%t?UXkA`$ddpy{y2tURGWkS=`4jS$r#Krrq^*R%Fff^|CS-wWDE<Zc4+s
zpfx+*=mzarW83C)`9&7-t<$kBY#$3?Nefx*(QRb$E@&m2JGz~0=J1x<=UM#hM@+j{
zhBu&X9Ug9%>wk2=mvwzz$-lL-j+D6vb(`gK6+or_lhz9{R7crFnITTS0w~X~v!m)A
zD>1lcR-)AVdwEP(f;2Kcu7Eg{4@F+4hwGa&c9<eP$_>z#_dS3C?iD(zAu98g?AQCW
zI;_R0%Jq6&x3#P`L0ZATdM2pk*GxXFkbuU@a();l%YV7C4OWb_u1j6tR^@S(Hn@sz
zGPM%YiqS#<%c~Za^ldZ&pf!pB|Ef;T2++${0Icd40I;Gh+VwLZV63XeIy;_ndEK61
z5ebEmMa$zd++IVT-DS~K=YP(ML!iah<J!G``T6CmmshWWJ#CsQyJ?ka9R>0Jm)Do?
zqWRxLLx24xtFxOd&zf_T_&wg;$E&x0dHMNrtqi-5zyAF0?W<^*tCB2*VEKW8s_pvI
z<%hSwTwPyXe){;!hfi;Res_8O%bPcEUtL};5`$4cU%vYDhqtd@zEi+|d3*WWQnX)w
z`>=rZ6HWoqow8%wy?piR^3x|J{J;Eq`RVft0e|8<=eNB)HCb6i4@bke`x$<{)PDnx
z`50RG?n>4t^<NnYb1(Cgtac*{lB)^Pjp#B8uzQJrUUhJ8qiVD$nBBgT>F73o8JyQE
zunZ23ob0d}UVA!3YOCl|vyjC#pJv^?wlD(QY{0vqp@tani&>UWRjH`dq`wBpvNX2A
z`+q8{ng`k%zy%#=2tvK(+NrfrGzly7f=+{cw5~^V7mI5busevvX{55IB0Har1Unx@
z1CUYEJProTW8F!X0{J$=!2pxn=^&K&$*9|z#C0m<+g*NB|IUu1j>YLBE!G9|&;SBE
z)iJ-#%ZF7sd3kr8R!w%B?wfiw5)AWNHh-&e6mymB*UNKCt8qU;ILxWN$+OYpqHv75
zQB{0hwM9J2d)-~5`WkXA?q)XkwRC#?3LyVxGzewEYGkv+bc5dJ)d2Mx1e(3q*2T0N
zFcxC5LavJ<+|(GySY!rypcYv`HWr&LlTH{fkli$KiwtwBO_M<g9QQrWsk6yojDPs~
zqmK~3l^G!LDaIBUa7MER2d5ybYc0izH(G`Wv2|kEv2k6J7}*mM(IFka1zpMI51aj;
zS}ur68Oe2X_$g0s)B>6~eg^B`;*{>cs9C+w`w0I`;Ln6fyl`W*p(WU7<P_>NUCJ=P
zXZ+{D()0+8EL5{iehn1?!Wd%92Y(*_r_hoq2qLy@;+pyxTz*-{tBy<)-+~K=AgJiV
zfobAfc;O2aZ~c0=0cxMVWU(X6#BX`OgcsW_$?@fPyz?Xx5=9UGer(wsL4+)Evw#z)
zHu*I|gxKkz7xFgqJw}kYdBF{zoBkXlMY~Lhc2b6rk=j78SnOD};`t`N#eWpOWW<hz
z2Zj(u$rU|rhcSoqBvBH@jow}i<IMLcL1M@7AS7~@B2JvRk=zfloFj;nrClmYJ0r>T
znC7qoj^zxIz>VPaeF!eo6VDkfi3cZ+JX&fD-&-sza)%H_%cZ>>i$&7_fpp;lj)c3$
z3poN3LAyrSdJ}2u7;)=Jd4Idm-G!od0D*Mz0vhk;auE$gFlD@$I`DY8lo}zFFkVKA
zwp=bD@rRMcNjDlYy-d(isA!Ib;xC-!hZy0cagtIP_%aEJcb+6pB09)jCK2(@lPr*k
zP779uMF4?xO9Z3?_cam{LMY)98Lh~GHG*0&QPc}WUL|OVc#%RaH-FD;?hv9_x#;%6
zQn`pbgeXofJ|I~p7BdIX#0iBV<jX`t)>(=;ajdHs%Y?E30_nm9^xW%+7t{k3Ngpow
z=p~YPu}5K|sAEN5x&qtWAw;oqEgUr#a{x_*P$M^M7DzXO5<?s*@8Y)Ym;-1cg<8I*
zIqX4H(W2pXqs5XTcYg>`q+E+<L7O{-C{nJaW7P1@lSD|=t~B0z0D*LI0<P%%ZAjm5
z7j%91j##{8E`J!=lyr1!1_Ok@z^$DSiTc;i{GTF9?(RG+5TU!v7C;jtRQRMmel>26
zU|trK;A?kTE?k!WHM=>2XjyirD*KuS9;;1X-wP#NAR|O0?|;{bNH+rm>E;E5?Q(=T
zc*Ah?*RZ14*sf)fm1?g}cgwOHH93^Gx7l7+k+RHRUR=f&rA;IE_eHi(b6(<?YB6$I
zGLAe@>hht87m;pYPJEj$oD7Y~iQT%xIq@x~@ZADie(qvuIBArmu@nB_zUeH*q&VFz
zQ2e#K^%*3Q_kSL02vMM1JcG!^q7ARN2GVH(b%gJDN8;#K=dXT1X@~G=>J}&cInil#
zByITp*<i{wqUzY;EhN@hu?(x^_ebl*%kM<*gfpy?U&mf=qJRdA=2)cyN8E3s0b|87
z%*lVS@A3L}4x`cz??_L7j+P{L1bQ!C2T{d~*Ih1NE`MQ%5lXm1&Izwfthla=CYXMW
z@cIVK7Se01ScZ7{V`nk{efTi4cnJqr<(G>(fQqD_6P~VM)BXHVDeYVNz7G-Q?m|v_
z<^<V!PI&?-mx*f90IU<%z(ml-2;9#$uteHEMkwJTIZZl)RgxN%aMD<5y)g|zQre*m
zQzWrcO@D`51c^2XwV0)g5i-(%8%Yr{^L<Vjx*Tj>h7T2GkT+uTYpfWtrkO7lMF>%}
zY<7-{#RA$O!IaUWx@j;L3+uu}&@K{KXWLjMt_BIFTqLSa=&?#v4H8VbNL0=lvPx3M
z2qlb`Qzs=^ETjeqqKX!;%XhL^zz!miE=)+TLw|Has`pkj!|+2yxyvSNCzs32_jqBh
z7cXhPEHUAv3#6Sm1P>L}Jqe$sixDz*k2#j#W{x06o-XOl5{WwQd6Gp^)$7En1LUe>
z1?wf~St?);CW1Cr;I)zliMUR-daZDEkaSUPJss{dE8HO1XOd=_V6lFU>9k7Wqzk2u
zb$<)aq;86!jS+a5*lCHpLzHmRIcasSpV)!j&mA@OF;a%fi|`@B^zXvYP{oQDX;*pj
zTm{g?3Kn_v=SiOxKoc#PPOG(8Gz}0$wNyOJ*tJ$f1PP{$71c=!wp3IHB$zT*)JP|q
zCv8~(O}t>M`l1s)I!QAp7$+TzTzK6SX@CAtQKiRDYNPqqW+~!CirwFg=Wv@R8Ig+9
z(@iCZpO7kmdpyD>D-QD8FgQp2Ci8uHl%gpG#vT1oi;w5#UX5N(T5%}%E$neqi1qmg
z3y71&osc>iONuc{fu*=**r2w8Jv8T2wA@A6$eXhKQa|lw47fhXW4X&t=i<gKaDSTP
zsd%3j>0MUb35t>sS0)8PNLi1t-zxSbO$zyt5M?sj2WBLB^lB1He-)`vUj=;?<~B``
zu(&v53B@W&U;A<NCy^G*WXy`DQe9*}jDDMw>aERb{}EU+1}WYp`}?#|JN2X~*H+W}
z06?M<OalX9X~iA6Blk+EV`XL(8h;Ln9u8~ANd+!&`E`TNcQu97eOz3RZ4J=Py-f7{
z|M*G5Sw5o#{dEEezX|nCbl(Jhv&Gb*5h2r?OKVMRI;^6eL+(#znkLDLv8mi!bbltZ
zacJS_O=c#>EGuXoh>)~6BxvR7y1r57RWcs579#L8Tqk#N5Sk8~5$KE_vwz};Omcl0
zgQmC9(#*_YzJ``*W&_iQmUOFAd1~{nN@E-6qldlw9a|u{^4+OOe#`2{uAES@u4Z7|
zsYrhh7jwZp)E9As8K^rRxo#?DhAO6jxyZ-$R9KM*pZSY;$eMe$D1Rs3zk7ox=Aj}y
z+Lr|m1f^+5nN)32M@#qUm46?r`y{N>CHNF4Yat0Al%AedC&hGNcv3aLS~VIYTsLbU
z+T-z@Q1C*pCKgEB$E7Cj<63J1l5tPy)%G%dU={M6EJmu(gX*nh_Gx0UpjJib&sO(H
zewT~|t%Qi(4YuU71N<`sa}{qtD6`|Ktau#p#Mp7v3CuXUd#SasTz@(c-UbxIy$y>Y
zeGFGOD_dLwxOC?OuIPajvbs;`6td3GNN}p;DXpl(?%TRi)j*z&<hHC#CySTuV;HU>
zQ=@{&1pBZQnb2f0`cUKt6kN%=%^TcJE$lQON5R;mVZI6eCKhx6HBS}BE-*t7M;_Uf
zGcK19Ev}}^_<5uZW`7}b#Ef_x=wJs>4G@divri{j=UO&6{@Rls*vq@wrw)rpubGzk
zlQO>b5dA#TohU=qwX)L9X)HotEA7f^e?M)#%yC<LtM`;H>v!Tx9}PdglJy7KB!76O
zrqvV@1yButJbwn>C-GwT7c$i`3oIZ({@LBxtUCSW&1ldSFn_vj>olb}rm@{yyo#d-
zjSIEWSeD=>c3_2!YLjU8RGI^4z_HY8%S4|m!r6&xN?`&NV4l@!+SVy*ZQfGu4^z9O
zNF9CXj(Q!DYCq~~{T<X2&4&B@k#M}ln)%RYTnL<pC|WapW{4)9%<k^B`2)qT9#XGE
z&@CdtL}W{Wa(~N*U5GU`uR)Mi6)2Ie2~eK;EbY~qYPpc_Jixqm2>y;0O1%lc>$PQp
zDrSx$dbK4mlg;C9osqPVk#)fUPnN4`yh`tNp;xBRZtc0W3)QRV|L2vrv!lBv(fxm;
zHvc$Vgl_%Ls_xofkF&M?!1jr)pDwP(&}@I$is``Py?<Ldbze=PdOUecr)oO;x2ICI
z{n%uh{&f!75SWgmb~o#$=LK%c07ce2E;+k+fV0x3v`qU?Iz9OmX5Tg+3)S$H)VI2s
zwP$1N7|2N>LY7Fk?4advq$IOmjOK~=m1ZV<uG82`_Kf+M%D$R}@Qm=F%3m-5T+tSH
zcC|Vs`+xFy%o_Ed;x@b69eYI%D4q^~+MUy5J`VP1@M8kRb7lD0yhWe$3=-G&g~y+t
zikAYI(xisvFKy&O<f?r{d8^}M1Z{TU8A-@_&sOKdy{y#EPqk(v3y4pv)jsKLmG&r2
zdcX+)C*`evHZh_77R0L{Fxk8aoa~bhSZ&qLqkpn*T*QB4O`KA29F=M=g53A2H>TJ~
zO`55)p>J|Jy5x}IJdsxCq%4$mR#s{kCo82_A$@hQ4fsm|I2a-!@Noga5gG>viO!kV
z;rwr*fCK;uh@=9bovV2z@6_(H0xz1fc%gb!T{ruCJt(0fp~2|v;;XX2(wkg0RF+8e
zynpSXRh!bM`&RHT1tW<LNoXWg9$$!1eSuC-43c=9?c`2qELDGw{;Hy|>OmIyHO*TL
zwNeu!ycIgG(<IAF{)!@XUj=^M4T_f9N2z|4l~PRoFMB`Ea4eLh)lJq^&?ENBY?zQJ
z7Kxa2yqU$sE|oJJHwnWefXS8raKQdt!+#h)WR<GkQmrDj+rFyR<Tn@r3b`-_*-fqn
zEKUVbP2);!2LJMK5cKGUnjS19xBDQH&`8=aG)Oz~`CbO8KPJODsqf1+KO{Ho457(R
zEs2rJM}m7*A5~9H;s_*e*c*dD7qD_Wn&-J1sClL)bNLlEu=mQAR^9GaO|!*bT7Un#
zO|!gJGkIGa<gJ=|4jye+04m;{_zN%#V*W||`R$+nd?DU`cyoDm`Qg>2_0Q`!FW<iV
z^-BHp>xb8uZ{B{me7);wRz4(p6QO1$Ys}b-k@e41NkgZ7@<4}d{vN#*`bz*3dMl%*
zyl#}*tK3dpb}ODj5*mq)^_pIPMt|wBbCriPikINy(s<OQ=I8=H)-YegGLodUb{(Xm
zs%Q$#ZjpIP{cQ@M8o(Y5e?k=qdI?)8rh2cM(Xbg{Nx;Q3r3KQ$64@;>&(r~yIV~XE
z7ep$wS~3`U!8NcDenfv%Xj*$r`~p;H5M{L**hB3fviv~NYS>%!VKrJ+HGkPIH1?9g
zZ4g(_I3UtU^Ke&X1CDvf;2|Cy_m1#InxAVuTGT|5=QnC@Q!{0`{{qFSircH|Ru$dW
zXi_9~dqUcqlH7W*c)oxo)1%dvCA=gs)>CLOL0~W&tL9N?(42q<Ez4*E(Db_f0#<9c
z9@L6of31_RS>2|2Qa9}(D}R%7*`jc1UYE%oSPNj9;dD^(D3r;aPw_R7XiX??@tD{J
zu|L^~|5LW8A^->gK*tyX&}hC8a(B1utJmDOwdJFd#~ZM88nuPJX;l{oq11{6?QoE4
zTd$hpMlF#LL%&a`5mifNjbGWV3INps%kr5amgukqVL>x9mbiiW6MwLT#!_|l)?I<C
zJG>UaD?N@SG-jw5TDG<tP&o*i-4)9IJiv%c+q{9!IeeVW)WK%(FByrqV>o~jNdS^<
z$^#PA0we9jYl4D~PcOMy>g(!*LeP!ToO7Qp<Fw;HJ6-K2J(&Fn*TlnprYeE0tu%i~
z&oyXY$y*%p-7Z)42Y=rBj!U%>_Rs0TY;?Ga5k}i_1OwH|Fc+fRJF9+{(uTUHwv~T3
z@nqud^cW}p{^!(6u6rTOKfia&l4uSorFu4xHj=c-lgw^$Jo0T=fT~5p8rW6Z64PeY
z{NBo`gf`2YtRJpvG|*r5Kb#7L`B!GJp3@9`R3j#XQ={ylMt@y)o5`wnyAF9!)UM*x
zHaMKei`@bk=61rM*<E7@3&ZV?)T<v~Jb~>BymJgVeSK9$wpGzdbSfKwQwx(0XHsJz
z@3!XXVdi!%Z~m&bK*>$p_|@JBAG9Z^PH_WeqN@-}bWmzYa<3t%3)Sw<)W5%%U~N3y
z%R+5;pm!$aDS!Q2D|Ojf%^Ij?0V>)(nG-g%m-1A=X7Ge0G!hu7gv6SG{i%_VN*E;E
zj0ywgs9)x)nh!G1j#-1#qG}IiNLwq_0S4L;>`Ixc8MVYtTs!kTO75wE4GVbXVhO+k
zTisd=4VC~bfmlD(g0KXwRe<Hz!SSRz3q1{?whA|D=YN+;-$3>dJHHF_`);hDT%yZ}
zm#Cvm3$6)rMJS6kIl^&Ta-V)>Qv8f&&x~9vv41Z*Aaqe(@Ct}XRLA7#P)Gui1Rx<T
zeI}&7-f)fII45u00v)O>8VwEVyfju4?CsF}5P9TPcn#<)<~M#$!%u3^C}aMe_zgOs
z27q{|p?`wkRGBsOakxT|5!8g}W90nhLeMACed={2c6P&Yj%snRZ{;u)y(`a0ZoJ*}
zMVK#x;?#PtI(5ST#B)2C&JG81p{Z$%+-D`Y5Y@lbM;gcnxi8g%R94h3ehD`#p#$5w
zU_12Rp-rJCOFZjPe`qwCEJTNf{h(hDRhg50bAK$`f=*t{dPWnj1XDC`W!<08)5O%W
zrwX<Je?>TCHz5ul=$MsK;|Rj(Efs3LBpg@o_JqFETjOrPU^`_5lSum4aD#mv<SXI^
z#k4O21N$_${x!fnr$hk?`L0S&_aG09`!k-GprNVuj3^oyy!gjKo@Ajcu08mVv%>G6
z+<yl873Dfe1)_k;h{DG(8VB{)I8THP1aY)I-{gp76C$9+TF_Y=`4f`r^z6rHFO*GJ
zH^I6uFJYt#7;H>YG>!{8(tAv3;_4%y2|$~!2h%S9ZS}CCgke3H=3iG2io23~9A$dk
zIooIU&O~m?SEIf*0A`pw+i`aE1a8C+S$~c00USOJo_O76m0D5AMI~XUA`2v`PjavJ
zQ~QL?cL<c$L5ta~N88Qd8A)_V0+HDNC1D>#NJ1m=?qDb0lyIPnP!}S*9n&A<0%cu8
zv;cQ9sN=g5PRT2hNv*2p>Ie17OtlfXD5sTQiT#>2$ACnFxnLLOh0s8-mt~;tvVRHn
z_3ZGtCP(O);t$iZKZqpZfB(~Ou3u$l=RUJ>S35qx$7dVp8Mi=yS3s2fZj+^TUVBzH
z`~v^u*3$8WTOvAvC?C|~eM<Lm5R=o-9&<Q=uOkseB03U0l5y>0J<ilVF<0BL24~n?
z^sqmq1=)~oK?OiJMCUj-qPc(Gw12ce^2oatdXf;-KiN><@5I|%0iyxH&_Hd~Rv#3F
zj?Q3u1fV|ycVHv>uN#fvmY=ME4d5?}jmA5;hnyNPZ<En(5FP6hLd8<mNEKdnLks#w
zVosH`g*`F5+iP$9&3ahlx#evp`so2dtyzpfCOIMqLNMO@x)*L^B6`#ka(_&5$AIHV
z*#dZZHBtYMLnkfH&X@cao2bffeTuFJzSJQ?gaP&nj$opsvnU$b;<19UKR&q-@7_Se
zzq)$&X4li0k2uKj47pNHjV}_yOKp8Xm$Uxhl!bN}#m=b~)<+4alT0fb-6h0OIOldP
zr1#(j1;Q|V9cdeAwCyMy4}Z?z_>cloXvP4P{>h-i5#M)9or3zl*Q>xD(UTUA-oqIj
zXnRF^1_z#fc89AFpQO_HI>=diy45Dg;Jwk)AWjGt2>1l8<G?3;@~dHR?tls?Z+i;w
z%|Uco9n`FaZian%S7d*ebe9ZbD$_bq3u!~a7D_;fCscoHN8s73^?ye2ZvaUjaw8IX
zFc^vMvq89KS_|N$NDf58zqM!byj!b2hE_DnA{|`bTcfpux<pypj1xdlMVQ9OnXJPJ
za8*h2^6rkEf<%J;lv0gH@}AON7@vykP~XtZNPcM@mw*6*0rcca06U=&*cVF(|8uA%
z9-+V$fQ+^l)~~P^xqnqq<`WB6PwBS^uOqs^iw7B9BK`OOu)n~D2H5pi!|rxZcFZRD
zoCKaBno1cH+Dop#2=j%7af-W>g{)}Pu9tK;!BktSY@eBy+^eZo5fvOqRjAqPZ!Mgz
z)EtF#NXoC$<GbFr2#sc05O7M$Xxwvzg9a`FgC=zBAD}rkF@NQa(A#%jM?8~29K^K8
zLhtuA`4hL<^71Cl?EvDgz-P~X^oTdZMBnYWV;1YNl1mZvL@3M9Fa&LHM7UEnL;sTk
z3Ji15KmqO*JWt~Ec^m`KMW4&6QnQ2Z>y?C8fl3MmQ2p{N>{ERk<PC6fv&G5#IHI5n
zXa4~)ez*`nFn<jEQzNN=!yNTP2lj)lb9Q(>E;N1UN5Eu<7e4YAqvXH$k^f$J!)&s{
zk3Oy+M+^CbkNgj#<bU*$|8YvDfAn$v<MgPe@FncHn1YAS@yg?=rTbRa#@SOs1i)LQ
z6`GdzVTM-Nv|~aZ$~`Y%i^U9tU_m?TSW$Hd=~6jE_<vbQ9eEloVX@EK11ydA>K94`
z1WuH)f@pgk6~JZ{?jf>*g5CWAcq=jA61$rAfSr;Kfh&gCb#MV28Mq^{+56h5Ehn5e
zLYgv)j4_9<=tfGNlWUYq8#EXYo9B}J$zD}AD_|N6BA-*|m>g?C+gKQ|1X$>@cIyCk
z`f3Ia2!A*9(2oDyt7#=_PUoo{O{A=ydvMU{+iji_XZe_fu827#`r@1`N!=aZQfPWn
z`YyM5XtTOIx22f$4`uJ>*@PRRmXcfu82-;L1oHRVXAiz1zX9;1cjA+j<e7l_>^u|S
zvr8Jsn?~xZtOI7TqpBUEs<yP|Bvxch_xmjx2Y*FrJeQ2%)qT4Xvc^Q^c3`l1r36}J
zt#gQ57oq|7M^S3`s7A1>0mGrx$kj0e;7vs1uf4mIHF+zcHR_YhbBw@NLpuH9YwzW7
z?~qgMb<hEG3X2mPQ*#Q<xpUQ_8?EVqLSK}9PR1@eacVO#^d1QERdFn*Y6^}n_lKHn
z2Y>&LFUxjFY)oq;9;$kKrS@DV=u})W)F8-2%SRFae2Eu~Tn^~!2hY2QspKd>fHUH@
z&8KT%lM-|#&}|{UC9K+5M~(I4^WCFc1{047ZL}VG7oOqnEqmWb1)I@17R~5K8#A*D
zLPm1okE%4<rF)S|oXVZNUdpmc8@P*y&VN6q1P8ocP$%_Tg{*b#g+6f>dGe`g5b`J*
z5VPI~>3hPw5K_l@B^;LpV^8(Gw2sqp7R{#@GwMJwp&8XKS8<B8j?qQ^_arMk1mtp)
z^k%RAzlJP?4Sznve6viwm;&ZB?y!umLV@l2U>GSkRtr2kjCdbz;C?yU$%ihNmw&=*
z=p2c+-;*`47F=u3vku?3bzB>2fNG#FnV11$CxKsaEf$<5!EuFse1Z2GvbrW`3n9#f
zhi``Ns;>PxaIyslBK83Z-k3lj@Z=ECcx-ql9OMV#X3<`5y7?(Fm`%<6YI;b}EC#dC
zp6;i$UJl$TjEPNX;n5y+#^4w^LVtN8G>o+zjm}zb{*2g#aYp5J*hXt7DM##b>sMN@
z9(3)}+>}lmI_HH8;V9ByTe>Q*8tg<rhp4>*-Bnz#PjsKtT*FSmT0Yagb-ZOS0Ew>Z
zmM8jsOn1nnlQiiaIT)2e3Pztc(K#7Ku$y)*sMZwt1@NQGQt^ZR=<o+PWq-9Ww3AY%
zE&w!DyKn5?r~X&<6%42`A@XV?sy%X;MrB&r4e+(z8cK9fRuAu>x?p^@Io41+@oxZ@
zjMc#@Z|}f}PwRmd$RX80MB901n5y<0KH%1`fz{|*e+Ckd(|TZZa>zDN(WNGP9(V#B
z1)wg*wEtV1<`4^Za7(8Kf`1W-es;P_WQ|j`L#6xSlgh6J*SZ@VcY>p)htZCne8%bK
z0F5)Icjr#kvT#@&jyQei+<3s$K*akb-M4AY*TZYwJ5R1wRwKd4*3`ykR|6iMi;%>L
zKaQ#2xgl%g_T;cseJNQ@OFD7HSemiE#)}ZOlE`c=TQD_qY^%Q6tbb-XoqK|qcWd-g
z5GhHry@np_SX~Xwgw`BPV3tuGWngZ0@sTmRuyp~P@TAbu2p+w+LVw5qHH);4WiZ#q
z_$-=T<pzkdsT4Zq!B+j4e#?&SF)3QKkTA=OE*>Ke^w64W*;tVGL@$V*GQwz4F-}2`
z!lz@cHBwq<*FkZ5aDRaNw0icxp1lZ`dJbnq@Xi(l$@S2Bta!u~@I0B3{iZB)N$yS)
zN(bE^Gp%$!PnO~NA47GC#vSU$5Kb^33@J?A(s@v|uFwBCt81n92lr!LVj>SuJj{qD
z$T8lxFeS~5;QRX&w(qcoEDLiNY$AzX9K=xIjv8W3^rf+3K7YJnIT)?Y6DTe6fdUR0
zhhkB*I8CcaGbc=`7SDQhgU`W?2#Orb8=S9>a;}`U@&}>~)!=KY#5keNv@*)PHB)ha
zPJ14z!!*cHbfzDl6`#+|6!?P7o@-~k&>w>(55XEy0NJ>fJ$n2&rw5;1oimvqR(GQ?
zu%RY==Jiw{=YR4+VV`pst27Bf8meI*jTb>0WCfOs@$<PX?izQ|s7<UiT4L}XXyyiq
z)c2I#X<V(%;NKGxMd%Zf(@OPI9gmHc9wS-tDHnpFeCpS>mD9zMoaZ(3a@s=Iwnfy%
zo{Tp~)X4n(w1kmZTIRS>{`=l2&%S}H38BHwBH2r>?0+ga*u@Q~EDjuj&(x6TGAn9G
z!-KhYJX&plj6bsq;JRTDu-V}B7$a@~gd%CaNAmB*W55v>PETijb*{;dQb#Cokk9c5
z&T||E;9bo0?~pROWmjBxAH$>hcKGIg9zco590|b@MTmu6mK>Ow{$PPw*FKyoIO`nH
z$1}TOj(=yJ|Bb49T(x;VL$cE(yZ7fSCV2%UPGev{zyM!0C1UVD^a|<}kcSxq{mWWT
z2cJiyV9(*J*mxbFf__BZ2!d$vdO%t0UFbmOnNTE$!W(wvWUVo&b#<hfn+a~doLPhq
zc48Zoe^*DQrB1rI7&+~9ZVLtNLCi?1siQ@u*?(vQfyaTS#irr0R```7hYK1lUWrF$
zE4phBVMa(Mj+WCHXp80SAxz6@OuJY)DQr=#mHGr|vAiCnX}O6>7^Z0X?E~8-Qak+9
zvfAgmF%nwm4~rzU`DY}wjwm7|bZ>Ahk+Fv`Ev0+U!<Dl%Hz(-qm17L?WbTxwXNvN2
zE`Oc!)o*R?k4wKEw<yJLe3gmLe>H?K5EmmCS-Ttc4CJaCa9^oUG<i9}N?<aHh6Gl!
zk|B!Td!^m(%a1rl4Cs2>m3A91x1eq>Qk4+r0-;9f*HrC=@H#(UG4>Q2#A@wY43#ic
za2(L~Qbt%iZaCAeDM8MG;>}ST2*89RZ-0p0PYXP!fIGxx(PTv{4-+oVjj%s-`+J0;
zv^xiUKb&C%!NC0hg29vp8fNGe<<yTR!}Yz)PZZH4D?A#3SQornagb?lUfEV#R%N7j
zyLVq^yzSr#$;zG$P!uxNLD9_)h9YYlp{#^@Zniwg)t43KWkS4?p+tq;w+Gl&$$vxE
zzzC#ZopBYTAmGk8QKRg5i9;!b)UfpeYN4s!mhyEj+)oq(VmcC&-yo}jm(d}Dzw!8s
z{_X*)ZDv-`ZU=6)QNBAnnQkumiN_KWsMnBPmA1!xH;0p~AAG`WR{-u~vx0V7ke-y%
z=~-A8g27-WKrmszs1s?hVJ+16kbeQ6mV~-XDFR2fltJ+pPRsXFzj&ca`YJg^1tgBY
zFCQkVU<>qLK!5y~2I{hv5RmAA_-&1ycn3(F1OswKD1JwGx=Z1BAL@AbgGcp^!1<bn
z<JYK{I5up};cX_5eL<h_f1QqU%JyF{{b`<)Tk4QD^pbp@Vh(-CY+7ZtH-9f@48TXE
z6^2#-ExPBBR#>#IkQIyw&v?`y`M*6z3J0d>gnrDk4{wr3M+H-)LO&YXE&Y7ge9`Ns
zr!a>E|Jw0ikDv6w=oxuTK3l>}xQ7jQ3(py-&WD#v&NV&rrKHK|xn>BMn+g+Ojmn9l
zDU)p}7y#@{M4+oH=X!_FhJV=zV`1a^UYM2J-wtTzqmq<fxl$8Kjb8Wyy<89m1u8s$
z=FhmcAwKJEKOSI*O!MhXN>6Ty9B)zIL;C4TAQV*A^Jjy!Yh6&-#7?JA)J1>|_bc=^
z74C3g4ZVZJwN3AZretE?h~THktC&<UY5xtUktqoIPVC&rSrd;|lz(Z0Y0J#zqP#5b
z=o(SME6vgOfW|t=E9B;51GH!Hghp9E%*}U{h@0A#RxHKcSIztI+_-ZRvr|-R!K=*&
zuZkN$UroGc=W&RNUo?#Ql0@t5It*>e)R)9$9$%_=5PXpCJujuLd<PY+|ESy45_96@
zVLSK`{l|T^RxMCb%YXDA6>D|l2VjS5?$LK?vpbGmTRQl#Uh^RMAmv@BvaP=b6|KMP
zFt!AozOT0pbco(PC$*)w!H?B>-09p2xLoB~<PeQL?(I(VSbd%QNnJB^Kd<WILFgfR
zJFar8ogJj;#&#n4E%D6H>y!^c4^rOt!rRK*NYTpo(kyiX8h>~CV$J8FL)7lM^)1B>
z{*2Dfb^$m2^dy;?9dxQj=c$%5Sn;L!BicLL5p*lin`dT<(+MG+mtdTfmZ4Aoj?m3K
z+sn6eO3Z<$FER4Vl<AG$V`c^3a;g*A?33r}|B4qcUL>Bt@0F06``^IK*H<D_dg0Qr
zg98THFNEUX{eL9>{kix_Jiqu?K>10$_>Z2FbP=Fz8%RB^F9MhY0Q!L(o9JUuBGi(O
zbjrM}vcD@O{#yH1#qHofNxEo2NIJcrcxetH7z$mk0Cgb@)`c)&7Xr}S8c-ulZJQ_Z
zSocWiuaWH3=xyXwMCfZgm8zfHN!=t}FEO{FlZTXcr+>F)OWEX;6jHx?_ETFH@CiJc
zocIX+nHtO7&60G9#ay`-3JbT#h(&Kt5m>(x=-m>Nk}1Ut&fOD{e&uEviN;RYlnSO{
zQQa1yfIvM%jX+K$mkMSkIz4xd$Rq~oqUut$4P6d^)e#?V;zLEwNr=ye!Az?kQ_C>%
zW%pzZzkm4bk$ppa1tl~TzYN7^o(4)^#@Da4WtfVydzJ>UcH*r&@bHNPx*yw*sPiZ_
z#qo(g;%(V}Ox><mE~U4DSrTrfR{HLqnU>6#44p>>`W=sW)whAnB451ntw;W(bLey+
z`a+<Y>ui*t1i+}#Sc)TFCT<{w$(M^!l}}an6@Su`;$2z{UF5R@aD&P8fWh8rR?|4t
zsfnhQU51$?egHmrpo{$q0Yk|N0cRvcaNCsbvEh=M)_fXFoue%>J~G8Mmwd)Qnxo??
zX%f#>gtefb=mZ}Z>a-RXzW{zdeZ{4m{LtU4|9ku+A4lUO4&VQ4qkekss_G47)SvpH
zi+?89w&yypQtm;u1^ibD_6=O6@cN7~aXqE2M%B5y$8QH;K&1f!{P$OdAQ-_I&90JX
z)mM&~PNOc_JS|i^s7AO0|EYZb{MmC}Au$<<l9zq$Y~*^>+yECLDC1~dvb|gUpbQ$q
z5SM_#D=uT~wD+DtY*m%9H!drDQ2*~9%6~Mf3ehycBVcy{t2>$1^lwLjcllZLlf|C2
z2;0Gb1|-2qy%n@J6$5LF9ckX>e=#p2zx1mQc}OVGNX<pJZJz7Az-86F>tSM&0u+t|
zbXA0eCd8|zHQ?1rh|8*b7ew>!CY7oiI1OrxFGcxK=;T)=XVdAXS6-ChUV`^^vww}S
z2dW~BU>KcdtK>XA2xBjKcn6~Qy4gT7IFL`$8?`4GbUYl8xb=7_C|C$>U*jYWQ+-7N
z1N{L@Al9I7<H*O|4PfbX_Xf*f2W^3?6KA{b(kFMrtHGzmD79hoH7oOpxPgtZUCjwb
zC*1DRGk4>bVK8NtFfbGS{XuFW=zlspnC2`kze<pS^^uV^5j2crAzd9Gq*jNn#ls$e
z_2yR&GT4_Z(+s(LsvS=dS<vN4;_1W$S86-MJe~|G`zeIfd4#~H=Vthy8LCUi#Iu)~
zql`(D>O>|6%YE;_sR2qGQlkw_TNR3}R8u0&KjtwWOuk7OmDGAnK~3FTYk!^!*bJWY
zlGN}5Tf;jciu{Cxi8#fXM}G_yuKE-*#V<Yg-k8M&f^U^M;cbx67j_TaF)`H&#B}Kw
zH+s2CecEq?4!eB@a^vbCS1@jaX#`*<7YG;A?|SsIqV`osA@D3*^2v9i{VmvUYQJ9d
ztT2tDa7@MCGVQ`4s$E|swSS8>kCvFEy*fFKSDHyK5CjPH+-{QoGQmKGrfeXAX&36s
z&Irq=YE8sy<5vvRQ28J4-n4|zn1-u?EU8^cE&D_)zpXXl1K1$z)!_MVB_srsci9us
zOE@kFnp!Yv&*uzZ5BnJq>{N{Ca~xL+?Kqe`yqUvs`n}Cld=~^>_<!wICC&!O&0rZL
z?nI?4+oSGQ@Hn>vlF&$I0px6h+{Bip<4%K&6sSE8B<txEemBK_Fok80);t1wLTenz
z(<odej>b`sUMFs-Uzg|8qw_}Kac^n&0uDPIx1(2SmeYwD<Wb`%Aya-7@<uifk{%s^
zkMPh(UZTZ)Q>FVa@PCAuN9EP9E`olDG9^chU<A(D2Hltu1S9+;9;X+=-E_k>7!!ZX
zmnJ9!Q+<+fP3B}qANehz_-B++JZ&*sW<#<5o>^?m0)DNn%gY7}4I01_?MZwj&9s*l
zw0}k^%Pp|}eob4PY(?77N~-k_f23@Qn45q+>^Z!j+^F`by?=VI!PJ&38>7|+TUhLr
zx?b^<H$R7Gn32EV#$ZB15jw+`sys@CM=t>4>PJ37SY%9SDMTQ*=v=JY0&k1^blt1~
zPQ;B0G1yZL#xD(aV7Q=JV1mE|gY_z*N^Yx676-Ld!l_JcJAU1(1^lefw0~t4qQi`b
zM78Zjc9{h-kAHhuv{TofL#@p6{BEgNg)nCA__ZfkE9tzZa|F{bfsGby9vY?px{Tnk
zpj&hYJvThi^A8Pd5^=q_YayT*raB05$ZGeX1>dyy2DENjz;9q!GS-DQFCOTj2?B#k
zLoh*Lq7Q~sHGsL5fax67N}lqSht2>t8)EfErkM4SAAh~IT-jarF;5+AhR^vT35s?y
z#=JKDU3~#4^QNxjH2=YX{V=S9tWHLE0bPO|ytMOod@}|f?8JC;9k+0E_AgBv;!_=D
zHK+RR?J>HvJQ_;B3W@>kI!NN?++UdJS{z@1Y71qo6UVqZ9%8x>#}}Wv-<>fB@4V_a
zR=$?X#DBtkrux}M^ZW#k9CQ9YD#aosykx-7vjCIOO!#u6W+L~aW*W#p`t-H)Mz($s
zTEA-By94Z3Xg##|Ic?{~D)XlHncvGD-Y^EOc|BB$_eJI}PvM_urfSM#kLywQHG!`_
zlmXoUwNl;cD6dsbeHln&eS0c?R#r)=kBVO9YJc5p`rMChfJXcF_DJJL9HkB_MfE0n
zD7xead;LZ9Nq^=a1phDqKftZJ@^qXQ-KKio{d<U3?(s^%h%4O1bLd{%e+@A2Bt4vp
z8EWK2lMN{UM1PA<^!ET+zgq=sqcRSZ2`FL3%cg3=&-0d_xPrwI9+og)yyfCK4<{0u
zZ-3h<uDAB{TKwdeuf-W>VCjq%21IYoKL=1><T<&O_{d2;0p^hXvpkD8{Ko*Wfj5sP
z1=AFt>A&CMpxT)=26h&TrTg`%^>1A@%mg>HIb_OVqu-x8e;L+0SwOhKH&;ac>r+)*
z>ObFgB#bP6lldOPebj7<WB&jB=l`wUaeptILGcgYslCKVNvCt7KRgxh=}@1_gzWb>
zW%;FkN(Z{vaFbBgQhj}p$I=#Nno_~Sbw;S<m-I-;6@RvhfUBGPv^q?IyEGQ;YyH6j
zl;2b>XQ2KyJgWj(>L;Lm)KA5w`652^7qTa4rv06G|L#p*K3FBI>XdnXt%j|t2Y+RC
zs0}(|U8|Y8tRRYZOoBNsOWpTKs*1j1Lh<-Y)*ob({Nb6B7hh>389$ys1Md?{x>~KU
z$8@TiZ3?T@PxSM5Cw|H^YdE&cMj3p3I{ayOPSwI`^}C4<$sOA1m)e7Al}d&R<Y9O7
z{*zM-GmX+5X13HiDLA}8Lwo91LN9)6AhR7@Ek35_?~E1T7UeZCtZBvOm^A`wnd)9)
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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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>&#160;&#160;&#160;
        <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>&#160;&#160;&#160;
+       <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>&#160;&#160;&#160;
+       <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>&#160;&#160;&#160;
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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../notebooks/models_and_releases_demo_pytorch/">Managing Models &amp; 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 &amp; MLFlow", "Managing Models &amp; 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 &amp; MLFlow", "Managing Models &amp; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/models_and_releases_demo_pytorch.html">Managing Models &amp; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/models_and_releases_demo_pytorch.html">Managing Models &amp; 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">&quot;&quot;&quot;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">&quot;name&quot;</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span>
+                <span class="s2">&quot;kind&quot;</span><span class="p">:</span> <span class="n">kind</span><span class="p">,</span>
                 <span class="s2">&quot;description&quot;</span><span class="p">:</span> <span class="n">description</span><span class="p">,</span>
                 <span class="s2">&quot;visibility&quot;</span><span class="p">:</span> <span class="n">visibility</span><span class="p">,</span>
                 <span class="s2">&quot;teamId&quot;</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">        &quot;&quot;&quot;</span>
-        <span class="n">filtered_json</span> <span class="o">=</span> <span class="n">filter_none</span><span class="p">({</span><span class="s2">&quot;name&quot;</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span> <span class="s2">&quot;description&quot;</span><span class="p">:</span> <span class="n">description</span><span class="p">,</span> <span class="s2">&quot;visibility&quot;</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">&quot;name&quot;</span><span class="p">:</span> <span class="n">name</span><span class="p">,</span> <span class="s2">&quot;kind&quot;</span><span class="p">:</span> <span class="n">kind</span><span class="p">,</span> <span class="s2">&quot;description&quot;</span><span class="p">:</span> <span class="n">description</span><span class="p">,</span> <span class="s2">&quot;visibility&quot;</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">&quot;</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">&quot;</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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/models_and_releases_demo_pytorch.html">Managing Models &amp; 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">&quot;mtr&quot;</span>
     <span class="n">MODEL_SENIOR_RESPONSIBLE_OFFICER</span> <span class="o">=</span> <span class="s2">&quot;msro&quot;</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">&quot;&quot;&quot;The type of model.&quot;&quot;&quot;</span>
+
+    <span class="n">MODEL</span> <span class="o">=</span> <span class="s2">&quot;model&quot;</span>
+    <span class="n">DATACARD</span> <span class="o">=</span> <span class="s2">&quot;data-card&quot;</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 &mdash; 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 &amp; MLFlow</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/models_and_releases_demo_pytorch.html">Managing Models &amp; 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">&quot;&quot;&quot;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">    &quot;&quot;&quot;</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">-&gt;</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">-&gt;</span> <span class="n">Datacard</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;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">        &quot;&quot;&quot;</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">&quot;model&quot;</span><span class="p">][</span><span class="s2">&quot;id&quot;</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">&quot;model&quot;</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">-&gt;</span> <span class="n">Datacard</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;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">        &quot;&quot;&quot;</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">&quot;model&quot;</span><span class="p">]</span>
+        <span class="k">if</span> <span class="n">res</span><span class="p">[</span><span class="s2">&quot;kind&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;data-card&quot;</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">&quot;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()?&quot;</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">&quot;name&quot;</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">&quot;description&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;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">        &quot;&quot;&quot;</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>&#169; 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 &mdash; 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 &amp; MLFlow</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../../../notebooks/models_and_releases_demo_pytorch.html">Managing Models &amp; 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">-&gt;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;Upload and retrieve any changes to the entry summary on Bailo.&quot;&quot;&quot;</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">&quot;model&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;Create a card using a schema on Bailo.</span>
+
+<span class="sd">        :param schema_id: A unique schema ID</span>
+<span class="sd">        &quot;&quot;&quot;</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">&quot;card&quot;</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">&quot;&quot;&quot;Create a card using a template (not yet implemented).</span>
+
+<span class="sd">        :raises NotImplementedError: Not implemented error</span>
+<span class="sd">        &quot;&quot;&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;Get the latest card from Bailo.&quot;&quot;&quot;</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">&quot;card&quot;</span> <span class="ow">in</span> <span class="n">res</span><span class="p">[</span><span class="s2">&quot;model&quot;</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">&quot;model&quot;</span><span class="p">][</span><span class="s2">&quot;card&quot;</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">&quot;A model card doesn&#39;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">&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;Get a specific entry card revision from Bailo.</span>
+
+<span class="sd">        :param version: Entry card version</span>
+<span class="sd">        &quot;&quot;&quot;</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">&quot;modelCard&quot;</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">&quot;&quot;&quot;Get all roles for the entry.</span>
+
+<span class="sd">        :return: List of roles</span>
+<span class="sd">        &quot;&quot;&quot;</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">&quot;roles&quot;</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">&quot;&quot;&quot;Get all user roles for the entry.</span>
+
+<span class="sd">        :return: List of user roles</span>
+<span class="sd">        &quot;&quot;&quot;</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">&quot;roles&quot;</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">-&gt;</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">&quot;card&quot;</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">&quot;id&quot;</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">&quot;name&quot;</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">&quot;description&quot;</span><span class="p">]</span>
+
+        <span class="k">if</span> <span class="n">res</span><span class="p">[</span><span class="s2">&quot;visibility&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;private&quot;</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">&quot;version&quot;</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">&quot;schemaId&quot;</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">&quot;metadata&quot;</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>&#169; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/models_and_releases_demo_pytorch.html">Managing Models &amp; 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">&quot;&quot;&quot;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">-&gt;</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">-&gt;</span> <span class="n">Model</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Build a model from Bailo and uploads it.</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;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">        &quot;&quot;&quot;</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">&quot;model&quot;</span><span class="p">][</span><span class="s2">&quot;id&quot;</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">&quot;model&quot;</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">&quot;model&quot;</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">        &quot;&quot;&quot;</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">&quot;model&quot;</span><span class="p">]</span>
+        <span class="k">if</span> <span class="n">res</span><span class="p">[</span><span class="s2">&quot;kind&quot;</span><span class="p">]</span> <span class="o">!=</span> <span class="s2">&quot;model&quot;</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">&quot;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()?&quot;</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">&quot;name&quot;</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">&quot;description&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Upload and retrieves any changes to the model summary on Bailo.&quot;&quot;&quot;</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">&quot;model&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Upload and retrieves any changes to the model card on Bailo.</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;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">        &quot;&quot;&quot;</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">&quot;card&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Create a model card using a schema on Bailo.</span>
-
-<span class="sd">        :param schema_id: A unique schema ID</span>
-<span class="sd">        &quot;&quot;&quot;</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">&quot;card&quot;</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">&quot;&quot;&quot;Copy a model card from a different model (not yet implemented).</span>
-
-<span class="sd">        :raises NotImplementedError: Not implemented error</span>
-<span class="sd">        &quot;&quot;&quot;</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">&quot;&quot;&quot;Create a model card using a template (not yet implemented).</span>
-
-<span class="sd">        :raises NotImplementedError: Not implemented error</span>
-<span class="sd">        &quot;&quot;&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Get the latest model card from Bailo.&quot;&quot;&quot;</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">&quot;card&quot;</span> <span class="ow">in</span> <span class="n">res</span><span class="p">[</span><span class="s2">&quot;model&quot;</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">&quot;model&quot;</span><span class="p">][</span><span class="s2">&quot;card&quot;</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">&quot;A model card doesn&#39;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">&quot;</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">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Get a specific model card revision from Bailo.</span>
-
-<span class="sd">        :param version: Model card version</span>
-<span class="sd">        &quot;&quot;&quot;</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">&quot;modelCard&quot;</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">-&gt;</span> <span class="n">Experiment</span><span class="p">:</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;Create an experiment locally</span>
+
+<span class="sd">        :return: An experiment object</span>
+<span class="sd">        &quot;&quot;&quot;</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">&quot;&quot;&quot;Get all roles for the model.</span>
-
-<span class="sd">        :return: List of roles</span>
-<span class="sd">        &quot;&quot;&quot;</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">&quot;roles&quot;</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">&quot;&quot;&quot;Get all user roles for the model.</span>
-
-<span class="sd">        :return: List of user roles</span>
-<span class="sd">        &quot;&quot;&quot;</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">&quot;roles&quot;</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">&quot;id&quot;</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">&quot;name&quot;</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">&quot;description&quot;</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">&quot;visibility&quot;</span><span class="p">]</span> <span class="o">==</span> <span class="s2">&quot;private&quot;</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">&quot;version&quot;</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">&quot;schemaId&quot;</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">&quot;metadata&quot;</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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../../../notebooks/models_and_releases_demo_pytorch.html">Managing Models &amp; 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">-&gt;</span> <span class="n">Any</span><span class="p">:</span>
-<span class="w">        </span><span class="sd">&quot;&quot;&quot;Give returns a Reading object given the file id.</span>
+<span class="w">        </span><span class="sd">&quot;&quot;&quot;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">&quot;wb&quot;</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">&quot;content-length&quot;</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">&quot;white&quot;</span>
+            <span class="k">else</span><span class="p">:</span>
+                <span class="n">colour</span> <span class="o">=</span> <span class="s2">&quot;green&quot;</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">&quot;B&quot;</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">&quot;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">&quot;</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">&quot;wb&quot;</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">&quot;&quot;&quot;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">        &quot;&quot;&quot;</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">&quot;release&quot;</span><span class="p">][</span><span class="s2">&quot;files&quot;</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">&quot;Release has no associated files.&quot;</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">&quot;name&quot;</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">-&gt;</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">        &quot;&quot;&quot;</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">&quot;</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">.zip&quot;</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">&quot;rb&quot;</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">&quot;rb&quot;</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">&quot;white&quot;</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">&quot;blue&quot;</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">&quot;B&quot;</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">&quot;uploading </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</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">&quot;read&quot;</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">&quot;file&quot;</span><span class="p">][</span><span class="s2">&quot;id&quot;</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">&quot;file&quot;</span><span class="p">][</span><span class="s2">&quot;id&quot;</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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="../notebooks/models_and_releases_demo_pytorch.html">Managing Models &amp; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch.html">Managing Models &amp; 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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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">&#x2192;</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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch.html">Managing Models &amp; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch.html">Managing Models &amp; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch.html">Managing Models &amp; 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 &mdash; 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 &amp; 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 &amp; MLFlow</a></li>
+<li class="toctree-l1"><a class="reference internal" href="models_and_releases_demo_pytorch.html">Managing Models &amp; 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=&#39;&#39;, key=&#39;&#39;, auth=&#39;&#39;)</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">&quot;http://127.0.0.1:8080&quot;</span><span class="p">)</span> <span class="c1"># &lt;- 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">&quot;ImageNet&quot;</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="s2">&quot;ImageNet dataset consisting of images.&quot;</span><span class="p">,</span> <span class="n">team_id</span><span class="o">=</span><span class="s2">&quot;uncategorised&quot;</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">&quot;New Name&quot;</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">&#39;minimal-data-card-v10&#39;</span><span class="p">)</span>
+
+<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;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">.&quot;</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">&#39;overview&#39;</span><span class="p">:</span> <span class="p">{</span>
+    <span class="s1">&#39;storageLocation&#39;</span><span class="p">:</span> <span class="s1">&#39;S3&#39;</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">&quot;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">.&quot;</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">&quot;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">&quot;</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 &amp; MLFlow" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+    </div>
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>&#169; 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 &amp; 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 &amp; 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 &amp; 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 &amp; MLFlow</a></li>
 <li class="toctree-l1 current"><a class="current reference internal" href="#">Managing Models &amp; 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 &amp; 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=&quot;resnet50_weights.pth&quot;)</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">&quot;large_file.txt&quot;</span><span class="p">)</span>
-
-<span class="c1">#with open(&quot;resnet50_weights.pth&quot;, &quot;rb&quot;) as f:</span>
-    <span class="c1">#release_one.upload(&quot;resnet50_weights.pth&quot;, 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">&quot;resnet50_weights.pth&quot;</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=[&quot;*.txt&quot;,</span> <span class="pre">&quot;*.json&quot;]</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(&quot;resnet50_weights.pth&quot;)</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">&quot;resnet50_weights.pth&quot;</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="s2">&quot;bailo_resnet50_weights.pth&quot;</span><span class="p">)</span>
-
-<span class="c1">#with open(&quot;bailo_resnet50_weights.pth&quot;, &quot;wb&quot;) 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=&quot;resnet50_weights.pth&quot;, path=&quot;bailo_resnet50_weights.pth&quot;)</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">&quot;downloads&quot;</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
zcmV;rFh$RhW$Iy&n15_{bq}@{^TXvzcPGYndDE^gEHFTh@*HKR+B(u{U7S8W7+_vw
zUvHme<3@_qg%Tz8VlZ9Kqu|E~UW37i;BA~{g*u&oJQjy0OVo3f=7;3#?x8+rPx!a!
zzp3b(Tcq3Vi!#~8_eowmMXZlg<#w-h>3tSgm3q-DJYH&dNPn`VPN?dnekcxMrSFq^
zY0*<$?;jQyE~@1fH`Vfbn+4T=_?#~5Azg5HbCc$2eRH$C?#2CV02Xz%DZQ|_+wzM#
zye+<@-#!(elYCjvwMAF-odvSA_biA-{b!Y5*n>90qCT_%!g_I^rOQ@TF1UMb%Fpb3
zr=0ZJO}yVHReyC;CVy*^Y61TpxVtn<R)duApSW6q1A}QZ!TMO$O0X=uNslmkHo%dV
z+5oBAKP1O^1E4yIk1Jsg#bcfo@!{t7Oam&9kI6=e>&7QSA;L=eU|J{H1`s#<xIAou
zQx@CEbkkHxxf$9@j7?UNGWn7wk1ILhxwQ@hr`0+H>VKP+v$Gv`H+N-mTrC;x+M6xa
zjJ9%iG03{+Mpa@vsSs?fP>8X5LI?`Zh?O9##|?t4?4xFzRTObnw``RjPg!!)oN$v0
zfl2a4=5v@1N#%C$Q2xK9ReGCdX?+gRB?rszK3re@<<+N4#EI*=Om7=F6)eU2^{2O2
zuNOgG7k|9T2g!nkcJF@q`SR_}$IJIuzg*v3Uw-`X%lnU4KfS%Y`Q^=<tJjy;i`fz6
zPnWO%{Qm0otG59Dm#fR))*$}!+xvyZKho^`*EBx_w^Cbl_v-cQ%a0#HkpK1T<;PDe
z8R7N`1^K#9PIX%3i)Mf+y!#1%z0`jrmiZXM#DDHOsZQ|UWC7GelAV%rH?U{8QVHF#
zT!SFHSM=v~3+Z;ajTi*A+m}f^c<NscIci8)4oP}Sde{`RIUN>A-tOVyeM)6_mtW!E
z>2dJbKV7v|d|}`9V5o7A*<DsVuExrW`<u9|)4O;-c*G7zgHD27x!wc|0LpZ~4PU3Y
z9Dmlr!=O&hZI%uii^FiL8k+s4Z1QDD@AR+^9*<OV*PbTEl-vbSqYCB%tU3YZZ1HRn
zv=#HsMz~3wC154kxZXM&Y2or}L*U_*S{oa=syBhcQ%WT}@ER~O)NKM%twrJ1*`m+<
z){!MJtA!i083loOtxvO&R&4GLg8y{s1%I<UCtO#M(x8qSlz^qVQ`&by6oj*E1?-|M
zQxJP7Vh&!5LyO;+q+GJnbg`BVyFSVixvbqXe7JF8Im-nOHmB^uA>v}p-;chxPGco(
zJ5_!7F^g|O1BrSkHS2G6iua#kJ@1x(LVrg1XCx$E$RYZ<wb&Ps?3*!NQ{N+F_<!e_
zHR_qTpkiIr`*kiGcyGLf2P`-KX>RR&>%63XF6sL?n}?!W)&x}0^KCW*=&`bh0W9eG
zHlKlo4bY6s-^>vI^f_HJ`;5cQ=$H9bx7+hF9@_HLBmrD4S{%C0KvM(({DiL(j$@Jc
zYXBQdmWz&$(!}==X2RDE*WbziIe&zcW;r8`mybEKxJD12CG*&F!18<xVPNTO9`fg!
zLlnf@qB-4n5}PIo;wpS*cbv{9z6UY0WPbO2*d{5$SPGxzU7xrqf-ruXHS9DK-1z6a
z+_{S5-CQnQce}9<v+Eskyj#T02v!(*Fz4h$wTfRtm_roIo3@;+Vo!t2q<@>w<bYq|
zGDZi00%+GTTy4g26~b~A$aCvsxq{smWF}oWlg56!j!gqIn=+hL?IF63Q;jm0Fq}_z
zaa+eFW6UE9<8aWobvd(xaKR-Oim+lM=;O>M4da&mb(eF=<)=x)xZ<nM<y>+3X_5t8
z@r}hw))-_a-4Z7GnrAJSjDIqha0#E*ozz-pEvO*s1#GWob`FbyjIC4cY=k*Pp}eu1
z_!{0AVGdCkZ*sY_oHYTMK@-Lp`R^`gi;7QDgt27#$S-Hi0+~rSpUDvi{AJ9JfCbXe
zXMWJze;Mn8P(jq8Y_Hj|ZG<^Qp}eh_Nfy8ingGTILLe4$IDiyF9Dm63s(x+(X3zvO
zwr>A(AZAeovqy0utGFYCIYfcHty(2*ggHckyseqLru;NX09VZh2Z0XAOu8^8S5Am#
z&U|PVOb0iZXBl@c#ym0~ha7J~E&Zj9_nFJvaJ0}AK`=kNQ<;8=1MZmoQAl$M7x0Om
z*ZZ|>a)8rJx@jiytbZ5C5(P>P{yMKZ(Fm&~PYXC~a`;Pn3nQ|)yG!>;xqzSP7_4Q*
zf+VVw{X?Ga<4pFOHIfX(e1(zE<h*#ym$Au#WS(!+4DinP86(QV7_dUoJl{eX*ez5#
zr{de@lLm1crf!ae%}r8xS!x5==+`!2Z8le<p>%VIX7VPhOMkM8y?%t=Oghb^cDo%O
zSeA>a^Gny8vqgF03p(RJJp<WxX`LSeIGb_}yV{v|E3P$OXn|ESjJv!nlfiL;nO|U)
z4B8=jGa)o!aEVo7h<p5IQV3pXfhid{48#i33Sqbx<mvqy%F2=%ITklMhbWjoJD7A8
zlQz(7%3yZgcz@MZ47*SPw2PS5VX>=O)<Cl<7qP1&Z&$Ocfo4-KVpoEDS92>ka|wfa
z)zQPN7}X%NsDfE+1Cv)V*}}}Eo5$#==03sMJIg-Y{}51jFLHVzFFl;Ogv)pxH^v4s
z>)2#xP%dNFM1QYm*gyr)1~I*KgLh)oC%%U>bhAnw8h?v^pHI4gV~=S$gk9IZJV_VA
z=n}PlC~kj>AcUuGApcU{x;S$Q7x8K`1+3=QAk8NY<(ShEtl^Xqrb!lYR;_2Pn!#HY
z%3LRP!Wt$!Pyw`|OmD&MEH>BiS8c&yHH*XGejoL_o6n!+Zs#Kj<;?FEIGeqmOW-73
z2%`&ZE`I}wG$y`>Gc<8K9l%@vih2&|6vsLz!;%Ty&E4Vq7|4e=xNt5*-T1-@s!$de
zXs{!BMrP22GPl4QJd(a-22C(?I;F`f_B6;Ws!$f4Y$<Elbbw}4hO)b0^&83QGJ__Z
zxz(NR_?CESrkIlqEDH|yZtj@zPeB|kSw#jD(SJ-*gt4{c$TpnZW}0MxGs)lM%Qrf~
z*$jl?TTgyqsCQ}FzB{CTOR{}&OjKPcx*h(mQXkIs1I%xUyFC>91`qQw-p2lu1u1!S
zPDC9I#r9gy8x7G?eQs?wye;%7u0s?oOJ3B;ZBcx#zV8G*-W-x+u}e?q{MM~{q69VR
zyMH*3@6-HV@jaHhHj$Kb>U%;X9EwMAlqZi7Q$~X$Wd=7-UVGv6R~0Mxs`#ri4!pA%
zrhSuY$X9dw^Ej6Nq~d%TpJ`r~FkJS1ABH)cUD>7WKW5fWZYTHA{vpocARX1k7R~i;
z1}M`gp~1<qv;mJYusbzWOZXNfo+6Q+B7bY=PKozN$(M}=<Fya1{kXV2n+l=pha}Rw
z$J1w#Bu@)w_E!%WeN*sFwciwfvsrB|w>NbOTL=`Iu@H`yqQ%g<RR1Jj)ni&e$m;()
z_3rH(x&)rf#*=-K)64^DTgs?x@@f%>PhOAXwV#w_0LM>Z{N@Scqu@guS^%pK6o0p2
z`>WNmAq=)V#GyGJ&k^6tcUog1$6ajh?k={q4H21)icYI9lL>ddv5SxeVszj-8>oHx
zF`HSdG4y9^s6@YuhI}*TvffU>=#vBflYmQ8Z$DAf<EbcRUZquMf>jZ&M0%*f)?BQa
z7*{i@l95MMu}r3v(xt5as}z>f1Ah@q1y8Iw3de+8bCiw=E>2}~ic226`=+X)Dfr|P
z-4&%7aLf4nFb~_1!7O1iC1+M3Q<^M9CU$JVip!*GvYK?C6$9wQAfTL3%r_<9)PlhP
z>sKzCgf-u3CgP?&d6=3j$+f?pp9boYBB;k$D;rII)ERz~cWdb+wU=|+Y=60{q^9}U
zob+U0H{?FHcrv5SawVTsbJElH)4<T;5cr!oKbY$cg1-R?i*o<q*LEgLyGOux9FzY$
zb*=APo?a)_`=pNk@En%h7^8@|r9YfMVfkm_tadj$7^FE>5K(zp@%%GmmPp+#&`8l%
zBHD<%A-2-8i%XjKXHK}7gMSwO6%uJYi+OW7w}Q|75ScTRE<r2fP_BpN>`ztGN|hg!
zrc~wz5Z7Rx7h;{Tr{dIPx=ndp^e>B6$vIYoBVtPg{m8?PuaDMAM+Rek$hw6h(SY~Y
zD(S{*aHP{jv^FD=5}&YO>GXX9sf0;-|DaVRtbUUz_Vb(?EFvXDtbco<fXk=h9PMkK
z6tlFjnOy1Czy{#)%T@rPTF2<y5pdaClzgX#<&j0-_1?2U9JB5)Jsc;@0`#=qhZ5fC
zSPKz=XX`{Y7NmE&;%ifJyEk3h73&@L|MTwL>fdd*=((_A-+!2_MvsD48*j&fo_A}<
zgKdD@W(m0-LbQ!<D}R;<*Ia0hjvFlN*FI#|bZE|=OP6uJE3}tbIJ#`Mg#S8)ZV1dE
zg45BurF(&4bfz%tjiizuafV^kp>&T0A9apJA8uE#AG+rC)YjG5rFcg_*B;tlM&@j#
z{rYEZn*+6(J!LTQrLRV_DM<T<Hu%VT5Zdt9UYL>DKdU1aOn;0%dy6Ll>}1itI3Cj)
z{*&LO_q$`K+CBx1`~J`8_?Qg?KI#1!A@Q7g#)^(sf6h|OuGJNSe<sdfDJ&RA6>gbv
zog7pK{iTXKeaEi&@Pu#oU_wvPTpu5j5>AuQyLFOR^ib+CK3g?DiK7m1guqd8r{AQB
z`22>q+XT#dGk*a``=|wmqu+Uy|Bb8p2e!s3Mgvs=YZWH-gwYvOXVq~Eb>mo-6eZCi
zr8Oij&ry+sW>=JODojd{D^GmwuuTQ86yne&s-o<vh@&(PO&py|rN#N53V;*>DfG@j
zpq(pyncTyPwM2^@XwBF}(BAd_K~Gd{OzbqiL-_*QTYr3;L1(2=LRP*#_H14F<lm}_
zS4xmni=;FXH2|f;g)zZ5IR;5RO?SyoX)I_%rwyR7sQHnX<V&12<fH+MCO*nEE|<61
zEBQ)nwO<u|-Sw(Zv|SW_OiB<A{#UFkXS}A0;_^1FOB@+{P&X#H3Ps~W+GE8kBxaj4
zUV$l7NPl4=SBArZ#&(5s`jD2;%mwT;mD|tId&yUv4S<{*W$reE2~0}^Hr2Rbn^p1Z
za8R7#7nTeQ$sJ0Bq%@LNEDh35eR@b{HNg-M=csxpn(PqWim`<kK-fALG(cblqv8*W
z2n##`savu55YPqg@{aUb1`{_+VUbV1;Gy^d^nY;}es{3^=KI9@*Ik@u4Xp4@en{?M
zIXZYGUI7Yacj_-#SaIPW)t|5a^ydq8_5RJ}_2v85m)1XT-n_bc`|CCQ^y~YdFW+3f
zzx;XEk*;`*^kD>6Dr^4O8<q9X7`WkENLah*;?F<2x2oY40x5kgf~ByXwe~K!Q<v?I
z2!BXQBk^@(-5J}&9SySLa3=O5dhw60zF_Un>0^cKIBqdf%=_9Q0jiRh#q^E}Pc^|d
zm2fN2XvROW85BQJ2*SZghE<Nb1Gfv>Tw~rqEi9GZQQ?VppgR2wVn7g4k!F+PEDUOe
zg;fl+0SV=A0SdlDDpH)%3MP8L1s>DvfPZFf8GrghowTot^&6gt5ztS`8V1Hv=`u2G
zMcI=wtQc__S_d2f@;EzJdgj2wk!82A-offw>_205(0F@ja%k+PBDEu`niJ997HmSq
zjrApNryj|+tmPGhiL6S4DF(w;8oCM4uv-xgdsxsEqUnA8CGO^KTYyGTeW{`^X@Awk
zSya`{AuXbF(GYWSRu$1bY7?l!(ehBrj7*|?pYUs7N#lUh>M0jjT>RNi{qLe7F%du^
z02$yIfM@rGN_O|Vu88$RQ(1Pf<amqPPz^`n+XjX^G6lOC_QfGNG<)cdTi8C)Q+FS6
zM?!C<wO`<^DnaoP%d*W8mTIvSV}D_H3zoXYbrrFc#)9^`a(C$Ro*a-x6QFrT3J;G)
zOE-tfl_8_)eGa<n0cT&_WHk=b{>v3kJ8V|PD?yT@98G9KQix=$|A>SwAxJy*GehAd
z;AbwZCeTfYm5^DaK4(68hUtfYc81+;d@$!2X^qE+6dFRbvN(H;&lR>nnSb2T3ecXC
zVO+@3d7QJ2@PCRA=8z;!O)y&LV;F2+fw@ra`5VSu%!l%h=vKbAXe4u+E6Z?!Z-0ud
zWNa78{PSD4zJ$~!5UiscX=O^QM$zQa$iw4?l|XAUR!;}hTANnErq5+gLo{htr(IW6
zM+!}$|KT(wuFXk``#!JEM}L?_Dc)eE2bhWJU7D1YJB-*O1E-NwQ_~b5uX+n`T>BY=
zSAUJ6EDU#i@+g0L@eGeT_>dgpbY+GHZOXjm=v34Q2OF1m$AUSLwMTriYD@nXw||A>
zQ*_(Ze$h9o16zQhTHy_p@em^@)k48El@Y{H7tsIC*06s_P%C+SNPluTD&a_tic|cz
zCed}Ll}G?xgH(L-GB<wa9Oh|+&8lD|rIApnWh9Xfbykf;RLUUHfmRtPrwNJ-n);Ar
z=`pQoxr9Ce<=fiH4mk0SsD~yoth5CU=E~Uvh;vUPY*@)_7fT@)>iE`%X|NPxDZ=`$
zQjDc|FGDQ19gZg$G=H3i7>*dXaB@r&-^3m%;QX%4@4KPOvV_b~vV|R!IG5I7vj%9n
z(GjorqKEj4kkV&Tk!J9=694zA1tQbeh3t}q#BI%n6F^dgq!5W{`7<MRWyhFbWBj~p
zax&TqYdlSOAoIM5XyoHCK(8sU&})ESOL=2UHRV|po^?`wr+<FK!KeYypQ|tASE#eX
z@s8mWDML-LKU74%Tqype+E1N9C5CmpPJ*6Cy*TN+-@A2=6*1Oz{-Vs6UX`F1z#xz0
zpLCCi%iQ6><~dm2*fdw5i4y(=A9->gl6?UiR#9^Q__^GymKJR1g6+sYNcsmXq;$su
ze`qvbL{y7LV}GLC7G;sKE_5uKoNs*0e#eV(g6eD5Bvp5<k0aC4o@Ushg4c}0dKTf(
zWs=!VHI8DO&Q=0@D&x4aHz%^s-Wl@+ISzvI%q;0&!<7AXu&=o^3a9NO<fy1i>tAQ6
z_8b5W$oFM@dO&_~EjZIX4JoH^_9WI&Nv1yz$tlS}JAd1wojT3^HqdS0UvnIHtOy0g
zCKR~>(m2!x8t0j^fzVI5WB(lB%)<g{xH;eTv3(*cPtSjN{u1=Rst%HWc`XCYAYenn
zl0u#Hwc=AoQ`a95O(B}UEll71L)&6SE&aAI!(d%oK<P5s(~Q$|&^d;S#b?0*e>L*Y
z2Ea^v=YMD~2BevX`a@cgsez_aO}A}#X$d<Go4yh};UqbcRHtMQXR&=GDnB}dYbVU~
z&Li<=RS1%5krW|`Z7snw6eB5(B&Uj<dQ;%#GC^Ia^lqpP$j33MD)eBG!G`U8U*N5M
z$vnZ1Yr<Z5Y^KmpXab#XfR*?^i}d7R$uJjUCV#z98VJwB0@McE@VHM8Pb)UI4hjD_
z&Htl{BKh~f{N~zfCM*CG1^_rQ`YlP@z)zSMW>^?hA@2uRl4q4?=cBLqKW=LsPjsZ>
zn~&lVHuzJ#$4j7$fA*-+Gs?Ckib+&ULRUhrUajXIoHsK#%GI>`-jP-RG0s`%Y;vvu
zhkqp*<k9dg<Mp=T^Oc9^t!juOhWZy9>f4>Vx>Gnq5R8=CCRZdZ4t@dCvx00Sbc!2j
zgLN|$uL33;VS_3z^NrR4G&?!1VBXB&6D1k*6LfKlp`%I)0VJ*aHlYj=af4@TG4WSk
zU!nET#!4*5Rk|NQ1lZREfmL}zP>f)14S%YRYmo6if-UA4(@BHo6zB{T=o`WR(=>|n
zv-2gpqi!m*JD;%Y!7sH-6JwxmLo=Ew`96$ix_SyQ_Qz)z>g^jG0I#p#zS(u8mg^NZ
za%1L)Q|<HA7%gFaAQQL#;M7NY8~go1PwOj;(<zBdp6vztcsTcmpttBv1{XN*pnuv1
zp7cR>C&arzxga4FUPTb4drJv8>f3fZ1gLL2BMfyHy^zstKAh1&w+GTQ8VKz>MB1g~
zW|!~%k<Y?2#5O@ktB_tEX_2r%(C%nmO+J&`XbnT_2{uA;*AaSeF2{@V04o`pEcV5H
zp8h@I_&W3pjjISY+nSw0fI;+!gnz%aq4DgMe4{GfAd<d(CnUCr2olHnq1$O(DJ;p}
zCWJ(PYwPEEx3&q$^`izYwinpAR&ob<iNJiYXMm2FxU{k1TDv;XjuU0Y{k<3+nS|^!
z1<Xyh&~iMGPt0}5Z+OLIJGl0nAOIx*dQoM7odN{0`7*+P?@LNoHyHAe@_(_!`W4SH
zcK~HR31iiijEgW^q6-SPNIBT{KmODHf(IfjuD_b%?obs2a73?8&|Ri!m@&pji|8-P
zd=ZA6D({m#DcJy^w|%@#g=1N|Pfd^RVaWxeTztQBSkeC0;LT1Y9z%zy_>y>R<=a-H
z(JV~^Z*2ulMv-#R(Bxpylz;YJL^P*0eAW$Z3Xna<voM6g_^lw?exS*px!so)w{d1W
zMYk0`fBu7q#fgIa-S(#z)}8`yK+s{MDCW9JXuTxROtV=He*&PHt{56<hS`Shvm|+#
z_$Rd9^+{R6ilN7Snc(9>1-mK082y6hUEg7Q18h31N%}JJcxYYrzkef)?=IAL0)zk5
zNbql5yS{6|zO&^{4==_U=Z{^Fo%Hb1SLEejk>C4@{9cW^2c?G}d?kMvtn3fIB7Ybx
z@<(5hKl=FlXJ5&G_RoHH#iD^tDUkS%u{fR@jzzN$<(^ssK(2^ZX<9zt8Cqr24l#Nt
z_Ok7*Vs$2rFxygxvVW`HWY_RI2SXUu9=5Z&%=cMyz%BIwe&J+HXsjtpj5N@m45FIR
znIz5G$=~l>xDxk@i^DRB#X0#Cntiyqc8U-sg-$tk@vemU<Z)F~3OV-dF&D#RvWlHs
zcH&DbMCACJWeMA~z2a_Gi60BSy<_KEpISoeY2<i?SY$eP+kXMA39w?%bf+AlAO5-1
z;=pdkcfR5k1sc->8U=OqpQqNzvO>ZkbPkCQE_Au6+Dm43%g+m60N@CHTD5n~?34e#
z=tSpv%oSCVu&IJVAjDL`c4zxO#J3b|0PeMfd`uFyf?&J0R*-MSJWg{^BXz~r4#G5W
z;RFgz7gv&4jDMB$?l>mpA}@^9R1m!KZ&yoN8&BjG3=hbh*o;pA;=0$mm!J-l7ur0l
z5$vWQ_b!;t+Rp(knWRKE_xDM~mQw7I>Xc*|d7i^Gk3akReL3V?DyjC`Swc!Gt0Z-*
zE~#|MohuSY0mlb+-vND}6=yOURc4atvlZqL6Mt3c4uA2i_q)n$SH)WiGH#JXIoC)s
zb@kB=&U41OR$U8J&q+q}$59Uw{EP~-IH+}l2i!|vHrOA~=yBI%)2*;cExI8%ib^7^
zp|7<kTsKC+y=E3L^_0;D+oBUJjxoz}3oyvo47o!Qjf{NgGp8#m$kz#jVhs-Oj>nZG
z%4SO&Xn$dGjq!?PbQDUw2+*7Eq-?9uwVWL{F3Ho)wmc2O)=UFp^nzJ3pD6D}qW#q(
z@iD`B2qQ4A!sVPq9Ft87YR5OF3&JTHN~*XDkq7>JN=mw*lzOB1b`SqwVb;i6KA&;@
zSuSEoB~wzjSVmq2V7o3DdH)Tygsc_=7LHqt(SIl1`q1WA1H78=w&Zv}*$Qhb&@CV<
zkwhswCKQ;k8mLY3W`M*HF)qAj3-7n^>cqZEq1cYJs@SN*2y@)xH><%FU)zrG#tkoM
z><b%;93ddI8ZpqYPkhT9=3tSo(Ux|OlugJv4|W7tE+SH+QGK+xfoaK?gSSFc0vX<v
zw0|XEFvRbVQJyIcV{KJ~E18>@By`i9A@(|aBe|3CBy>9-7hLZu9HMHX%;TExqA{SJ
zSo&+j=?0+FPW<y+(O1;q3a|Grj(;^_>@jNBXO8`+Yy}FDIK;U)@$W<OWA>t`j_=v1
z3Cb%fhgzkV1Rp^r;<dn9S}d=yJef+NJb&t%PWc%IVa*Jmz(6fVfVyn<wLJ>qe__m!
zGmr@lfJ3ad_EDOeX@NJWL(8tAR10N|_7<uQM1aG!hT5rrN3dw99Zp$uk4k@B^|VEC
zA4eiK2{=<0`mp~P*HA00u0gkf0I8>O)l*Q#MIEU)(92#Ip5cH&sEeT%_*)Za=zrIC
zaBJsI!r4i7eh#g&<}93UIlg|f0oGQa<u^F)qQ^r3XFuI02u`~uXq+M0TXU`EMcn*o
z_UV{?V^xDmNij9;w`u9uSE1!^t;Jekjf68@QyU#07639_V&W|MIMf8KiL){$RdKu3
z!Q8M+=|mhu>E4E<UWBRzrNY*hhJQ=8`0whda9H_tJ`XOuTO%7l#LUS*M#>TVP<aiE
zM{;p|Fk7tlh%nJ^a-}V1a$SKWlgYK`gh%$RYIrOEHJiBhy)fZ)a$hbcc>~1RYI5zP
zVT*r^zoy6L808IVQIthTS5Mv%dYVo3a466_rdLeQS$8zM<X53*<@ZCqHh)lCtN&qj
zdZM6NwtW6Sp1%y@d<tuT`Bra4?)6lA3T4zamU%Y8|7}rZ37b)kTOdva%4E~pQiX>X
ze+-c)7`rc@Kse5cIK?PEPHUaj^1k@vq`W1ZDISJ~#zfAeaHs)ksKoF%qtrhW%<ms!
zGy&l8v&c<++(c5tFql5mEq^uo$mn3YetyD!J>;1#3o9!E0ZjG__gQ1_cwTaeW{RN#
zHrQ&D&YyxBV3tZO?|ccfmAph-$S@PJFN%cqazT$oet|$GHp_H(t$Pt7haafVzR(Y^
zm@lSQ5PDT;FD*1&=?_8N&%qlIf{ICNkI3@Flq_;*c21M*u*r~`2Y=X?M(*3bS5$KO
zB(d+^^VQPKK<kTQU)Sfeq)2nBm*NJpB)_lSO{Fq^;iS3YtB$Gb#8N$QX0372Hml+t
zBXM*BBRRcQeXsq`NjnrI%ZKJd3Dj5<RJKOc`njCvNjF;BX1uaBsMbGbxLbl|>hGty
z48+rXht2%ocV>S26@N`w1dXPfL@e^4hv5Y?9b}XIAdv?`jk!qEyu!3cl-tN7*#_wJ
zvxtEvApt=>4{x%`GYCQ0<L6r<|5iOk9A)8j<kq2ub$U#+*MvAD9gk?Jrx}6P%T)i4
zslOXB^R@9P9_hEM!^AKmlzJ*28shy#STuauNSf*o7MK<K;(s*5S?BRSp2f6tJnMXX
z+~nipO_wz!J592CcfJ;q*GS@Y3XKPHWQL`Z0v~X6@Zi8)+7#qaRLQi{eJ~P@A_-@w
zaEKDe6b~tM^r7&GqS7bY9^W%uryQzLHz_AekV%WIJ>=Z%eDms>M0sx~6EgXewO3v2
zr11;k)lRXuf`8c#%mlZZI+$Hvr8Z)E7|hQ)Pnop>Y{2$>W`kKQ=<06e@a>>XFe=2s
zyc(r$6|Wr>Kd(k54CR&GFJVvBw@|Bi9zpZ-&V`gI6fA>%iM*6^2gA>=ecv3yrFH+Y
zm`fXDf=la~B!Ejdnq?`U9TY#OZrqE@Yhj{D_)b`SC4cFr@RY@8_E2+zbtQye9~s6a
zSdX0->Ng4X;=5@Lp$x>uKoD@7p+JCKk!QwpbqT#e8CJrWNkk&D62$b8^jR)$Pji0M
zp#oTgKFY=IVa~0rJ=c^4`sbjVRQx4|vlXRDpipg3)w7CQryxV63>98YG@aBO)@dH^
zohwdIbbny~dXfm8O7UtQ;}znZ?o2QiyU6P_Z<51=d37WF_pSYaU^w;Bf!?$i7{xFc
z7r`);5<<iD4YHE1(_}DzNU{@qWF;kC)u4|Kg_RtVI5RK4!%-NN{nj$z%V4-&6^vwM
zNJl7k`)Z*$vPGa+YbPix@u8d55OXS~xq0o9!hcbKRm@|2z*AasNNb#x>}WJDW)KX<
z;WIVyPeCjo6j9@G4yl!<c6-b>(CB=U_X_ZJUGfz(M|cZ6g!ngI&+*?KP&mS-IiH{~
z5|Hx}+6j`gM4k{WFkya$S#tUKEpbYcRR7>(XuC@2oSf!-g2Obkochqhx=;d!D+GZl
z1AoSYN`v)VqI$rW4|waS+B7bBwai&B@9=hipXirQpr$X0qyxdn0-*RrGi*`AFW3h3
zFAdaYiD4ks0?9ioJM|WkB<Tp|<$&^z{2WK(SU9S16Ng9qjVh2Z6~}&3Eis_j(&HOm
z9-V|g)Biey=9KO~QySYWV>8$xu46LpWq&cfpMV)^%e3<5Rt*99K(xxxDx@W|Akiv|
z)@8KB8RD6vnn3>BDa@|V>{-$E@%CYQ%V{rY_O$4FfV&)=@9WQckM&gOkkMZ|`RnPk
z4j{R9aZ=#|SIRve>KlC80tO@n+MFwXA`Uo8`T1~k2Apz{UyUqD!8uEDp#%W+RewU@
zP@Z$Oqi5%AgdvxC9XDsa@nAb~%N0({ucN_YQ_-zJPS!Pa?LrY=JojhF+prFi-F`^I
zb`_VKqnMv-QyE35KVYiyQV|q3*o)`AG<mJF+r;UqOW1n1_0K^3rWu`@aKF9Bgv52{
zRj+7bT?xS8htGsm32FE3uYo0s%72~Y!hu#+y7mE;hSJNKpsTFN?>W3GmmTTodt7B5
z>@}5^>kQI~=>`cjCn+uQTU?s^n0GfQ-4$>25yN5QC}jmHVRNj^2d|hLz+ZdbM;tNA
zs$VpW`4R=o?HVg>&frUAGS07&eO48-<nLHX?FML}g4<xwY-_POaU-%_6@PQuVAx)4
zwFFnStPKX)+GG&Sz@IPuh|Ej7-!UxP+~J39q@PvAtOjrm+jbjRP{D2B8muh_r{fy8
zfuAFL$53v`Ztz3p9yWTn46YM<5`B);BPRA%`cRpjxUIG;+Mibs_gOW}k=-%ZTm9`I
z1$Vj=&0w)-eqP@Ib848?0DtyPfZYH#Qg8!w(q6R;8gu?C>8Ii6h~Bwcu!J}G6LLF8
z3^F3{lXhmc&?z>ZXMBnv;g{Ai&;rgehD;UwZk}28bTUupr64CIX~=Wa1GE!QMN8CD
zK{*R`z^A-=8sF+OYMN67SQRDpK6(NFm%n`ZGV(aSuY}d5{~eD8I)8*T<`+~=aWw8w
z@e2jzcR#BCc%gn&FE0KKQGQe}|Fa_~2SgN2jVZ=;K!mw`;2+q4O7;q1p-T9AsmO{l
z{W}Qp*UGnRZdb*}go7>^NvC8~ugoQgK#_SDp)Qocx=;q}LLr*l3NYi~=sl6IyhFx+
z4P+rFtEQxYBAe!^fPZmsC*Mmr<i<pkM~^X|ZtseQUlNF7O#AOSi)~rSN3@<w(kZf?
zYAh4KmT+*730qfyMMrGH;y23}tlJR$o{dR|6;ptC`~0Y1z{$c)V<*gtmCy*gZqKm8
zqh7fNASV)h%?4mPy{--LrFtp5ssj3m10`?=rN_SHvQu(N(topaxC-kB`BF+=+CC{H
zFOGZo->?pVQW{EL6qEZ{1ErH2=vV(zN~zjDU4&RWb>&V*dhUW_i@V-}9>IL2KJrJ3
zHtzZi?mBgIIw4#^F`Bp3v5scBGG9_MNabYLJW{B1joDj1dwE=s{!!;GYC&`mrCA4U
zlphtszzi+ak$(cRYfKgM`C?G)Q<;9jRI?O|OzxR-Pl4vOBtDR%dz@B0FLg?&X@QsF
zM$tHcTzqh{1VA8HdPbm?iV)ns<(NO(cH>HJs(Fw!c`8@Av@f%5`Ui8ZT}E}}3Cmau
z{E<BkXhV-HWtCT0UT%hI%V(SSxA1>Ye~{~Pder0Fe}Ajtrx&icUT01Hx$B;3a;uMo
zM1z2j&?op`VD2lLWAT+DqZ)f^T#c;rwGT&GUtr@Q0{-_`Kv05U6mD10GmM)fr7Wom
zQEPMP59o}0w9zInUOayxyC@}H0e;1{FUqk;)D5r+f-}fgh3Lxpcc1_<hPp%y*_j1n
zr*8}d#D5kS6vT0U@gw}ddnr^yQ<54%*VFDMSG9b@_F#L#xA}1Nv)P`s6Wdks36Yc_
zb#~gyG!X7TwzqwobH}{Q{c5}kFy{+9Ou-s;*JPQ_`&^XmdoRYfYNpU(pstvhK!(f0
zl80q=qUoY+-;B{^cV5A&8gHYT{BvGB<~j*kA%9tn+ND=EEsW9dzLK{QeotJ2Q39h=
zo)wZKiD2w)kzztRujKVOL#Kf#zJ)VIZvfH+rK8JZ&W=u`GaG~SeDPOQ(rW|6QiRnT
z=d>Eo2???ElLrQCyd9dHb}z|n-loWIr&>+V({bv_=u28;6aEbw;k(i^j83rLrr~bq
zv46l&>M&(sJY)Yc(M)iP095IPTX~%#MJ**|tz-7I4uy5)d`z@RoNfTm4<fs~c#+~c
zA5=Li-4XA2Lhpw*Pn9e$#&J~ZBj)jLe71pIWSz$-e6ns<$0vbmQ)0=AX4WmE{=_<Q
zjKOl>zHnNBQ?yj1H}f%veMVuK<n_or+J8ieQaPg)?APp!)xO#1X@t$HkUTIIzUEiU
zNs7H%F{vdjd**>C14WtvyL-uN<DGYnY2%Q{JI75AlQQF}Lk1|Nwn2Y1{R&Gb*Q~Dv
zHmU)w2Lj~!2x87>I!^O!pzJy5?xx>+>149)icd_?-FzZ9@sYOS(D<qRvP~Dq<$skJ
z6e_XCY10r>?YeBiY1lkyW0EfGq(EMdyd{wtB+%==N!%<1JwEE9#-y{Y8?P8QEc>ms
zK*QlN@23OvKPJCvEuSbYT8-IlTbE(6vsiXwYcoKwUIwz>bMn9>I?%TnF3A!(%m}Gu
zxR}q&2frTr6C&6tGs(6&EEws0xPPFGW`(C^`7Vp;y%>C1y4|rPTcdP^rLee*mu_&6
z$XiuG>pmhWjbt`R$p|T3ZD~aA@+e3%TYx5&^{kG(sbfE;BfKw?J^<b$IZbRoiZqKO
zb<o4>k?X41=4JKBy-@{WZ@PD!CR-eL(3f$V@vR-^wv(quV|i@!HmM&Iet%#BKjPyr
zSwR~5Z5i)B<MVSKu~$R82>OxJn2kG15G0o#4rxJ9g7Bky8eb^);Ev%y#;;g{MK}vq
zbxJT?=wxOh+eNYZ=bR-zZYZ;9&9M!hm2JyPeyywkaDzpP4`Qk2q&{%f+LDVc@SIc8
zTVUO@p4Lu9<FubEg}sq}<bRBol<$G9`5C_5T|=K#UfI{+YE4&^SL=|jtm6DM0hH(4
zgAAVmr}EvtMs*Xb(AmzQ0Xa<}za~jLBikEs^D!>6=vm#6;j(OUin{m7yICcYT%Cjx
zu<tdPyj<CW(Pn3XDF#yl)@g_`x+~KpKfpGMw?UO{Tz11K<msnrTYt?eRHraqP*t|I
z+AXZ8@UXQ;8;<RD)p|8R-p2KcF%Li+nC*qvdQ?EuIn3!-<VGtu58Cp7-NI=6;3&g`
zUN0W`xsMtTnY5SOH|QjdOCY*nq?LQYgUf2-b<W+glHX7f6|4)bhCK4)A`FI&M_`J<
zR2PhvaRhT4f>Lk7Zhs$3m`AHHn?p5xNn*;-DUU2$Ci6BUoTnW&t3&d8G8CVJj7o0C
zKYT$b^NzD)p#RQ*eb;Y?w2B5#4sB8*3R?O*y&Z%P!jdn&_Nll%`?szQ>)>`sD@obh
zIh(ZUkTjHjd6pdZwG+qfxw~<3sGtOaH908wTw+|LkpdhjD1QN9?eESU#5aZY8#`YL
zP{$}2t$xnaJUK$M$oK_}a<T}G0xIN*9xSAEA$k>57h?0KF4U7@@cDJ;op${oxqd~t
z6F2P_YCZhuv+mA|X69}8v%JyVkIY8NWzPiRyKL(($T|LbmcQ%b*eUs>{Tks{A5xFD
zhg`xiJ0>^KYJZ=5T-o1<ub)7ZDfD&K>kRhDx{L7S7HPEoa8ERT)WH(7YJw5QkCqqm
zV6?xQF8NRLgOVS56&x_?us9v3MX)J<ZvWj!EcO%zF<^%8V>+}y+kf?N?-PEsm$C#U
z6W!RO{uBSLKJwo^bp6g5?x&zwfEt<LE}2fX%6Pded4CoSH&uLO#C#d8o9>(>vD3W%
z_LaP{pJkJ$+QvqK;PkYmu?ms!%KWnj_c=L7cL_a!Q%wLmr2m?n)f@Sv2U_DBS(6NE
zs!#miZ)oD}%pQfO7AV&K%9GxrlBSY^81XKyU`|o~-7YMYy7+yPqr1dcmtFlU7rerM
ze$$dk4SyEJZ%MXCXC_#eX|?#j|Mh<=cg0Z76#A!c;N&t;@97-r4-EW{-4mDtd>i4m
zC_Y!;^L6wM#$rPIRX2y^SlF!jDFqq>L$M29@zXNbLSj{ue1)b;k?R|LKL?*2@KiNM
z&DC9+uj-S0W#xjG*WamkZ{K9aqg6Y!M3PlEFn=$BeNaK*L{E4(usjzfy8jMwF;%J~
z{5v9t>aT@ZJ-tq<_emZ7;W_Y3&-O8&AI_h!{4<Ng3bxu~>}!6TqEqun{`AdB-hWMN
zaXhn;dLLy|?)`j@VF$H_&&0TrvFQviZ4$L=Z#5W9u<t(Xz!o-23CoL?Igjfs@A&u-
zA2Y~btK@5qX$CRo`WT<TF{*)Eomca)))2eYEX|-wVm)F^qwsHB<|BXqfJ?&v14tW`
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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch.html">Managing Models &amp; 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>&#160;&#160;&#160;
        <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>&#160;&#160;&#160;
+       <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>&#160;&#160;&#160;
+       <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>&#160;&#160;&#160;
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 &amp; MLFlow</a></li>
 <li class="toctree-l1"><a class="reference internal" href="notebooks/models_and_releases_demo_pytorch.html">Managing Models &amp; 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 &amp; MLFlow", "Managing Models &amp; 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 &amp; MLFlow", "Managing Models &amp; 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"