source code Browse git
from typing import Optional

from pydantic import BaseModel

from .client import Client
from .users import User


class Workspace(BaseModel):
    id: int
    title: str
    description: Optional[str] = ''
    color: str
    is_personal: bool
    created_by: int
    client: Client

    class Config:
        arbitrary_types_allowed = True

    def add_user(self, user: User):
        """Add user to workspace

        Parameters
        ----------
        user: label_studio_sdk.users.User
            User
        """
        response = self.client.make_request(
            "POST",
            f"/api/workspaces/{self.id}/memberships",
            json={"workspace": self.id, "user": user.id},
        )
        return response.json()

    def remove_user(self, user: User):
        """Remove user from workspace

        Parameters
        ----------
        user: label_studio_sdk.users.User
            User
        """
        response = self.client.make_request(
            "DELETE",
            f"/api/workspaces/{self.id}/memberships",
            json={"workspace": self.id, "user": user.id},
        )
        if response.status_code != 204:
            raise ValueError(str(response.content))

    def get_projects(self):
        """Get projects in current workspace

        Returns
        -------
        projects: list of label_studio_sdk.project.Project
            Project
        """
        from .project import Project

        final_results = []
        response = self.client.make_request(
            "GET", f"/api/workspaces/{self.id}/projects"
        )
        projects = response.json()
        for project_data in projects:
            project_id = project_data["id"]
            final_results.append(
                Project.get_from_id(
                    client=self.client,
                    project_id=project_id,
                )
            )
        return final_results

Classes

class Workspace (**data: Any)

Usage docs: https://docs.pydantic.dev/2.6/concepts/models/

A base class for creating Pydantic models.

Attributes

__class_vars__
The names of classvars defined on the model.
__private_attributes__
Metadata about the private attributes of the model.
__signature__
The signature for instantiating the model.
__pydantic_complete__
Whether model building is completed, or if there are still undefined fields.
__pydantic_core_schema__
The pydantic-core schema used to build the SchemaValidator and SchemaSerializer.
__pydantic_custom_init__
Whether the model has a custom __init__ function.
__pydantic_decorators__
Metadata containing the decorators defined on the model. This replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.
__pydantic_generic_metadata__
Metadata for generic models; contains data used for a similar purpose to args, origin, parameters in typing-module generics. May eventually be replaced by these.
__pydantic_parent_namespace__
Parent namespace of the model, used for automatic rebuilding of models.
__pydantic_post_init__
The name of the post-init method for the model, if defined.
__pydantic_root_model__
Whether the model is a RootModel.
__pydantic_serializer__
The pydantic-core SchemaSerializer used to dump instances of the model.
__pydantic_validator__
The pydantic-core SchemaValidator used to validate instances of the model.
__pydantic_extra__
An instance attribute with the values of extra fields from validation when model_config['extra'] == 'allow'.
__pydantic_fields_set__
An instance attribute with the names of fields explicitly set.
__pydantic_private__
Instance attribute with the values of private attributes set on the model instance.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

source code Browse git
class Workspace(BaseModel):
    id: int
    title: str
    description: Optional[str] = ''
    color: str
    is_personal: bool
    created_by: int
    client: Client

    class Config:
        arbitrary_types_allowed = True

    def add_user(self, user: User):
        """Add user to workspace

        Parameters
        ----------
        user: label_studio_sdk.users.User
            User
        """
        response = self.client.make_request(
            "POST",
            f"/api/workspaces/{self.id}/memberships",
            json={"workspace": self.id, "user": user.id},
        )
        return response.json()

    def remove_user(self, user: User):
        """Remove user from workspace

        Parameters
        ----------
        user: label_studio_sdk.users.User
            User
        """
        response = self.client.make_request(
            "DELETE",
            f"/api/workspaces/{self.id}/memberships",
            json={"workspace": self.id, "user": user.id},
        )
        if response.status_code != 204:
            raise ValueError(str(response.content))

    def get_projects(self):
        """Get projects in current workspace

        Returns
        -------
        projects: list of label_studio_sdk.project.Project
            Project
        """
        from .project import Project

        final_results = []
        response = self.client.make_request(
            "GET", f"/api/workspaces/{self.id}/projects"
        )
        projects = response.json()
        for project_data in projects:
            project_id = project_data["id"]
            final_results.append(
                Project.get_from_id(
                    client=self.client,
                    project_id=project_id,
                )
            )
        return final_results

Constants

Config
clientClient
color : str
created_by : int
description : Optional[str]
id : int
is_personal : bool
model_computed_fields
model_config
model_fields
title : str

Methods

def add_user(self, user: User)

Add user to workspace

Parameters

user : User
User
source code Browse git
def add_user(self, user: User):
    """Add user to workspace

    Parameters
    ----------
    user: label_studio_sdk.users.User
        User
    """
    response = self.client.make_request(
        "POST",
        f"/api/workspaces/{self.id}/memberships",
        json={"workspace": self.id, "user": user.id},
    )
    return response.json()
def get_projects(self)

Get projects in current workspace

Returns

projects : list of Project
Project
source code Browse git
def get_projects(self):
    """Get projects in current workspace

    Returns
    -------
    projects: list of label_studio_sdk.project.Project
        Project
    """
    from .project import Project

    final_results = []
    response = self.client.make_request(
        "GET", f"/api/workspaces/{self.id}/projects"
    )
    projects = response.json()
    for project_data in projects:
        project_id = project_data["id"]
        final_results.append(
            Project.get_from_id(
                client=self.client,
                project_id=project_id,
            )
        )
    return final_results
def remove_user(self, user: User)

Remove user from workspace

Parameters

user : User
User
source code Browse git
def remove_user(self, user: User):
    """Remove user from workspace

    Parameters
    ----------
    user: label_studio_sdk.users.User
        User
    """
    response = self.client.make_request(
        "DELETE",
        f"/api/workspaces/{self.id}/memberships",
        json={"workspace": self.id, "user": user.id},
    )
    if response.status_code != 204:
        raise ValueError(str(response.content))