Module adcp.reporting.service_lifecycle
Owned lifecycle and admission for the adapter-first reporting service.
This module owns process lifetime only. Account activation, durable leases and production-tier dependency proofs remain the responsibility of their reporting components. No PostgreSQL driver is imported by this lifecycle surface.
Classes
class ReliableReportingServiceError (component: FailureComponent)-
Expand source code
class ReliableReportingServiceError(RuntimeError): """Closed diagnostic for an unexpected failure; contains no provider body.""" def __init__(self, component: FailureComponent) -> None: if component not in ( "startup", "configuration", "materialization", "notification", "service", "shutdown", ): raise ValueError("unknown reporting service failure component") self.component = component super().__init__(f"reporting service failed ({component})")Closed diagnostic for an unexpected failure; contains no provider body.
Ancestors
- builtins.RuntimeError
- builtins.Exception
- builtins.BaseException
class ReliableReportingShutdownTimeoutError (*args, **kwargs)-
Expand source code
class ReliableReportingShutdownTimeoutError(TimeoutError): """A close waiter timed out; the service still owns the unsettled work."""A close waiter timed out; the service still owns the unsettled work.
Ancestors
- builtins.TimeoutError
- builtins.OSError
- builtins.Exception
- builtins.BaseException
class ReliableReportingState (*args, **kwds)-
Expand source code
class ReliableReportingState(str, Enum): NEW = "new" STARTING = "starting" INITIALIZED = "initialized" READY = "ready" STOPPING = "stopping" CLOSED = "closed" FAILED = "failed"str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str
Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.str() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to 'strict'.
Ancestors
- builtins.str
- enum.Enum
Class variables
var CLOSEDvar FAILEDvar INITIALIZEDvar NEWvar READYvar STARTINGvar STOPPING
-
Expand source code
class ReliableReportingUnavailableError(RuntimeError): """The service is not admitting new reporting work.""" def __init__(self, state: ReliableReportingState) -> None: self.state = state super().__init__(f"reporting service is unavailable ({state.value})")The service is not admitting new reporting work.
Ancestors
- builtins.RuntimeError
- builtins.Exception
- builtins.BaseException
class ReportingServiceResource (close: ResourceCallback, open: ResourceCallback | None = None)-
Expand source code
@dataclass(frozen=True) class ReportingServiceResource: """Explicit transfer of a resource's lifetime to one service. Resources open in declaration order before schema initialization and close once, in reverse order, after all admitted work settles. Ownership transfers at construction, so ``close`` must tolerate unopened or partially opened resources (including a service that never starts). Injected stores, adapters, workers, senders and pools are otherwise borrowed. Use async callbacks for loop-bound resources. Blocking synchronous callbacks run in a thread and are settled before cleanup can advance. Do not transfer the same resource to more than one owner. """ close: ResourceCallback = field(repr=False) open: ResourceCallback | None = field(default=None, repr=False) def __post_init__(self) -> None: if not callable(self.close) or (self.open is not None and not callable(self.open)): raise TypeError("resource callbacks must be callable")Explicit transfer of a resource's lifetime to one service.
Resources open in declaration order before schema initialization and close once, in reverse order, after all admitted work settles. Ownership transfers at construction, so
closemust tolerate unopened or partially opened resources (including a service that never starts). Injected stores, adapters, workers, senders and pools are otherwise borrowed.Use async callbacks for loop-bound resources. Blocking synchronous callbacks run in a thread and are settled before cleanup can advance. Do not transfer the same resource to more than one owner.
Instance variables
var close : Callable[[], object | collections.abc.Awaitable[object]]var open : collections.abc.Callable[[], object | collections.abc.Awaitable[object]] | None