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.
Files changed (83) hide show
  1. navitia_client/__init__.py +0 -0
  2. navitia_client/client/__init__.py +0 -0
  3. navitia_client/client/apis/__init__.py +0 -0
  4. navitia_client/client/apis/api_base_client.py +50 -0
  5. navitia_client/client/apis/arrival_apis.py +191 -0
  6. navitia_client/client/apis/contributors_apis.py +107 -0
  7. navitia_client/client/apis/coverage_apis.py +131 -0
  8. navitia_client/client/apis/datasets_apis.py +105 -0
  9. navitia_client/client/apis/departure_apis.py +211 -0
  10. navitia_client/client/apis/inverted_geocoding_apis.py +199 -0
  11. navitia_client/client/apis/isochrone_apis.py +196 -0
  12. navitia_client/client/apis/journeys_apis.py +629 -0
  13. navitia_client/client/apis/line_report_apis.py +106 -0
  14. navitia_client/client/apis/place_apis.py +74 -0
  15. navitia_client/client/apis/places_nearby_apis.py +354 -0
  16. navitia_client/client/apis/public_transport_objects_apis.py +88 -0
  17. navitia_client/client/apis/public_transportation_apis/__init__.py +10 -0
  18. navitia_client/client/apis/public_transportation_apis/commercial_mode_apis.py +251 -0
  19. navitia_client/client/apis/public_transportation_apis/company_apis.py +303 -0
  20. navitia_client/client/apis/public_transportation_apis/disruption_apis.py +305 -0
  21. navitia_client/client/apis/public_transportation_apis/entity_apis.py +330 -0
  22. navitia_client/client/apis/public_transportation_apis/line_apis.py +303 -0
  23. navitia_client/client/apis/public_transportation_apis/network_apis.py +303 -0
  24. navitia_client/client/apis/public_transportation_apis/physical_mode_apis.py +303 -0
  25. navitia_client/client/apis/public_transportation_apis/route_apis.py +303 -0
  26. navitia_client/client/apis/public_transportation_apis/stop_area_apis.py +303 -0
  27. navitia_client/client/apis/public_transportation_apis/stop_point_apis.py +303 -0
  28. navitia_client/client/apis/public_transportation_apis/vehicle_journey_apis.py +304 -0
  29. navitia_client/client/apis/route_schedules_apis.py +177 -0
  30. navitia_client/client/apis/stop_schedules_apis.py +181 -0
  31. navitia_client/client/apis/terminus_schedules_apis.py +186 -0
  32. navitia_client/client/apis/traffic_report_apis.py +106 -0
  33. navitia_client/client/exceptions.py +18 -0
  34. navitia_client/client/navitia_client.py +302 -0
  35. navitia_client/client/raw/__init__.py +0 -0
  36. navitia_client/client/raw/raw_client.py +58 -0
  37. navitia_client/entities/__init__.py +23 -0
  38. navitia_client/entities/access_point.py +10 -0
  39. navitia_client/entities/address.py +28 -0
  40. navitia_client/entities/administrative_region.py +59 -0
  41. navitia_client/entities/arrival.py +21 -0
  42. navitia_client/entities/base_entity.py +7 -0
  43. navitia_client/entities/company.py +16 -0
  44. navitia_client/entities/context.py +10 -0
  45. navitia_client/entities/contributor.py +19 -0
  46. navitia_client/entities/coord.py +15 -0
  47. navitia_client/entities/dataset.py +32 -0
  48. navitia_client/entities/departure.py +21 -0
  49. navitia_client/entities/direction.py +24 -0
  50. navitia_client/entities/display_information.py +43 -0
  51. navitia_client/entities/disruption.py +233 -0
  52. navitia_client/entities/equipment.py +42 -0
  53. navitia_client/entities/equipment_reports.py +10 -0
  54. navitia_client/entities/isochrones.py +30 -0
  55. navitia_client/entities/journey.py +133 -0
  56. navitia_client/entities/line_and_route.py +76 -0
  57. navitia_client/entities/line_report.py +18 -0
  58. navitia_client/entities/link.py +44 -0
  59. navitia_client/entities/network.py +16 -0
  60. navitia_client/entities/note.py +7 -0
  61. navitia_client/entities/pagination.py +19 -0
  62. navitia_client/entities/path.py +30 -0
  63. navitia_client/entities/pathway.py +11 -0
  64. navitia_client/entities/physical_mode.py +92 -0
  65. navitia_client/entities/place.py +40 -0
  66. navitia_client/entities/poi.py +16 -0
  67. navitia_client/entities/pt_datetime.py +31 -0
  68. navitia_client/entities/pt_object.py +57 -0
  69. navitia_client/entities/route_schedule.py +19 -0
  70. navitia_client/entities/schedule_table.py +59 -0
  71. navitia_client/entities/stand.py +16 -0
  72. navitia_client/entities/stop_area.py +82 -0
  73. navitia_client/entities/stop_datetime.py +39 -0
  74. navitia_client/entities/stop_schedule.py +59 -0
  75. navitia_client/entities/ticket.py +49 -0
  76. navitia_client/entities/traffic_report.py +21 -0
  77. navitia_client/entities/trip.py +13 -0
  78. navitia_client/entities/vehicle_journey.py +163 -0
  79. python_navitia_client-1.1.0.dist-info/LICENSE +21 -0
  80. python_navitia_client-1.1.0.dist-info/METADATA +114 -0
  81. python_navitia_client-1.1.0.dist-info/RECORD +83 -0
  82. python_navitia_client-1.1.0.dist-info/WHEEL +5 -0
  83. 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,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.43.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+