| """CVAT API task schemas. | |
| This module contains Pydantic models for CVAT API tasks, including task details | |
| and media metadata. | |
| """ | |
| from typing import Any | |
| from pydantic import BaseModel, ConfigDict, Field | |
| from .common import CvatApiJobsSummary, CvatApiStorage, CvatApiUser | |
| from .job import CvatApiMetainformationFrame | |
| from .label import CvatApiLabelDefinition | |
| class CvatApiTaskMediasMetainformation(BaseModel): | |
| """Represents the media metadata for a task in CVAT API. | |
| Attributes: | |
| media_type: Type of media (e.g., "image", "video") - optional as not always returned by API | |
| start_frame: First frame number in the task | |
| stop_frame: Last frame number in the task | |
| frame_filter: Frame filter expression | |
| frames: List of frame metadata | |
| """ | |
| media_type: str | None = None | |
| start_frame: int | |
| stop_frame: int | |
| frame_filter: str | |
| frames: list[CvatApiMetainformationFrame] | |
| model_config = ConfigDict(extra="allow") | |
| class CvatApiTaskDetails(BaseModel): | |
| """Represents task details in CVAT API. | |
| Tasks are containers for annotation work, divided into jobs. Tasks belong | |
| to projects and contain media (images or video frames) to be annotated. | |
| Attributes: | |
| id: Unique task identifier | |
| name: Task name | |
| project_id: Associated project ID (optional) | |
| mode: Task mode (e.g., "annotation", "interpolation") | |
| owner: User who created the task | |
| assignee: User assigned to the task (optional) | |
| bug_tracker: Bug tracker URL | |
| created_date: Task creation timestamp | |
| updated_date: Last update timestamp | |
| overlap: Number of overlapping frames between jobs (optional) | |
| segment_size: Number of frames per job segment (optional) | |
| status: Task status | |
| labels: Label definitions or URL reference | |
| segments: List of job segments | |
| dimension: Task dimension ("2d" or "3d") | |
| data_compressed_chunk_type: Compression type for data chunks | |
| data_original_chunk_type: Original chunk type | |
| image_quality: JPEG quality for image compression (0-100, optional) | |
| data: Data ID reference (optional) | |
| subset: Dataset subset name (e.g., "train", "test", "val") | |
| organization: Organization ID (optional) | |
| target_storage: Target storage configuration (optional) | |
| source_storage: Source storage configuration (optional) | |
| jobs: Jobs summary for this task | |
| url: API URL for the task | |
| data_chunk_size: Size of data chunks (optional) | |
| data_cloud_storage_id: Cloud storage ID for data (optional) | |
| guide_id: ID of annotation guide (optional) | |
| size: Task size in bytes (optional) | |
| organization_id: Organization ID (optional, alternative field) | |
| assignee_updated_date: Last assignee update timestamp (optional) | |
| validation_mode: Validation mode (optional) | |
| consensus_enabled: Whether consensus mode is enabled | |
| """ | |
| id: int | |
| name: str | |
| project_id: int | None = None | |
| mode: str | |
| owner: CvatApiUser | |
| assignee: CvatApiUser | None = None | |
| bug_tracker: str = "" | |
| created_date: str | |
| updated_date: str | |
| overlap: int | None = None | |
| segment_size: int | None = None | |
| status: str | |
| labels: list[CvatApiLabelDefinition] | dict[str, str] = Field(default_factory=list) | |
| segments: list[dict[str, Any]] = Field(default_factory=list) | |
| dimension: str | |
| data_compressed_chunk_type: str | None = None | |
| data_original_chunk_type: str | None = None | |
| image_quality: int | None = None | |
| data: int | None = None | |
| subset: str = "" | |
| organization: int | None = None | |
| target_storage: CvatApiStorage | None = None | |
| source_storage: CvatApiStorage | None = None | |
| jobs: CvatApiJobsSummary | |
| url: str | |
| data_chunk_size: int | None = None | |
| data_cloud_storage_id: int | None = None | |
| guide_id: int | None = None | |
| size: int | None = None | |
| organization_id: int | None = None | |
| assignee_updated_date: str | None = None | |
| validation_mode: str | None = None | |
| consensus_enabled: bool = False | |
| model_config = ConfigDict(extra="allow") | |