Source code for pybbda.analysis.simulations.components.player

import attr

from pybbda.analysis.simulations.components.event import (
    BattingEventProbability,
    RunningEventProbability,
    _DEFAULT_BATTING_EVENT_PROBS,
    _DEFAULT_RUNNING_EVENT_PROBS,
)


@attr.s(kw_only=True)
class Player:
    player_id = attr.ib(type=str)


[docs]@attr.s(kw_only=True) class Batter(Player): batting_event_probabilities = attr.ib( default=BattingEventProbability(*_DEFAULT_BATTING_EVENT_PROBS), type=BattingEventProbability, ) running_event_probabilities = attr.ib( default=RunningEventProbability(*_DEFAULT_RUNNING_EVENT_PROBS), type=RunningEventProbability, )
[docs] def set_batting_event_probs(self, **batting_event_probs): self.batting_event_probabilities = attr.evolve( self.batting_event_probabilities, **batting_event_probs )
[docs] def set_running_event_probs(self, **running_event_probs): self.running_event_probabilities = attr.evolve( self.running_event_probabilities, **running_event_probs )
[docs]@attr.s(kw_only=True) class Runner(Player): running_event_probabilities = attr.ib( default=RunningEventProbability(*_DEFAULT_RUNNING_EVENT_PROBS), type=RunningEventProbability, )
[docs] def set_event_probs(self, **running_event_probs): self.running_event_probabilities = attr.evolve( self.running_event_probabilities, **running_event_probs )