Thibaut's picture
Fix import paths for metrics evaluation - corrected relative imports and client class names
03a45bc
"""CVAT API label methods."""
from typing import TYPE_CHECKING
from metrics_evaluation.schema.cvat import CvatApiLabelDefinition
from .retry import retry_with_backoff
# TYPE_CHECKING is False at runtime but True during static type checking.
# This allows us to import CvatApiClient for type hints without creating a circular
# import (client.py imports LabelsMethods, and we need CvatApiClient for type hints).
# Benefits:
# - Avoids circular import errors at runtime
# - Provides proper type checking during development
# - No performance overhead (import only happens during type checking, not at runtime)
# This is a recommended pattern in modern Python (PEP 484, PEP 563).
# -- Claude Code
if TYPE_CHECKING:
from .client import CvatApiClient
class LabelsMethods:
"""Label management operations for CVAT API."""
def __init__(self, client: "CvatApiClient"):
"""Initialize label methods with client reference.
Args:
client: Parent CvatApiClient instance
"""
self.client = client
@retry_with_backoff(max_retries=3, initial_delay=1.0)
def get_label_details(
self, label_id: int, token: str | None = None
) -> CvatApiLabelDefinition:
"""Fetch details for a specific label.
Args:
label_id: The ID of the label
token: Authentication token (optional)
Returns:
Label definition object
"""
headers = self.client._get_headers(token)
url = f"{self.client.cvat_host}/api/labels/{label_id}"
return self.client._make_request(
method="GET",
url=url,
headers=headers,
resource_name="label",
resource_id=label_id,
response_model=CvatApiLabelDefinition,
)