Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement boolean handling #39

Merged
merged 4 commits into from
Jan 18, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 57 additions & 31 deletions pyrail/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ class PlatformInfo(DataClassORJSONMixin):
"""Details about the platform, such as name and whether it is the normal one."""

name: str # Platform name
normal: bool # Whether it is the normal platform
normal: bool = field(metadata=field_options(deserialize=str_to_bool)) # Whether it is the normal platform


@dataclass
Expand All @@ -104,9 +104,11 @@ class LiveboardDeparture(DataClassORJSONMixin):
metadata=field_options(deserialize=_timestamp_to_datetime)
) # Departure time (timestamp)
delay: int # Delay in seconds
canceled: bool # Whether the departure is canceled
left: bool # Whether the train has left
is_extra: bool = field(metadata=field_options(alias="isExtra")) # Whether the train is extra
canceled: bool = field(metadata=field_options(deserialize=str_to_bool)) # Whether the departure is canceled
left: bool = field(metadata=field_options(deserialize=str_to_bool)) # Whether the train has left
is_extra: bool = field(
metadata=field_options(alias="isExtra", deserialize=str_to_bool)
) # Whether the train is extra
vehicle: str # Vehicle identifier
vehicle_info: VehicleInfo = field(metadata=field_options(alias="vehicleinfo")) # Vehicle details
platform: str # Platform name
Expand Down Expand Up @@ -174,16 +176,22 @@ class ConnectionStop(DataClassORJSONMixin):
scheduled_arrival_time: datetime = field(
metadata=field_options(alias="scheduledArrivalTime", deserialize=_timestamp_to_datetime)
) # Scheduled arrival time
arrival_canceled: bool = field(metadata=field_options(alias="arrivalCanceled")) # Arrival cancellation status
arrived: bool # Arrival status
arrival_canceled: bool = field(
metadata=field_options(alias="arrivalCanceled", deserialize=str_to_bool)
) # Arrival cancellation status
arrived: bool = field(metadata=field_options(deserialize=str_to_bool)) # Arrival status
scheduled_departure_time: datetime = field(
metadata=field_options(alias="scheduledDepartureTime", deserialize=_timestamp_to_datetime)
) # Scheduled departure time
arrival_delay: int = field(metadata=field_options(alias="arrivalDelay")) # Arrival delay
departure_delay: int = field(metadata=field_options(alias="departureDelay")) # Departure delay
departure_canceled: bool = field(metadata=field_options(alias="departureCanceled")) # Departure cancellation status
left: bool # Departure status
is_extra_stop: bool = field(metadata=field_options(alias="isExtraStop")) # Whether the stop is an extra one
departure_canceled: bool = field(
metadata=field_options(alias="departureCanceled", deserialize=str_to_bool)
) # Departure cancellation status
left: bool = field(metadata=field_options(deserialize=str_to_bool)) # Departure status
is_extra_stop: bool = field(
metadata=field_options(alias="isExtraStop", deserialize=str_to_bool)
) # Whether the stop is an extra one
platform: str # Platform name
platform_info: PlatformInfo = field(metadata=field_options(alias="platforminfo")) # Detailed platform info

Expand Down Expand Up @@ -217,12 +225,14 @@ class ConnectionDeparture(DataClassORJSONMixin):
vehicle_info: VehicleInfo = field(metadata=field_options(alias="vehicleinfo")) # Vehicle details
platform: str # Platform name
platform_info: PlatformInfo = field(metadata=field_options(alias="platforminfo")) # Detailed platform info
canceled: bool # Whether the departure is canceled
canceled: bool = field(metadata=field_options(deserialize=str_to_bool)) # Whether the departure is canceled
stops: ConnectionStops # Stops along the journey
departure_connection: str = field(metadata=field_options(alias="departureConnection")) # Departure connection link
direction: Direction # Direction of the connection
left: bool # Whether the train has left
walking: bool # Indicates if the connection requires walking
left: bool = field(metadata=field_options(deserialize=str_to_bool)) # Whether the train has left
walking: bool = field(
metadata=field_options(deserialize=str_to_bool)
) # Indicates if the connection requires walking
occupancy: Occupancy # Occupancy level


Expand All @@ -240,10 +250,12 @@ class ConnectionArrival(DataClassORJSONMixin):
vehicle_info: VehicleInfo = field(metadata=field_options(alias="vehicleinfo")) # Vehicle details
platform: str # Platform name
platform_info: PlatformInfo = field(metadata=field_options(alias="platforminfo")) # Detailed platform info
canceled: bool # Whether the arrival is canceled
canceled: bool = field(metadata=field_options(deserialize=str_to_bool)) # Whether the arrival is canceled
direction: Direction # Direction of the connection
arrived: bool # Whether the train has arrived
walking: bool # Indicates if the connection requires walking
arrived: bool = field(metadata=field_options(deserialize=str_to_bool)) # Whether the train has arrived
walking: bool = field(
metadata=field_options(deserialize=str_to_bool)
) # Indicates if the connection requires walking
departure_connection: str = field(metadata=field_options(alias="departureConnection")) # Departure connection link


