Add cleanup() method to base Consumer class
This fixes an AttributeError that occurs when using non-memory messaging
brokers (like Redis) during server shutdown. The cleanup() method was
added to the memory Consumer in commit 884b1fd8596 but was not added to
the abstract base class, causing the Redis Consumer to fail when
EventPersister.stop() calls self.consumer.cleanup().
The fix adds a default no-op cleanup() method to the base Consumer class,
which is appropriate for consumers that don't need explicit cleanup (like
Redis), while allowing subclasses to override it when needed (like the
memory Consumer does to unsubscribe from topics).
Fixes the error:
AttributeError: 'Consumer' object has no attribute 'cleanup'
Co-Authored-By: Nate Nowack <nate@prefect.io>
add explicit ruamel.yaml.clib dependency to fix Docker builds
ruamel.yaml 0.19.0 (released 2025-12-31) changed its C library dependency
from ruamel.yaml.clib (pre-built wheels) to ruamel.yaml.clibz (requires
local Zig compilation). This breaks environments without build tools.
Per the ruamel.yaml docs, explicitly installing ruamel.yaml.clib takes
priority over clibz, avoiding the need for an upper bound pin:
> If you run into trouble, you can install ruamel.yaml.clib explicitly,
> without using ruamel.yaml.clibz at all... The code to load
> ruamel.yaml.clib has priority over ruamel.yaml.clibz if both are
> installed.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>