Skip to content
Merged
Show file tree
Hide file tree
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
30 changes: 27 additions & 3 deletions docs/api_support/journeys.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,15 @@ Methods
debug: bool = False,
free_radius_from: int = 0,
free_radius_to: int = 0,
timeframe_duration: int = 0
timeframe_duration: int = 0,
park_mode: ParkMode = ParkMode.NONE,
is_journey_schedules: bool = False,
bike_use_hills: Optional[float] = None,
walking_use_hills: Optional[float] = None,
bike_avoid_bad_surfaces: Optional[float] = None,
walking_step_penalty: Optional[float] = None,
bike_maneuver_penalty: Optional[float] = None,
bike_use_living_streets: Optional[float] = None
) -> Sequence[Journey]
Fetches journey data based on various parameters.

Expand Down Expand Up @@ -78,7 +86,15 @@ Methods
debug: bool = False,
free_radius_from: int = 0,
free_radius_to: int = 0,
timeframe_duration: int = 0
timeframe_duration: int = 0,
park_mode: ParkMode = ParkMode.NONE,
is_journey_schedules: bool = False,
bike_use_hills: Optional[float] = None,
walking_use_hills: Optional[float] = None,
bike_avoid_bad_surfaces: Optional[float] = None,
walking_step_penalty: Optional[float] = None,
bike_maneuver_penalty: Optional[float] = None,
bike_use_living_streets: Optional[float] = None
) -> Sequence[Journey]
Fetches journey data for a specific region based on various parameters.

