Add affinity_effect_calculator/src/affinity_effect_calculator/core.py

This commit is contained in:
Mika 2026-03-22 13:46:45 +00:00
commit 5fd91018ab

View file

@ -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