Module adcp.reporting.ledger.delivery_models
Retained seller delivery/reconciliation facts. No provider clients or wire blobs.
Every collection is a tuple, every nested value is frozen, and there is no open metadata bag. The trusted binding reference selects configuration in a separate credential resolver; it is never itself a credential or an authorization grant.
Classes
class ReportingAdjustmentReceiptRecord (scope: ReportingDeliveryScope,
reporting_receipt_id: str,
reporting_adjustment_id: str,
adjusts_reporting_revision_id: str,
status: ReceiptStatus,
observed_adjustment_sha256: str,
observed_at: datetime,
supersedes_reporting_receipt_id: str | None = None,
rejection_codes: tuple[str, ...] = (),
received_at: datetime | None = None,
*,
kind: "Literal['adjustment_receipt']" = 'adjustment_receipt')-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingAdjustmentReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_adjustment_id: str adjusts_reporting_revision_id: str status: ReceiptStatus observed_adjustment_sha256: str observed_at: datetime supersedes_reporting_receipt_id: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["adjustment_receipt"] = field(default="adjustment_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_adjustment_id, maximum=255) reporting_identifier(self.adjusts_reporting_revision_id, maximum=255) sha256_value(self.observed_adjustment_sha256) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id)ReportingAdjustmentReceiptRecord(scope: 'ReportingDeliveryScope', reporting_receipt_id: 'str', reporting_adjustment_id: 'str', adjusts_reporting_revision_id: 'str', status: 'ReceiptStatus', observed_adjustment_sha256: 'str', observed_at: 'datetime', supersedes_reporting_receipt_id: 'str | None' = None, rejection_codes: 'tuple[str, …]' = (), received_at: 'datetime | None' = None, *, kind: "Literal['adjustment_receipt']" = 'adjustment_receipt')
Ancestors
- adcp.reporting.ledger.delivery_models._ClosedValue
Instance variables
var adjusts_reporting_revision_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingAdjustmentReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_adjustment_id: str adjusts_reporting_revision_id: str status: ReceiptStatus observed_adjustment_sha256: str observed_at: datetime supersedes_reporting_receipt_id: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["adjustment_receipt"] = field(default="adjustment_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_adjustment_id, maximum=255) reporting_identifier(self.adjusts_reporting_revision_id, maximum=255) sha256_value(self.observed_adjustment_sha256) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) prop key : ReportingReceiptKey-
Expand source code
@property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var kind : Literal['adjustment_receipt']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingAdjustmentReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_adjustment_id: str adjusts_reporting_revision_id: str status: ReceiptStatus observed_adjustment_sha256: str observed_at: datetime supersedes_reporting_receipt_id: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["adjustment_receipt"] = field(default="adjustment_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_adjustment_id, maximum=255) reporting_identifier(self.adjusts_reporting_revision_id, maximum=255) sha256_value(self.observed_adjustment_sha256) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var observed_adjustment_sha256 : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingAdjustmentReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_adjustment_id: str adjusts_reporting_revision_id: str status: ReceiptStatus observed_adjustment_sha256: str observed_at: datetime supersedes_reporting_receipt_id: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["adjustment_receipt"] = field(default="adjustment_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_adjustment_id, maximum=255) reporting_identifier(self.adjusts_reporting_revision_id, maximum=255) sha256_value(self.observed_adjustment_sha256) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var observed_at : datetime.datetime-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingAdjustmentReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_adjustment_id: str adjusts_reporting_revision_id: str status: ReceiptStatus observed_adjustment_sha256: str observed_at: datetime supersedes_reporting_receipt_id: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["adjustment_receipt"] = field(default="adjustment_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_adjustment_id, maximum=255) reporting_identifier(self.adjusts_reporting_revision_id, maximum=255) sha256_value(self.observed_adjustment_sha256) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var received_at : datetime.datetime | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingAdjustmentReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_adjustment_id: str adjusts_reporting_revision_id: str status: ReceiptStatus observed_adjustment_sha256: str observed_at: datetime supersedes_reporting_receipt_id: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["adjustment_receipt"] = field(default="adjustment_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_adjustment_id, maximum=255) reporting_identifier(self.adjusts_reporting_revision_id, maximum=255) sha256_value(self.observed_adjustment_sha256) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var rejection_codes : tuple[str, ...]-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingAdjustmentReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_adjustment_id: str adjusts_reporting_revision_id: str status: ReceiptStatus observed_adjustment_sha256: str observed_at: datetime supersedes_reporting_receipt_id: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["adjustment_receipt"] = field(default="adjustment_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_adjustment_id, maximum=255) reporting_identifier(self.adjusts_reporting_revision_id, maximum=255) sha256_value(self.observed_adjustment_sha256) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var reporting_adjustment_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingAdjustmentReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_adjustment_id: str adjusts_reporting_revision_id: str status: ReceiptStatus observed_adjustment_sha256: str observed_at: datetime supersedes_reporting_receipt_id: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["adjustment_receipt"] = field(default="adjustment_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_adjustment_id, maximum=255) reporting_identifier(self.adjusts_reporting_revision_id, maximum=255) sha256_value(self.observed_adjustment_sha256) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var reporting_receipt_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingAdjustmentReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_adjustment_id: str adjusts_reporting_revision_id: str status: ReceiptStatus observed_adjustment_sha256: str observed_at: datetime supersedes_reporting_receipt_id: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["adjustment_receipt"] = field(default="adjustment_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_adjustment_id, maximum=255) reporting_identifier(self.adjusts_reporting_revision_id, maximum=255) sha256_value(self.observed_adjustment_sha256) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var scope : ReportingDeliveryScope-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingAdjustmentReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_adjustment_id: str adjusts_reporting_revision_id: str status: ReceiptStatus observed_adjustment_sha256: str observed_at: datetime supersedes_reporting_receipt_id: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["adjustment_receipt"] = field(default="adjustment_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_adjustment_id, maximum=255) reporting_identifier(self.adjusts_reporting_revision_id, maximum=255) sha256_value(self.observed_adjustment_sha256) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var status : Literal['accepted', 'rejected']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingAdjustmentReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_adjustment_id: str adjusts_reporting_revision_id: str status: ReceiptStatus observed_adjustment_sha256: str observed_at: datetime supersedes_reporting_receipt_id: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["adjustment_receipt"] = field(default="adjustment_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_adjustment_id, maximum=255) reporting_identifier(self.adjusts_reporting_revision_id, maximum=255) sha256_value(self.observed_adjustment_sha256) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var supersedes_reporting_receipt_id : str | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingAdjustmentReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_adjustment_id: str adjusts_reporting_revision_id: str status: ReceiptStatus observed_adjustment_sha256: str observed_at: datetime supersedes_reporting_receipt_id: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["adjustment_receipt"] = field(default="adjustment_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_adjustment_id, maximum=255) reporting_identifier(self.adjusts_reporting_revision_id, maximum=255) sha256_value(self.observed_adjustment_sha256) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id)
class ReportingDeliveryPrincipal (account_id: str, consumer_id: str)-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDeliveryPrincipal(_ClosedValue): """Trusted account and consumer identity, resolved from authenticated transport.""" account_id: str consumer_id: str def __post_init__(self) -> None: _freeze_fields(self) principal_reference(self.account_id) from adcp.reporting.evidence import consumer_reference consumer_reference(self.consumer_id)Trusted account and consumer identity, resolved from authenticated transport.
Ancestors
- adcp.reporting.ledger.delivery_models._ClosedValue
Instance variables
var account_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDeliveryPrincipal(_ClosedValue): """Trusted account and consumer identity, resolved from authenticated transport.""" account_id: str consumer_id: str def __post_init__(self) -> None: _freeze_fields(self) principal_reference(self.account_id) from adcp.reporting.evidence import consumer_reference consumer_reference(self.consumer_id) var consumer_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDeliveryPrincipal(_ClosedValue): """Trusted account and consumer identity, resolved from authenticated transport.""" account_id: str consumer_id: str def __post_init__(self) -> None: _freeze_fields(self) principal_reference(self.account_id) from adcp.reporting.evidence import consumer_reference consumer_reference(self.consumer_id)
class ReportingDeliveryScope (generation_key: ReportingConfigurationGenerationKey,
consumer_id: str,
reporting_obligation_id: str)-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDeliveryScope(_ClosedValue): generation_key: ReportingConfigurationGenerationKey consumer_id: str reporting_obligation_id: str def __post_init__(self) -> None: _freeze_fields(self) if type(self.generation_key) is not ReportingConfigurationGenerationKey: raise ValueError("reporting scope requires the typed configuration generation") self.principal if self.consumer_id != self.generation_key.consumer_id: raise ValueError("reporting generation belongs to another caller") reporting_identifier(self.generation_key.delivery_config_id, maximum=64) _positive(self.generation_key.delivery_config_version) reporting_identifier(self.reporting_obligation_id, maximum=255) @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id)ReportingDeliveryScope(generation_key: 'ReportingConfigurationGenerationKey', consumer_id: 'str', reporting_obligation_id: 'str')
Ancestors
- adcp.reporting.ledger.delivery_models._ClosedValue
Instance variables
var consumer_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDeliveryScope(_ClosedValue): generation_key: ReportingConfigurationGenerationKey consumer_id: str reporting_obligation_id: str def __post_init__(self) -> None: _freeze_fields(self) if type(self.generation_key) is not ReportingConfigurationGenerationKey: raise ValueError("reporting scope requires the typed configuration generation") self.principal if self.consumer_id != self.generation_key.consumer_id: raise ValueError("reporting generation belongs to another caller") reporting_identifier(self.generation_key.delivery_config_id, maximum=64) _positive(self.generation_key.delivery_config_version) reporting_identifier(self.reporting_obligation_id, maximum=255) @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var generation_key : ReportingConfigurationGenerationKey-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDeliveryScope(_ClosedValue): generation_key: ReportingConfigurationGenerationKey consumer_id: str reporting_obligation_id: str def __post_init__(self) -> None: _freeze_fields(self) if type(self.generation_key) is not ReportingConfigurationGenerationKey: raise ValueError("reporting scope requires the typed configuration generation") self.principal if self.consumer_id != self.generation_key.consumer_id: raise ValueError("reporting generation belongs to another caller") reporting_identifier(self.generation_key.delivery_config_id, maximum=64) _positive(self.generation_key.delivery_config_version) reporting_identifier(self.reporting_obligation_id, maximum=255) @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) prop principal : ReportingDeliveryPrincipal-
Expand source code
@property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var reporting_obligation_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDeliveryScope(_ClosedValue): generation_key: ReportingConfigurationGenerationKey consumer_id: str reporting_obligation_id: str def __post_init__(self) -> None: _freeze_fields(self) if type(self.generation_key) is not ReportingConfigurationGenerationKey: raise ValueError("reporting scope requires the typed configuration generation") self.principal if self.consumer_id != self.generation_key.consumer_id: raise ValueError("reporting generation belongs to another caller") reporting_identifier(self.generation_key.delivery_config_id, maximum=64) _positive(self.generation_key.delivery_config_version) reporting_identifier(self.reporting_obligation_id, maximum=255) @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id)
class ReportingDestinationBinding (generation_key: ReportingConfigurationGenerationKey,
consumer_id: str,
destination_ref: str,
trusted_binding_ref: str,
method: DeliveryMethod,
transport: str,
verification_profile: VerificationProfile,
reconciliation_mode: "Literal['delivery_only', 'consumer_receipt']",
feed_purpose: "Literal['pacing', 'analytics', 'billing']",
resource_retention_days: int,
created_at: datetime,
format: ReportingFormat | None = None,
reader_compatibility: tuple[str, ...] = (),
success_status: "Literal['available', 'delivered']" = 'available',
*,
kind: "Literal['destination_binding']" = 'destination_binding')-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id)Immutable public portion of one trusted principal/configuration binding.
trusted_binding_refidentifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability.Ancestors
- adcp.reporting.ledger.delivery_models._ClosedValue
Instance variables
var consumer_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var created_at : datetime.datetime-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var destination_ref : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var feed_purpose : Literal['pacing', 'analytics', 'billing']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var format : Literal['jsonl', 'csv', 'parquet', 'avro', 'orc'] | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var generation_key : ReportingConfigurationGenerationKey-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var kind : Literal['destination_binding']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var method : Literal['file_transfer', 'dataset_share', 'warehouse_materialization']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) prop principal : ReportingDeliveryPrincipal-
Expand source code
@property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var reader_compatibility : tuple[str, ...]-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var reconciliation_mode : Literal['delivery_only', 'consumer_receipt']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var resource_retention_days : int-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var success_status : Literal['available', 'delivered']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var transport : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var trusted_binding_ref : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id) var verification_profile : Literal['canonical_digest', 'manifest_checksums', 'native_commit']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingDestinationBinding(_ClosedValue): """Immutable public portion of one trusted principal/configuration binding. ``trusted_binding_ref`` identifies an immutable trusted configuration, not a mutable 'latest' alias. Credentials are resolved later behind that reference. Storing this record neither configures a writer nor advertises a capability. """ generation_key: ReportingConfigurationGenerationKey consumer_id: str destination_ref: str trusted_binding_ref: str = field(repr=False) method: DeliveryMethod transport: str verification_profile: VerificationProfile reconciliation_mode: Literal["delivery_only", "consumer_receipt"] feed_purpose: Literal["pacing", "analytics", "billing"] resource_retention_days: int created_at: datetime format: ReportingFormat | None = None reader_compatibility: tuple[str, ...] = () success_status: Literal["available", "delivered"] = "available" kind: Literal["destination_binding"] = field(default="destination_binding", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) ReportingDeliveryScope(self.generation_key, self.consumer_id, "binding") destination_reference(self.destination_ref) destination_reference(self.trusted_binding_ref) if re.fullmatch(r"[a-z][a-z0-9_.-]{0,63}", self.transport) is None: raise ValueError("reporting transport requires a public protocol label") reporting_identifier(self.transport, maximum=64) _positive(self.resource_retention_days) object.__setattr__(self, "created_at", aware_utc(self.created_at)) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") if self.method == "file_transfer" and self.format is None: raise ValueError("file transfer requires a declared format") if self.verification_profile == "manifest_checksums" and self.method != "file_transfer": raise ValueError("manifest checksum verification requires file transfer") if self.method == "warehouse_materialization" and self.success_status != "delivered": raise ValueError("warehouse materialization requires destination delivery") if self.method == "dataset_share" and self.success_status != "available": raise ValueError("dataset share requires representative-consumer availability") if self.feed_purpose == "billing" and self.verification_profile != "canonical_digest": raise ValueError("billing receipts require canonical digest verification") @property def principal(self) -> ReportingDeliveryPrincipal: return ReportingDeliveryPrincipal(self.generation_key.account_id, self.consumer_id)
class ReportingMaterializationAttempt (scope: ReportingDeliveryScope,
reporting_revision_id: str,
reporting_materialization_id: str,
attempt: int,
created_at: datetime,
*,
kind: "Literal['materialization_attempt']" = 'materialization_attempt')-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationAttempt(_ClosedValue): scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str attempt: int created_at: datetime kind: Literal["materialization_attempt"] = field( default="materialization_attempt", kw_only=True ) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.attempt) object.__setattr__(self, "created_at", aware_utc(self.created_at)) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id)ReportingMaterializationAttempt(scope: 'ReportingDeliveryScope', reporting_revision_id: 'str', reporting_materialization_id: 'str', attempt: 'int', created_at: 'datetime', *, kind: "Literal['materialization_attempt']" = 'materialization_attempt')
Ancestors
- adcp.reporting.ledger.delivery_models._ClosedValue
Instance variables
var attempt : int-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationAttempt(_ClosedValue): scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str attempt: int created_at: datetime kind: Literal["materialization_attempt"] = field( default="materialization_attempt", kw_only=True ) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.attempt) object.__setattr__(self, "created_at", aware_utc(self.created_at)) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id) var created_at : datetime.datetime-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationAttempt(_ClosedValue): scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str attempt: int created_at: datetime kind: Literal["materialization_attempt"] = field( default="materialization_attempt", kw_only=True ) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.attempt) object.__setattr__(self, "created_at", aware_utc(self.created_at)) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id) prop key : ReportingMaterializationKey-
Expand source code
@property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id) var kind : Literal['materialization_attempt']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationAttempt(_ClosedValue): scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str attempt: int created_at: datetime kind: Literal["materialization_attempt"] = field( default="materialization_attempt", kw_only=True ) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.attempt) object.__setattr__(self, "created_at", aware_utc(self.created_at)) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id) var reporting_materialization_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationAttempt(_ClosedValue): scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str attempt: int created_at: datetime kind: Literal["materialization_attempt"] = field( default="materialization_attempt", kw_only=True ) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.attempt) object.__setattr__(self, "created_at", aware_utc(self.created_at)) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id) var reporting_revision_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationAttempt(_ClosedValue): scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str attempt: int created_at: datetime kind: Literal["materialization_attempt"] = field( default="materialization_attempt", kw_only=True ) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.attempt) object.__setattr__(self, "created_at", aware_utc(self.created_at)) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id) var scope : ReportingDeliveryScope-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationAttempt(_ClosedValue): scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str attempt: int created_at: datetime kind: Literal["materialization_attempt"] = field( default="materialization_attempt", kw_only=True ) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.attempt) object.__setattr__(self, "created_at", aware_utc(self.created_at)) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id)
class ReportingMaterializationCheck (scope: ReportingDeliveryScope,
reporting_materialization_id: str,
check_id: str,
state: "Literal['readable', 'unavailable', 'corrupt']",
checked_at: datetime,
*,
kind: "Literal['materialization_check']" = 'materialization_check')-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationCheck(_ClosedValue): """Append-only storage observations; they never mutate terminal evidence.""" scope: ReportingDeliveryScope reporting_materialization_id: str check_id: str state: Literal["readable", "unavailable", "corrupt"] checked_at: datetime kind: Literal["materialization_check"] = field(default="materialization_check", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_materialization_id, maximum=255) reporting_identifier(self.check_id, maximum=255) object.__setattr__(self, "checked_at", aware_utc(self.checked_at))Append-only storage observations; they never mutate terminal evidence.
Ancestors
- adcp.reporting.ledger.delivery_models._ClosedValue
Instance variables
var check_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationCheck(_ClosedValue): """Append-only storage observations; they never mutate terminal evidence.""" scope: ReportingDeliveryScope reporting_materialization_id: str check_id: str state: Literal["readable", "unavailable", "corrupt"] checked_at: datetime kind: Literal["materialization_check"] = field(default="materialization_check", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_materialization_id, maximum=255) reporting_identifier(self.check_id, maximum=255) object.__setattr__(self, "checked_at", aware_utc(self.checked_at)) var checked_at : datetime.datetime-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationCheck(_ClosedValue): """Append-only storage observations; they never mutate terminal evidence.""" scope: ReportingDeliveryScope reporting_materialization_id: str check_id: str state: Literal["readable", "unavailable", "corrupt"] checked_at: datetime kind: Literal["materialization_check"] = field(default="materialization_check", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_materialization_id, maximum=255) reporting_identifier(self.check_id, maximum=255) object.__setattr__(self, "checked_at", aware_utc(self.checked_at)) var kind : Literal['materialization_check']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationCheck(_ClosedValue): """Append-only storage observations; they never mutate terminal evidence.""" scope: ReportingDeliveryScope reporting_materialization_id: str check_id: str state: Literal["readable", "unavailable", "corrupt"] checked_at: datetime kind: Literal["materialization_check"] = field(default="materialization_check", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_materialization_id, maximum=255) reporting_identifier(self.check_id, maximum=255) object.__setattr__(self, "checked_at", aware_utc(self.checked_at)) var reporting_materialization_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationCheck(_ClosedValue): """Append-only storage observations; they never mutate terminal evidence.""" scope: ReportingDeliveryScope reporting_materialization_id: str check_id: str state: Literal["readable", "unavailable", "corrupt"] checked_at: datetime kind: Literal["materialization_check"] = field(default="materialization_check", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_materialization_id, maximum=255) reporting_identifier(self.check_id, maximum=255) object.__setattr__(self, "checked_at", aware_utc(self.checked_at)) var scope : ReportingDeliveryScope-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationCheck(_ClosedValue): """Append-only storage observations; they never mutate terminal evidence.""" scope: ReportingDeliveryScope reporting_materialization_id: str check_id: str state: Literal["readable", "unavailable", "corrupt"] checked_at: datetime kind: Literal["materialization_check"] = field(default="materialization_check", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_materialization_id, maximum=255) reporting_identifier(self.check_id, maximum=255) object.__setattr__(self, "checked_at", aware_utc(self.checked_at)) var state : Literal['readable', 'unavailable', 'corrupt']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationCheck(_ClosedValue): """Append-only storage observations; they never mutate terminal evidence.""" scope: ReportingDeliveryScope reporting_materialization_id: str check_id: str state: Literal["readable", "unavailable", "corrupt"] checked_at: datetime kind: Literal["materialization_check"] = field(default="materialization_check", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_materialization_id, maximum=255) reporting_identifier(self.check_id, maximum=255) object.__setattr__(self, "checked_at", aware_utc(self.checked_at))
class ReportingMaterializationKey (principal: ReportingDeliveryPrincipal,
reporting_materialization_id: str)-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationKey(_ClosedValue): principal: ReportingDeliveryPrincipal reporting_materialization_id: str def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_materialization_id, maximum=255)ReportingMaterializationKey(principal: 'ReportingDeliveryPrincipal', reporting_materialization_id: 'str')
Ancestors
- adcp.reporting.ledger.delivery_models._ClosedValue
Instance variables
var principal : ReportingDeliveryPrincipal-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationKey(_ClosedValue): principal: ReportingDeliveryPrincipal reporting_materialization_id: str def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_materialization_id, maximum=255) var reporting_materialization_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationKey(_ClosedValue): principal: ReportingDeliveryPrincipal reporting_materialization_id: str def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_materialization_id, maximum=255)
class ReportingMaterializationRecord (scope: ReportingDeliveryScope,
reporting_revision_id: str,
reporting_materialization_id: str,
status: "Literal['available', 'delivered', 'failed']",
completed_at: datetime,
resource: ReportingResourceRecord | None = None,
verification: ReportingVerificationRecord | None = None,
failure_code: MaterializationFailure | None = None,
*,
kind: "Literal['materialization']" = 'materialization')-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationRecord(_ClosedValue): """One terminal outcome. The pending attempt is retained separately.""" scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str status: Literal["available", "delivered", "failed"] completed_at: datetime resource: ReportingResourceRecord | None = None verification: ReportingVerificationRecord | None = None failure_code: MaterializationFailure | None = None kind: Literal["materialization"] = field(default="materialization", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) object.__setattr__(self, "completed_at", aware_utc(self.completed_at)) if self.status == "failed": if ( self.failure_code is None or self.resource is not None or self.verification is not None ): raise ValueError( "failed materializations retain only a safe failure classification" ) elif self.resource is None or self.verification is None or self.failure_code is not None: raise ValueError( "successful materializations require resource and verification evidence" ) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id)One terminal outcome. The pending attempt is retained separately.
Ancestors
- adcp.reporting.ledger.delivery_models._ClosedValue
Instance variables
var completed_at : datetime.datetime-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationRecord(_ClosedValue): """One terminal outcome. The pending attempt is retained separately.""" scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str status: Literal["available", "delivered", "failed"] completed_at: datetime resource: ReportingResourceRecord | None = None verification: ReportingVerificationRecord | None = None failure_code: MaterializationFailure | None = None kind: Literal["materialization"] = field(default="materialization", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) object.__setattr__(self, "completed_at", aware_utc(self.completed_at)) if self.status == "failed": if ( self.failure_code is None or self.resource is not None or self.verification is not None ): raise ValueError( "failed materializations retain only a safe failure classification" ) elif self.resource is None or self.verification is None or self.failure_code is not None: raise ValueError( "successful materializations require resource and verification evidence" ) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id) var failure_code : Literal['WRITE_FAILED', 'VERIFICATION_FAILED', 'CONTENT_CORRUPT', 'RESOURCE_UNAVAILABLE'] | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationRecord(_ClosedValue): """One terminal outcome. The pending attempt is retained separately.""" scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str status: Literal["available", "delivered", "failed"] completed_at: datetime resource: ReportingResourceRecord | None = None verification: ReportingVerificationRecord | None = None failure_code: MaterializationFailure | None = None kind: Literal["materialization"] = field(default="materialization", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) object.__setattr__(self, "completed_at", aware_utc(self.completed_at)) if self.status == "failed": if ( self.failure_code is None or self.resource is not None or self.verification is not None ): raise ValueError( "failed materializations retain only a safe failure classification" ) elif self.resource is None or self.verification is None or self.failure_code is not None: raise ValueError( "successful materializations require resource and verification evidence" ) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id) prop key : ReportingMaterializationKey-
Expand source code
@property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id) var kind : Literal['materialization']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationRecord(_ClosedValue): """One terminal outcome. The pending attempt is retained separately.""" scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str status: Literal["available", "delivered", "failed"] completed_at: datetime resource: ReportingResourceRecord | None = None verification: ReportingVerificationRecord | None = None failure_code: MaterializationFailure | None = None kind: Literal["materialization"] = field(default="materialization", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) object.__setattr__(self, "completed_at", aware_utc(self.completed_at)) if self.status == "failed": if ( self.failure_code is None or self.resource is not None or self.verification is not None ): raise ValueError( "failed materializations retain only a safe failure classification" ) elif self.resource is None or self.verification is None or self.failure_code is not None: raise ValueError( "successful materializations require resource and verification evidence" ) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id) var reporting_materialization_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationRecord(_ClosedValue): """One terminal outcome. The pending attempt is retained separately.""" scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str status: Literal["available", "delivered", "failed"] completed_at: datetime resource: ReportingResourceRecord | None = None verification: ReportingVerificationRecord | None = None failure_code: MaterializationFailure | None = None kind: Literal["materialization"] = field(default="materialization", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) object.__setattr__(self, "completed_at", aware_utc(self.completed_at)) if self.status == "failed": if ( self.failure_code is None or self.resource is not None or self.verification is not None ): raise ValueError( "failed materializations retain only a safe failure classification" ) elif self.resource is None or self.verification is None or self.failure_code is not None: raise ValueError( "successful materializations require resource and verification evidence" ) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id) var reporting_revision_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationRecord(_ClosedValue): """One terminal outcome. The pending attempt is retained separately.""" scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str status: Literal["available", "delivered", "failed"] completed_at: datetime resource: ReportingResourceRecord | None = None verification: ReportingVerificationRecord | None = None failure_code: MaterializationFailure | None = None kind: Literal["materialization"] = field(default="materialization", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) object.__setattr__(self, "completed_at", aware_utc(self.completed_at)) if self.status == "failed": if ( self.failure_code is None or self.resource is not None or self.verification is not None ): raise ValueError( "failed materializations retain only a safe failure classification" ) elif self.resource is None or self.verification is None or self.failure_code is not None: raise ValueError( "successful materializations require resource and verification evidence" ) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id) var resource : ReportingResourceRecord | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationRecord(_ClosedValue): """One terminal outcome. The pending attempt is retained separately.""" scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str status: Literal["available", "delivered", "failed"] completed_at: datetime resource: ReportingResourceRecord | None = None verification: ReportingVerificationRecord | None = None failure_code: MaterializationFailure | None = None kind: Literal["materialization"] = field(default="materialization", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) object.__setattr__(self, "completed_at", aware_utc(self.completed_at)) if self.status == "failed": if ( self.failure_code is None or self.resource is not None or self.verification is not None ): raise ValueError( "failed materializations retain only a safe failure classification" ) elif self.resource is None or self.verification is None or self.failure_code is not None: raise ValueError( "successful materializations require resource and verification evidence" ) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id) var scope : ReportingDeliveryScope-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationRecord(_ClosedValue): """One terminal outcome. The pending attempt is retained separately.""" scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str status: Literal["available", "delivered", "failed"] completed_at: datetime resource: ReportingResourceRecord | None = None verification: ReportingVerificationRecord | None = None failure_code: MaterializationFailure | None = None kind: Literal["materialization"] = field(default="materialization", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) object.__setattr__(self, "completed_at", aware_utc(self.completed_at)) if self.status == "failed": if ( self.failure_code is None or self.resource is not None or self.verification is not None ): raise ValueError( "failed materializations retain only a safe failure classification" ) elif self.resource is None or self.verification is None or self.failure_code is not None: raise ValueError( "successful materializations require resource and verification evidence" ) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id) var status : Literal['available', 'delivered', 'failed']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationRecord(_ClosedValue): """One terminal outcome. The pending attempt is retained separately.""" scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str status: Literal["available", "delivered", "failed"] completed_at: datetime resource: ReportingResourceRecord | None = None verification: ReportingVerificationRecord | None = None failure_code: MaterializationFailure | None = None kind: Literal["materialization"] = field(default="materialization", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) object.__setattr__(self, "completed_at", aware_utc(self.completed_at)) if self.status == "failed": if ( self.failure_code is None or self.resource is not None or self.verification is not None ): raise ValueError( "failed materializations retain only a safe failure classification" ) elif self.resource is None or self.verification is None or self.failure_code is not None: raise ValueError( "successful materializations require resource and verification evidence" ) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id) var verification : ReportingVerificationRecord | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingMaterializationRecord(_ClosedValue): """One terminal outcome. The pending attempt is retained separately.""" scope: ReportingDeliveryScope reporting_revision_id: str reporting_materialization_id: str status: Literal["available", "delivered", "failed"] completed_at: datetime resource: ReportingResourceRecord | None = None verification: ReportingVerificationRecord | None = None failure_code: MaterializationFailure | None = None kind: Literal["materialization"] = field(default="materialization", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) object.__setattr__(self, "completed_at", aware_utc(self.completed_at)) if self.status == "failed": if ( self.failure_code is None or self.resource is not None or self.verification is not None ): raise ValueError( "failed materializations retain only a safe failure classification" ) elif self.resource is None or self.verification is None or self.failure_code is not None: raise ValueError( "successful materializations require resource and verification evidence" ) @property def key(self) -> ReportingMaterializationKey: return ReportingMaterializationKey(self.scope.principal, self.reporting_materialization_id)
class ReportingObligationDeliveryRecord (scope: ReportingDeliveryScope,
currency: str,
resource_retained_until: datetime,
created_at: datetime,
*,
kind: "Literal['obligation_delivery']" = 'obligation_delivery')-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingObligationDeliveryRecord(_ClosedValue): scope: ReportingDeliveryScope currency: str resource_retained_until: datetime created_at: datetime kind: Literal["obligation_delivery"] = field(default="obligation_delivery", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) validate_currency(self.currency) object.__setattr__(self, "resource_retained_until", aware_utc(self.resource_retained_until)) object.__setattr__(self, "created_at", aware_utc(self.created_at))ReportingObligationDeliveryRecord(scope: 'ReportingDeliveryScope', currency: 'str', resource_retained_until: 'datetime', created_at: 'datetime', *, kind: "Literal['obligation_delivery']" = 'obligation_delivery')
Ancestors
- adcp.reporting.ledger.delivery_models._ClosedValue
Instance variables
var created_at : datetime.datetime-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingObligationDeliveryRecord(_ClosedValue): scope: ReportingDeliveryScope currency: str resource_retained_until: datetime created_at: datetime kind: Literal["obligation_delivery"] = field(default="obligation_delivery", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) validate_currency(self.currency) object.__setattr__(self, "resource_retained_until", aware_utc(self.resource_retained_until)) object.__setattr__(self, "created_at", aware_utc(self.created_at)) var currency : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingObligationDeliveryRecord(_ClosedValue): scope: ReportingDeliveryScope currency: str resource_retained_until: datetime created_at: datetime kind: Literal["obligation_delivery"] = field(default="obligation_delivery", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) validate_currency(self.currency) object.__setattr__(self, "resource_retained_until", aware_utc(self.resource_retained_until)) object.__setattr__(self, "created_at", aware_utc(self.created_at)) var kind : Literal['obligation_delivery']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingObligationDeliveryRecord(_ClosedValue): scope: ReportingDeliveryScope currency: str resource_retained_until: datetime created_at: datetime kind: Literal["obligation_delivery"] = field(default="obligation_delivery", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) validate_currency(self.currency) object.__setattr__(self, "resource_retained_until", aware_utc(self.resource_retained_until)) object.__setattr__(self, "created_at", aware_utc(self.created_at)) var resource_retained_until : datetime.datetime-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingObligationDeliveryRecord(_ClosedValue): scope: ReportingDeliveryScope currency: str resource_retained_until: datetime created_at: datetime kind: Literal["obligation_delivery"] = field(default="obligation_delivery", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) validate_currency(self.currency) object.__setattr__(self, "resource_retained_until", aware_utc(self.resource_retained_until)) object.__setattr__(self, "created_at", aware_utc(self.created_at)) var scope : ReportingDeliveryScope-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingObligationDeliveryRecord(_ClosedValue): scope: ReportingDeliveryScope currency: str resource_retained_until: datetime created_at: datetime kind: Literal["obligation_delivery"] = field(default="obligation_delivery", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) validate_currency(self.currency) object.__setattr__(self, "resource_retained_until", aware_utc(self.resource_retained_until)) object.__setattr__(self, "created_at", aware_utc(self.created_at))
class ReportingPhysicalChecksum (object_ref: str, algorithm: "Literal['sha256', 'sha512']", value: str)-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingPhysicalChecksum(_ClosedValue): object_ref: str algorithm: Literal["sha256", "sha512"] value: str def __post_init__(self) -> None: _freeze_fields(self) file_object_reference(self.object_ref) size = 64 if self.algorithm == "sha256" else 128 if ( not isinstance(self.value, str) or re.fullmatch(rf"[a-fA-F0-9]{{{size}}}", self.value) is None ): raise ValueError("physical checksum length must match its algorithm")ReportingPhysicalChecksum(object_ref: 'str', algorithm: "Literal['sha256', 'sha512']", value: 'str')
Ancestors
- adcp.reporting.ledger.delivery_models._ClosedValue
Instance variables
var algorithm : Literal['sha256', 'sha512']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingPhysicalChecksum(_ClosedValue): object_ref: str algorithm: Literal["sha256", "sha512"] value: str def __post_init__(self) -> None: _freeze_fields(self) file_object_reference(self.object_ref) size = 64 if self.algorithm == "sha256" else 128 if ( not isinstance(self.value, str) or re.fullmatch(rf"[a-fA-F0-9]{{{size}}}", self.value) is None ): raise ValueError("physical checksum length must match its algorithm") var object_ref : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingPhysicalChecksum(_ClosedValue): object_ref: str algorithm: Literal["sha256", "sha512"] value: str def __post_init__(self) -> None: _freeze_fields(self) file_object_reference(self.object_ref) size = 64 if self.algorithm == "sha256" else 128 if ( not isinstance(self.value, str) or re.fullmatch(rf"[a-fA-F0-9]{{{size}}}", self.value) is None ): raise ValueError("physical checksum length must match its algorithm") var value : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingPhysicalChecksum(_ClosedValue): object_ref: str algorithm: Literal["sha256", "sha512"] value: str def __post_init__(self) -> None: _freeze_fields(self) file_object_reference(self.object_ref) size = 64 if self.algorithm == "sha256" else 128 if ( not isinstance(self.value, str) or re.fullmatch(rf"[a-fA-F0-9]{{{size}}}", self.value) is None ): raise ValueError("physical checksum length must match its algorithm")
class ReportingReceiptKey (principal: ReportingDeliveryPrincipal,
reporting_receipt_id: str)-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingReceiptKey(_ClosedValue): principal: ReportingDeliveryPrincipal reporting_receipt_id: str def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_receipt_id, maximum=255) if len(self.reporting_receipt_id) < 16: raise ValueError("a reporting receipt identifier requires at least 16 characters")ReportingReceiptKey(principal: 'ReportingDeliveryPrincipal', reporting_receipt_id: 'str')
Ancestors
- adcp.reporting.ledger.delivery_models._ClosedValue
Instance variables
var principal : ReportingDeliveryPrincipal-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingReceiptKey(_ClosedValue): principal: ReportingDeliveryPrincipal reporting_receipt_id: str def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_receipt_id, maximum=255) if len(self.reporting_receipt_id) < 16: raise ValueError("a reporting receipt identifier requires at least 16 characters") var reporting_receipt_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingReceiptKey(_ClosedValue): principal: ReportingDeliveryPrincipal reporting_receipt_id: str def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.reporting_receipt_id, maximum=255) if len(self.reporting_receipt_id) < 16: raise ValueError("a reporting receipt identifier requires at least 16 characters")
class ReportingResourceRecord (resource_ref: str,
kind: "Literal['manifest', 'dataset', 'warehouse_relation']",
location: str,
immutability: "Literal['immutable_location', 'native_version']",
expires_at: datetime,
native_version_ref: str | None = None,
manifest_sha256: str | None = None,
object_refs: tuple[str, ...] = (),
reader_compatibility: tuple[str, ...] = ())-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingResourceRecord(_ClosedValue): resource_ref: str kind: Literal["manifest", "dataset", "warehouse_relation"] location: str immutability: Literal["immutable_location", "native_version"] expires_at: datetime native_version_ref: str | None = None manifest_sha256: str | None = None object_refs: tuple[str, ...] = () reader_compatibility: tuple[str, ...] = () def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.resource_ref, maximum=255) resource_location(self.location) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.manifest_sha256 is not None: sha256_value(self.manifest_sha256) if self.kind == "manifest" and self.manifest_sha256 is None: raise ValueError("manifest resources require the exact manifest digest") if self.immutability == "native_version" and self.native_version_ref is None: raise ValueError("native-version resources require an immutable version") object.__setattr__(self, "expires_at", aware_utc(self.expires_at)) object.__setattr__( self, "object_refs", tuple(file_object_reference(value) for value in self.object_refs), ) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.object_refs)) != len(self.object_refs): raise ValueError("resource object references must be unique") if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique")ReportingResourceRecord(resource_ref: 'str', kind: "Literal['manifest', 'dataset', 'warehouse_relation']", location: 'str', immutability: "Literal['immutable_location', 'native_version']", expires_at: 'datetime', native_version_ref: 'str | None' = None, manifest_sha256: 'str | None' = None, object_refs: 'tuple[str, …]' = (), reader_compatibility: 'tuple[str, …]' = ())
Ancestors
- adcp.reporting.ledger.delivery_models._ClosedValue
Instance variables
var expires_at : datetime.datetime-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingResourceRecord(_ClosedValue): resource_ref: str kind: Literal["manifest", "dataset", "warehouse_relation"] location: str immutability: Literal["immutable_location", "native_version"] expires_at: datetime native_version_ref: str | None = None manifest_sha256: str | None = None object_refs: tuple[str, ...] = () reader_compatibility: tuple[str, ...] = () def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.resource_ref, maximum=255) resource_location(self.location) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.manifest_sha256 is not None: sha256_value(self.manifest_sha256) if self.kind == "manifest" and self.manifest_sha256 is None: raise ValueError("manifest resources require the exact manifest digest") if self.immutability == "native_version" and self.native_version_ref is None: raise ValueError("native-version resources require an immutable version") object.__setattr__(self, "expires_at", aware_utc(self.expires_at)) object.__setattr__( self, "object_refs", tuple(file_object_reference(value) for value in self.object_refs), ) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.object_refs)) != len(self.object_refs): raise ValueError("resource object references must be unique") if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") var immutability : Literal['immutable_location', 'native_version']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingResourceRecord(_ClosedValue): resource_ref: str kind: Literal["manifest", "dataset", "warehouse_relation"] location: str immutability: Literal["immutable_location", "native_version"] expires_at: datetime native_version_ref: str | None = None manifest_sha256: str | None = None object_refs: tuple[str, ...] = () reader_compatibility: tuple[str, ...] = () def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.resource_ref, maximum=255) resource_location(self.location) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.manifest_sha256 is not None: sha256_value(self.manifest_sha256) if self.kind == "manifest" and self.manifest_sha256 is None: raise ValueError("manifest resources require the exact manifest digest") if self.immutability == "native_version" and self.native_version_ref is None: raise ValueError("native-version resources require an immutable version") object.__setattr__(self, "expires_at", aware_utc(self.expires_at)) object.__setattr__( self, "object_refs", tuple(file_object_reference(value) for value in self.object_refs), ) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.object_refs)) != len(self.object_refs): raise ValueError("resource object references must be unique") if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") var kind : Literal['manifest', 'dataset', 'warehouse_relation']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingResourceRecord(_ClosedValue): resource_ref: str kind: Literal["manifest", "dataset", "warehouse_relation"] location: str immutability: Literal["immutable_location", "native_version"] expires_at: datetime native_version_ref: str | None = None manifest_sha256: str | None = None object_refs: tuple[str, ...] = () reader_compatibility: tuple[str, ...] = () def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.resource_ref, maximum=255) resource_location(self.location) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.manifest_sha256 is not None: sha256_value(self.manifest_sha256) if self.kind == "manifest" and self.manifest_sha256 is None: raise ValueError("manifest resources require the exact manifest digest") if self.immutability == "native_version" and self.native_version_ref is None: raise ValueError("native-version resources require an immutable version") object.__setattr__(self, "expires_at", aware_utc(self.expires_at)) object.__setattr__( self, "object_refs", tuple(file_object_reference(value) for value in self.object_refs), ) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.object_refs)) != len(self.object_refs): raise ValueError("resource object references must be unique") if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") var location : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingResourceRecord(_ClosedValue): resource_ref: str kind: Literal["manifest", "dataset", "warehouse_relation"] location: str immutability: Literal["immutable_location", "native_version"] expires_at: datetime native_version_ref: str | None = None manifest_sha256: str | None = None object_refs: tuple[str, ...] = () reader_compatibility: tuple[str, ...] = () def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.resource_ref, maximum=255) resource_location(self.location) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.manifest_sha256 is not None: sha256_value(self.manifest_sha256) if self.kind == "manifest" and self.manifest_sha256 is None: raise ValueError("manifest resources require the exact manifest digest") if self.immutability == "native_version" and self.native_version_ref is None: raise ValueError("native-version resources require an immutable version") object.__setattr__(self, "expires_at", aware_utc(self.expires_at)) object.__setattr__( self, "object_refs", tuple(file_object_reference(value) for value in self.object_refs), ) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.object_refs)) != len(self.object_refs): raise ValueError("resource object references must be unique") if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") var manifest_sha256 : str | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingResourceRecord(_ClosedValue): resource_ref: str kind: Literal["manifest", "dataset", "warehouse_relation"] location: str immutability: Literal["immutable_location", "native_version"] expires_at: datetime native_version_ref: str | None = None manifest_sha256: str | None = None object_refs: tuple[str, ...] = () reader_compatibility: tuple[str, ...] = () def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.resource_ref, maximum=255) resource_location(self.location) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.manifest_sha256 is not None: sha256_value(self.manifest_sha256) if self.kind == "manifest" and self.manifest_sha256 is None: raise ValueError("manifest resources require the exact manifest digest") if self.immutability == "native_version" and self.native_version_ref is None: raise ValueError("native-version resources require an immutable version") object.__setattr__(self, "expires_at", aware_utc(self.expires_at)) object.__setattr__( self, "object_refs", tuple(file_object_reference(value) for value in self.object_refs), ) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.object_refs)) != len(self.object_refs): raise ValueError("resource object references must be unique") if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") var native_version_ref : str | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingResourceRecord(_ClosedValue): resource_ref: str kind: Literal["manifest", "dataset", "warehouse_relation"] location: str immutability: Literal["immutable_location", "native_version"] expires_at: datetime native_version_ref: str | None = None manifest_sha256: str | None = None object_refs: tuple[str, ...] = () reader_compatibility: tuple[str, ...] = () def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.resource_ref, maximum=255) resource_location(self.location) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.manifest_sha256 is not None: sha256_value(self.manifest_sha256) if self.kind == "manifest" and self.manifest_sha256 is None: raise ValueError("manifest resources require the exact manifest digest") if self.immutability == "native_version" and self.native_version_ref is None: raise ValueError("native-version resources require an immutable version") object.__setattr__(self, "expires_at", aware_utc(self.expires_at)) object.__setattr__( self, "object_refs", tuple(file_object_reference(value) for value in self.object_refs), ) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.object_refs)) != len(self.object_refs): raise ValueError("resource object references must be unique") if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") var object_refs : tuple[str, ...]-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingResourceRecord(_ClosedValue): resource_ref: str kind: Literal["manifest", "dataset", "warehouse_relation"] location: str immutability: Literal["immutable_location", "native_version"] expires_at: datetime native_version_ref: str | None = None manifest_sha256: str | None = None object_refs: tuple[str, ...] = () reader_compatibility: tuple[str, ...] = () def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.resource_ref, maximum=255) resource_location(self.location) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.manifest_sha256 is not None: sha256_value(self.manifest_sha256) if self.kind == "manifest" and self.manifest_sha256 is None: raise ValueError("manifest resources require the exact manifest digest") if self.immutability == "native_version" and self.native_version_ref is None: raise ValueError("native-version resources require an immutable version") object.__setattr__(self, "expires_at", aware_utc(self.expires_at)) object.__setattr__( self, "object_refs", tuple(file_object_reference(value) for value in self.object_refs), ) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.object_refs)) != len(self.object_refs): raise ValueError("resource object references must be unique") if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") var reader_compatibility : tuple[str, ...]-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingResourceRecord(_ClosedValue): resource_ref: str kind: Literal["manifest", "dataset", "warehouse_relation"] location: str immutability: Literal["immutable_location", "native_version"] expires_at: datetime native_version_ref: str | None = None manifest_sha256: str | None = None object_refs: tuple[str, ...] = () reader_compatibility: tuple[str, ...] = () def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.resource_ref, maximum=255) resource_location(self.location) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.manifest_sha256 is not None: sha256_value(self.manifest_sha256) if self.kind == "manifest" and self.manifest_sha256 is None: raise ValueError("manifest resources require the exact manifest digest") if self.immutability == "native_version" and self.native_version_ref is None: raise ValueError("native-version resources require an immutable version") object.__setattr__(self, "expires_at", aware_utc(self.expires_at)) object.__setattr__( self, "object_refs", tuple(file_object_reference(value) for value in self.object_refs), ) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.object_refs)) != len(self.object_refs): raise ValueError("resource object references must be unique") if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique") var resource_ref : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingResourceRecord(_ClosedValue): resource_ref: str kind: Literal["manifest", "dataset", "warehouse_relation"] location: str immutability: Literal["immutable_location", "native_version"] expires_at: datetime native_version_ref: str | None = None manifest_sha256: str | None = None object_refs: tuple[str, ...] = () reader_compatibility: tuple[str, ...] = () def __post_init__(self) -> None: _freeze_fields(self) reporting_identifier(self.resource_ref, maximum=255) resource_location(self.location) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.manifest_sha256 is not None: sha256_value(self.manifest_sha256) if self.kind == "manifest" and self.manifest_sha256 is None: raise ValueError("manifest resources require the exact manifest digest") if self.immutability == "native_version" and self.native_version_ref is None: raise ValueError("native-version resources require an immutable version") object.__setattr__(self, "expires_at", aware_utc(self.expires_at)) object.__setattr__( self, "object_refs", tuple(file_object_reference(value) for value in self.object_refs), ) object.__setattr__( self, "reader_compatibility", tuple(reader_feature_reference(value) for value in self.reader_compatibility), ) if len(set(self.object_refs)) != len(self.object_refs): raise ValueError("resource object references must be unique") if len(set(self.reader_compatibility)) != len(self.reader_compatibility): raise ValueError("reader compatibility requirements must be unique")
class ReportingRevisionReceiptRecord (scope: ReportingDeliveryScope,
reporting_receipt_id: str,
reporting_revision_id: str,
reporting_materialization_id: str,
status: ReceiptStatus,
verification_profile: VerificationProfile,
observed_row_count: int,
observed_control_totals: tuple[ReportingControlTotalRecord, ...],
observed_at: datetime,
supersedes_reporting_receipt_id: str | None = None,
observed_canonical_content_digest: ReportingCanonicalDigest | None = None,
observed_manifest_sha256: str | None = None,
observed_native_version_ref: str | None = None,
consumer_commit_ref: str | None = None,
rejection_codes: tuple[str, ...] = (),
received_at: datetime | None = None,
*,
kind: "Literal['revision_receipt']" = 'revision_receipt')-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id)ReportingRevisionReceiptRecord(scope: 'ReportingDeliveryScope', reporting_receipt_id: 'str', reporting_revision_id: 'str', reporting_materialization_id: 'str', status: 'ReceiptStatus', verification_profile: 'VerificationProfile', observed_row_count: 'int', observed_control_totals: 'tuple[ReportingControlTotalRecord, …]', observed_at: 'datetime', supersedes_reporting_receipt_id: 'str | None' = None, observed_canonical_content_digest: 'ReportingCanonicalDigest | None' = None, observed_manifest_sha256: 'str | None' = None, observed_native_version_ref: 'str | None' = None, consumer_commit_ref: 'str | None' = None, rejection_codes: 'tuple[str, …]' = (), received_at: 'datetime | None' = None, *, kind: "Literal['revision_receipt']" = 'revision_receipt')
Ancestors
- adcp.reporting.ledger.delivery_models._ClosedValue
Instance variables
var consumer_commit_ref : str | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) prop key : ReportingReceiptKey-
Expand source code
@property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var kind : Literal['revision_receipt']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var observed_at : datetime.datetime-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var observed_canonical_content_digest : ReportingCanonicalDigest | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var observed_control_totals : tuple[ReportingControlTotalRecord, ...]-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var observed_manifest_sha256 : str | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var observed_native_version_ref : str | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var observed_row_count : int-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var received_at : datetime.datetime | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var rejection_codes : tuple[str, ...]-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var reporting_materialization_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var reporting_receipt_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var reporting_revision_id : str-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var scope : ReportingDeliveryScope-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var status : Literal['accepted', 'rejected']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var supersedes_reporting_receipt_id : str | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id) var verification_profile : Literal['canonical_digest', 'manifest_checksums', 'native_commit']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingRevisionReceiptRecord(_ClosedValue): scope: ReportingDeliveryScope reporting_receipt_id: str reporting_revision_id: str reporting_materialization_id: str status: ReceiptStatus verification_profile: VerificationProfile observed_row_count: int observed_control_totals: tuple[ReportingControlTotalRecord, ...] observed_at: datetime supersedes_reporting_receipt_id: str | None = None observed_canonical_content_digest: ReportingCanonicalDigest | None = None observed_manifest_sha256: str | None = None observed_native_version_ref: str | None = None consumer_commit_ref: str | None = None rejection_codes: tuple[str, ...] = () received_at: datetime | None = None kind: Literal["revision_receipt"] = field(default="revision_receipt", kw_only=True) def __post_init__(self) -> None: _freeze_fields(self) self.key reporting_identifier(self.reporting_revision_id, maximum=255) reporting_identifier(self.reporting_materialization_id, maximum=255) _positive(self.observed_row_count, zero=True) _unique_totals(self.observed_control_totals) if self.observed_manifest_sha256 is not None: sha256_value(self.observed_manifest_sha256) if self.observed_native_version_ref is not None: native_version_reference(self.observed_native_version_ref) if self.consumer_commit_ref is not None: consumer_commit_reference(self.consumer_commit_ref) _receipt_fields(self) @property def key(self) -> ReportingReceiptKey: return ReportingReceiptKey(self.scope.principal, self.reporting_receipt_id)
class ReportingVerificationRecord (verified_at: datetime,
verification_path: VerificationPath,
verification_profile: VerificationProfile,
row_count: int,
control_totals: tuple[ReportingControlTotalRecord, ...],
canonical_content_digest: ReportingCanonicalDigest | None = None,
physical_checksums: tuple[ReportingPhysicalChecksum, ...] = (),
native_version_ref: str | None = None,
native_observed_through: "Literal['representative_consumer', 'destination'] | None" = None,
verified_format: ReportingFormat | None = None)-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingVerificationRecord(_ClosedValue): verified_at: datetime verification_path: VerificationPath verification_profile: VerificationProfile row_count: int control_totals: tuple[ReportingControlTotalRecord, ...] canonical_content_digest: ReportingCanonicalDigest | None = None physical_checksums: tuple[ReportingPhysicalChecksum, ...] = () native_version_ref: str | None = None native_observed_through: Literal["representative_consumer", "destination"] | None = None verified_format: ReportingFormat | None = None def __post_init__(self) -> None: _freeze_fields(self) object.__setattr__(self, "verified_at", aware_utc(self.verified_at)) _positive(self.row_count, zero=True) _unique_totals(self.control_totals) object.__setattr__(self, "physical_checksums", tuple(self.physical_checksums)) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.native_observed_through is not None and self.native_version_ref is None: raise ValueError("native observation paths require version evidence")ReportingVerificationRecord(verified_at: 'datetime', verification_path: 'VerificationPath', verification_profile: 'VerificationProfile', row_count: 'int', control_totals: 'tuple[ReportingControlTotalRecord, …]', canonical_content_digest: 'ReportingCanonicalDigest | None' = None, physical_checksums: 'tuple[ReportingPhysicalChecksum, …]' = (), native_version_ref: 'str | None' = None, native_observed_through: "Literal['representative_consumer', 'destination'] | None" = None, verified_format: 'ReportingFormat | None' = None)
Ancestors
- adcp.reporting.ledger.delivery_models._ClosedValue
Instance variables
var canonical_content_digest : ReportingCanonicalDigest | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingVerificationRecord(_ClosedValue): verified_at: datetime verification_path: VerificationPath verification_profile: VerificationProfile row_count: int control_totals: tuple[ReportingControlTotalRecord, ...] canonical_content_digest: ReportingCanonicalDigest | None = None physical_checksums: tuple[ReportingPhysicalChecksum, ...] = () native_version_ref: str | None = None native_observed_through: Literal["representative_consumer", "destination"] | None = None verified_format: ReportingFormat | None = None def __post_init__(self) -> None: _freeze_fields(self) object.__setattr__(self, "verified_at", aware_utc(self.verified_at)) _positive(self.row_count, zero=True) _unique_totals(self.control_totals) object.__setattr__(self, "physical_checksums", tuple(self.physical_checksums)) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.native_observed_through is not None and self.native_version_ref is None: raise ValueError("native observation paths require version evidence") var control_totals : tuple[ReportingControlTotalRecord, ...]-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingVerificationRecord(_ClosedValue): verified_at: datetime verification_path: VerificationPath verification_profile: VerificationProfile row_count: int control_totals: tuple[ReportingControlTotalRecord, ...] canonical_content_digest: ReportingCanonicalDigest | None = None physical_checksums: tuple[ReportingPhysicalChecksum, ...] = () native_version_ref: str | None = None native_observed_through: Literal["representative_consumer", "destination"] | None = None verified_format: ReportingFormat | None = None def __post_init__(self) -> None: _freeze_fields(self) object.__setattr__(self, "verified_at", aware_utc(self.verified_at)) _positive(self.row_count, zero=True) _unique_totals(self.control_totals) object.__setattr__(self, "physical_checksums", tuple(self.physical_checksums)) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.native_observed_through is not None and self.native_version_ref is None: raise ValueError("native observation paths require version evidence") var native_observed_through : Literal['representative_consumer', 'destination'] | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingVerificationRecord(_ClosedValue): verified_at: datetime verification_path: VerificationPath verification_profile: VerificationProfile row_count: int control_totals: tuple[ReportingControlTotalRecord, ...] canonical_content_digest: ReportingCanonicalDigest | None = None physical_checksums: tuple[ReportingPhysicalChecksum, ...] = () native_version_ref: str | None = None native_observed_through: Literal["representative_consumer", "destination"] | None = None verified_format: ReportingFormat | None = None def __post_init__(self) -> None: _freeze_fields(self) object.__setattr__(self, "verified_at", aware_utc(self.verified_at)) _positive(self.row_count, zero=True) _unique_totals(self.control_totals) object.__setattr__(self, "physical_checksums", tuple(self.physical_checksums)) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.native_observed_through is not None and self.native_version_ref is None: raise ValueError("native observation paths require version evidence") var native_version_ref : str | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingVerificationRecord(_ClosedValue): verified_at: datetime verification_path: VerificationPath verification_profile: VerificationProfile row_count: int control_totals: tuple[ReportingControlTotalRecord, ...] canonical_content_digest: ReportingCanonicalDigest | None = None physical_checksums: tuple[ReportingPhysicalChecksum, ...] = () native_version_ref: str | None = None native_observed_through: Literal["representative_consumer", "destination"] | None = None verified_format: ReportingFormat | None = None def __post_init__(self) -> None: _freeze_fields(self) object.__setattr__(self, "verified_at", aware_utc(self.verified_at)) _positive(self.row_count, zero=True) _unique_totals(self.control_totals) object.__setattr__(self, "physical_checksums", tuple(self.physical_checksums)) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.native_observed_through is not None and self.native_version_ref is None: raise ValueError("native observation paths require version evidence") var physical_checksums : tuple[ReportingPhysicalChecksum, ...]-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingVerificationRecord(_ClosedValue): verified_at: datetime verification_path: VerificationPath verification_profile: VerificationProfile row_count: int control_totals: tuple[ReportingControlTotalRecord, ...] canonical_content_digest: ReportingCanonicalDigest | None = None physical_checksums: tuple[ReportingPhysicalChecksum, ...] = () native_version_ref: str | None = None native_observed_through: Literal["representative_consumer", "destination"] | None = None verified_format: ReportingFormat | None = None def __post_init__(self) -> None: _freeze_fields(self) object.__setattr__(self, "verified_at", aware_utc(self.verified_at)) _positive(self.row_count, zero=True) _unique_totals(self.control_totals) object.__setattr__(self, "physical_checksums", tuple(self.physical_checksums)) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.native_observed_through is not None and self.native_version_ref is None: raise ValueError("native observation paths require version evidence") var row_count : int-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingVerificationRecord(_ClosedValue): verified_at: datetime verification_path: VerificationPath verification_profile: VerificationProfile row_count: int control_totals: tuple[ReportingControlTotalRecord, ...] canonical_content_digest: ReportingCanonicalDigest | None = None physical_checksums: tuple[ReportingPhysicalChecksum, ...] = () native_version_ref: str | None = None native_observed_through: Literal["representative_consumer", "destination"] | None = None verified_format: ReportingFormat | None = None def __post_init__(self) -> None: _freeze_fields(self) object.__setattr__(self, "verified_at", aware_utc(self.verified_at)) _positive(self.row_count, zero=True) _unique_totals(self.control_totals) object.__setattr__(self, "physical_checksums", tuple(self.physical_checksums)) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.native_observed_through is not None and self.native_version_ref is None: raise ValueError("native observation paths require version evidence") var verification_path : Literal['producer', 'representative_consumer', 'destination']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingVerificationRecord(_ClosedValue): verified_at: datetime verification_path: VerificationPath verification_profile: VerificationProfile row_count: int control_totals: tuple[ReportingControlTotalRecord, ...] canonical_content_digest: ReportingCanonicalDigest | None = None physical_checksums: tuple[ReportingPhysicalChecksum, ...] = () native_version_ref: str | None = None native_observed_through: Literal["representative_consumer", "destination"] | None = None verified_format: ReportingFormat | None = None def __post_init__(self) -> None: _freeze_fields(self) object.__setattr__(self, "verified_at", aware_utc(self.verified_at)) _positive(self.row_count, zero=True) _unique_totals(self.control_totals) object.__setattr__(self, "physical_checksums", tuple(self.physical_checksums)) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.native_observed_through is not None and self.native_version_ref is None: raise ValueError("native observation paths require version evidence") var verification_profile : Literal['canonical_digest', 'manifest_checksums', 'native_commit']-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingVerificationRecord(_ClosedValue): verified_at: datetime verification_path: VerificationPath verification_profile: VerificationProfile row_count: int control_totals: tuple[ReportingControlTotalRecord, ...] canonical_content_digest: ReportingCanonicalDigest | None = None physical_checksums: tuple[ReportingPhysicalChecksum, ...] = () native_version_ref: str | None = None native_observed_through: Literal["representative_consumer", "destination"] | None = None verified_format: ReportingFormat | None = None def __post_init__(self) -> None: _freeze_fields(self) object.__setattr__(self, "verified_at", aware_utc(self.verified_at)) _positive(self.row_count, zero=True) _unique_totals(self.control_totals) object.__setattr__(self, "physical_checksums", tuple(self.physical_checksums)) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.native_observed_through is not None and self.native_version_ref is None: raise ValueError("native observation paths require version evidence") var verified_at : datetime.datetime-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingVerificationRecord(_ClosedValue): verified_at: datetime verification_path: VerificationPath verification_profile: VerificationProfile row_count: int control_totals: tuple[ReportingControlTotalRecord, ...] canonical_content_digest: ReportingCanonicalDigest | None = None physical_checksums: tuple[ReportingPhysicalChecksum, ...] = () native_version_ref: str | None = None native_observed_through: Literal["representative_consumer", "destination"] | None = None verified_format: ReportingFormat | None = None def __post_init__(self) -> None: _freeze_fields(self) object.__setattr__(self, "verified_at", aware_utc(self.verified_at)) _positive(self.row_count, zero=True) _unique_totals(self.control_totals) object.__setattr__(self, "physical_checksums", tuple(self.physical_checksums)) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.native_observed_through is not None and self.native_version_ref is None: raise ValueError("native observation paths require version evidence") var verified_format : Literal['jsonl', 'csv', 'parquet', 'avro', 'orc'] | None-
Expand source code
@dataclass(frozen=True, slots=True) class ReportingVerificationRecord(_ClosedValue): verified_at: datetime verification_path: VerificationPath verification_profile: VerificationProfile row_count: int control_totals: tuple[ReportingControlTotalRecord, ...] canonical_content_digest: ReportingCanonicalDigest | None = None physical_checksums: tuple[ReportingPhysicalChecksum, ...] = () native_version_ref: str | None = None native_observed_through: Literal["representative_consumer", "destination"] | None = None verified_format: ReportingFormat | None = None def __post_init__(self) -> None: _freeze_fields(self) object.__setattr__(self, "verified_at", aware_utc(self.verified_at)) _positive(self.row_count, zero=True) _unique_totals(self.control_totals) object.__setattr__(self, "physical_checksums", tuple(self.physical_checksums)) if self.native_version_ref is not None: native_version_reference(self.native_version_ref) if self.native_observed_through is not None and self.native_version_ref is None: raise ValueError("native observation paths require version evidence")