Add affinity_effect_calculator/src/affinity_effect_calculator/core.py
This commit is contained in:
commit
5fd91018ab
1 changed files with 40 additions and 0 deletions
|
|
@ -0,0 +1,40 @@
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class EffectData:
|
||||||
|
"""Datenmodell für Effektwerte und berechneten Interaktionseffekt."""
|
||||||
|
|
||||||
|
effect_4x: float
|
||||||
|
effect_2x: float
|
||||||
|
calculated_effect: float | None = None
|
||||||
|
|
||||||
|
def validate(self) -> None:
|
||||||
|
"""Validiert die Eingabewerte, um sicherzustellen, dass sie floats sind."""
|
||||||
|
if not isinstance(self.effect_4x, (float, int)):
|
||||||
|
raise ValueError(f"effect_4x muss eine Zahl sein, erhalten: {type(self.effect_4x)}")
|
||||||
|
if not isinstance(self.effect_2x, (float, int)):
|
||||||
|
raise ValueError(f"effect_2x muss eine Zahl sein, erhalten: {type(self.effect_2x)}")
|
||||||
|
|
||||||
|
|
||||||
|
def calculate_affinity_effect(effect_4x: float, effect_2x: float) -> float:
|
||||||
|
"""Berechnet den Interaktionseffekt basierend auf den beiden Eingabewerten.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
effect_4x (float): Effektwert bei 4× Last.
|
||||||
|
effect_2x (float): Effektwert bei 2× Last.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
float: Der berechnete Interaktionseffekt (effect_4x - effect_2x).
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
ValueError: Falls Eingaben keine numerischen Werte sind.
|
||||||
|
"""
|
||||||
|
if not isinstance(effect_4x, (float, int)):
|
||||||
|
raise ValueError(f"Ungültiger Typ für effect_4x: {type(effect_4x)}")
|
||||||
|
if not isinstance(effect_2x, (float, int)):
|
||||||
|
raise ValueError(f"Ungültiger Typ für effect_2x: {type(effect_2x)}")
|
||||||
|
|
||||||
|
result = float(effect_4x) - float(effect_2x)
|
||||||
|
return result
|
||||||
Loading…
Reference in a new issue