python-navitia-client 1.3.0__tar.gz → 2.0.0__tar.gz

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 (155) hide show
  1. {python_navitia_client-1.3.0/python_navitia_client.egg-info → python_navitia_client-2.0.0}/PKG-INFO +1 -1
  2. python_navitia_client-2.0.0/navitia_client/client/apis/arrival_apis.py +95 -0
  3. python_navitia_client-2.0.0/navitia_client/client/apis/contributors_apis.py +76 -0
  4. python_navitia_client-2.0.0/navitia_client/client/apis/coverage_apis.py +91 -0
  5. python_navitia_client-2.0.0/navitia_client/client/apis/datasets_apis.py +74 -0
  6. python_navitia_client-2.0.0/navitia_client/client/apis/departure_apis.py +93 -0
  7. python_navitia_client-2.0.0/navitia_client/client/apis/equipment_report_apis.py +84 -0
  8. python_navitia_client-2.0.0/navitia_client/client/apis/freefloatings_nearby_apis.py +146 -0
  9. python_navitia_client-2.0.0/navitia_client/client/apis/inverted_geocoding_apis.py +131 -0
  10. python_navitia_client-2.0.0/navitia_client/client/apis/isochrone_apis.py +59 -0
  11. python_navitia_client-2.0.0/navitia_client/client/apis/journeys_apis.py +77 -0
  12. python_navitia_client-2.0.0/navitia_client/client/apis/line_report_apis.py +56 -0
  13. python_navitia_client-2.0.0/navitia_client/client/apis/place_apis.py +47 -0
  14. python_navitia_client-2.0.0/navitia_client/client/apis/places_nearby_apis.py +133 -0
  15. python_navitia_client-2.0.0/navitia_client/client/apis/public_transport_objects_apis.py +50 -0
  16. python_navitia_client-2.0.0/navitia_client/client/apis/public_transportation_apis/commercial_mode_apis.py +111 -0
  17. python_navitia_client-2.0.0/navitia_client/client/apis/public_transportation_apis/company_apis.py +111 -0
  18. python_navitia_client-2.0.0/navitia_client/client/apis/public_transportation_apis/disruption_apis.py +113 -0
  19. python_navitia_client-2.0.0/navitia_client/client/apis/public_transportation_apis/entity_apis.py +162 -0
  20. python_navitia_client-2.0.0/navitia_client/client/apis/public_transportation_apis/line_apis.py +111 -0
  21. python_navitia_client-2.0.0/navitia_client/client/apis/public_transportation_apis/network_apis.py +111 -0
  22. python_navitia_client-2.0.0/navitia_client/client/apis/public_transportation_apis/physical_mode_apis.py +111 -0
  23. python_navitia_client-2.0.0/navitia_client/client/apis/public_transportation_apis/route_apis.py +111 -0
  24. python_navitia_client-2.0.0/navitia_client/client/apis/public_transportation_apis/stop_area_apis.py +111 -0
  25. python_navitia_client-2.0.0/navitia_client/client/apis/public_transportation_apis/stop_point_apis.py +111 -0
  26. python_navitia_client-2.0.0/navitia_client/client/apis/public_transportation_apis/vehicle_journey_apis.py +112 -0
  27. python_navitia_client-2.0.0/navitia_client/client/apis/route_schedules_apis.py +87 -0
  28. python_navitia_client-2.0.0/navitia_client/client/apis/stop_schedules_apis.py +91 -0
  29. python_navitia_client-2.0.0/navitia_client/client/apis/terminus_schedules_apis.py +95 -0
  30. python_navitia_client-2.0.0/navitia_client/client/apis/traffic_report_apis.py +61 -0
  31. python_navitia_client-2.0.0/navitia_client/entities/__init__.py +0 -0
  32. python_navitia_client-2.0.0/navitia_client/entities/request/__init__.py +45 -0
  33. python_navitia_client-2.0.0/navitia_client/entities/request/arrival.py +62 -0
  34. python_navitia_client-2.0.0/navitia_client/entities/request/base_entity_request.py +82 -0
  35. python_navitia_client-2.0.0/navitia_client/entities/request/contributor.py +28 -0
  36. python_navitia_client-2.0.0/navitia_client/entities/request/coverage.py +28 -0
  37. python_navitia_client-2.0.0/navitia_client/entities/request/dataset.py +28 -0
  38. python_navitia_client-2.0.0/navitia_client/entities/request/departure.py +67 -0
  39. python_navitia_client-2.0.0/navitia_client/entities/request/equipment_report.py +46 -0
  40. python_navitia_client-2.0.0/navitia_client/entities/request/freefloatings_nearby.py +40 -0
  41. python_navitia_client-2.0.0/navitia_client/entities/request/inverted_geocoding.py +29 -0
  42. python_navitia_client-2.0.0/navitia_client/entities/request/isochrone.py +75 -0
  43. python_navitia_client-2.0.0/navitia_client/entities/request/journey.py +215 -0
  44. python_navitia_client-2.0.0/navitia_client/entities/request/line_report.py +56 -0
  45. python_navitia_client-2.0.0/navitia_client/entities/request/place.py +52 -0
  46. python_navitia_client-2.0.0/navitia_client/entities/request/places_nearby.py +68 -0
  47. python_navitia_client-2.0.0/navitia_client/entities/request/public_transport_object.py +52 -0
  48. python_navitia_client-2.0.0/navitia_client/entities/request/public_transportations/___init__.py +39 -0
  49. python_navitia_client-2.0.0/navitia_client/entities/request/public_transportations/__init__.py +39 -0
  50. python_navitia_client-2.0.0/navitia_client/entities/request/public_transportations/commercial_mode.py +24 -0
  51. python_navitia_client-2.0.0/navitia_client/entities/request/public_transportations/company.py +25 -0
  52. python_navitia_client-2.0.0/navitia_client/entities/request/public_transportations/disruption.py +25 -0
  53. python_navitia_client-2.0.0/navitia_client/entities/request/public_transportations/line.py +25 -0
  54. python_navitia_client-2.0.0/navitia_client/entities/request/public_transportations/network.py +25 -0
  55. python_navitia_client-2.0.0/navitia_client/entities/request/public_transportations/physical_mode.py +25 -0
  56. python_navitia_client-2.0.0/navitia_client/entities/request/public_transportations/route.py +25 -0
  57. python_navitia_client-2.0.0/navitia_client/entities/request/public_transportations/stop_area.py +25 -0
  58. python_navitia_client-2.0.0/navitia_client/entities/request/public_transportations/stop_point.py +25 -0
  59. python_navitia_client-2.0.0/navitia_client/entities/request/public_transportations/vehicle_journey.py +25 -0
  60. python_navitia_client-2.0.0/navitia_client/entities/request/route_schedule.py +67 -0
  61. python_navitia_client-2.0.0/navitia_client/entities/request/stop_schedule.py +67 -0
  62. python_navitia_client-2.0.0/navitia_client/entities/request/terminus_schedule.py +67 -0
  63. python_navitia_client-2.0.0/navitia_client/entities/request/traffic_report.py +56 -0
  64. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/__init__.py +18 -16
  65. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/arrival.py +3 -3
  66. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/contributor.py +1 -1
  67. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/dataset.py +1 -1
  68. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/departure.py +3 -3
  69. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/direction.py +2 -2
  70. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/isochrones.py +1 -1
  71. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/journey.py +5 -5
  72. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/line_and_route.py +4 -4
  73. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/line_report.py +2 -2
  74. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/link.py +4 -4
  75. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/pt_datetime.py +1 -1
  76. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/route_schedule.py +2 -2
  77. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/schedule_table.py +4 -4
  78. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/stop_datetime.py +1 -1
  79. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/stop_schedule.py +4 -4
  80. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/ticket.py +2 -2
  81. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/traffic_report.py +2 -2
  82. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/vehicle_journey.py +4 -4
  83. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/pyproject.toml +1 -1
  84. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0/python_navitia_client.egg-info}/PKG-INFO +1 -1
  85. python_navitia_client-2.0.0/python_navitia_client.egg-info/SOURCES.txt +123 -0
  86. python_navitia_client-1.3.0/navitia_client/client/apis/arrival_apis.py +0 -207
  87. python_navitia_client-1.3.0/navitia_client/client/apis/contributors_apis.py +0 -107
  88. python_navitia_client-1.3.0/navitia_client/client/apis/coverage_apis.py +0 -131
  89. python_navitia_client-1.3.0/navitia_client/client/apis/datasets_apis.py +0 -105
  90. python_navitia_client-1.3.0/navitia_client/client/apis/departure_apis.py +0 -227
  91. python_navitia_client-1.3.0/navitia_client/client/apis/equipment_report_apis.py +0 -153
  92. python_navitia_client-1.3.0/navitia_client/client/apis/freefloatings_nearby_apis.py +0 -247
  93. python_navitia_client-1.3.0/navitia_client/client/apis/inverted_geocoding_apis.py +0 -199
  94. python_navitia_client-1.3.0/navitia_client/client/apis/isochrone_apis.py +0 -196
  95. python_navitia_client-1.3.0/navitia_client/client/apis/journeys_apis.py +0 -770
  96. python_navitia_client-1.3.0/navitia_client/client/apis/line_report_apis.py +0 -106
  97. python_navitia_client-1.3.0/navitia_client/client/apis/place_apis.py +0 -74
  98. python_navitia_client-1.3.0/navitia_client/client/apis/places_nearby_apis.py +0 -354
  99. python_navitia_client-1.3.0/navitia_client/client/apis/public_transport_objects_apis.py +0 -88
  100. python_navitia_client-1.3.0/navitia_client/client/apis/public_transportation_apis/commercial_mode_apis.py +0 -317
  101. python_navitia_client-1.3.0/navitia_client/client/apis/public_transportation_apis/company_apis.py +0 -389
  102. python_navitia_client-1.3.0/navitia_client/client/apis/public_transportation_apis/disruption_apis.py +0 -391
  103. python_navitia_client-1.3.0/navitia_client/client/apis/public_transportation_apis/entity_apis.py +0 -352
  104. python_navitia_client-1.3.0/navitia_client/client/apis/public_transportation_apis/line_apis.py +0 -389
  105. python_navitia_client-1.3.0/navitia_client/client/apis/public_transportation_apis/network_apis.py +0 -389
  106. python_navitia_client-1.3.0/navitia_client/client/apis/public_transportation_apis/physical_mode_apis.py +0 -389
  107. python_navitia_client-1.3.0/navitia_client/client/apis/public_transportation_apis/route_apis.py +0 -389
  108. python_navitia_client-1.3.0/navitia_client/client/apis/public_transportation_apis/stop_area_apis.py +0 -389
  109. python_navitia_client-1.3.0/navitia_client/client/apis/public_transportation_apis/stop_point_apis.py +0 -389
  110. python_navitia_client-1.3.0/navitia_client/client/apis/public_transportation_apis/vehicle_journey_apis.py +0 -390
  111. python_navitia_client-1.3.0/navitia_client/client/apis/route_schedules_apis.py +0 -189
  112. python_navitia_client-1.3.0/navitia_client/client/apis/stop_schedules_apis.py +0 -193
  113. python_navitia_client-1.3.0/navitia_client/client/apis/terminus_schedules_apis.py +0 -198
  114. python_navitia_client-1.3.0/navitia_client/client/apis/traffic_report_apis.py +0 -106
  115. python_navitia_client-1.3.0/python_navitia_client.egg-info/SOURCES.txt +0 -90
  116. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/LICENSE +0 -0
  117. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/README.md +0 -0
  118. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/navitia_client/__init__.py +0 -0
  119. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/navitia_client/client/__init__.py +0 -0
  120. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/navitia_client/client/apis/__init__.py +0 -0
  121. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/navitia_client/client/apis/api_base_client.py +0 -0
  122. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/navitia_client/client/apis/public_transportation_apis/__init__.py +0 -0
  123. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/navitia_client/client/exceptions.py +0 -0
  124. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/navitia_client/client/navitia_client.py +0 -0
  125. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/navitia_client/client/raw/__init__.py +0 -0
  126. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/navitia_client/client/raw/raw_client.py +0 -0
  127. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/access_point.py +0 -0
  128. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/address.py +0 -0
  129. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/administrative_region.py +0 -0
  130. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/base_entity.py +0 -0
  131. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/company.py +0 -0
  132. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/context.py +0 -0
  133. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/coord.py +0 -0
  134. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/display_information.py +0 -0
  135. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/disruption.py +0 -0
  136. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/equipment.py +0 -0
  137. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/equipment_reports.py +0 -0
  138. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/free_floating.py +0 -0
  139. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/network.py +0 -0
  140. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/note.py +0 -0
  141. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/pagination.py +0 -0
  142. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/path.py +0 -0
  143. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/pathway.py +0 -0
  144. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/physical_mode.py +0 -0
  145. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/place.py +0 -0
  146. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/poi.py +0 -0
  147. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/pt_object.py +0 -0
  148. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/stand.py +0 -0
  149. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/stop_area.py +0 -0
  150. {python_navitia_client-1.3.0/navitia_client/entities → python_navitia_client-2.0.0/navitia_client/entities/response}/trip.py +0 -0
  151. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/python_navitia_client.egg-info/dependency_links.txt +0 -0
  152. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/python_navitia_client.egg-info/requires.txt +0 -0
  153. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/python_navitia_client.egg-info/top_level.txt +0 -0
  154. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/setup.cfg +0 -0
  155. {python_navitia_client-1.3.0 → python_navitia_client-2.0.0}/tests/test_navitia_client.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-navitia-client
