Skip to content

azad.compression.registry Module

azad.compression.registry

Compression strategy registry.

This module provides a registry for compression strategies, allowing them to be created by name and ensuring only one strategy instance can be active at a time.

Classes

CompressionStrategyRegistry

Registry for compression strategies.

This class provides methods for creating and managing compression strategies. It ensures that only one strategy of each type can be active at a time.

Functions
get_strategy classmethod
get_strategy(strategy_type: CompressionStrategyType) -> CompressionStrategy

Get a strategy instance by type.

Parameters:

Returns:

Raises:

  • ValueError

    If an unknown strategy type is requested

Source code in azad/compression/registry.py
@classmethod
def get_strategy(cls, strategy_type: CompressionStrategyType) -> CompressionStrategy:
    """Get a strategy instance by type.

    Args:
        strategy_type: The type of strategy to get

    Returns:
        An instance of the requested strategy

    Raises:
        ValueError: If an unknown strategy type is requested
    """
    if strategy_type not in cls._instances:
        if strategy_type not in cls._strategy_classes:
            raise ValueError(f"Unknown compression strategy type: {strategy_type}")

        # Create a new instance
        strategy_class = cls._strategy_classes[strategy_type]
        cls._instances[strategy_type] = strategy_class()

    return cls._instances[strategy_type]
register_strategy classmethod
register_strategy(strategy_type: CompressionStrategyType, strategy_class: Type[CompressionStrategy]) -> None

Register a new strategy type.

Parameters:

Source code in azad/compression/registry.py
@classmethod
def register_strategy(cls, strategy_type: CompressionStrategyType, strategy_class: Type[CompressionStrategy]) -> None:
    """Register a new strategy type.

    Args:
        strategy_type: The type of strategy to register
        strategy_class: The class to instantiate for this strategy type
    """
    cls._strategy_classes[strategy_type] = strategy_class
    # Remove any existing instance to ensure a new one is created
    if strategy_type in cls._instances:
        del cls._instances[strategy_type]