Expand Down Expand Up @@ -115,7 +131,15 @@ Methods
debug: bool = False,
free_radius_from: int = 0,
free_radius_to: int = 0,
timeframe_duration: int = 0
timeframe_duration: int = 0,
park_mode: ParkMode = ParkMode.NONE,
is_journey_schedules: bool = False,
bike_use_hills: Optional[float] = None,
walking_use_hills: Optional[float] = None,
bike_avoid_bad_surfaces: Optional[float] = None,
walking_step_penalty: Optional[float] = None,
bike_maneuver_penalty: Optional[float] = None,
bike_use_living_streets: Optional[float] = None
) -> Sequence[Journey]
Fetches journey data for a specific resource path based on various parameters.
```
137 changes: 136 additions & 1 deletion navitia_client/client/apis/journeys_apis.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from datetime import datetime
from typing import Optional, Sequence
from navitia_client.client.apis.api_base_client import ApiBaseClient
from navitia_client.entities.journey import Journey
from navitia_client.entities.journey import Journey, ParkMode


class JourneyApiClient(ApiBaseClient):
Expand Down Expand Up @@ -178,6 +178,14 @@ def list_journeys(
free_radius_from: int = 0,
free_radius_to: int = 0,
timeframe_duration: int = 0,
park_mode: ParkMode = ParkMode.NONE,
is_journey_schedules: bool = False,
bike_use_hills: Optional[float] = None,
walking_use_hills: Optional[float] = None,
bike_avoid_bad_surfaces: Optional[float] = None,
walking_step_penalty: Optional[float] = None,
bike_maneuver_penalty: Optional[float] = None,
bike_use_living_streets: Optional[float] = None,
) -> Sequence[Journey]:
"""
Fetches journey data based on various parameters.
Expand Down Expand Up @@ -246,6 +254,22 @@ def list_journeys(
Free radius to the ending point in meters (default is 0).
timeframe_duration : int, optional
Timeframe duration in seconds for the journey calculation (default is 0).
park_mode : ParkMode, optional
Parking mode for car-based journeys: ParkMode.NONE, ParkMode.ON_STREET, or ParkMode.PARK_AND_RIDE (default is ParkMode.NONE).
is_journey_schedules : bool, optional
Whether to return journey schedules instead of journeys (default is False).
bike_use_hills : Optional[float], optional
Valhalla parameter: preference for using hills when biking, from 0 (avoid) to 1 (prefer) (default is None).
walking_use_hills : Optional[float], optional
Valhalla parameter: preference for using hills when walking, from 0 (avoid) to 1 (prefer) (default is None).
bike_avoid_bad_surfaces : Optional[float], optional
Valhalla parameter: preference for avoiding bad surfaces when biking, from 0 (don't avoid) to 1 (strongly avoid) (default is None).
walking_step_penalty : Optional[float], optional
Valhalla parameter: penalty applied to steps when walking, in seconds (default is None).
bike_maneuver_penalty : Optional[float], optional
Valhalla parameter: penalty applied to maneuvers when biking, in seconds (default is None).
bike_use_living_streets : Optional[float], optional
Valhalla parameter: preference for using living streets when biking, from 0 (avoid) to 1 (prefer) (default is None).

Returns
-------
Expand Down Expand Up @@ -278,6 +302,7 @@ def list_journeys(
"free_radius_from": free_radius_from,
"free_radius_to": free_radius_to,
"timeframe_duration": timeframe_duration,
"is_journey_schedules": is_journey_schedules,
}

if from_:
Expand All @@ -286,6 +311,26 @@ def list_journeys(
if to_:
filters["to"] = to_

filters["park_mode"] = park_mode.value

if bike_use_hills is not None:
filters["bike_use_hills"] = bike_use_hills

if walking_use_hills is not None:
filters["walking_use_hills"] = walking_use_hills

if bike_avoid_bad_surfaces is not None:
filters["bike_avoid_bad_surfaces"] = bike_avoid_bad_surfaces

if walking_step_penalty is not None:
filters["walking_step_penalty"] = walking_step_penalty

if bike_maneuver_penalty is not None:
filters["bike_maneuver_penalty"] = bike_maneuver_penalty

if bike_use_living_streets is not None:
filters["bike_use_living_streets"] = bike_use_living_streets

if forbidden_uris:
filters["forbidden_uris[]"] = forbidden_uris

Expand Down Expand Up @@ -340,6 +385,14 @@ def list_journeys_with_region_id(
free_radius_from: int = 0,
free_radius_to: int = 0,
timeframe_duration: int = 0,
park_mode: ParkMode = ParkMode.NONE,
is_journey_schedules: bool = False,
bike_use_hills: Optional[float] = None,
walking_use_hills: Optional[float] = None,
bike_avoid_bad_surfaces: Optional[float] = None,
walking_step_penalty: Optional[float] = None,
bike_maneuver_penalty: Optional[float] = None,
bike_use_living_streets: Optional[float] = None,
) -> Sequence[Journey]:
"""
Fetches journey data for a specific region based on various parameters.
Expand Down Expand Up @@ -410,6 +463,22 @@ def list_journeys_with_region_id(
Free radius to the ending point in meters (default is 0).
timeframe_duration : int, optional
Timeframe duration in seconds for the journey calculation (default is 0).
park_mode : ParkMode, optional
Parking mode for car-based journeys: ParkMode.NONE, ParkMode.ON_STREET, or ParkMode.PARK_AND_RIDE (default is ParkMode.NONE).
is_journey_schedules : bool, optional
Whether to return journey schedules instead of journeys (default is False).
bike_use_hills : Optional[float], optional
Valhalla parameter: preference for using hills when biking, from 0 (avoid) to 1 (prefer) (default is None).
walking_use_hills : Optional[float], optional
Valhalla parameter: preference for using hills when walking, from 0 (avoid) to 1 (prefer) (default is None).
bike_avoid_bad_surfaces : Optional[float], optional
Valhalla parameter: preference for avoiding bad surfaces when biking, from 0 (don't avoid) to 1 (strongly avoid) (default is None).
walking_step_penalty : Optional[float], optional
Valhalla parameter: penalty applied to steps when walking, in seconds (default is None).
bike_maneuver_penalty : Optional[float], optional
Valhalla parameter: penalty applied to maneuvers when biking, in seconds (default is None).
bike_use_living_streets : Optional[float], optional
Valhalla parameter: preference for using living streets when biking, from 0 (avoid) to 1 (prefer) (default is None).

Returns
-------
Expand Down Expand Up @@ -442,6 +511,7 @@ def list_journeys_with_region_id(
"free_radius_from": free_radius_from,
"free_radius_to": free_radius_to,
"timeframe_duration": timeframe_duration,
"is_journey_schedules": is_journey_schedules,
}

if from_:
Expand All @@ -450,6 +520,26 @@ def list_journeys_with_region_id(
if to_:
filters["to"] = to_

filters["park_mode"] = park_mode.value

if bike_use_hills is not None:
filters["bike_use_hills"] = bike_use_hills

if walking_use_hills is not None:
filters["walking_use_hills"] = walking_use_hills

if bike_avoid_bad_surfaces is not None:
filters["bike_avoid_bad_surfaces"] = bike_avoid_bad_surfaces

if walking_step_penalty is not None:
filters["walking_step_penalty"] = walking_step_penalty

if bike_maneuver_penalty is not None:
filters["bike_maneuver_penalty"] = bike_maneuver_penalty

if bike_use_living_streets is not None:
filters["bike_use_living_streets"] = bike_use_living_streets

if forbidden_uris:
filters["forbidden_uris[]"] = forbidden_uris

Expand Down Expand Up @@ -504,6 +594,14 @@ def list_journeys_with_resource_path(
free_radius_from: int = 0,
free_radius_to: int = 0,
timeframe_duration: int = 0,
park_mode: ParkMode = ParkMode.NONE,
is_journey_schedules: bool = False,
bike_use_hills: Optional[float] = None,
walking_use_hills: Optional[float] = None,
bike_avoid_bad_surfaces: Optional[float] = None,
walking_step_penalty: Optional[float] = None,
bike_maneuver_penalty: Optional[float] = None,
bike_use_living_streets: Optional[float] = None,
) -> Sequence[Journey]:
"""
Fetches journey data for a specific resource path based on various parameters.
Expand Down Expand Up @@ -574,6 +672,22 @@ def list_journeys_with_resource_path(
Free radius to the ending point in meters (default is 0).
timeframe_duration : int, optional
Timeframe duration in seconds for the journey calculation (default is 0).
park_mode : ParkMode, optional
Parking mode for car-based journeys: ParkMode.NONE, ParkMode.ON_STREET, or ParkMode.PARK_AND_RIDE (default is ParkMode.NONE).
is_journey_schedules : bool, optional
Whether to return journey schedules instead of journeys (default is False).
bike_use_hills : Optional[float], optional
Valhalla parameter: preference for using hills when biking, from 0 (avoid) to 1 (prefer) (default is None).
walking_use_hills : Optional[float], optional
Valhalla parameter: preference for using hills when walking, from 0 (avoid) to 1 (prefer) (default is None).
bike_avoid_bad_surfaces : Optional[float], optional
Valhalla parameter: preference for avoiding bad surfaces when biking, from 0 (don't avoid) to 1 (strongly avoid) (default is None).
walking_step_penalty : Optional[float], optional
Valhalla parameter: penalty applied to steps when walking, in seconds (default is None).
bike_maneuver_penalty : Optional[float], optional
Valhalla parameter: penalty applied to maneuvers when biking, in seconds (default is None).
bike_use_living_streets : Optional[float], optional
Valhalla parameter: preference for using living streets when biking, from 0 (avoid) to 1 (prefer) (default is None).

Returns
-------
Expand Down Expand Up @@ -606,6 +720,7 @@ def list_journeys_with_resource_path(
"free_radius_from": free_radius_from,
"free_radius_to": free_radius_to,
"timeframe_duration": timeframe_duration,
"is_journey_schedules": is_journey_schedules,
}

if from_:
Expand All @@ -614,6 +729,26 @@ def list_journeys_with_resource_path(
if to_:
filters["to"] = to_

filters["park_mode"] = park_mode.value

if bike_use_hills is not None:
filters["bike_use_hills"] = bike_use_hills

if walking_use_hills is not None:
filters["walking_use_hills"] = walking_use_hills

if bike_avoid_bad_surfaces is not None:
filters["bike_avoid_bad_surfaces"] = bike_avoid_bad_surfaces

if walking_step_penalty is not None:
filters["walking_step_penalty"] = walking_step_penalty

if bike_maneuver_penalty is not None:
filters["bike_maneuver_penalty"] = bike_maneuver_penalty

if bike_use_living_streets is not None:
filters["bike_use_living_streets"] = bike_use_living_streets

if forbidden_uris:
filters["forbidden_uris[]"] = forbidden_uris

Expand Down
1 change: 1 addition & 0 deletions navitia_client/entities/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@
from .equipment import EquipmentAvailability, EquipmentDetails, StopAreaEquipments
from .equipment_reports import EquipmentReports
from .display_information import DisplayInformation
from .journey import ParkMode
6 changes: 6 additions & 0 deletions navitia_client/entities/journey.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,12 @@
from navitia_client.entities.ticket import Fare


class ParkMode(Enum):
NONE = "none"
ON_STREET = "on_street"
PARK_AND_RIDE = "park_and_ride"


class SectionType(Enum):
PUBLIC_TRANSPORT = "public_transport"
STREET_NETWORK = "street_network"
Expand Down
4 changes: 2 additions & 2 deletions tests/client/apis/test_journeys_apis.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ def test_list_empty_add_poi_infos_parameter(
mock_response.json.return_value = json.load(file)

mock_get_navitia_api.return_value = mock_response
expected_url = "https://api.navitia.io/v1//journeys?datetime=2024-06-01T00:00:00&datetime_represents=departure&traveler_type=standard&data_freshness=realtime&language=en-GB&depth=1&max_duration_to_pt=1800&walking_speed=1.12&bike_speed=4.1&bss_speed=4.1&car_speed=16.8&min_nb_journeys=1&max_nb_journeys=1&count=1&max_nb_transfers=10&min_nb_transfers=0&max_duration=86400&wheelchair=False&direct_path=indifferent&debug=False&free_radius_from=0&free_radius_to=0&timeframe_duration=0&from=foo"
expected_url = "https://api.navitia.io/v1//journeys?datetime=2024-06-01T00:00:00&datetime_represents=departure&traveler_type=standard&data_freshness=realtime&language=en-GB&depth=1&max_duration_to_pt=1800&walking_speed=1.12&bike_speed=4.1&bss_speed=4.1&car_speed=16.8&min_nb_journeys=1&max_nb_journeys=1&count=1&max_nb_transfers=10&min_nb_transfers=0&max_duration=86400&wheelchair=False&direct_path=indifferent&debug=False&free_radius_from=0&free_radius_to=0&timeframe_duration=0&is_journey_schedules=False&from=foo&park_mode=none"

# When
journeys_apis.list_journeys(datetime_=datetime(2024, 6, 1), from_="foo")
Expand All @@ -101,7 +101,7 @@ def test_list_add_poi_infos_parameter(
mock_response.json.return_value = json.load(file)

mock_get_navitia_api.return_value = mock_response
expected_url = "https://api.navitia.io/v1//journeys?datetime=2024-06-01T00:00:00&datetime_represents=departure&traveler_type=standard&data_freshness=realtime&language=en-GB&depth=1&max_duration_to_pt=1800&walking_speed=1.12&bike_speed=4.1&bss_speed=4.1&car_speed=16.8&min_nb_journeys=1&max_nb_journeys=1&count=1&max_nb_transfers=10&min_nb_transfers=0&max_duration=86400&wheelchair=False&direct_path=indifferent&debug=False&free_radius_from=0&free_radius_to=0&timeframe_duration=0&from=foo&add_poi_infos[]=bss_stands&add_poi_infos[]=car_parks"
expected_url = "https://api.navitia.io/v1//journeys?datetime=2024-06-01T00:00:00&datetime_represents=departure&traveler_type=standard&data_freshness=realtime&language=en-GB&depth=1&max_duration_to_pt=1800&walking_speed=1.12&bike_speed=4.1&bss_speed=4.1&car_speed=16.8&min_nb_journeys=1&max_nb_journeys=1&count=1&max_nb_transfers=10&min_nb_transfers=0&max_duration=86400&wheelchair=False&direct_path=indifferent&debug=False&free_radius_from=0&free_radius_to=0&timeframe_duration=0&is_journey_schedules=False&from=foo&park_mode=none&add_poi_infos[]=bss_stands&add_poi_infos[]=car_parks"

# When
journeys_apis.list_journeys(
Expand Down