diff --git a/docs/api_support/journeys.md b/docs/api_support/journeys.md index a3b0372..3825d41 100644 --- a/docs/api_support/journeys.md +++ b/docs/api_support/journeys.md @@ -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. @@ -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. @@ -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. ``` diff --git a/navitia_client/client/apis/journeys_apis.py b/navitia_client/client/apis/journeys_apis.py index 6e84f26..ed5aad6 100644 --- a/navitia_client/client/apis/journeys_apis.py +++ b/navitia_client/client/apis/journeys_apis.py @@ -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): @@ -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. @@ -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 ------- @@ -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_: @@ -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 @@ -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. @@ -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 ------- @@ -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_: @@ -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 @@ -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. @@ -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 ------- @@ -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_: @@ -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 diff --git a/navitia_client/entities/__init__.py b/navitia_client/entities/__init__.py index a1c7fb1..4abeed5 100644 --- a/navitia_client/entities/__init__.py +++ b/navitia_client/entities/__init__.py @@ -21,3 +21,4 @@ from .equipment import EquipmentAvailability, EquipmentDetails, StopAreaEquipments from .equipment_reports import EquipmentReports from .display_information import DisplayInformation +from .journey import ParkMode diff --git a/navitia_client/entities/journey.py b/navitia_client/entities/journey.py index fb161ef..b211bf2 100644 --- a/navitia_client/entities/journey.py +++ b/navitia_client/entities/journey.py @@ -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" diff --git a/tests/client/apis/test_journeys_apis.py b/tests/client/apis/test_journeys_apis.py index cefc2ed..2acf037 100644 --- a/tests/client/apis/test_journeys_apis.py +++ b/tests/client/apis/test_journeys_apis.py @@ -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") @@ -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(