Source code for buildcompiler.adapters.pudu.plating_json
"""In-memory adapter for compiler-level PUDU plating JSON payloads."""
from collections import OrderedDict
from collections.abc import Mapping
from typing import Any
[docs]
def plating_to_pudu_json(
*,
bacterium_locations: Mapping[str, str | list[str]],
advanced_parameters: Mapping[str, object] | None = None,
) -> dict[str, object]:
"""Adapt plating records into PUDU's plating input JSON.
PUDU expects thermocycler source wells as keys and transformed construct
identifiers as values, wrapped under ``bacterium_locations``.
"""
stable_locations = OrderedDict(
sorted(bacterium_locations.items(), key=lambda kv: kv[0])
)
payload: dict[str, Any] = {
"bacterium_locations": dict(stable_locations),
}
if advanced_parameters:
payload.update(dict(advanced_parameters))
return payload