def _validate_weekends(self, _, weekends: list) -> list: if len(self.weekday_names) == 0: assert len(weekends) == 0 return weekends for idx in weekends: assert 0 <= idx < len(self.weekday_names), "invalid weekend index" return utils.integer_sanitization(weekends)
def _validate_era_ranges(self, _, era_ranges: list) -> list: flat_era_ranges = list(itertools.chain.from_iterable(era_ranges)) assert flat_era_ranges[0] == "-inf", "first era must be infinite" assert flat_era_ranges[-1] == "inf", "last era must be infinite" finite_era_ranges = utils.integer_sanitization(flat_era_ranges[1:-1]) for hr_year in finite_era_ranges: assert hr_year >= 0, "human-readable years must be non-negative" return era_ranges
def test_integer_sanitization(): mixed_type_collection = FAKE.pylist( nb_elements=FAKE.random_int(min=1, max=10), variable_nb_elements=False, value_types=(float,), ) + [ str(integer) for integer in FAKE.pylist( nb_elements=FAKE.random_int(min=1, max=10), variable_nb_elements=False, value_types=(int,), ) ] for element in integer_sanitization(mixed_type_collection): assert isinstance(element, int)
def _validate_cycle_ordinals(self, _, cycle_ordinals: list) -> list: sanitized_cycle_ordinals = utils.integer_sanitization(cycle_ordinals) for cycle_ordinal in sanitized_cycle_ordinals: assert cycle_ordinal >= 0, "cycle ordinals must be non-negative" return sanitized_cycle_ordinals
def _validate_leap_cycles(self, _, leap_year_cycles: list) -> list: sanitized_cycles = utils.integer_sanitization(leap_year_cycles) for cycle in sanitized_cycles: assert cycle >= 1, "leap year cycles must be positive" return sanitized_cycles
def _validate_days_in_months(self, key, days_in_months: list) -> list: assert all([days > 0 for days in days_in_months]), "days must be > 0" if days_in_months: # skip if days_in_months is empty assert sum(days_in_months) > 0, f"{key} can not have zero days" return utils.integer_sanitization(days_in_months)