44"""Resource class for flight summary data."""
55
66import warnings
7- from typing import Optional , Any , Annotated
7+ from typing import Optional , Any , Annotated , Union
88from datetime import datetime
99from pydantic import BaseModel , model_serializer , StringConstraints , Field
1010
1111from ..transport import HttpTransport
12+ from ..models .flight_category import FlightCategory
1213from ..models .flight import (
1314 FlightSummaryLightResponse ,
1415 FlightSummaryFullResponse ,
2122 AIRLINE_ICAO_PATTERN ,
2223 AIRPORT_PARAM_PATTERN ,
2324 ROUTE_PATTERN ,
25+ SERVICE_TYPES_PATTERN ,
2426 SORT_PATTERN ,
2527)
2628
@@ -53,6 +55,9 @@ class _FlightSummaryParams(BaseModel):
5355 Field (default = None , max_length = 15 )
5456 )
5557 aircraft : Optional [list [str ]] = Field (default = None , max_length = 15 )
58+ categories : Optional [
59+ list [Union [FlightCategory , Annotated [str , StringConstraints (pattern = SERVICE_TYPES_PATTERN )]]]
60+ ] = Field (default = None , max_length = 15 )
5661 sort : Optional [Annotated [str , StringConstraints (pattern = SORT_PATTERN )]] = None
5762 limit : Optional [Annotated [int , Field (ge = 1 , le = 20000 )]] = None
5863
@@ -97,6 +102,7 @@ def get_light(
97102 airports : Optional [list [str ]] = None ,
98103 routes : Optional [list [str ]] = None ,
99104 aircraft : Optional [list [str ]] = None ,
105+ categories : Optional [list [str ]] = None ,
100106 sort : Optional [str ] = None ,
101107 limit : Optional [int ] = None ,
102108 ) -> FlightSummaryLightResponse :
@@ -118,6 +124,7 @@ def get_light(
118124 airports = airports ,
119125 routes = routes ,
120126 aircraft = aircraft ,
127+ categories = categories ,
121128 sort = sort ,
122129 limit = limit ,
123130 ).model_dump (exclude_none = True )
@@ -140,6 +147,7 @@ def get_full(
140147 airports : Optional [list [str ]] = None ,
141148 routes : Optional [list [str ]] = None ,
142149 aircraft : Optional [list [str ]] = None ,
150+ categories : Optional [list [str ]] = None ,
143151 sort : Optional [str ] = None ,
144152 limit : Optional [int ] = None ,
145153 ) -> FlightSummaryFullResponse :
@@ -159,6 +167,7 @@ def get_full(
159167 airports = airports ,
160168 routes = routes ,
161169 aircraft = aircraft ,
170+ categories = categories ,
162171 sort = sort ,
163172 limit = limit ,
164173 ).model_dump (exclude_none = True )
@@ -181,6 +190,7 @@ def get_count(
181190 airports : Optional [list [str ]] = None ,
182191 routes : Optional [list [str ]] = None ,
183192 aircraft : Optional [list [str ]] = None ,
193+ categories : Optional [list [str ]] = None ,
184194 ) -> CountResponse :
185195 """Return the number of flight-summary records that match the filters.
186196
@@ -199,6 +209,7 @@ def get_count(
199209 airports = airports ,
200210 routes = routes ,
201211 aircraft = aircraft ,
212+ categories = categories ,
202213 ).model_dump (exclude_none = True )
203214 response = self ._transport .request (
204215 "GET" , f"{ self .BASE_PATH } /count" , params = params
@@ -219,6 +230,7 @@ def count(
219230 airports : Optional [list [str ]] = None ,
220231 routes : Optional [list [str ]] = None ,
221232 aircraft : Optional [list [str ]] = None ,
233+ categories : Optional [list [str ]] = None ,
222234 ) -> CountResponse :
223235 """Deprecated alias for :meth:`get_count`."""
224236 warnings .warn (
@@ -239,4 +251,5 @@ def count(
239251 airports = airports ,
240252 routes = routes ,
241253 aircraft = aircraft ,
254+ categories = categories ,
242255 )
0 commit comments