#!/usr/bin/python3 """Load YAML data to ensure validity.""" import os import typing from datetime import date, timedelta import agenda import agenda.conference import agenda.data import agenda.travel import agenda.trip import agenda.types config = __import__("config.default", fromlist=[""]) data_dir = config.PERSONAL_DATA def check_trips() -> None: """Check trips.""" trip_list = agenda.trip.build_trip_list(data_dir) print(len(trip_list), "trips") coords, routes = agenda.trip.get_coordinates_and_routes(trip_list, data_dir) print(len(coords), "coords") print(len(routes), "routes") def check_flights() -> None: """Check flights.""" flights = agenda.travel.parse_yaml("flights", data_dir) print(len(flights), "flights") def check_trains() -> None: """Check trains.""" trains = agenda.travel.parse_yaml("trains", data_dir) print(len(trains), "trains") def check_conferences() -> None: """Check conferences.""" conferences = agenda.conference.get_list(os.path.join(data_dir, "conferences.yaml")) print(len(conferences), "conferences") def check_events() -> None: """Check events.""" today = date.today() last_year = today - timedelta(days=365) next_year = today + timedelta(days=2 * 365) events = agenda.events_yaml.read(data_dir, last_year, next_year) print(len(events), "events") def check_airports() -> None: """Check airports.""" airports = typing.cast( dict[str, agenda.types.StrDict], agenda.travel.parse_yaml("airports", data_dir) ) print(len(airports), "airports") for airport in airports.values(): assert "country" in airport assert agenda.get_country(airport["country"]) def check_stations() -> None: """Check stations.""" stations = agenda.travel.parse_yaml("stations", data_dir) print(len(stations), "stations") for station in stations: assert "country" in station assert agenda.get_country(station["country"]) def check_airlines() -> None: """Check airlines.""" airlines = agenda.travel.parse_yaml("airlines", data_dir) print(len(airlines), "airlines") for airline in airlines: assert airline.keys() == {"icao", "iata", "name"} def check() -> None: """Validate personal data YAML files.""" check_trips() check_flights() check_trains() check_conferences() check_events() check_airports() check_stations() check_airlines() if __name__ == "__main__": check()