giant.utilities.mixin_classes.user_option_configuredΒΆ

This module provides the UserOptionConfigured mixin class that enables classes to be configured using UserOptions-derived classes while maintaining the ability to reset to the original configuration state.

The mixin pattern allows for clean separation of configuration logic and provides a consistent interface for option management across different classes.

Example:

Basic usage of the UserOptionConfigured mixin:

from giant.utilities.options import UserOptions
from giant.utilities.mixin_classes.user_option_configured import UserOptionConfigured
from dataclasses import dataclass

@dataclass
class MyOptions(UserOptions):
    a: int = 5
    b: float = -32.1

class MyUsefulClass(UserOptionConfigured[MyOptions], MyOptions):
    def __init__(self, options: MyOptions = None):
        super().__init__(MyOptions, options)

# Usage
my_useful_inst = MyUsefulClass()
my_useful_inst.a = 6  # Make a change
print(my_useful_inst.a)  # Output: 6
my_useful_inst.reset_settings()  # Reset to original
print(my_useful_inst.a)  # Output: 5

Note

The UserOptionConfigured class should come first in the inheritance order due to Method Resolution Order (MRO) requirements.

Classes

UserOptionConfigured

Mixin class providing UserOptions-based configuration with reset capability.