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
Mixin class providing UserOptions-based configuration with reset capability. |