Source code for pbpstats.resources.enhanced_pbp.live.rebound

from pbpstats.resources.enhanced_pbp import Rebound
from pbpstats.resources.enhanced_pbp.live.enhanced_pbp_item import LiveEnhancedPbpItem


[docs]class LiveRebound(Rebound, LiveEnhancedPbpItem): """ Class for rebound events """ action_type = "rebound" def __init__(self, *args): super().__init__(*args) @property def missed_shot(self): """ returns :obj:`~pbpstats.resources.enhanced_pbp.field_goal.FieldGoal` or :obj:`~pbpstats.resources.enhanced_pbp.free_throw.FreeThrow` object for shot that was missed :raises: :obj:`~pbpstats.resources.enhanced_pbp.rebound.EventOrderError`: If rebound event is not immediately following a missed shot event. """ prev_event = self.previous_event while prev_event is not None: if prev_event.event_num == self.shot_action_number: return prev_event prev_event = prev_event.previous_event raise Rebound.EventOrderError( f"previous event: {self.previous_event} is not a missed free throw or field goal" ) @property def oreb(self): """ returns True if rebound is an offensive rebound, False otherwise """ return self.sub_type == "offensive" @property def is_placeholder(self): """ returns True if rebound is a placeholder event, False otherwise. These are team rebounds on for example missed FT 1 of 2 """ if hasattr(self, "qualifiers") and "deadball" in self.qualifiers: return True if ( hasattr(self.missed_shot, "is_flagrant_ft") and self.missed_shot.is_flagrant_ft ): return True return False