Module adcp.reporting.ledger.notification_events
Pure event mappings, invoked only by an opted-in store's transaction.
Functions
def adjustment_event(adjustment: ReportingAdjustmentRecord, at: datetime, *, consumer_id: str) ‑> ReportingDomainEvent-
Expand source code
def adjustment_event( adjustment: ReportingAdjustmentRecord, at: datetime, *, consumer_id: str ) -> ReportingDomainEvent: return new_event( adjustment.account_id, AdjustmentPublished( adjustment.reporting_adjustment_id, consumer_id, adjustment.adjusts_reporting_revision_id, ), at, ) def delivery_dirty(record: ReportingDeliveryRecord, obligation: ReportingObligationRecord | None) ‑> tuple[ReportingStatusScope, typing.Literal['configuration', 'obligation', 'revision', 'adjustment', 'readability', 'consumer_status', 'issue', 'destination', 'materialization', 'receipt', 'clock'], ReportingStatusEvidence]-
Expand source code
def delivery_dirty( record: ReportingDeliveryRecord, obligation: ReportingObligationRecord | None ) -> tuple[ReportingStatusScope, DirtyReason, ReportingStatusEvidence]: from adcp.reporting.ledger._delivery_state import change_id if isinstance(record, ReportingDestinationBinding): scope = ReportingStatusScope( record.generation_key.account_id, record.generation_key, consumer_id=record.consumer_id, feed_purpose=record.feed_purpose, ) reason: DirtyReason = "destination" else: if obligation is None: raise ReportingNotificationError("invalid_status_scope") scope = ReportingStatusScope.for_obligation(obligation, record.scope.consumer_id) reason = "receipt" if record.kind.endswith("receipt") else "materialization" return scope, reason, ReportingStatusEvidence(record.kind, change_id(record)) def materialization_event(record: ReportingDeliveryRecord,
records: tuple[ReportingDeliveryRecord, ...],
obligation: ReportingObligationRecord | None,
revision: ReportingRevisionRecord | None,
configuration: ReportingConfiguration | None,
at: datetime) ‑> ReportingDomainEvent | None-
Expand source code
def materialization_event( record: ReportingDeliveryRecord, records: tuple[ReportingDeliveryRecord, ...], obligation: ReportingObligationRecord | None, revision: ReportingRevisionRecord | None, configuration: ReportingConfiguration | None, at: datetime, ) -> ReportingDomainEvent | None: """Call after the shared reconciliation validator verified the exact graph. Core has no obligation-delivery binding or Managed destination. Neither an advertised capability, a profile label, nor a subscriber request can create this structural evidence. No rows/resources/provider metadata are copied. """ if not isinstance(record, ReportingMaterializationRecord) or record.status == "failed": return None binding = next( ( item for item in records if isinstance(item, ReportingDestinationBinding) and item.generation_key == record.scope.generation_key and item.consumer_id == record.scope.consumer_id ), None, ) frozen = next( ( item for item in records if isinstance(item, ReportingObligationDeliveryRecord) and item.scope == record.scope ), None, ) if ( binding is None or frozen is None or revision is None or obligation is None or configuration is None or configuration.generation_key != record.scope.generation_key or record.verification is None or record.resource is None or record.scope.reporting_obligation_id != obligation.reporting_obligation_id or record.scope.generation_key != obligation.generation_key or revision.account_id != obligation.account_id or revision.reporting_obligation_id != obligation.reporting_obligation_id or revision.reporting_revision_id != record.reporting_revision_id ): raise ReportingNotificationError("core_delivery_ready_forbidden") return new_event( obligation.account_id, MaterializationReady( generation_key=record.scope.generation_key, consumer_id=record.scope.consumer_id, reporting_obligation_id=obligation.reporting_obligation_id, destination_ref=binding.destination_ref, method=binding.method, reporting_revision_id=record.reporting_revision_id, reporting_materialization_id=record.reporting_materialization_id, readiness=record.status, finality=revision.finality, data_through=revision.data_through, feed_purpose=binding.feed_purpose, ), at, )Call after the shared reconciliation validator verified the exact graph.
Core has no obligation-delivery binding or Managed destination. Neither an advertised capability, a profile label, nor a subscriber request can create this structural evidence. No rows/resources/provider metadata are copied.
def revision_event(revision: ReportingRevisionRecord, at: datetime, *, consumer_id: str) ‑> ReportingDomainEvent-
Expand source code
def revision_event( revision: ReportingRevisionRecord, at: datetime, *, consumer_id: str ) -> ReportingDomainEvent: return new_event( revision.account_id, RevisionPublished( revision.reporting_revision_id, consumer_id, revision.finality, revision.supersedes_reporting_revision_id, ), at, )