From 6bfb921b9f2e6a9604616a2d6a378b04c706417f Mon Sep 17 00:00:00 2001 From: MaziyarMK Date: Sun, 11 Jun 2023 00:21:00 +0400 Subject: [PATCH 1/3] Add missing fields to Airline dataclass --- duffel_api/models/airline.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/duffel_api/models/airline.py b/duffel_api/models/airline.py index 110b1f0..a6f6a9c 100644 --- a/duffel_api/models/airline.py +++ b/duffel_api/models/airline.py @@ -11,6 +11,8 @@ class Airline: id: str name: str iata_code: Optional[str] + logo_lockup_url: Optional[str] + logo_symbol_url: Optional[str] @classmethod def from_json(cls, json: dict): @@ -19,4 +21,6 @@ def from_json(cls, json: dict): id=json["id"], name=json["name"], iata_code=json.get("iata_code"), + logo_lockup_url=json.get("logo_lockup_url"), + logo_symbol_url=json.get("logo_symbol_url"), ) From 00358a804ee157cd95cc49ee0994acac0ade9e1f Mon Sep 17 00:00:00 2001 From: maziyarmk Date: Sun, 11 Jun 2023 00:40:42 +0400 Subject: [PATCH 2/3] receive and parse segment stops --- duffel_api/models/offer.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/duffel_api/models/offer.py b/duffel_api/models/offer.py index 9ae33bf..b7b506c 100644 --- a/duffel_api/models/offer.py +++ b/duffel_api/models/offer.py @@ -221,6 +221,26 @@ def from_json(cls, json: dict): ) +@dataclass +class OfferSliceSegmentStop: + id: str + duration: str + arriving_at: datetime + departing_at: datetime + airport: Airport + + @classmethod + def from_json(cls, json: dict): + """Construct a class instance from a JSON response.""" + return cls( + id=json["id"], + arriving_at=parse_datetime(json["arriving_at"]), + departing_at=parse_datetime(json["departing_at"]), + airport=Airport.from_json(json["airport"]), + duration=json.get("duration"), + ) + + @dataclass class OfferSliceSegment: """The segments - that is, specific flights - that the airline is offering @@ -242,6 +262,7 @@ class OfferSliceSegment: operating_carrier: Airline operating_carrier_flight_number: Optional[str] passengers: Sequence[OfferSliceSegmentPassenger] + stops: Sequence[OfferSliceSegmentStop] @classmethod def from_json(cls, json: dict): @@ -270,6 +291,15 @@ def from_json(cls, json: dict): ], [], ), + stops=get_and_transform( + json, + "stops", + lambda value: [ + OfferSliceSegmentStop.from_json(stop) + for stop in value + ], + [], + ), ) From 8408d86f15790dcd0780b03b6d67dea76c16a3d3 Mon Sep 17 00:00:00 2001 From: maziyarmk Date: Mon, 12 Jun 2023 19:38:14 +0400 Subject: [PATCH 3/3] resolve maintainer/reviewer comments --- duffel_api/models/offer.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/duffel_api/models/offer.py b/duffel_api/models/offer.py index b7b506c..86430c2 100644 --- a/duffel_api/models/offer.py +++ b/duffel_api/models/offer.py @@ -223,6 +223,8 @@ def from_json(cls, json: dict): @dataclass class OfferSliceSegmentStop: + """Additional segment-specific information about the stops, if any, included in the segment""" + id: str duration: str arriving_at: datetime @@ -234,8 +236,12 @@ def from_json(cls, json: dict): """Construct a class instance from a JSON response.""" return cls( id=json["id"], - arriving_at=parse_datetime(json["arriving_at"]), - departing_at=parse_datetime(json["departing_at"]), + arriving_at=get_and_transform( + json, "arriving_at", parse_datetime + ), + departing_at=get_and_transform( + json, "departing_at", parse_datetime + ), airport=Airport.from_json(json["airport"]), duration=json.get("duration"), )