3
- Version: 1.3.0
3
+ Version: 2.0.0
4
4
  Summary: Python library to use with Navitia APIs
5
5
  Author-email: Jonathan Perron <jonathan@perron.bzh>
6
6
  License: MIT License
@@ -0,0 +1,95 @@
1
+ from typing import Any, Sequence, Tuple
2
+ from navitia_client.client.apis.api_base_client import ApiBaseClient
3
+ from navitia_client.entities.request.arrival import ArrivalRequest
4
+ from navitia_client.entities.response import Pagination
5
+ from navitia_client.entities.response.arrival import Arrival
6
+
7
+
8
+ class ArrivalApiClient(ApiBaseClient):
9
+ """Client class to interact with the Navitia API for fetching arrival information.
10
+
11
+ See https://doc.navitia.io/#arrivals
12
+ """
13
+
14
+ @staticmethod
15
+ def _get_arrival_objects_from_response(
16
+ response: Any,
17
+ ) -> Sequence[Arrival]:
18
+ """Convert raw response data into a list of Arrival objects.
19
+
20
+ Args:
21
+ response: The raw response data from the API containing arrivals' information.
22
+
23
+ Returns:
24
+ A list of Arrival objects created from the raw response data.
25
+ """
26
+
27
+ arrivals = []
28
+ for arrival_data in response:
29
+ arrivals.append(Arrival.from_payload(arrival_data))
30
+
31
+ return arrivals
32
+
33
+ def _get_arrivals(
34
+ self, url: str, filters: dict
35
+ ) -> Tuple[Sequence[Arrival], Pagination]:
36
+ """Fetch arrivals based on a given URL and filters.
37
+
38
+ Args:
39
+ url: The URL for the API request.
40
+ filters: The filters to apply to the API request.
41
+
42
+ Returns:
43
+ A tuple containing a list of Arrival objects and a Pagination object for managing result pages.
44
+ """
45
+ results = self.get_navitia_api(url + self._generate_filter_query(filters))
46
+ raw_results = results.json()["arrivals"]
47
+ pagination = Pagination.from_payload(results.json()["pagination"])
48
+ return self._get_arrival_objects_from_response(raw_results), pagination
49
+
50
+ def list_arrivals_by_region_id_and_path(
51
+ self,
52
+ region_id: str,
53
+ resource_path: str,
54
+ request: ArrivalRequest,
55
+ ) -> Tuple[Sequence[Arrival], Pagination]:
56
+ """Retrieve a list of arrivals for a specific region and resource path.
57
+
58
+ Args:
59
+ region_id: The identifier of the region to fetch arrivals from.
60
+ resource_path: The resource path within the region to fetch arrivals for.
61
+ request: The ArrivalRequest containing filters and parameters for the query.
62
+
63
+ Returns:
64
+ A tuple containing a list of Arrival objects and a Pagination object for managing result pages.
65
+ """
66
+ request_url = (
67
+ f"{self.base_navitia_url}/coverage/{region_id}/{resource_path}/arrivals"
68
+ )
69
+
70
+ return self._get_arrivals(request_url, request.to_filters())
71
+
72
+ def list_arrivals_by_coordinates(
73
+ self,
74
+ region_lon: float,
75
+ region_lat: float,
76
+ lon: float,
77
+ lat: float,
78
+ request: ArrivalRequest,
79
+ ) -> Tuple[Sequence[Arrival], Pagination]:
80
+ """Retrieve a list of arrivals for specific coordinates.
81
+
82
+ Args:
83
+ region_lon: The longitude of the region to fetch arrivals from.
84
+ region_lat: The latitude of the region to fetch arrivals from.
85
+ lon: The longitude of the specific location to fetch arrivals for.
86
+ lat: The latitude of the specific location to fetch arrivals for.
87
+ request: The ArrivalRequest containing filters and parameters for the query.
88
+
89
+ Returns:
90
+ A tuple containing a list of Arrival objects and a Pagination object for managing result pages.
91
+ """
92
+ # List of objects near the resource, navitia guesses the region from coordinates
93
+ request_url = f"{self.base_navitia_url}/coverage/{region_lon};{region_lat}/coords/{lon};{lat}/arrivals"
94
+
95
+ return self._get_arrivals(request_url, request.to_filters())
@@ -0,0 +1,76 @@
1
+ from typing import Any, Sequence, Tuple
2
+
3
+ from navitia_client.client.apis.api_base_client import ApiBaseClient
4
+ from navitia_client.entities.request.contributor import ContributorRequest
5
+ from navitia_client.entities.response.contributor import Contributor
6
+ from navitia_client.entities.response import Pagination
7
+
8
+
9
+ class ContributorsApiClient(ApiBaseClient):
10
+ """Client class to interact with the Navitia API for fetching contributors.
11
+
12
+ See https://doc.navitia.io/#contributors
13
+ """
14
+
15
+ @staticmethod
16
+ def _get_contributors_from_response(
17
+ raw_contributors_response: Any,
18
+ ) -> Sequence[Contributor]:
19
+ """Convert raw response data into a list of Contributor objects.
20
+
21
+ Args:
22
+ raw_contributors_response: The raw response data from the API containing contributors' information.
23
+
24
+ Returns:
25
+ A list of Contributor objects created from the raw response data.
26
+ """
27
+ contributors = []
28
+ for contributor_data in raw_contributors_response:
29
+ contributors.append(Contributor.from_payload(contributor_data))
30
+
31
+ return contributors
32
+
33
+ def list_contributors(
34
+ self, region_id: str, request: ContributorRequest
35
+ ) -> Tuple[Sequence[Contributor], Pagination]:
36
+ """Retrieve a list of contributors for a specific region.
37
+
38
+ Args:
39
+ region_id: The identifier of the region to fetch contributors from.
40
+ request: The request object containing query parameters.
41
+
42
+ Returns:
43
+ A tuple containing a list of Contributor objects and a Pagination object for managing result pages.
44
+ """
45
+ url = f"{self.base_navitia_url}/coverage/{region_id}/contributors"
46
+ results = self.get_navitia_api(
47
+ url + self._generate_filter_query(request.to_filters())
48
+ )
49
+ raw_results = results.json()["contributors"]
50
+ pagination = Pagination.from_payload(results.json()["pagination"])
51
+ return ContributorsApiClient._get_contributors_from_response(
52
+ raw_results
53
+ ), pagination
54
+
55
+ def get_contributor_on_dataset(
56
+ self, region_id: str, dataset_id: str, request: ContributorRequest
57
+ ) -> Tuple[Sequence[Contributor], Pagination]:
58
+ """Retrieve a list of contributors for a specific dataset in a region.
59
+
60
+ Args:
61
+ region_id: The identifier of the region to fetch contributors from.
62
+ dataset_id: The identifier of the dataset to fetch contributors for.
63
+ request: The request object containing query parameters.
64
+
65
+ Returns:
66
+ A tuple containing a list of Contributor objects and a Pagination object for managing result pages.
67
+ """
68
+ url = f"{self.base_navitia_url}/coverage/{region_id}/contributors/{dataset_id}"
69
+ results = self.get_navitia_api(
70
+ url + self._generate_filter_query(request.to_filters())
71
+ )
72
+ raw_results = results.json()["contributors"]
73
+ pagination = Pagination.from_payload(results.json()["pagination"])
74
+ return ContributorsApiClient._get_contributors_from_response(
75
+ raw_results
76
+ ), pagination
@@ -0,0 +1,91 @@
1
+ from typing import Any, Sequence, Tuple
2
+
3
+ from navitia_client.client.apis.api_base_client import ApiBaseClient
4
+ from navitia_client.entities.request.coverage import CoverageRequest
5
+ from navitia_client.entities.response.administrative_region import Region
6
+ from navitia_client.entities.response import Pagination
7
+
8
+
9
+ class CoverageApiClient(ApiBaseClient):
10
+ """Client class to interact with the Navitia API for fetching coverage area information.
11
+
12
+ See https://doc.navitia.io/#coverage
13
+ """
14
+
15
+ @staticmethod
16
+ def _get_regions_from_response(raw_regions_response: Any) -> Sequence[Region]:
17
+ """Convert raw response data into a list of Region objects.
18
+
19
+ Args:
20
+ raw_regions_response: The raw response data from the API containing regions' information.
21
+
22
+ Returns:
23
+ A list of Region objects created from the raw response data.
24
+ """
25
+ regions = []
26
+ for region_data in raw_regions_response:
27
+ regions.append(Region.from_payload(region_data))
28
+ return regions
29
+
30
+ def list_covered_areas(
31
+ self, request: CoverageRequest
32
+ ) -> Tuple[Sequence[Region], Pagination]:
33
+ """Retrieve a list of covered areas from the Navitia API.
34
+
35
+ Args:
36
+ request: The request object containing query parameters.
37
+
38
+ Returns:
39
+ A tuple containing a list of Region objects and a Pagination object for managing result pages.
40
+ """
41
+ url = f"{self.base_navitia_url}/coverage"
42
+ results = self.get_navitia_api(
43
+ url + self._generate_filter_query(request.to_filters())
44
+ )
45
+ result_regions = results.json()["regions"]
46
+ regions = CoverageApiClient._get_regions_from_response(result_regions)
47
+ pagination = Pagination.from_payload(results.json()["pagination"])
48
+ return regions, pagination
49
+
50
+ def get_coverage_by_region_id(
51
+ self, region_id: str, request: CoverageRequest
52
+ ) -> Tuple[Sequence[Region], Pagination]:
53
+ """Retrieve information about a specific region by its ID.
54
+
55
+ Args:
56
+ region_id: The identifier of the region to fetch information about.
57
+ request: The request object containing query parameters.
58
+
59
+ Returns:
60
+ A tuple containing a list of Region objects and a Pagination object for managing result pages.
61
+ """
62
+ url = f"{self.base_navitia_url}/coverage/{region_id}"
63
+ results = self.get_navitia_api(
64
+ url + self._generate_filter_query(request.to_filters())
65
+ )
66
+ result_regions = results.json()["regions"]
67
+ regions = CoverageApiClient._get_regions_from_response(result_regions)
68
+ pagination = Pagination.from_payload(results.json()["pagination"])
69
+ return regions, pagination
70
+
71
+ def get_coverage_by_region_coordinates_and_coordinates(
72
+ self, lon: float, lat: float, request: CoverageRequest
73
+ ) -> Tuple[Sequence[Region], Pagination]:
74
+ """Retrieve information about a region based on coordinates.
75
+
76
+ Args:
77
+ lon: The longitude of the location to fetch information about.
78
+ lat: The latitude of the location to fetch information about.
79
+ request: The request object containing query parameters.
80
+
81
+ Returns:
82
+ A tuple containing a list of Region objects and a Pagination object for managing result pages.
83
+ """
84
+ url = f"{self.base_navitia_url}/coverage/{lon};{lat}"
85
+ results = self.get_navitia_api(
86
+ url + self._generate_filter_query(request.to_filters())
87
+ )
88
+ result_regions = results.json()["regions"]
89
+ regions = CoverageApiClient._get_regions_from_response(result_regions)
90
+ pagination = Pagination.from_payload(results.json()["pagination"])
91
+ return regions, pagination
@@ -0,0 +1,74 @@
1
+ from typing import Any, Sequence, Tuple
2
+
3
+ from navitia_client.client.apis.api_base_client import ApiBaseClient
4
+ from navitia_client.entities.request.dataset import DatasetRequest
5
+ from navitia_client.entities.response.dataset import Dataset
6
+ from navitia_client.entities.response import Pagination
7
+
8
+
9
+ class DatasetsApiClient(ApiBaseClient):
10
+ """Client class to interact with the Navitia API for fetching dataset information.
11
+
12
+ See https://doc.navitia.io/#datasets
13
+ """
14
+
15
+ @staticmethod
16
+ def _get_datasets_from_response(raw_datasets_response: Any) -> Sequence[Dataset]:
17
+ """Convert raw response data into a list of Dataset objects.
18
+
19
+ Args:
20
+ raw_datasets_response: The raw response data from the API containing datasets' information.
21
+
22
+ Returns:
23
+ A list of Dataset objects created from the raw response data.
24
+ """
25
+ datasets = []
26
+ for dataset in raw_datasets_response:
27
+ dataset_contributor = dataset.get("contributor")
28
+ if not dataset_contributor:
29
+ continue
30
+
31
+ datasets.append(Dataset.from_payload(dataset))
32
+
33
+ return datasets
34
+
35
+ def list_datasets(
36
+ self, region_id: str, request: DatasetRequest
37
+ ) -> Tuple[Sequence[Dataset], Pagination]:
38
+ """Retrieve a list of datasets for a specified region from the Navitia API.
39
+
40
+ Args:
41
+ region_id: The identifier of the region to fetch datasets from.
42
+ request: The request object containing query parameters.
43
+
44
+ Returns:
45
+ A tuple containing a list of Dataset objects and a Pagination object for managing result pages.
46
+ """
47
+ url = f"{self.base_navitia_url}/coverage/{region_id}/datasets"
48
+ results = self.get_navitia_api(
49
+ url + self._generate_filter_query(request.to_filters())
50
+ )
51
+ raw_results = results.json()["datasets"]
52
+ pagination = Pagination.from_payload(results.json()["pagination"])
53
+ return DatasetsApiClient._get_datasets_from_response(raw_results), pagination
54
+
55
+ def get_dataset_by_id(
56
+ self, region_id: str, dataset_id: str, request: DatasetRequest
57
+ ) -> Tuple[Sequence[Dataset], Pagination]:
58
+ """Retrieve information about a specific dataset by its ID within a region.
59
+
60
+ Args:
61
+ region_id: The identifier of the region to fetch the dataset from.
62
+ dataset_id: The identifier of the dataset to fetch.
63
+ request: The request object containing query parameters.
64
+
65
+ Returns:
66
+ A tuple containing a list of Dataset objects and a Pagination object for managing result pages.
67
+ """
68
+ url = f"{self.base_navitia_url}/coverage/{region_id}/datasets/{dataset_id}"
69
+ results = self.get_navitia_api(
70
+ url + self._generate_filter_query(request.to_filters())
71
+ )
72
+ raw_results = results.json()["datasets"]
73
+ pagination = Pagination.from_payload(results.json()["pagination"])
74
+ return DatasetsApiClient._get_datasets_from_response(raw_results), pagination
@@ -0,0 +1,93 @@
1
+ from typing import Any, Sequence, Tuple
2
+ from navitia_client.client.apis.api_base_client import ApiBaseClient
3
+ from navitia_client.entities.request.departure import DepartureRequest
4
+ from navitia_client.entities.response import Pagination
5
+ from navitia_client.entities.response.departure import Departure
6
+
7
+
8
+ class DepartureApiClient(ApiBaseClient):
9
+ """Client for interacting with the Navitia API to retrieve departure schedules.
10
+
11
+ See https://doc.navitia.io/#departures
12
+ """
13
+
14
+ @staticmethod
15
+ def _get_departure_objects_from_response(
16
+ response: Any,
17
+ ) -> Sequence[Departure]:
18
+ """Convert raw response data into a list of Departure objects.
19
+
20
+ Args:
21
+ response: The raw response data from the API containing departures' information.
22
+
23
+ Returns:
24
+ A list of Departure objects created from the raw response data.
25
+ """
26
+ departures = []
27
+ for departure_data in response:
28
+ departures.append(Departure.from_payload(departure_data))
29
+
30
+ return departures
31
+
32
+ def _get_departures(
33
+ self, url: str, filters: dict
34
+ ) -> Tuple[Sequence[Departure], Pagination]:
35
+ """Fetch departures from the Navitia API based on the provided URL and filters.
36
+
37
+ Args:
38
+ url: The URL to fetch departures from.
39
+ filters: A dictionary of filters to apply to the query.
40
+
41
+ Returns:
42
+ A tuple containing a list of Departure objects and a Pagination object for managing result pages.
43
+ """
44
+ results = self.get_navitia_api(url + self._generate_filter_query(filters))
45
+ raw_results = results.json()["departures"]
46
+ pagination = Pagination.from_payload(results.json()["pagination"])
47
+ return self._get_departure_objects_from_response(raw_results), pagination
48
+
49
+ def list_departures_by_region_id_and_path(
50
+ self,
51
+ region_id: str,
52
+ resource_path: str,
53
+ request: DepartureRequest,
54
+ ) -> Tuple[Sequence[Departure], Pagination]:
55
+ """Retrieve a list of departures for a specified region and resource path.
56
+
57
+ Args:
58
+ region_id: The identifier of the region to fetch departures from.
59
+ resource_path: The resource path to fetch departures for.
60
+ request: The request object containing query parameters.
61
+
62
+ Returns:
63
+ A tuple containing a list of Departure objects and a Pagination object for managing result pages.
64
+ """
65
+ request_url = (
66
+ f"{self.base_navitia_url}/coverage/{region_id}/{resource_path}/departures"
67
+ )
68
+
69
+ return self._get_departures(request_url, request.to_filters())
70
+
71
+ def list_departures_by_coordinates(
72
+ self,
73
+ region_lon: float,
74
+ region_lat: float,
75
+ lon: float,
76
+ lat: float,
77
+ request: DepartureRequest,
78
+ ) -> Tuple[Sequence[Departure], Pagination]:
79
+ """Retrieve a list of departures for a specified region and coordinates.
80
+
81
+ Args:
82
+ region_lon: The longitude of the region.
83
+ region_lat: The latitude of the region.
84
+ lon: The longitude of the specific location.
85
+ lat: The latitude of the specific location.
86
+ request: The request object containing query parameters.
87
+
88
+ Returns:
89
+ A tuple containing a list of Departure objects and a Pagination object for managing result pages.
90
+ """
91
+ request_url = f"{self.base_navitia_url}/coverage/{region_lon};{region_lat}/coords/{lon};{lat}/departures"
92
+
93
+ return self._get_departures(request_url, request.to_filters())
@@ -0,0 +1,84 @@
1
+ from typing import Sequence, Tuple
2
+ from navitia_client.client.apis.api_base_client import ApiBaseClient
3
+ from navitia_client.entities.request.equipment_report import EquipmentReportRequest
4
+ from navitia_client.entities.response.equipment_reports import EquipmentReports
5
+ from navitia_client.entities.response import Pagination
6
+
7
+
8
+ class EquipmentReportsApiClient(ApiBaseClient):
9
+ """Client class to interact with the Navitia API for fetching equipment reports.
10
+
11
+ See https://doc.navitia.io/#equipment-reports
12
+ """
13
+
14
+ def _get_equipment_reports(
15
+ self, url: str, filters: dict
16
+ ) -> Tuple[Sequence[EquipmentReports], Pagination]:
17
+ """Retrieve equipment reports from the Navitia API based on provided URL and filters.
18
+
19
+ Args:
20
+ url: The URL for the API request.
21
+ filters: Filters to apply to the API request.
22
+
23
+ Returns:
24
+ A tuple containing sequences of EquipmentReports objects and Pagination object.
25
+ """
26
+ results = self.get_navitia_api(url + self._generate_filter_query(filters))
27
+ equipment_reports = [
28
+ EquipmentReports.from_payload(data)
29
+ for data in results.json()["equipment_reports"]
30
+ ]
31
+ pagination = Pagination.from_payload(results.json()["pagination"])
32
+ return equipment_reports, pagination
33
+
34
+ def list_equipment_reports(
35
+ self,
36
+ region_id: str,
37
+ request: EquipmentReportRequest,
38
+ ) -> Tuple[Sequence[EquipmentReports], Pagination]:
39
+ """Retrieve equipment reports for a specified region from the Navitia API.
40
+
41
+ This service provides the state of equipments such as lifts or elevators that
42
+ are giving better accessibility to public transport facilities.
43
+ The endpoint will report accessible equipment per stop area and per line.
44
+
45
+ Args:
46
+ region_id: The region ID (coverage identifier).
47
+ request: The request object containing query parameters.
48
+
49
+ Returns:
50
+ A tuple containing sequences of EquipmentReports objects and Pagination object.
51
+
52
+ Note:
53
+ This feature requires a specific configuration from an equipment service provider.
54
+ Therefore, this service is not available by default.
55
+ """
56
+ request_url = f"{self.base_navitia_url}/coverage/{region_id}/equipment_reports"
57
+ return self._get_equipment_reports(request_url, request.to_filters())
58
+
59
+ def list_equipment_reports_with_resource_path(
60
+ self,
61
+ region_id: str,
62
+ resource_path: str,
63
+ request: EquipmentReportRequest,
64
+ ) -> Tuple[Sequence[EquipmentReports], Pagination]:
65
+ """Retrieve equipment reports for a specific resource path in a region.
66
+
67
+ This service provides the state of equipments such as lifts or elevators that
68
+ are giving better accessibility to public transport facilities.
69
+ The endpoint will report accessible equipment per stop area and per line.
70
+
71
+ Args:
72
+ region_id: The region ID (coverage identifier).
73
+ resource_path: The resource path (e.g., 'lines/line:A').
74
+ request: The request object containing query parameters.
75
+
76
+ Returns:
77
+ A tuple containing sequences of EquipmentReports objects and Pagination object.
78
+
79
+ Note:
80
+ This feature requires a specific configuration from an equipment service provider.
81
+ Therefore, this service is not available by default.
82
+ """
83
+ request_url = f"{self.base_navitia_url}/coverage/{region_id}/{resource_path}/equipment_reports"
84
+ return self._get_equipment_reports(request_url, request.to_filters())
@@ -0,0 +1,146 @@
1
+ from typing import Sequence, Tuple
2
+
3
+ from navitia_client.client.apis.api_base_client import ApiBaseClient
4
+ from navitia_client.entities.request.freefloatings_nearby import (
5
+ FreefloatingsNearbyRequest,
6
+ )
7
+ from navitia_client.entities.response.free_floating import FreeFloating
8
+ from navitia_client.entities.response import Pagination
9
+
10
+
11
+ class FreefloatingsNearbyApiClient(ApiBaseClient):
12
+ """Client class to interact with the Navitia API for fetching nearby free-floating vehicles.
13
+
14
+ See https://doc.navitia.io/#freefloatings-nearby-api
15
+ """
16
+
17
+ def _get_freefloatings_nearby(
18
+ self, url: str, filters: dict
19
+ ) -> Tuple[Sequence[FreeFloating], Pagination]:
20
+ """Retrieve free-floating vehicles from the Navitia API based on provided URL and filters.
21
+
22
+ Args:
23
+ url: The URL for the API request.
24
+ filters: Filters to apply to the API request.
25
+
26
+ Returns:
27
+ A tuple containing sequences of FreeFloating objects and Pagination object.
28
+ """
29
+ results = self.get_navitia_api(url + self._generate_filter_query(filters))
30
+ free_floatings = [
31
+ FreeFloating.from_payload(data) for data in results.json()["free_floatings"]
32
+ ]
33
+ pagination = Pagination.from_payload(results.json()["pagination"])
34
+ return free_floatings, pagination
35
+
36
+ def list_freefloatings_nearby(
37
+ self,
38
+ region_id: str,
39
+ lon: float,
40
+ lat: float,
41
+ request: FreefloatingsNearbyRequest,
42
+ ) -> Tuple[Sequence[FreeFloating], Pagination]:
43
+ """Retrieve free-floating vehicles near coordinates in a specific region.
44
+
45
+ This service provides access to nearby shared mobility options (such as bikes,
46
+ scooters, or cars) based on user-provided coordinates.
47
+
48
+ Args:
49
+ region_id: The region ID (coverage identifier).
50
+ lon: The longitude coordinate.
51
+ lat: The latitude coordinate.
52
+ request: The request object containing query parameters.
53
+
54
+ Returns:
55
+ A tuple containing sequences of FreeFloating objects and Pagination object.
56
+
57
+ Note:
58
+ This feature requires a specific configuration from a freefloating data service provider.
59
+ Therefore, this service is not available by default.
60
+ """
61
+ request_url = f"{self.base_navitia_url}/coverage/{region_id}/coords/{lon};{lat}/freefloatings_nearby"
62
+ return self._get_freefloatings_nearby(request_url, request.to_filters())
63
+
64
+ def list_freefloatings_nearby_with_resource_path(
65
+ self,
66
+ region_id: str,
67
+ resource_path: str,
68
+ request: FreefloatingsNearbyRequest,
69
+ ) -> Tuple[Sequence[FreeFloating], Pagination]:
70
+ """Retrieve free-floating vehicles near a specific resource path in a region.
71
+
72
+ This service provides access to nearby shared mobility options (such as bikes,
73
+ scooters, or cars) near a specific resource (stop area, address, etc.).
74
+
75
+ Args:
76
+ region_id: The region ID (coverage identifier).
77
+ resource_path: The resource path (e.g., 'stop_areas/stop_area:XXX').
78
+ request: The request object containing query parameters.
79
+
80
+ Returns:
81
+ A tuple containing sequences of FreeFloating objects and Pagination object.
82
+
83
+ Note:
84
+ This feature requires a specific configuration from a freefloating data service provider.
85
+ Therefore, this service is not available by default.
86
+ """
87
+ request_url = f"{self.base_navitia_url}/coverage/{region_id}/{resource_path}/freefloatings_nearby"
88
+ return self._get_freefloatings_nearby(request_url, request.to_filters())
89
+
90
+ def list_freefloatings_nearby_by_coordinates(
91
+ self,
92
+ region_lon: float,
93
+ region_lat: float,
94
+ lon: float,
95
+ lat: float,
96
+ request: FreefloatingsNearbyRequest = FreefloatingsNearbyRequest(),
97
+ ) -> Tuple[Sequence[FreeFloating], Pagination]:
98
+ """Retrieve free-floating vehicles near coordinates, navitia guesses the region from coordinates.
99
+
100
+ This service provides access to nearby shared mobility options (such as bikes,
101
+ scooters, or cars) based on user-provided coordinates. Navitia will automatically
102
+ determine the region based on the provided region coordinates.
103
+
104
+ Args:
105
+ region_lon: The longitude coordinate for region identification.
106
+ region_lat: The latitude coordinate for region identification.
107
+ lon: The longitude coordinate for the search center.
108
+ lat: The latitude coordinate for the search center.
109
+ request: The request object containing query parameters.
110
+
111
+ Returns:
112
+ A tuple containing sequences of FreeFloating objects and Pagination object.
113
+
114
+ Note:
115
+ This feature requires a specific configuration from a freefloating data service provider.
116
+ Therefore, this service is not available by default.
117
+ """
118
+ request_url = f"{self.base_navitia_url}/coverage/{region_lon};{region_lat}/coords/{lon};{lat}/freefloatings_nearby"
119
+ return self._get_freefloatings_nearby(request_url, request.to_filters())
120
+
121
+ def list_freefloatings_nearby_by_coordinates_only(
122
+ self,
123
+ lon: float,
124
+ lat: float,
125
+ request: FreefloatingsNearbyRequest = FreefloatingsNearbyRequest(),
126
+ ) -> Tuple[Sequence[FreeFloating], Pagination]:
127
+ """Retrieve free-floating vehicles near coordinates without any region id.
128
+
129
+ This service provides access to nearby shared mobility options (such as bikes,
130
+ scooters, or cars) based on user-provided coordinates. This method does not require
131
+ a region ID; Navitia will automatically determine the appropriate region.
132
+
133
+ Args:
134
+ lon: The longitude coordinate.
135
+ lat: The latitude coordinate.
136
+ request: The request object containing query parameters.
137
+
138
+ Returns:
139
+ A tuple containing sequences of FreeFloating objects and Pagination object.
140
+
141
+ Note:
142
+ This feature requires a specific configuration from a freefloating data service provider.
143
+ Therefore, this service is not available by default.
144
+ """
145
+ request_url = f"{self.base_navitia_url}/coord/{lon};{lat}/freefloatings_nearby"
146
+ return self._get_freefloatings_nearby(request_url, request.to_filters())