def test_getMostRelevantSupervisionType_chooseDualIfExists(self): for supervision_type in StateSupervisionPeriodSupervisionType: types = { StateSupervisionPeriodSupervisionType.DUAL, supervision_type } self.assertEqual(StateSupervisionPeriodSupervisionType.DUAL, _get_most_relevant_supervision_type(types))
def test_getMostRelevantSupervisionType_dualIfProbationAndParole(self): types = { StateSupervisionPeriodSupervisionType.PROBATION, StateSupervisionPeriodSupervisionType.PAROLE } self.assertEqual(StateSupervisionPeriodSupervisionType.DUAL, _get_most_relevant_supervision_type(types))
def us_id_get_most_recent_supervision_period_supervision_type_before_upper_bound_day( upper_bound_exclusive_date: date, lower_bound_inclusive_date: Optional[date], supervision_periods: List[StateSupervisionPeriod], ) -> Optional[StateSupervisionPeriodSupervisionType]: """Finds the most recent nonnull supervision period supervision type on the supervision periods, preceding or overlapping the provided date. An optional lower bound may be provided to limit the lookback window. Returns the most recent StateSupervisionPeriodSupervisionType. If there is no valid supervision type found (e.g. the person has only been incarcerated for the time window), returns None. """ supervision_types_by_end_date: Dict[ date, Set[StateSupervisionPeriodSupervisionType]] = defaultdict(set) lower_bound_exclusive_date = (lower_bound_inclusive_date - relativedelta(days=1) if lower_bound_inclusive_date else date.min) for supervision_period in supervision_periods: start_date = supervision_period.start_date if not start_date: continue termination_date = (supervision_period.termination_date if supervision_period.termination_date else date.today()) supervision_period_supervision_type = supervision_period.supervision_period_supervision_type if not supervision_period_supervision_type: continue if not date_spans_overlap_exclusive(start_1=lower_bound_exclusive_date, end_1=upper_bound_exclusive_date, start_2=start_date, end_2=termination_date): continue supervision_types_by_end_date[termination_date].add( supervision_period_supervision_type) if not supervision_types_by_end_date: return None max_end_date = max(supervision_types_by_end_date.keys()) return _get_most_relevant_supervision_type( supervision_types_by_end_date[max_end_date])
def test_getMostRelevantSupervisionType_allEnums(self): for supervision_type in StateSupervisionPeriodSupervisionType: types = {supervision_type} self.assertEqual(supervision_type, _get_most_relevant_supervision_type(types))