Explore 11 complete code examples demonstrating Fli’s Python library features
This page showcases all 11 example files from the examples/ directory. Each example is a complete, runnable Python script that demonstrates specific features of the Fli library.
# Run any example with uv (automatically handles dependencies)uv run python examples/basic_one_way_search.py# Or from the project rootuv run python -m examples.basic_one_way_search
# Install the package firstpip install fli# Then run examples directlypython examples/basic_one_way_search.py
File:examples/basic_one_way_search.pyDemonstrates the simplest flight search between two airports on a specific date. Shows core API usage with basic filters.Features:
Single passenger search
Non-stop flights filter
Economy class
Sort by cheapest price
Result processing and display
from datetime import datetime, timedeltafrom fli.models import ( Airport, FlightSearchFilters, FlightSegment, PassengerInfo, SeatType, MaxStops, SortBy,)from fli.search import SearchFlights# Create search filtersfilters = FlightSearchFilters( passenger_info=PassengerInfo(adults=1), flight_segments=[ FlightSegment( departure_airport=[[Airport.JFK, 0]], arrival_airport=[[Airport.LAX, 0]], travel_date=(datetime.now() + timedelta(days=30)).strftime("%Y-%m-%d"), ) ], seat_type=SeatType.ECONOMY, stops=MaxStops.NON_STOP, sort_by=SortBy.CHEAPEST,)# Search flightssearch = SearchFlights()flights = search.search(filters)# Process resultsfor flight in flights: print(f"💰 Price: ${flight.price}") print(f"⏱️ Duration: {flight.duration} minutes") print(f"✈️ Stops: {flight.stops}") for leg in flight.legs: print(f"\n🛫 Flight: {leg.airline.value} {leg.flight_number}") print(f"📍 From: {leg.departure_airport.value} at {leg.departure_datetime}") print(f"📍 To: {leg.arrival_airport.value} at {leg.arrival_datetime}")
File:examples/round_trip_search.pyShows how to search for round-trip flights with outbound and return segments. Demonstrates handling the tuple structure of round-trip results.Features:
Two flight segments (outbound and return)
Round-trip trip type
Combined price calculation
Tuple unpacking for results
from datetime import datetime, timedeltafrom fli.models import ( Airport, FlightSearchFilters, FlightSegment, PassengerInfo, TripType,)from fli.search import SearchFlights# Create flight segments for round tripoutbound_date = (datetime.now() + timedelta(days=30)).strftime("%Y-%m-%d")return_date = (datetime.now() + timedelta(days=37)).strftime("%Y-%m-%d")flight_segments = [ FlightSegment( departure_airport=[[Airport.JFK, 0]], arrival_airport=[[Airport.LAX, 0]], travel_date=outbound_date, ), FlightSegment( departure_airport=[[Airport.LAX, 0]], arrival_airport=[[Airport.JFK, 0]], travel_date=return_date, ),]# Create filtersfilters = FlightSearchFilters( trip_type=TripType.ROUND_TRIP, passenger_info=PassengerInfo(adults=1), flight_segments=flight_segments,)# Search flightssearch = SearchFlights()results = search.search(filters)# Process results - note the tuple structurefor outbound, return_flight in results: print("\nOutbound Flight:") for leg in outbound.legs: print(f"Flight: {leg.airline.value} {leg.flight_number}") print(f"Departure: {leg.departure_datetime}") print(f"Arrival: {leg.arrival_datetime}") print("\nReturn Flight:") for leg in return_flight.legs: print(f"Flight: {leg.airline.value} {leg.flight_number}") print(f"Departure: {leg.departure_datetime}") print(f"Arrival: {leg.arrival_datetime}") print(f"\nTotal Price: ${outbound.price + return_flight.price}")
File:examples/date_search_with_preferences.pyDemonstrates date-based searching with post-processing filters for specific day preferences (e.g., weekends only).Features:
Date range searching
Weekend-only filtering (Saturday/Sunday)
Premium economy class
Day-of-week detection
Custom result formatting
# Search across date rangeresults = search.search(filters)# Filter for weekends onlyweekend_results = [ r for r in results if r.date[0].weekday() >= 5 # Saturday = 5, Sunday = 6]print(f"Found {len(weekend_results)} weekend flights:")for result in weekend_results: day_name = result.date[0].strftime("%A") date_str = result.date[0].strftime("%Y-%m-%d") print(f"{day_name}, {date_str}: ${result.price}")
File:examples/complex_round_trip_validation.pyEnterprise-level round-trip search with comprehensive date validation, complex passenger configurations, and detailed requirements.Features:
Date validation function (future dates, max duration)
Multiple passengers with infants
Time restrictions for both outbound and return
Business class
Layover optimization
Multi-airline preferences
Detailed error handling
def validate_trip_dates(outbound_date_str: str, return_date_str: str): """Validate trip dates with comprehensive checks.""" today = datetime.now().date() outbound_date = datetime.strptime(outbound_date_str, "%Y-%m-%d").date() return_date = datetime.strptime(return_date_str, "%Y-%m-%d").date() if outbound_date <= today: raise ValueError("Outbound date must be in the future") if return_date <= outbound_date: raise ValueError("Return date must be after outbound date") if return_date - outbound_date > timedelta(days=30): raise ValueError("Trip duration cannot exceed 30 days") print(f"✓ Dates validated: {outbound_date} to {return_date}") return outbound_date, return_date
This example is perfect for production applications that need robust validation and error handling.
File:examples/advanced_date_search_validation.pyComprehensive date range searching with validation, stay duration constraints, and weekend trip optimization.Features:
Date range validation function
Stay duration constraints (min/max days)
Round-trip date searches with variable durations
Weekend departure filtering
Time restrictions
Top 5 results sorted by price
Detailed validation error messages
Ideal for building flexible booking tools that need to validate user input and find optimal weekend trips.
File:examples/price_tracking.pyDemonstrates tracking flight prices over multiple days to analyze trends and find deals.Features:
Multi-day price monitoring
Price history storage
Statistical analysis (min, max, average)
Time-based iteration
Trend identification concepts
def track_prices(days=7): """Track flight prices over a specified number of days.""" search = SearchDates() price_history = {} for day in range(days): print(f"Day {day + 1}: Searching for prices...") results = search.search(filters) # Store prices for result in results: date_str = result.date[0].strftime("%Y-%m-%d") if date_str not in price_history: price_history[date_str] = [] price_history[date_str].append(result.price) # Wait for next check (24 hours in production) if day < days - 1: time.sleep(86400) return price_history# Analyze resultsfor date, prices in price_history.items(): min_price = min(prices) max_price = max(prices) avg_price = sum(prices) / len(prices) print(f"{date}: Min: ${min_price:.2f}, Max: ${max_price:.2f}, Avg: ${avg_price:.2f}")
from fli.models import Airport# Major US airportsAirport.JFK # New York JFKAirport.LAX # Los AngelesAirport.ORD # Chicago O'HareAirport.DFW # Dallas/Fort WorthAirport.SFO # San FranciscoAirport.BOS # BostonAirport.MIA # MiamiAirport.SEA # Seattle# International airportsAirport.LHR # London HeathrowAirport.CDG # Paris Charles de GaulleAirport.NRT # Tokyo NaritaAirport.SYD # Sydney
from fli.models import PassengerInfo# Single travelerPassengerInfo(adults=1)# CouplePassengerInfo(adults=2)# Family with childrenPassengerInfo(adults=2, children=2, infants_on_lap=1)