python-navitia-client 1.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- navitia_client/__init__.py +0 -0
- navitia_client/client/__init__.py +0 -0
- navitia_client/client/apis/__init__.py +0 -0
- navitia_client/client/apis/api_base_client.py +50 -0
- navitia_client/client/apis/arrival_apis.py +191 -0
- navitia_client/client/apis/contributors_apis.py +107 -0
- navitia_client/client/apis/coverage_apis.py +131 -0
- navitia_client/client/apis/datasets_apis.py +105 -0
- navitia_client/client/apis/departure_apis.py +211 -0
- navitia_client/client/apis/inverted_geocoding_apis.py +199 -0
- navitia_client/client/apis/isochrone_apis.py +196 -0
- navitia_client/client/apis/journeys_apis.py +629 -0
- navitia_client/client/apis/line_report_apis.py +106 -0
- navitia_client/client/apis/place_apis.py +74 -0
- navitia_client/client/apis/places_nearby_apis.py +354 -0
- navitia_client/client/apis/public_transport_objects_apis.py +88 -0
- navitia_client/client/apis/public_transportation_apis/__init__.py +10 -0
- navitia_client/client/apis/public_transportation_apis/commercial_mode_apis.py +251 -0
- navitia_client/client/apis/public_transportation_apis/company_apis.py +303 -0
- navitia_client/client/apis/public_transportation_apis/disruption_apis.py +305 -0
- navitia_client/client/apis/public_transportation_apis/entity_apis.py +330 -0
- navitia_client/client/apis/public_transportation_apis/line_apis.py +303 -0
- navitia_client/client/apis/public_transportation_apis/network_apis.py +303 -0
- navitia_client/client/apis/public_transportation_apis/physical_mode_apis.py +303 -0
- navitia_client/client/apis/public_transportation_apis/route_apis.py +303 -0
- navitia_client/client/apis/public_transportation_apis/stop_area_apis.py +303 -0
- navitia_client/client/apis/public_transportation_apis/stop_point_apis.py +303 -0
- navitia_client/client/apis/public_transportation_apis/vehicle_journey_apis.py +304 -0
- navitia_client/client/apis/route_schedules_apis.py +177 -0
- navitia_client/client/apis/stop_schedules_apis.py +181 -0
- navitia_client/client/apis/terminus_schedules_apis.py +186 -0
- navitia_client/client/apis/traffic_report_apis.py +106 -0
- navitia_client/client/exceptions.py +18 -0
- navitia_client/client/navitia_client.py +302 -0
- navitia_client/client/raw/__init__.py +0 -0
- navitia_client/client/raw/raw_client.py +58 -0
- navitia_client/entities/__init__.py +23 -0
- navitia_client/entities/access_point.py +10 -0
- navitia_client/entities/address.py +28 -0
- navitia_client/entities/administrative_region.py +59 -0
- navitia_client/entities/arrival.py +21 -0
- navitia_client/entities/base_entity.py +7 -0
- navitia_client/entities/company.py +16 -0
- navitia_client/entities/context.py +10 -0
- navitia_client/entities/contributor.py +19 -0
- navitia_client/entities/coord.py +15 -0
- navitia_client/entities/dataset.py +32 -0
- navitia_client/entities/departure.py +21 -0
- navitia_client/entities/direction.py +24 -0
- navitia_client/entities/display_information.py +43 -0
- navitia_client/entities/disruption.py +233 -0
- navitia_client/entities/equipment.py +42 -0
- navitia_client/entities/equipment_reports.py +10 -0
- navitia_client/entities/isochrones.py +30 -0
- navitia_client/entities/journey.py +133 -0
- navitia_client/entities/line_and_route.py +76 -0
- navitia_client/entities/line_report.py +18 -0
- navitia_client/entities/link.py +44 -0
- navitia_client/entities/network.py +16 -0
- navitia_client/entities/note.py +7 -0
- navitia_client/entities/pagination.py +19 -0
- navitia_client/entities/path.py +30 -0
- navitia_client/entities/pathway.py +11 -0
- navitia_client/entities/physical_mode.py +92 -0
- navitia_client/entities/place.py +40 -0
- navitia_client/entities/poi.py +16 -0
- navitia_client/entities/pt_datetime.py +31 -0
- navitia_client/entities/pt_object.py +57 -0
- navitia_client/entities/route_schedule.py +19 -0
- navitia_client/entities/schedule_table.py +59 -0
- navitia_client/entities/stand.py +16 -0
- navitia_client/entities/stop_area.py +82 -0
- navitia_client/entities/stop_datetime.py +39 -0
- navitia_client/entities/stop_schedule.py +59 -0
- navitia_client/entities/ticket.py +49 -0
- navitia_client/entities/traffic_report.py +21 -0
- navitia_client/entities/trip.py +13 -0
- navitia_client/entities/vehicle_journey.py +163 -0
- python_navitia_client-1.1.0.dist-info/LICENSE +21 -0
- python_navitia_client-1.1.0.dist-info/METADATA +114 -0
- python_navitia_client-1.1.0.dist-info/RECORD +83 -0
- python_navitia_client-1.1.0.dist-info/WHEEL +5 -0
- python_navitia_client-1.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from enum import Enum
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class StandStatus(Enum):
|
|
6
|
+
UNAVAILABLE = "unavailable"
|
|
7
|
+
OPEN = "open"
|
|
8
|
+
CLOSED = "closed"
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclass
|
|
12
|
+
class Stands:
|
|
13
|
+
available_places: int
|
|
14
|
+
available_bikes: int
|
|
15
|
+
total_stands: int
|
|
16
|
+
status: StandStatus
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from typing import Any, Optional, Sequence
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
from .base_entity import BaseEntity
|
|
6
|
+
from .coord import Coord
|
|
7
|
+
from .administrative_region import AdministrativeRegion
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@dataclass
|
|
11
|
+
class StopArea(BaseEntity):
|
|
12
|
+
label: str
|
|
13
|
+
coord: Coord
|
|
14
|
+
administrative_regions: Optional[Sequence[AdministrativeRegion]]
|
|
15
|
+
stop_points: Optional[Sequence["StopPoint"]]
|
|
16
|
+
|
|
17
|
+
@classmethod
|
|
18
|
+
def from_payload(cls, payload: dict[str, Any]) -> "StopArea":
|
|
19
|
+
administrative_regions = (
|
|
20
|
+
[
|
|
21
|
+
AdministrativeRegion.from_payload(region)
|
|
22
|
+
for region in payload["administrative_regions"]
|
|
23
|
+
]
|
|
24
|
+
if "administrative_regions" in payload
|
|
25
|
+
else None
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
stop_points = (
|
|
29
|
+
[
|
|
30
|
+
StopPoint.from_payload(stop_point)
|
|
31
|
+
for stop_point in payload["stop_points"]
|
|
32
|
+
]
|
|
33
|
+
if "stop_points" in payload
|
|
34
|
+
else None
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
return cls(
|
|
38
|
+
id=payload["id"],
|
|
39
|
+
name=payload["name"],
|
|
40
|
+
label=payload["label"],
|
|
41
|
+
coord=Coord.from_payload(payload["coord"]),
|
|
42
|
+
administrative_regions=administrative_regions,
|
|
43
|
+
stop_points=stop_points,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@dataclass
|
|
48
|
+
class StopPoint(BaseEntity):
|
|
49
|
+
label: str
|
|
50
|
+
coord: Coord
|
|
51
|
+
administrative_regions: Optional[Sequence[AdministrativeRegion]]
|
|
52
|
+
equipments: Sequence[str]
|
|
53
|
+
stop_area: Optional[StopArea]
|
|
54
|
+
|
|
55
|
+
@classmethod
|
|
56
|
+
def from_payload(
|
|
57
|
+
cls,
|
|
58
|
+
payload: dict[str, Any],
|
|
59
|
+
) -> "StopPoint":
|
|
60
|
+
administrative_regions = (
|
|
61
|
+
[
|
|
62
|
+
AdministrativeRegion.from_payload(region)
|
|
63
|
+
for region in payload["administrative_regions"]
|
|
64
|
+
]
|
|
65
|
+
if "administrative_regions" in payload
|
|
66
|
+
else None
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
stop_area = (
|
|
70
|
+
StopArea.from_payload(payload["stop_area"])
|
|
71
|
+
if "stop_area" in payload
|
|
72
|
+
else None
|
|
73
|
+
)
|
|
74
|
+
return cls(
|
|
75
|
+
id=payload["id"],
|
|
76
|
+
name=payload["name"],
|
|
77
|
+
label=payload["label"],
|
|
78
|
+
coord=Coord.from_payload(payload["coord"]),
|
|
79
|
+
administrative_regions=administrative_regions,
|
|
80
|
+
equipments=payload["equipments"],
|
|
81
|
+
stop_area=stop_area,
|
|
82
|
+
)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from datetime import datetime
|
|
3
|
+
from typing import Any, Sequence
|
|
4
|
+
|
|
5
|
+
from navitia_client.entities.link import Link
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@dataclass
|
|
9
|
+
class StopDateTime:
|
|
10
|
+
additional_informations: Sequence[str]
|
|
11
|
+
arrival_date_time: datetime
|
|
12
|
+
base_arrival_date_time: datetime
|
|
13
|
+
base_departure_date_time: datetime
|
|
14
|
+
data_freshness: str
|
|
15
|
+
departure_date_time: datetime
|
|
16
|
+
links: Sequence[Link]
|
|
17
|
+
|
|
18
|
+
@classmethod
|
|
19
|
+
def from_payload(cls, payload: dict[str, Any]) -> "StopDateTime":
|
|
20
|
+
return cls(
|
|
21
|
+
additional_informations=[
|
|
22
|
+
additional_information
|
|
23
|
+
for additional_information in payload["additional_informations"]
|
|
24
|
+
],
|
|
25
|
+
arrival_date_time=datetime.strptime(
|
|
26
|
+
payload["arrival_date_time"], "%Y%m%dT%H%M%S"
|
|
27
|
+
),
|
|
28
|
+
base_arrival_date_time=datetime.strptime(
|
|
29
|
+
payload["base_arrival_date_time"], "%Y%m%dT%H%M%S"
|
|
30
|
+
),
|
|
31
|
+
base_departure_date_time=datetime.strptime(
|
|
32
|
+
payload["base_departure_date_time"], "%Y%m%dT%H%M%S"
|
|
33
|
+
),
|
|
34
|
+
data_freshness=payload["data_freshness"],
|
|
35
|
+
departure_date_time=datetime.strptime(
|
|
36
|
+
payload["departure_date_time"], "%Y%m%dT%H%M%S"
|
|
37
|
+
),
|
|
38
|
+
links=[Link.from_payload(link) for link in payload["links"]],
|
|
39
|
+
)
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from enum import Enum
|
|
3
|
+
from typing import Any, Optional, Sequence
|
|
4
|
+
|
|
5
|
+
from navitia_client.entities.display_information import DisplayInformation
|
|
6
|
+
from navitia_client.entities.line_and_route import Route
|
|
7
|
+
from navitia_client.entities.pt_datetime import PTDatetime
|
|
8
|
+
from navitia_client.entities.stop_area import StopPoint
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclass
|
|
12
|
+
class AdditionalInformationEnum(Enum):
|
|
13
|
+
DATE_OUT_OF_BOUNDS = "date_out_of_bounds"
|
|
14
|
+
NO_DEPARTURE_THIS_DAY = "no_departure_this_day"
|
|
15
|
+
NO_ACTIVE_CIRCULATION_THIS_DAY = "no_active_circulation_this_day"
|
|
16
|
+
TERMINUS = "terminus"
|
|
17
|
+
PARTIAL_TERMINUS = "partial_terminus"
|
|
18
|
+
ACTIVE_DISRUPTION = "active_disruption"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@dataclass
|
|
22
|
+
class StopSchedule:
|
|
23
|
+
display_informations: DisplayInformation
|
|
24
|
+
route: Route
|
|
25
|
+
date_times: Sequence[PTDatetime]
|
|
26
|
+
stop_point: StopPoint
|
|
27
|
+
additional_informations: Optional[AdditionalInformationEnum]
|
|
28
|
+
|
|
29
|
+
@classmethod
|
|
30
|
+
def from_payload(cls, payload: dict[str, Any]) -> "StopSchedule":
|
|
31
|
+
return cls(
|
|
32
|
+
display_informations=DisplayInformation.from_payload(
|
|
33
|
+
payload["display_informations"]
|
|
34
|
+
),
|
|
35
|
+
route=Route.from_payload(payload["route"]),
|
|
36
|
+
date_times=[
|
|
37
|
+
PTDatetime.from_payload(data) for data in payload["date_times"]
|
|
38
|
+
],
|
|
39
|
+
stop_point=StopPoint.from_payload(payload["stop_point"]),
|
|
40
|
+
additional_informations=AdditionalInformationEnum(
|
|
41
|
+
payload["additional_informations"]
|
|
42
|
+
)
|
|
43
|
+
if payload["additional_informations"]
|
|
44
|
+
else None,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@dataclass
|
|
49
|
+
class TerminusSchedule(StopSchedule):
|
|
50
|
+
@classmethod
|
|
51
|
+
def from_payload(cls, payload: dict[str, Any]) -> "TerminusSchedule":
|
|
52
|
+
stop_schedule = super(TerminusSchedule, cls).from_payload(payload)
|
|
53
|
+
return cls(
|
|
54
|
+
display_informations=stop_schedule.display_informations,
|
|
55
|
+
route=stop_schedule.route,
|
|
56
|
+
date_times=stop_schedule.date_times,
|
|
57
|
+
stop_point=stop_schedule.stop_point,
|
|
58
|
+
additional_informations=stop_schedule.additional_informations,
|
|
59
|
+
)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from typing import Any, Optional, Sequence
|
|
3
|
+
from navitia_client.entities.base_entity import BaseEntity
|
|
4
|
+
from navitia_client.entities.link import Link
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclass
|
|
8
|
+
class Cost:
|
|
9
|
+
value: str
|
|
10
|
+
currency: Optional[str]
|
|
11
|
+
|
|
12
|
+
@classmethod
|
|
13
|
+
def from_payload(cls, payload: dict[str, Any]) -> "Cost":
|
|
14
|
+
return cls(
|
|
15
|
+
value=payload["value"],
|
|
16
|
+
currency=payload.get("currencty"),
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@dataclass
|
|
21
|
+
class Fare:
|
|
22
|
+
total: Cost
|
|
23
|
+
found: bool
|
|
24
|
+
links: Sequence[Link]
|
|
25
|
+
|
|
26
|
+
@classmethod
|
|
27
|
+
def from_payload(cls, payload: dict[str, Any]) -> "Fare":
|
|
28
|
+
return cls(
|
|
29
|
+
total=Cost.from_payload(payload["total"]),
|
|
30
|
+
found=bool(payload["found"]),
|
|
31
|
+
links=[Link.from_payload(data) for data in payload["links"]],
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@dataclass
|
|
36
|
+
class Ticket(BaseEntity):
|
|
37
|
+
found: bool
|
|
38
|
+
cost: Cost
|
|
39
|
+
links: Sequence[Link]
|
|
40
|
+
|
|
41
|
+
@classmethod
|
|
42
|
+
def from_payload(cls, payload: dict[str, Any]) -> "Ticket":
|
|
43
|
+
return cls(
|
|
44
|
+
id=payload["id"],
|
|
45
|
+
name=payload["name"],
|
|
46
|
+
found=bool(payload["found"]),
|
|
47
|
+
cost=Cost.from_payload(payload["cost"]),
|
|
48
|
+
links=[Link.from_payload(data) for data in payload["links"]],
|
|
49
|
+
)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from typing import Any, Sequence
|
|
3
|
+
|
|
4
|
+
from navitia_client.entities.network import Network
|
|
5
|
+
from navitia_client.entities.vehicle_journey import VehicleJourney
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
@dataclass
|
|
9
|
+
class TrafficReport:
|
|
10
|
+
network: Network
|
|
11
|
+
vehicle_journeys: Sequence[VehicleJourney]
|
|
12
|
+
|
|
13
|
+
@classmethod
|
|
14
|
+
def from_payload(cls, payload: dict[str, Any]) -> "TrafficReport":
|
|
15
|
+
return cls(
|
|
16
|
+
network=Network.from_payload(payload["network"]),
|
|
17
|
+
vehicle_journeys=[
|
|
18
|
+
VehicleJourney.from_payload(data)
|
|
19
|
+
for data in payload["vehicle_journeys"]
|
|
20
|
+
],
|
|
21
|
+
)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
from .base_entity import BaseEntity
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclass
|
|
8
|
+
class Trip(BaseEntity):
|
|
9
|
+
pass
|
|
10
|
+
|
|
11
|
+
@classmethod
|
|
12
|
+
def from_payload(cls, payload: dict[str, Any]) -> "Trip":
|
|
13
|
+
return cls(id=payload["id"], name=payload["name"])
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from datetime import datetime
|
|
3
|
+
from typing import Any, Optional, Sequence
|
|
4
|
+
|
|
5
|
+
from navitia_client.entities.base_entity import BaseEntity
|
|
6
|
+
from navitia_client.entities.disruption import Disruption
|
|
7
|
+
from navitia_client.entities.stop_area import StopPoint
|
|
8
|
+
from navitia_client.entities.trip import Trip
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclass
|
|
12
|
+
class ActivePeriod:
|
|
13
|
+
begin: datetime
|
|
14
|
+
end: datetime
|
|
15
|
+
|
|
16
|
+
@classmethod
|
|
17
|
+
def from_payload(cls, payload: dict[str, Any]) -> "ActivePeriod":
|
|
18
|
+
return cls(
|
|
19
|
+
begin=datetime.strptime(payload["begin"], "%Y%m%d"),
|
|
20
|
+
end=datetime.strptime(payload["end"], "%Y%m%d"),
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@dataclass
|
|
25
|
+
class WeekPattern:
|
|
26
|
+
monday: bool
|
|
27
|
+
tuesday: bool
|
|
28
|
+
wednesday: bool
|
|
29
|
+
thursday: bool
|
|
30
|
+
friday: bool
|
|
31
|
+
saturday: bool
|
|
32
|
+
sunday: bool
|
|
33
|
+
|
|
34
|
+
@classmethod
|
|
35
|
+
def from_payload(cls, payload: dict[str, Any]) -> "WeekPattern":
|
|
36
|
+
return cls(
|
|
37
|
+
monday=bool(payload["monday"]),
|
|
38
|
+
tuesday=bool(payload["tuesday"]),
|
|
39
|
+
wednesday=bool(payload["wednesday"]),
|
|
40
|
+
thursday=bool(payload["thursday"]),
|
|
41
|
+
friday=bool(payload["friday"]),
|
|
42
|
+
saturday=bool(payload["saturday"]),
|
|
43
|
+
sunday=bool(payload["sunday"]),
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@dataclass
|
|
48
|
+
class Calendar:
|
|
49
|
+
active_periods: Sequence[ActivePeriod]
|
|
50
|
+
week_pattern: WeekPattern
|
|
51
|
+
|
|
52
|
+
@classmethod
|
|
53
|
+
def from_payload(cls, payload: dict[str, Any]) -> "Calendar":
|
|
54
|
+
return cls(
|
|
55
|
+
active_periods=[
|
|
56
|
+
ActivePeriod.from_payload(data) for data in payload["active_periods"]
|
|
57
|
+
],
|
|
58
|
+
week_pattern=WeekPattern.from_payload(payload["week_pattern"]),
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@dataclass
|
|
63
|
+
class Code:
|
|
64
|
+
type: str
|
|
65
|
+
value: str
|
|
66
|
+
|
|
67
|
+
@classmethod
|
|
68
|
+
def from_payload(cls, payload: dict[str, Any]) -> "Code":
|
|
69
|
+
return cls(
|
|
70
|
+
type=payload["type"],
|
|
71
|
+
value=payload["value"],
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
@dataclass
|
|
76
|
+
class JourneyPattern(BaseEntity):
|
|
77
|
+
pass
|
|
78
|
+
|
|
79
|
+
@classmethod
|
|
80
|
+
def from_payload(cls, payload: dict[str, Any]) -> "JourneyPattern":
|
|
81
|
+
return cls(
|
|
82
|
+
id=payload["id"],
|
|
83
|
+
name=payload["name"],
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
@dataclass
|
|
88
|
+
class StopTime:
|
|
89
|
+
arrival_time: int
|
|
90
|
+
departure_time: int
|
|
91
|
+
drop_off_allowed: bool
|
|
92
|
+
headsign: int
|
|
93
|
+
pickup_allowed: bool
|
|
94
|
+
skipped_stop: bool
|
|
95
|
+
stop_point: StopPoint
|
|
96
|
+
utc_arrival_time: int
|
|
97
|
+
utc_departure_time: int
|
|
98
|
+
|
|
99
|
+
@classmethod
|
|
100
|
+
def from_payload(cls, payload: dict[str, Any]) -> "StopTime":
|
|
101
|
+
return cls(
|
|
102
|
+
arrival_time=payload["arrival_time"],
|
|
103
|
+
departure_time=payload["departure_time"],
|
|
104
|
+
drop_off_allowed=bool(payload["drop_off_allowed"]),
|
|
105
|
+
headsign=payload["headsign"],
|
|
106
|
+
pickup_allowed=bool(payload["pickup_allowed"]),
|
|
107
|
+
skipped_stop=bool(payload["skipped_stop"]),
|
|
108
|
+
stop_point=StopPoint.from_payload(payload["stop_point"]),
|
|
109
|
+
utc_arrival_time=payload["utc_arrival_time"],
|
|
110
|
+
utc_departure_time=payload["utc_departure_time"],
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
@dataclass
|
|
115
|
+
class ValidityPattern:
|
|
116
|
+
beginning_date: datetime
|
|
117
|
+
days: str
|
|
118
|
+
|
|
119
|
+
@classmethod
|
|
120
|
+
def from_payload(cls, payload: dict[str, Any]) -> "ValidityPattern":
|
|
121
|
+
return cls(
|
|
122
|
+
beginning_date=datetime.strptime(payload["beginning_date"], "%Y%m%d"),
|
|
123
|
+
days=payload["days"],
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
@dataclass
|
|
128
|
+
class VehicleJourney:
|
|
129
|
+
id: str
|
|
130
|
+
name: Optional[str]
|
|
131
|
+
calendars: Optional[Sequence[Calendar]]
|
|
132
|
+
codes: Sequence[Code]
|
|
133
|
+
disruptions: Sequence[Disruption]
|
|
134
|
+
headsign: str
|
|
135
|
+
journey_pattern: Optional[JourneyPattern]
|
|
136
|
+
stop_times: Optional[Sequence[StopTime]]
|
|
137
|
+
trip: Optional[Trip]
|
|
138
|
+
validity_pattern: Optional[ValidityPattern]
|
|
139
|
+
|
|
140
|
+
@classmethod
|
|
141
|
+
def from_payload(cls, payload: dict[str, Any]) -> "VehicleJourney":
|
|
142
|
+
return cls(
|
|
143
|
+
id=payload["id"],
|
|
144
|
+
name=payload.get("name"),
|
|
145
|
+
calendars=[Calendar.from_payload(data) for data in payload["calendars"]]
|
|
146
|
+
if "calendars" in payload
|
|
147
|
+
else None,
|
|
148
|
+
codes=[Code.from_payload(data) for data in payload["codes"]],
|
|
149
|
+
disruptions=[
|
|
150
|
+
Disruption.from_payload(data) for data in payload["disruptions"]
|
|
151
|
+
],
|
|
152
|
+
headsign=payload["headsign"],
|
|
153
|
+
journey_pattern=JourneyPattern.from_payload(payload["journey_pattern"])
|
|
154
|
+
if "journey_pattern" in payload
|
|
155
|
+
else None,
|
|
156
|
+
stop_times=[StopTime.from_payload(data) for data in payload["stop_times"]]
|
|
157
|
+
if "stop_times" in payload
|
|
158
|
+
else None,
|
|
159
|
+
trip=Trip.from_payload(payload["trip"]) if "trip" in payload else None,
|
|
160
|
+
validity_pattern=ValidityPattern.from_payload(payload["validity_pattern"])
|
|
161
|
+
if "validity_pattern" in payload
|
|
162
|
+
else None,
|
|
163
|
+
)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Jonathan Perron
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: python-navitia-client
|
|
3
|
+
Version: 1.1.0
|
|
4
|
+
Summary: Python library to use with Navitia APIs
|
|
5
|
+
Author-email: Jonathan Perron <jonathan@perron.bzh>
|
|
6
|
+
License: MIT License
|
|
7
|
+
Project-URL: Source, https://github.com/jonperron/python-navitia-client
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
11
|
+
Requires-Python: >=3.10
|
|
12
|
+
Description-Content-Type: text/markdown
|
|
13
|
+
License-File: LICENSE
|
|
14
|
+
Requires-Dist: requests <3,>=2.31
|
|
15
|
+
|
|
16
|
+
# navitia-client
|
|
17
|
+
|
|
18
|
+
This repository provides a unofficial Python wrapper to use [navitia.io APIs](https://doc.navitia.io).
|
|
19
|
+
|
|
20
|
+
## Pre-requisites
|
|
21
|
+
|
|
22
|
+
To use this library, you will need an access token from [navitia.io](https://navitia.io/tarifs/).
|
|
23
|
+
|
|
24
|
+
## API support
|
|
25
|
+
|
|
26
|
+
The library supports the following [APIs](https://doc.navitia.io/#api-catalog):
|
|
27
|
+
|
|
28
|
+
| API | Supported ? | Comment |
|
|
29
|
+
| ----------------------------------------- | ----------- | -------------------------------------------- |
|
|
30
|
+
| Coverage | ✅ | |
|
|
31
|
+
| Datasets | ✅ | |
|
|
32
|
+
| Contributors | ✅ | |
|
|
33
|
+
| Inverted geocoding | ✅ | |
|
|
34
|
+
| Public transportation Objects exploration | ✅ | |
|
|
35
|
+
| Autocomplete on Public Transport objects | ✅ | |
|
|
36
|
+
| Autocomplete on geographical objects | ✅ | |
|
|
37
|
+
| Places nearby | ✅ | |
|
|
38
|
+
| Journeys | ✅ | |
|
|
39
|
+
| Isochrones | ✅ | Beta endpoint according to API response |
|
|
40
|
+
| Route Schedules | ✅ | |
|
|
41
|
+
| Stop Schedules | ✅ | |
|
|
42
|
+
| Terminus Schedules | ✅ | |
|
|
43
|
+
| Departures | ✅ | |
|
|
44
|
+
| Arrivals | ✅ | |
|
|
45
|
+
| Line reports | ✅ | Beta endpoint according to API response |
|
|
46
|
+
| Traffic reports | ✅ | Beta endpoint according to API response |
|
|
47
|
+
| Equipment reports | ❌ | Beta service, not available to all providers |
|
|
48
|
+
|
|
49
|
+
## Installation
|
|
50
|
+
|
|
51
|
+
The package is not yet available on pip.
|
|
52
|
+
|
|
53
|
+
For development purpose, you can install it using
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pip install -e .
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Usage
|
|
60
|
+
|
|
61
|
+
To use this library, you need an authentication token provided by Navitia.io.
|
|
62
|
+
|
|
63
|
+
### Create client instance
|
|
64
|
+
|
|
65
|
+
Once created, you will create an instance of the NavitiaClient class with the following:
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
from navitia_client.client import NavitiaClient
|
|
69
|
+
client = NavitiaClient(auth=<YOUR_TOKEN_HERE>)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
A base URL for Navitia IO is hardcoded and provided to NavitiaClient by default. It can be updated using the base_navitia_url parameter.
|
|
73
|
+
|
|
74
|
+
### Access APIs data
|
|
75
|
+
|
|
76
|
+
URLs are mapped as property in the class `NavitiaClient`. You can find the mapping [here](docs/api_support/).
|
|
77
|
+
|
|
78
|
+
For example, if you want to have the list of datasets in a given region, use:
|
|
79
|
+
|
|
80
|
+
```python
|
|
81
|
+
datasets, pagination = client.datasets.list_datasets(region_id=<REGION_ID>)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Pagination
|
|
85
|
+
|
|
86
|
+
A couple of APIs are paginated, in particular the public transporations APIs.. In such case, you can navigate in the response using the parameters `start_page` and `count`.
|
|
87
|
+
|
|
88
|
+
An object `Pagination` will be provided by the impacted methods to help you navigatig.
|
|
89
|
+
|
|
90
|
+
### Tips
|
|
91
|
+
|
|
92
|
+
Few tips on how to use the Navitia APIs are available [here](docs/few_tips.md)
|
|
93
|
+
|
|
94
|
+
## Dependencies
|
|
95
|
+
|
|
96
|
+
* Python >= 3.10
|
|
97
|
+
* requests>=2.31
|
|
98
|
+
|
|
99
|
+
Additional dependencies are described in the [pyproject.toml file](pyproject.toml).
|
|
100
|
+
|
|
101
|
+
## Contributing
|
|
102
|
+
|
|
103
|
+
You are free to contribute to the repo. Please read [Contributing.md](docs/CONTRIBUTING.md).
|
|
104
|
+
|
|
105
|
+
## Additional questions
|
|
106
|
+
|
|
107
|
+
* Are you affiliated with Navitia ?
|
|
108
|
+
No. This is an unofficial wrapper for the Navitia.io APIs.
|
|
109
|
+
|
|
110
|
+
* Is this client asynchronous ?
|
|
111
|
+
No, and it is not planned to. If you want to add async support, feel free to contribute.
|
|
112
|
+
|
|
113
|
+
* Is this client production ready ?
|
|
114
|
+
Yes and no. For my own purpose, it is, but I cannot guarantee that everything will behave well. If you spot a bug, please open an issue in the repo.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
navitia_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
navitia_client/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
+
navitia_client/client/exceptions.py,sha256=bYqEFrNSyBH-EI0fU5Mxq9utJOzDv3D9sfW9HXu6ex8,275
|
|
4
|
+
navitia_client/client/navitia_client.py,sha256=CPt1zrsjRxXKjfCGoUFZRfqhmgWgGGMavW9hPu_gDlY,13436
|
|
5
|
+
navitia_client/client/apis/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
+
navitia_client/client/apis/api_base_client.py,sha256=469czWifOxjNHiaA2i0HXFavhUWdLX3ScYfOZM_SW8M,1952
|
|
7
|
+
navitia_client/client/apis/arrival_apis.py,sha256=99mn0yBuHBSA4G9aCnf6gMaeSNXJBcWLlFH8jLJLHeM,8086
|
|
8
|
+
navitia_client/client/apis/contributors_apis.py,sha256=Pnw3laqIZDj1B0RQha7tqWLNkSQ8klzcQYFBwVpO0Og,4284
|
|
9
|
+
navitia_client/client/apis/coverage_apis.py,sha256=R8XhoiR5eukIWCFaA7cQjX0PASxFihLhLcFSI9Uj_so,5230
|
|
10
|
+
navitia_client/client/apis/datasets_apis.py,sha256=drW6CxivIqQXhvkS3CEb3gn45e_P9c3w3RNm6XrfJPs,4134
|
|
11
|
+
navitia_client/client/apis/departure_apis.py,sha256=n4bRHYYIzUnd3Q-rYlZtd6Ukl8xzwqMZsp_awyZHYpA,8261
|
|
12
|
+
navitia_client/client/apis/inverted_geocoding_apis.py,sha256=xyYzciumSCHP8A3C1hUJzBTyCqNGaD5er9Ogct8pjTA,6898
|
|
13
|
+
navitia_client/client/apis/isochrone_apis.py,sha256=lr9YrD0pmJ-dbOjMNPzSPgBTajRBysk5GyMlB05frWk,7313
|
|
14
|
+
navitia_client/client/apis/journeys_apis.py,sha256=8t_fQjwUZORybtx-ybvKkyoGBsRA4F2iUQn2qF2KmVo,26446
|
|
15
|
+
navitia_client/client/apis/line_report_apis.py,sha256=7q_s8stDcCZGnT6qunaXKvLkeWbyQqfXjnlF5KlqHcI,4167
|
|
16
|
+
navitia_client/client/apis/place_apis.py,sha256=UMMnH542zSlnvQlsm7n2h09ha9B8OTbvcS96tLKPM8M,3007
|
|
17
|
+
navitia_client/client/apis/places_nearby_apis.py,sha256=2E2NeP48UAeknxwmC-pESSv1-e8K3RQOK1aoe0BGtGA,15592
|
|
18
|
+
navitia_client/client/apis/public_transport_objects_apis.py,sha256=gXxOaViQjQGeIvwvhP_oKlxYbUzbHWT8ZlofpiCyuW4,3234
|
|
19
|
+
navitia_client/client/apis/route_schedules_apis.py,sha256=aHzrUOUmsoRlmit4S-jqXZsrN7Pzwg9A2Osegm8E9zI,7450
|
|
20
|
+
navitia_client/client/apis/stop_schedules_apis.py,sha256=iS-dg-PQS9Xudgc1aAIkPqla9n2qjoR-hDqocEgoajo,7824
|
|
21
|
+
navitia_client/client/apis/terminus_schedules_apis.py,sha256=qR-DVLDBZDGanuuRrrnYv0aY0ifMycDC9pkzE3wQeP0,8045
|
|
22
|
+
navitia_client/client/apis/traffic_report_apis.py,sha256=3-u0NY63zlJct5dA2KFL1rGQtBZODM_Biy8a9W9aMiQ,4331
|
|
23
|
+
navitia_client/client/apis/public_transportation_apis/__init__.py,sha256=qg5AC_d4d3hfGn3qVJbjRQlIEnnNumOT_ChK6E_RV7k,615
|
|
24
|
+
navitia_client/client/apis/public_transportation_apis/commercial_mode_apis.py,sha256=m3SGqXFzer3UCRF0K7_9krXDC9D2mad6nhQmcZgPiEM,9451
|
|
25
|
+
navitia_client/client/apis/public_transportation_apis/company_apis.py,sha256=obUur1e4JWZI35t-hgCLb8mRSgzGGWjmEHo-x8PQy-w,9165
|
|
26
|
+
navitia_client/client/apis/public_transportation_apis/disruption_apis.py,sha256=RiRPWjxOmiN6SBRqbJasFeHERCS-Sc10WzEW6nHlQwc,9287
|
|
27
|
+
navitia_client/client/apis/public_transportation_apis/entity_apis.py,sha256=sBL43AkMXTjck9zSjIyi2iqGDtGTGVPKZNEv5ILH-IQ,9697
|
|
28
|
+
navitia_client/client/apis/public_transportation_apis/line_apis.py,sha256=HBKGMNsBP6a5ctqY4Y0YkhXJ0x_-5QOaDi2nojGW_Uk,9080
|
|
29
|
+
navitia_client/client/apis/public_transportation_apis/network_apis.py,sha256=ae_PqbSPO9g-eAjxGaa4wxlo4no7TIWrQDKCv1u4BZc,9205
|
|
30
|
+
navitia_client/client/apis/public_transportation_apis/physical_mode_apis.py,sha256=G9r0xVkWe02ZmNGgtEKxwF8RBMlu5gbSPyOT3GQaC3Y,9447
|
|
31
|
+
navitia_client/client/apis/public_transportation_apis/route_apis.py,sha256=J7mE1ydyc2e4BEqUni_iLi6DA92wfaOtxI6Btea2wFI,9124
|
|
32
|
+
navitia_client/client/apis/public_transportation_apis/stop_area_apis.py,sha256=fhC1MMp7MOdY5HGzV0df8EWQxnzM2R7XDFWNhox6eBk,9267
|
|
33
|
+
navitia_client/client/apis/public_transportation_apis/stop_point_apis.py,sha256=pvgUKWF2G0etOaBBoAvtQUIyi9MSAU7KSZd-vUonjNY,9311
|
|
34
|
+
navitia_client/client/apis/public_transportation_apis/vehicle_journey_apis.py,sha256=UohniEXUwbiceWSSLxq5HFWYBJJ0-xl6OIVzsFt9r8E,9469
|
|
35
|
+
navitia_client/client/raw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
+
navitia_client/client/raw/raw_client.py,sha256=Pa8sGKXwsWxgoz83FIYAgmgNjG3VfTB-9ddI3bPLWbU,1977
|
|
37
|
+
navitia_client/entities/__init__.py,sha256=S7wywAUDyaGgZGo-dI2_Br8LdxVbXyDLGwpKQ0gWycA,904
|
|
38
|
+
navitia_client/entities/access_point.py,sha256=i4skhuKyDGWaGcGGnh_5K929P3optWchMlq8P3bgCMc,184
|
|
39
|
+
navitia_client/entities/address.py,sha256=QpQqHBg6lxjMb7LXgKuVn5wRXa1GWTFkGbK_gkEyE90,832
|
|
40
|
+
navitia_client/entities/administrative_region.py,sha256=LhEfyzF56N-c9zvnx56qG8xjHz3ERJCz9VQcYNAK_QQ,1841
|
|
41
|
+
navitia_client/entities/arrival.py,sha256=8XWzzxibnGuVvbdS1kz84k72f3UpfCigTvRPRj9hKWY,658
|
|
42
|
+
navitia_client/entities/base_entity.py,sha256=sprH1Xj_-GkmvSKSCKCvxggakORl-9OdGIGfUqK6W5k,91
|
|
43
|
+
navitia_client/entities/company.py,sha256=Aiat1l31uy3JfsPC2_iCV3nF9pi3fw5GGV3MPw-80Ao,317
|
|
44
|
+
navitia_client/entities/context.py,sha256=yZs-V_xJ4hesLB2BXp32IdGCOnBBiWLN8c8902F6BDs,200
|
|
45
|
+
navitia_client/entities/contributor.py,sha256=dhJcVWw7LImUZWS-4EDGd3zJ9aMinor8oON27tzvmEk,476
|
|
46
|
+
navitia_client/entities/coord.py,sha256=MlMZpVTISLn8FEvVng0v4kJt8cRTl6oo8cRmKIrkOLI,285
|
|
47
|
+
navitia_client/entities/dataset.py,sha256=YcahrsuWv2FoGZi39eyEqfawe6_taeBRoyRLEPh484c,999
|
|
48
|
+
navitia_client/entities/departure.py,sha256=QzzcMuoDneXiL7_wyamuuCf9lspsYUydgRki14gHK0I,662
|
|
49
|
+
navitia_client/entities/direction.py,sha256=kjCdN0zUQoSpXvZ6h0SoUEm-YOm1CQdNhLK7ADnJIP4,638
|
|
50
|
+
navitia_client/entities/display_information.py,sha256=ySxfgTs2jsGy39oFrIx_ogCzIojrvF79avt5bW7okhU,1343
|
|
51
|
+
navitia_client/entities/disruption.py,sha256=aYkLDTjos0bjrMucWeigOK2muQ2UpRuT4ztKp7nRA14,6892
|
|
52
|
+
navitia_client/entities/equipment.py,sha256=TdrHL7QkUsTkO6P5RJDhHlPIKp4pnSjG1N1VaIxJe6I,1122
|
|
53
|
+
navitia_client/entities/equipment_reports.py,sha256=PRTARUKJSn0W6AjPNRg6TJRSO_TGiy5I-GOQKcToDSU,207
|
|
54
|
+
navitia_client/entities/isochrones.py,sha256=sRZnS9Aezfw8KtpqKuBH6C3D-BXY2yGJmV_qDOF1x5Q,950
|
|
55
|
+
navitia_client/entities/journey.py,sha256=e4N3mVID_gfHmZz-t1XJB7hNuBc8tmKzU0UmZk95uzY,4559
|
|
56
|
+
navitia_client/entities/line_and_route.py,sha256=UvjdgYSEItGkuOB3ZnpCMSdBfMWrNcPwn4NL82h1w0U,2149
|
|
57
|
+
navitia_client/entities/line_report.py,sha256=tFkbCHf_qDGDrZu0rpso8-8T_i76OuN--ltoNpu_QFk,515
|
|
58
|
+
navitia_client/entities/link.py,sha256=2c8z1LVLwgIknbgPRJdzDpkKlV7rsjx902ebnLj3rbo,1515
|
|
59
|
+
navitia_client/entities/network.py,sha256=ofoET2iuX8wiUnMurLqViyrIJVvL_G0Wnth3PWXLdGg,320
|
|
60
|
+
navitia_client/entities/note.py,sha256=f1wWfiMy4ujgXy_vo_Zse29B7PP4dAYohy6oIitZ9dg,86
|
|
61
|
+
navitia_client/entities/pagination.py,sha256=0ZcGjIbbqBJJ0lFqh2fgCGbfvw5ioUxf2sov-C_duWU,504
|
|
62
|
+
navitia_client/entities/path.py,sha256=dUTaOFPB3JvRYYpkqMErhwX1fh9IaEmHwaEDS3UxKGw,688
|
|
63
|
+
navitia_client/entities/pathway.py,sha256=cVDgNVkaPxmzYEpZEaCa8PlLXRJZ5F5u-pBXn5Lk0Is,191
|
|
64
|
+
navitia_client/entities/physical_mode.py,sha256=9q4o64xHpXsN_0vS7APGMfdTfeCcKBYMHVlPL-k0qvk,2549
|
|
65
|
+
navitia_client/entities/place.py,sha256=HBbq3Akxp1pQ9orrt0EMF-ORi-H2qV4xou11zzyMTn4,1096
|
|
66
|
+
navitia_client/entities/poi.py,sha256=jjZ0TLShEI9gVEhCeCjYYACYcMgzAYOhO0Ul7jDGuU0,238
|
|
67
|
+
navitia_client/entities/pt_datetime.py,sha256=xNKx43uqdHSRvCpbWz5YYNUkLw1lPVzFNKioqqEDVPA,1053
|
|
68
|
+
navitia_client/entities/pt_object.py,sha256=ZLgA0SHkvc3c_gCpt_MqodM87ELOiJKfqLBScvvVc8E,1836
|
|
69
|
+
navitia_client/entities/route_schedule.py,sha256=yBTl3-zHDWCMsuoZ7hP5wmIydXt8OQjcmGxc5CGnHZ4,613
|
|
70
|
+
navitia_client/entities/schedule_table.py,sha256=RKAXFZ5OOaGO-YirvkVZ-PasolXuQBicSFlXbIhXqBg,1867
|
|
71
|
+
navitia_client/entities/stand.py,sha256=H01UIee8GyM4d0t7E4djvkyzl60rBfBBdOrRQjzs7Bk,279
|
|
72
|
+
navitia_client/entities/stop_area.py,sha256=fbwAcZUK_tOqGxMDHaOTgIBhFLT4UXN0M3yisuOy8rg,2311
|
|
73
|
+
navitia_client/entities/stop_datetime.py,sha256=7J4ShHKyG6vv4Y_DS4cpGz7-z5I9S27aFjwDIMJgTmg,1363
|
|
74
|
+
navitia_client/entities/stop_schedule.py,sha256=c0AwXKkG51ZQoil91bqiFGp6fKPtAXW_HpXPiLUz_2E,2124
|
|
75
|
+
navitia_client/entities/ticket.py,sha256=5P2aocv7K3PsfxHmqMVM4b7SIckkyQKb67nZSUfo1Qk,1248
|
|
76
|
+
navitia_client/entities/traffic_report.py,sha256=8Xoe13Exf_4Q-iWdNVyOzDszejqWJwC7Lwa1v_ZHoyg,622
|
|
77
|
+
navitia_client/entities/trip.py,sha256=23wft30-IKTRXa6OA2tSVGUu7uQ_-YfRMDpbpov9ATY,279
|
|
78
|
+
navitia_client/entities/vehicle_journey.py,sha256=vD8SOoomKnHEakoqglBW9dmKkVGLWJxGdXtik1WxvU8,4805
|
|
79
|
+
python_navitia_client-1.1.0.dist-info/LICENSE,sha256=E30sTniQ_et8NL4ajTjc3uywbEy9CQyKn6hqnbBHWHQ,1072
|
|
80
|
+
python_navitia_client-1.1.0.dist-info/METADATA,sha256=z5tzQESqcIowSLUJ9-iyfobQBfu2SwbUoHdSpb89wGA,4989
|
|
81
|
+
python_navitia_client-1.1.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
82
|
+
python_navitia_client-1.1.0.dist-info/top_level.txt,sha256=BQrAK3xewDwvZ6AKvKFebVgb8dv4QXqwQcBE66yY7tM,15
|
|
83
|
+
python_navitia_client-1.1.0.dist-info/RECORD,,
|