"""Resolve the set of UPCs and ISRCs attached to a transfer job.""" from __future__ import annotations from typing import Any from src import config from src.errors import TransientError from src.ows_response import parse_json_response def resolve_attachments_for_job(job_id: int) -> dict[str, list[str]]: """Call GET /transfer/job/{job_id}/attachments on ows-project-manager.""" config.logger.info("Resolving attachments for job %d", job_id) resp = config.ows_client.get("ows-project-manager", path=f"/transfer/job/{job_id}/attachments") data: dict[str, Any] = parse_json_response("ows-project-manager", resp) upcs = data.get("upcs") or [] isrcs = data.get("isrcs") or [] if not isinstance(upcs, list) or not isinstance(isrcs, list): raise TransientError(f"ows-project-manager response missing list fields: {data!r}") config.logger.info("Resolved %d UPCs and %d ISRCs for job %d.", len(upcs), len(isrcs), job_id) return {"upcs": upcs, "isrcs": isrcs}