def check_fare_rules(
    feed: "Feed", *, as_df: bool = False, include_warnings: bool = False
) -> List:
    """
    Analog of :func:`check_agency` for ``feed.calendar_dates``.
    """
    table = "fare_rules"
    problems = []

    # Preliminary checks
    if feed.fare_rules is None:
        return problems

    f = feed.fare_rules.copy()
    problems = check_for_required_columns(problems, table, f)
    if problems:
        return format_problems(problems, as_df=as_df)

    if include_warnings:
        problems = check_for_invalid_columns(problems, table, f)

    # Check fare_id
    problems = check_column_linked_id(
        problems, table, f, "fare_id", feed.fare_attributes
    )

    # Check route_id
    problems = check_column_linked_id(
        problems, table, f, "route_id", feed.routes, column_required=False
    )

    # Check origin_id, destination_id, contains_id
    for col in ["origin_id", "destination_id", "contains_id"]:
        problems = check_column_linked_id(
            problems,
            table,
            f,
            col,
            feed.stops,
            "zone_id",
            column_required=False,
        )

    return format_problems(problems, as_df=as_df)
Analog of :func:`check_agency` for ``feed.calendar_dates``.