These adapters bridge between common FastHTML libraries and the worker system protocols. They eliminate the need to write custom adapters in each project.
UnifiedPluginRegistry Adapter
Adapter for cjm-fasthtml-plugins UnifiedPluginRegistry to match PluginRegistryProtocol.
source
UnifiedPluginRegistryAdapter
UnifiedPluginRegistryAdapter (registry)
Adapter for cjm-fasthtml-plugins UnifiedPluginRegistry.
registry
UnifiedPluginRegistry from cjm-fasthtml-plugins
ResourceManager Adapter
Adapter for cjm-fasthtml-resources ResourceManager to match ResourceManagerProtocol.
source
ResourceManagerAdapter
ResourceManagerAdapter (resource_manager)
Adapter for cjm-fasthtml-resources ResourceManager.
resource_manager
ResourceManager from cjm-fasthtml-resources
SSE Event Broadcaster Adapter
Adapter for cjm-fasthtml-sse SSEBroadcastManager to match EventBroadcasterProtocol.
source
SSEBroadcasterAdapter
SSEBroadcasterAdapter (sse_manager)
Adapter for cjm-fasthtml-sse SSEBroadcastManager.
sse_manager
SSEBroadcastManager from cjm-fasthtml-sse
Factory Function
Convenience function to create all standard adapters at once.
This factory function creates adapters for: - cjm-fasthtml-plugins UnifiedPluginRegistry - cjm-fasthtml-resources ResourceManager - cjm-fasthtml-sse SSEBroadcastManager
All parameters are optional. Pass None for services you don’t use.
Returns: Tuple of (plugin_adapter, resource_adapter, sse_adapter). Each adapter will be None if the corresponding service was not provided.
Usage Example:
from cjm_fasthtml_workers.extensions.adapters import create_standard_adapters
from cjm_fasthtml_plugins.core.registry import UnifiedPluginRegistry
from cjm_fasthtml_resources.core.manager import ResourceManager
# Create services
plugin_registry = UnifiedPluginRegistry()
resource_manager = ResourceManager()
# Create adapters
plugin_adapter, resource_adapter, sse_adapter = create_standard_adapters(
plugin_registry= plugin_registry,
resource_manager= resource_manager
)
# Pass to job manager
manager = MyJobManager(
plugin_registry= plugin_adapter,
resource_manager= resource_adapter
)
source
create_standard_adapters
create_standard_adapters (plugin_registry=None, resource_manager=None,
sse_manager=None)
Create standard adapters for common FastHTML libraries.
plugin_registry
NoneType
None
UnifiedPluginRegistry instance (optional)
resource_manager
NoneType
None
ResourceManager instance (optional)
sse_manager
NoneType
None
SSEBroadcastManager instance (optional)
Returns
tuple
(plugin_adapter, resource_adapter, sse_adapter)
Usage Examples
Basic Usage
Create adapters individually:
# Mock registry for testing
class MockPluginRegistry:
def get_plugins_by_category(self , category):
return []
def get_plugin(self , plugin_id):
return None
def load_plugin_config(self , plugin_id):
return {}
# Create adapter
registry = MockPluginRegistry()
adapter = UnifiedPluginRegistryAdapter(registry)
# Use adapter (satisfies PluginRegistryProtocol)
print (adapter.get_plugins_by_category('transcription' ))
print (adapter.load_plugin_config('plugin-123' ))
Factory Usage
Create all adapters at once:
# Mock services
class MockResourceManager:
def register_worker(self , pid, worker_type): pass
def unregister_worker(self , pid): pass
def update_worker_state(self , pid, ** kwargs): pass
def check_gpu_availability(self ): return None
def get_worker_by_pid(self , pid): return None
class MockSSEManager:
async def broadcast(self , event_type, data): pass
# Create services
plugin_registry = MockPluginRegistry()
resource_manager = MockResourceManager()
sse_manager = MockSSEManager()
# Create all adapters at once
plugin_adapter, resource_adapter, sse_adapter = create_standard_adapters(
plugin_registry= plugin_registry,
resource_manager= resource_manager,
sse_manager= sse_manager
)
print (f"Plugin adapter: { plugin_adapter} " )
print (f"Resource adapter: { resource_adapter} " )
print (f"SSE adapter: { sse_adapter} " )
Plugin adapter: <__main__.UnifiedPluginRegistryAdapter object>
Resource adapter: <__main__.ResourceManagerAdapter object>
SSE adapter: <__main__.SSEBroadcasterAdapter object>
Partial Usage
Only create adapters for services you use:
# Only using plugin registry and resource manager (no SSE)
plugin_adapter, resource_adapter, sse_adapter = create_standard_adapters(
plugin_registry= plugin_registry,
resource_manager= resource_manager
# sse_manager=None (default)
)
print (f"SSE adapter (should be None): { sse_adapter} " )
SSE adapter (should be None): None