Module adcp.compat.reporting_version
Release gates for reporting controls added in AdCP 3.2 beta.6.
Functions
def assert_reporting_request_supported(tool_name: str, params: Any) ‑> None-
Expand source code
def assert_reporting_request_supported(tool_name: str, params: Any) -> None: """Fail before transport when the target predates a used reporting feature.""" payload = _record(params) target_version = payload.get("adcp_version") issue = beta6_reporting_request_issue(tool_name, payload) if ( issue is None or not isinstance(target_version, str) or is_adcp_version_at_least(target_version, "3.2.0-beta.6") ): return raise ADCPFeatureUnsupportedError( [ f"{issue.detail} at {issue.field} requires AdCP 3.2-beta.6 or newer " f"(target is {target_version}); no request was sent" ] )Fail before transport when the target predates a used reporting feature.
def beta6_delivery_request_issue(params: Any) ‑> Beta6ReportingIssue | None-
Expand source code
def beta6_delivery_request_issue(params: Any) -> Beta6ReportingIssue | None: """Return the first beta.6-only delivery request feature in ``params``.""" payload = _record(params) if "requested_metrics" in payload: return Beta6ReportingIssue("requested_metrics", "requested delivery metrics") for dimension, value in _record(payload.get("reporting_dimensions")).items(): if dimension in _BETA6_REPORTING_DIMENSIONS: return Beta6ReportingIssue( f"reporting_dimensions.{dimension}", f"the {dimension} delivery breakdown", ) settings = _record(value) if "sort_direction" in settings: return Beta6ReportingIssue( f"reporting_dimensions.{dimension}.sort_direction", "delivery sort direction", ) if settings.get("sort_by") in _BETA6_SORT_METRICS: metric = settings["sort_by"] return Beta6ReportingIssue( f"reporting_dimensions.{dimension}.sort_by", f"delivery sort metric {metric}", ) return NoneReturn the first beta.6-only delivery request feature in
params. def beta6_reporting_request_issue(tool_name: str, params: Any) ‑> Beta6ReportingIssue | None-
Expand source code
def beta6_reporting_request_issue(tool_name: str, params: Any) -> Beta6ReportingIssue | None: """Return the first beta.6-only reporting feature used by a request.""" if tool_name == "get_media_buy_delivery": return beta6_delivery_request_issue(params) if tool_name in _BETA6_REPORTING_TASKS: return _beta6_metric_issue(params) return NoneReturn the first beta.6-only reporting feature used by a request.
Classes
class Beta6ReportingIssue (field: str, detail: str)-
Expand source code
@dataclass(frozen=True) class Beta6ReportingIssue: field: str detail: strBeta6ReportingIssue(field: 'str', detail: 'str')
Instance variables
var detail : strvar field : str