{"record":{"id":"399b7f7c67608cb0","repo":"langchain-ai/langgraph","slug":"type-self-name-must-override-process-or-a","errorCode":null,"errorMessage":"{type(self).__name__} must override process() or aprocess()","messagePattern":"(.+?) must override process\\(\\) or aprocess\\(\\)","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"libs/langgraph/langgraph/stream/_types.py","lineNumber":162,"sourceCode":"        owning mux — needed for transformers that build mini-muxes\n        via `mux._make_child(...)` (e.g. `SubgraphTransformer`).\n        \"\"\"\n\n    def process(self, event: ProtocolEvent) -> bool:\n        \"\"\"Handle an event on the sync lane.\n\n        Called for every event before it is appended to the main event\n        log. Subclasses must override either `process` or `aprocess`.\n        The default raises so a missing override fails loudly rather\n        than silently passing every event through.\n\n        Args:\n            event: The protocol event to observe.\n\n        Returns:\n            True to keep the event in the main log, False to suppress it.\n        \"\"\"\n        raise NotImplementedError(\n            f\"{type(self).__name__} must override process() or aprocess()\"\n        )\n\n    async def aprocess(self, event: ProtocolEvent) -> bool:\n        \"\"\"Handle an event on the async lane.\n\n        The mux awaits this before dispatching to the next transformer,\n        so a slow `aprocess` serializes the pipeline. Use it only when\n        a later transformer — or a consumer reading the event\n        synchronously — must see the result of the async work (e.g.\n        PII redaction that mutates `event` in place).\n\n        The default delegates to `process`, so purely-sync transformers\n        run unchanged under `astream()`.\n\n        Args:\n            event: The protocol event to observe.\n","sourceCodeStart":144,"sourceCodeEnd":180,"githubUrl":"https://github.com/langchain-ai/langgraph/blob/38031739e551638e373fb553453256c23feeb41f/libs/langgraph/langgraph/stream/_types.py#L144-L180","documentation":"Error \"{type(self).__name__} must override process() or aprocess()\" thrown in langchain-ai/langgraph.","triggerScenarios":"Thrown at libs/langgraph/langgraph/stream/_types.py:162 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"38031739e551638e373fb553453256c23feeb41f","analyzedAt":"2026-08-26T18:02:49.312Z","schemaVersion":2},"datasetVersion":"2026-08-26T21:11:00.512Z"}