def METHOD_NAME(
    time_for_source, is_through_init, should_succeed, time_delta
):
    def _test_parquet_source_with_iso_start_or_end_time(
        time_for_source, is_through_init, time_delta
    ):
        if time_delta is None:
            tzinfo = None
        else:
            tzinfo = timezone.utc if time_delta == 0 else timezone(time_delta)
        actual = datetime(2021, 5, 25, 10, 30, 29, 592000, tzinfo)
        source = ParquetSource(
            "srcpar",
            path="tmp/doesnt/matter",
            start_time=time_for_source if is_through_init else None,
            end_time=time_for_source if is_through_init else None,
        )
        if not is_through_init:
            source.start_time = time_for_source
            source.end_time = time_for_source
        if source.start_time:
            assert source.start_time == actual
        if source.end_time:
            assert source.end_time == actual
    if should_succeed:
        _test_parquet_source_with_iso_start_or_end_time(
            time_for_source, is_through_init, time_delta
        )
    else:
        with pytest.raises(ValueError, match=r".*Invalid isoformat string:.*"):
            _test_parquet_source_with_iso_start_or_end_time(
                time_for_source, is_through_init, time_delta
            )