Expand Down Expand Up @@ -351,14 +363,20 @@ class VehicleStop(DataClassORJSONMixin):
metadata=field_options(alias="scheduledArrivalTime", deserialize=_timestamp_to_datetime)
) # Scheduled arrival time
delay: int # Delay in minutes
canceled: bool # Whether the stop is canceled
canceled: bool = field(metadata=field_options(deserialize=str_to_bool)) # Whether the stop is canceled
departure_delay: int = field(metadata=field_options(alias="departureDelay")) # Departure delay
departure_canceled: bool = field(metadata=field_options(alias="departureCanceled")) # Departure cancellation status
departure_canceled: bool = field(
metadata=field_options(alias="departureCanceled", deserialize=str_to_bool)
) # Departure cancellation status
arrival_delay: int = field(metadata=field_options(alias="arrivalDelay")) # Arrival delay
arrival_canceled: bool = field(metadata=field_options(alias="arrivalCanceled")) # Arrival cancellation status
left: bool # Whether the train has left
arrived: bool # Whether the train has arrived
is_extra_stop: bool = field(metadata=field_options(alias="isExtraStop")) # Whether this is an extra stop
arrival_canceled: bool = field(
metadata=field_options(alias="arrivalCanceled", deserialize=str_to_bool)
) # Arrival cancellation status
left: bool = field(metadata=field_options(deserialize=str_to_bool)) # Whether the train has left
arrived: bool = field(metadata=field_options(deserialize=str_to_bool)) # Whether the train has arrived
is_extra_stop: bool = field(
metadata=field_options(alias="isExtraStop", deserialize=str_to_bool)
) # Whether this is an extra stop
occupancy: Occupancy | None = field(default=None) # Occupancy level, not present in last stop
departure_connection: str | None = field(
default=None, metadata=field_options(alias="departureConnection")
Expand Down Expand Up @@ -397,18 +415,24 @@ class Unit(DataClassORJSONMixin):

id: str # Unit ID
material_type: MaterialType = field(metadata=field_options(alias="materialType")) # Material type of the unit
has_toilets: bool = field(metadata=field_options(alias="hasToilets")) # Whether the unit has toilets
has_toilets: bool = field(
metadata=field_options(alias="hasToilets", deserialize=str_to_bool)
) # Whether the unit has toilets
has_second_class_outlets: bool = field(
metadata=field_options(alias="hasSecondClassOutlets")
metadata=field_options(alias="hasSecondClassOutlets", deserialize=str_to_bool)
) # Whether the unit has power outlets in second class
has_first_class_outlets: bool = field(
metadata=field_options(alias="hasFirstClassOutlets")
metadata=field_options(alias="hasFirstClassOutlets", deserialize=str_to_bool)
) # Whether the unit has power outlets in first class
has_heating: bool = field(metadata=field_options(alias="hasHeating")) # Whether the unit has heating
has_airco: bool = field(metadata=field_options(alias="hasAirco")) # Whether the unit has air conditioning
has_heating: bool = field(
metadata=field_options(alias="hasHeating", deserialize=str_to_bool)
) # Whether the unit has heating
has_airco: bool = field(
metadata=field_options(alias="hasAirco", deserialize=str_to_bool)
) # Whether the unit has air conditioning
traction_type: str = field(metadata=field_options(alias="tractionType")) # Traction type of the unit
can_pass_to_next_unit: bool = field(
metadata=field_options(alias="canPassToNextUnit")
metadata=field_options(alias="canPassToNextUnit", deserialize=str_to_bool)
) # Whether the unit can pass to the next
seats_first_class: int = field(metadata=field_options(alias="seatsFirstClass")) # Number of seats in first class
seats_coupe_first_class: int = field(
Expand All @@ -426,15 +450,17 @@ class Unit(DataClassORJSONMixin):
) # Number of standing places in second class
length_in_meter: int = field(metadata=field_options(alias="lengthInMeter")) # Length of the unit in meters
has_semi_automatic_interior_doors: bool = field(
metadata=field_options(alias="hasSemiAutomaticInteriorDoors")
metadata=field_options(alias="hasSemiAutomaticInteriorDoors", deserialize=str_to_bool)
) # Whether the unit has semi-automatic interior doors
traction_position: int = field(metadata=field_options(alias="tractionPosition")) # Traction position of the unit
has_prm_section: bool = field(metadata=field_options(alias="hasPrmSection")) # Whether the unit has a PRM section
has_prm_section: bool = field(
metadata=field_options(alias="hasPrmSection", deserialize=str_to_bool)
) # Whether the unit has a PRM section
has_priority_places: bool = field(
metadata=field_options(alias="hasPriorityPlaces")
metadata=field_options(alias="hasPriorityPlaces", deserialize=str_to_bool)
) # Whether the unit has priority places
has_bike_section: bool = field(
metadata=field_options(alias="hasBikeSection")
metadata=field_options(alias="hasBikeSection", deserialize=str_to_bool)
) # Whether the unit has a bike section


Expand Down
Loading