transitmatters 0.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 (112) hide show
  1. transitmatters/__init__.py +21 -0
  2. transitmatters/_generated/__init__.py +8 -0
  3. transitmatters/_generated/api/__init__.py +1 -0
  4. transitmatters/_generated/api/api/__init__.py +1 -0
  5. transitmatters/_generated/api/api/get_aggregate_dwells.py +214 -0
  6. transitmatters/_generated/api/api/get_aggregate_headways.py +214 -0
  7. transitmatters/_generated/api/api/get_aggregate_travel_times.py +233 -0
  8. transitmatters/_generated/api/api/get_aggregate_travel_times_v2.py +224 -0
  9. transitmatters/_generated/api/api/get_current_alerts.py +136 -0
  10. transitmatters/_generated/api/api/get_dwells.py +224 -0
  11. transitmatters/_generated/api/api/get_facilities.py +129 -0
  12. transitmatters/_generated/api/api/get_headways.py +224 -0
  13. transitmatters/_generated/api/api/get_healthcheck.py +134 -0
  14. transitmatters/_generated/api/api/get_historical_alerts.py +244 -0
  15. transitmatters/_generated/api/api/get_line_delays.py +228 -0
  16. transitmatters/_generated/api/api/get_ridership.py +207 -0
  17. transitmatters/_generated/api/api/get_routes.py +145 -0
  18. transitmatters/_generated/api/api/get_scheduled_service.py +217 -0
  19. transitmatters/_generated/api/api/get_service_hours.py +224 -0
  20. transitmatters/_generated/api/api/get_service_ridership_dashboard.py +131 -0
  21. transitmatters/_generated/api/api/get_speed_restrictions.py +184 -0
  22. transitmatters/_generated/api/api/get_stops_for_route.py +190 -0
  23. transitmatters/_generated/api/api/get_time_predictions.py +176 -0
  24. transitmatters/_generated/api/api/get_travel_times.py +247 -0
  25. transitmatters/_generated/api/api/get_trip_metrics.py +229 -0
  26. transitmatters/_generated/client.py +272 -0
  27. transitmatters/_generated/errors.py +16 -0
  28. transitmatters/_generated/models/__init__.py +161 -0
  29. transitmatters/_generated/models/aggregate_by_date.py +157 -0
  30. transitmatters/_generated/models/aggregate_by_time.py +140 -0
  31. transitmatters/_generated/models/aggregate_dwells_params.py +93 -0
  32. transitmatters/_generated/models/aggregate_headways_params.py +93 -0
  33. transitmatters/_generated/models/aggregate_travel_times_params.py +107 -0
  34. transitmatters/_generated/models/alert.py +109 -0
  35. transitmatters/_generated/models/alert_active_period.py +116 -0
  36. transitmatters/_generated/models/alert_delays_by_line_params.py +106 -0
  37. transitmatters/_generated/models/alert_delays_by_line_params_agg.py +9 -0
  38. transitmatters/_generated/models/alerts_by_date_params.py +71 -0
  39. transitmatters/_generated/models/by_day_kind_service_levels.py +75 -0
  40. transitmatters/_generated/models/dashboard_line.py +202 -0
  41. transitmatters/_generated/models/dashboard_line_ridershiphistory.py +46 -0
  42. transitmatters/_generated/models/dashboard_line_servicehistory.py +46 -0
  43. transitmatters/_generated/models/dashboard_service_day.py +107 -0
  44. transitmatters/_generated/models/dashboard_service_regime.py +104 -0
  45. transitmatters/_generated/models/dashboard_service_regimes.py +104 -0
  46. transitmatters/_generated/models/dashboard_summary.py +232 -0
  47. transitmatters/_generated/models/dashboard_summary_totalridershiphistory.py +46 -0
  48. transitmatters/_generated/models/dashboard_summary_totalservicehistory.py +46 -0
  49. transitmatters/_generated/models/dwell_event.py +130 -0
  50. transitmatters/_generated/models/dwell_params.py +71 -0
  51. transitmatters/_generated/models/error_response.py +72 -0
  52. transitmatters/_generated/models/facilities_response.py +156 -0
  53. transitmatters/_generated/models/facilities_response_links.py +64 -0
  54. transitmatters/_generated/models/facility.py +171 -0
  55. transitmatters/_generated/models/facility_attributes.py +194 -0
  56. transitmatters/_generated/models/facility_links.py +64 -0
  57. transitmatters/_generated/models/facility_property.py +88 -0
  58. transitmatters/_generated/models/facility_relationships.py +101 -0
  59. transitmatters/_generated/models/facility_stop_relationship.py +102 -0
  60. transitmatters/_generated/models/get_line_delays_agg.py +9 -0
  61. transitmatters/_generated/models/get_scheduled_service_agg.py +10 -0
  62. transitmatters/_generated/models/get_scheduled_service_response.py +128 -0
  63. transitmatters/_generated/models/get_service_hours_agg.py +10 -0
  64. transitmatters/_generated/models/get_trip_metrics_agg.py +10 -0
  65. transitmatters/_generated/models/headway_aggregate_by_date.py +173 -0
  66. transitmatters/_generated/models/headway_event.py +144 -0
  67. transitmatters/_generated/models/headway_params.py +71 -0
  68. transitmatters/_generated/models/healthcheck_response.py +133 -0
  69. transitmatters/_generated/models/healthcheck_response_failed_checks.py +46 -0
  70. transitmatters/_generated/models/json_api_resource_identifier.py +72 -0
  71. transitmatters/_generated/models/json_api_version.py +78 -0
  72. transitmatters/_generated/models/line_delay_entry.py +200 -0
  73. transitmatters/_generated/models/live_alert.py +182 -0
  74. transitmatters/_generated/models/ridership_entry.py +72 -0
  75. transitmatters/_generated/models/ridership_params.py +88 -0
  76. transitmatters/_generated/models/route_not_found_response.py +64 -0
  77. transitmatters/_generated/models/routes_response.py +91 -0
  78. transitmatters/_generated/models/scheduled_service_count.py +72 -0
  79. transitmatters/_generated/models/scheduled_service_params.py +98 -0
  80. transitmatters/_generated/models/scheduled_service_params_agg.py +10 -0
  81. transitmatters/_generated/models/service_hours_entry.py +80 -0
  82. transitmatters/_generated/models/service_hours_params.py +97 -0
  83. transitmatters/_generated/models/service_hours_params_agg.py +10 -0
  84. transitmatters/_generated/models/service_levels_by_day_kind.py +176 -0
  85. transitmatters/_generated/models/service_ridership_dashboard_response.py +116 -0
  86. transitmatters/_generated/models/service_ridership_dashboard_response_linedata.py +63 -0
  87. transitmatters/_generated/models/service_ridership_dashboard_response_modedata.py +63 -0
  88. transitmatters/_generated/models/speed_restriction_zone.py +172 -0
  89. transitmatters/_generated/models/speed_restrictions_params.py +78 -0
  90. transitmatters/_generated/models/speed_restrictions_response.py +134 -0
  91. transitmatters/_generated/models/station_stop.py +250 -0
  92. transitmatters/_generated/models/station_stop_stops.py +56 -0
  93. transitmatters/_generated/models/stops_response.py +139 -0
  94. transitmatters/_generated/models/stops_response_direction.py +46 -0
  95. transitmatters/_generated/models/time_prediction_bucket.py +112 -0
  96. transitmatters/_generated/models/time_prediction_params.py +67 -0
  97. transitmatters/_generated/models/time_prediction_week.py +94 -0
  98. transitmatters/_generated/models/travel_time_aggregate_2_response.py +96 -0
  99. transitmatters/_generated/models/travel_time_event.py +175 -0
  100. transitmatters/_generated/models/travel_time_params.py +85 -0
  101. transitmatters/_generated/models/trip_metrics_by_line_params.py +97 -0
  102. transitmatters/_generated/models/trip_metrics_by_line_params_agg.py +10 -0
  103. transitmatters/_generated/models/trip_metrics_entry.py +143 -0
  104. transitmatters/_generated/types.py +54 -0
  105. transitmatters/client.py +761 -0
  106. transitmatters/errors.py +33 -0
  107. transitmatters/models.py +12 -0
  108. transitmatters/py.typed +0 -0
  109. transitmatters-0.1.0.dist-info/METADATA +178 -0
  110. transitmatters-0.1.0.dist-info/RECORD +112 -0
  111. transitmatters-0.1.0.dist-info/WHEEL +4 -0
  112. transitmatters-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,21 @@
1
+ """Python client for the TransitMatters Data Dashboard API.
2
+
3
+ .. include:: ../../README.md
4
+ :start-after: <!-- The API docs include this file from here down. -->
5
+ """
6
+
7
+ from . import models
8
+ from .client import DEFAULT_BASE_URL, AsyncTransitMatters, TransitMatters
9
+ from .errors import APIError, TransitMattersError
10
+
11
+ __docformat__ = "google"
12
+
13
+ # Ordered for the API docs, which list members in this order.
14
+ __all__ = [ # noqa: RUF022
15
+ "TransitMatters",
16
+ "AsyncTransitMatters",
17
+ "APIError",
18
+ "TransitMattersError",
19
+ "DEFAULT_BASE_URL",
20
+ "models",
21
+ ]
@@ -0,0 +1,8 @@
1
+ """A client library for accessing Data Dashboard API"""
2
+
3
+ from .client import AuthenticatedClient, Client
4
+
5
+ __all__ = (
6
+ "AuthenticatedClient",
7
+ "Client",
8
+ )
@@ -0,0 +1 @@
1
+ """Contains methods for accessing the API"""
@@ -0,0 +1 @@
1
+ """Contains endpoint functions for accessing the API"""
@@ -0,0 +1,214 @@
1
+ from http import HTTPStatus
2
+ from typing import Any
3
+
4
+ import httpx
5
+
6
+ from ...client import AuthenticatedClient, Client
7
+ from ...types import Response, UNSET
8
+ from ... import errors
9
+
10
+ from ...models.aggregate_by_date import AggregateByDate
11
+ from ...models.error_response import ErrorResponse
12
+ from ...types import Unset
13
+ import datetime
14
+
15
+
16
+ def _get_kwargs(
17
+ *,
18
+ start_date: datetime.date,
19
+ end_date: datetime.date,
20
+ stop: list[str] | Unset = UNSET,
21
+ ) -> dict[str, Any]:
22
+
23
+ params: dict[str, Any] = {}
24
+
25
+ json_start_date = start_date.isoformat()
26
+ params["start_date"] = json_start_date
27
+
28
+ json_end_date = end_date.isoformat()
29
+ params["end_date"] = json_end_date
30
+
31
+ json_stop: list[str] | Unset = UNSET
32
+ if not isinstance(stop, Unset):
33
+ json_stop = stop
34
+
35
+ params["stop"] = json_stop
36
+
37
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
38
+
39
+ _kwargs: dict[str, Any] = {
40
+ "method": "get",
41
+ "url": "/api/aggregate/dwells",
42
+ "params": params,
43
+ }
44
+
45
+ return _kwargs
46
+
47
+
48
+ def _parse_response(
49
+ *, client: AuthenticatedClient | Client, response: httpx.Response
50
+ ) -> ErrorResponse | list[AggregateByDate] | None:
51
+ if response.status_code == 200:
52
+ response_200 = []
53
+ _response_200 = response.json()
54
+ for componentsschemas_dwells_aggregate_response_item_data in _response_200:
55
+ componentsschemas_dwells_aggregate_response_item = (
56
+ AggregateByDate.from_dict(
57
+ componentsschemas_dwells_aggregate_response_item_data
58
+ )
59
+ )
60
+
61
+ response_200.append(componentsschemas_dwells_aggregate_response_item)
62
+
63
+ return response_200
64
+
65
+ if response.status_code == 400:
66
+ response_400 = ErrorResponse.from_dict(response.json())
67
+
68
+ return response_400
69
+
70
+ if client.raise_on_unexpected_status:
71
+ raise errors.UnexpectedStatus(response.status_code, response.content)
72
+ else:
73
+ return None
74
+
75
+
76
+ def _build_response(
77
+ *, client: AuthenticatedClient | Client, response: httpx.Response
78
+ ) -> Response[ErrorResponse | list[AggregateByDate]]:
79
+ return Response(
80
+ status_code=HTTPStatus(response.status_code),
81
+ content=response.content,
82
+ headers=response.headers,
83
+ parsed=_parse_response(client=client, response=response),
84
+ )
85
+
86
+
87
+ def sync_detailed(
88
+ *,
89
+ client: AuthenticatedClient | Client,
90
+ start_date: datetime.date,
91
+ end_date: datetime.date,
92
+ stop: list[str] | Unset = UNSET,
93
+ ) -> Response[ErrorResponse | list[AggregateByDate]]:
94
+ """Retrieve aggregated dwell time data over a date range for the given stop(s).
95
+
96
+ Args:
97
+ start_date (datetime.date):
98
+ end_date (datetime.date):
99
+ stop (list[str] | Unset):
100
+
101
+ Raises:
102
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
103
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
104
+
105
+ Returns:
106
+ Response[ErrorResponse | list[AggregateByDate]]
107
+ """
108
+
109
+ kwargs = _get_kwargs(
110
+ start_date=start_date,
111
+ end_date=end_date,
112
+ stop=stop,
113
+ )
114
+
115
+ response = client.get_httpx_client().request(
116
+ **kwargs,
117
+ )
118
+
119
+ return _build_response(client=client, response=response)
120
+
121
+
122
+ def sync(
123
+ *,
124
+ client: AuthenticatedClient | Client,
125
+ start_date: datetime.date,
126
+ end_date: datetime.date,
127
+ stop: list[str] | Unset = UNSET,
128
+ ) -> ErrorResponse | list[AggregateByDate] | None:
129
+ """Retrieve aggregated dwell time data over a date range for the given stop(s).
130
+
131
+ Args:
132
+ start_date (datetime.date):
133
+ end_date (datetime.date):
134
+ stop (list[str] | Unset):
135
+
136
+ Raises:
137
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
138
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
139
+
140
+ Returns:
141
+ ErrorResponse | list[AggregateByDate]
142
+ """
143
+
144
+ return sync_detailed(
145
+ client=client,
146
+ start_date=start_date,
147
+ end_date=end_date,
148
+ stop=stop,
149
+ ).parsed
150
+
151
+
152
+ async def asyncio_detailed(
153
+ *,
154
+ client: AuthenticatedClient | Client,
155
+ start_date: datetime.date,
156
+ end_date: datetime.date,
157
+ stop: list[str] | Unset = UNSET,
158
+ ) -> Response[ErrorResponse | list[AggregateByDate]]:
159
+ """Retrieve aggregated dwell time data over a date range for the given stop(s).
160
+
161
+ Args:
162
+ start_date (datetime.date):
163
+ end_date (datetime.date):
164
+ stop (list[str] | Unset):
165
+
166
+ Raises:
167
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
168
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
169
+
170
+ Returns:
171
+ Response[ErrorResponse | list[AggregateByDate]]
172
+ """
173
+
174
+ kwargs = _get_kwargs(
175
+ start_date=start_date,
176
+ end_date=end_date,
177
+ stop=stop,
178
+ )
179
+
180
+ response = await client.get_async_httpx_client().request(**kwargs)
181
+
182
+ return _build_response(client=client, response=response)
183
+
184
+
185
+ async def asyncio(
186
+ *,
187
+ client: AuthenticatedClient | Client,
188
+ start_date: datetime.date,
189
+ end_date: datetime.date,
190
+ stop: list[str] | Unset = UNSET,
191
+ ) -> ErrorResponse | list[AggregateByDate] | None:
192
+ """Retrieve aggregated dwell time data over a date range for the given stop(s).
193
+
194
+ Args:
195
+ start_date (datetime.date):
196
+ end_date (datetime.date):
197
+ stop (list[str] | Unset):
198
+
199
+ Raises:
200
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
201
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
202
+
203
+ Returns:
204
+ ErrorResponse | list[AggregateByDate]
205
+ """
206
+
207
+ return (
208
+ await asyncio_detailed(
209
+ client=client,
210
+ start_date=start_date,
211
+ end_date=end_date,
212
+ stop=stop,
213
+ )
214
+ ).parsed
@@ -0,0 +1,214 @@
1
+ from http import HTTPStatus
2
+ from typing import Any
3
+
4
+ import httpx
5
+
6
+ from ...client import AuthenticatedClient, Client
7
+ from ...types import Response, UNSET
8
+ from ... import errors
9
+
10
+ from ...models.error_response import ErrorResponse
11
+ from ...models.headway_aggregate_by_date import HeadwayAggregateByDate
12
+ from ...types import Unset
13
+ import datetime
14
+
15
+
16
+ def _get_kwargs(
17
+ *,
18
+ start_date: datetime.date,
19
+ end_date: datetime.date,
20
+ stop: list[str] | Unset = UNSET,
21
+ ) -> dict[str, Any]:
22
+
23
+ params: dict[str, Any] = {}
24
+
25
+ json_start_date = start_date.isoformat()
26
+ params["start_date"] = json_start_date
27
+
28
+ json_end_date = end_date.isoformat()
29
+ params["end_date"] = json_end_date
30
+
31
+ json_stop: list[str] | Unset = UNSET
32
+ if not isinstance(stop, Unset):
33
+ json_stop = stop
34
+
35
+ params["stop"] = json_stop
36
+
37
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
38
+
39
+ _kwargs: dict[str, Any] = {
40
+ "method": "get",
41
+ "url": "/api/aggregate/headways",
42
+ "params": params,
43
+ }
44
+
45
+ return _kwargs
46
+
47
+
48
+ def _parse_response(
49
+ *, client: AuthenticatedClient | Client, response: httpx.Response
50
+ ) -> ErrorResponse | list[HeadwayAggregateByDate] | None:
51
+ if response.status_code == 200:
52
+ response_200 = []
53
+ _response_200 = response.json()
54
+ for componentsschemas_headways_aggregate_response_item_data in _response_200:
55
+ componentsschemas_headways_aggregate_response_item = (
56
+ HeadwayAggregateByDate.from_dict(
57
+ componentsschemas_headways_aggregate_response_item_data
58
+ )
59
+ )
60
+
61
+ response_200.append(componentsschemas_headways_aggregate_response_item)
62
+
63
+ return response_200
64
+
65
+ if response.status_code == 400:
66
+ response_400 = ErrorResponse.from_dict(response.json())
67
+
68
+ return response_400
69
+
70
+ if client.raise_on_unexpected_status:
71
+ raise errors.UnexpectedStatus(response.status_code, response.content)
72
+ else:
73
+ return None
74
+
75
+
76
+ def _build_response(
77
+ *, client: AuthenticatedClient | Client, response: httpx.Response
78
+ ) -> Response[ErrorResponse | list[HeadwayAggregateByDate]]:
79
+ return Response(
80
+ status_code=HTTPStatus(response.status_code),
81
+ content=response.content,
82
+ headers=response.headers,
83
+ parsed=_parse_response(client=client, response=response),
84
+ )
85
+
86
+
87
+ def sync_detailed(
88
+ *,
89
+ client: AuthenticatedClient | Client,
90
+ start_date: datetime.date,
91
+ end_date: datetime.date,
92
+ stop: list[str] | Unset = UNSET,
93
+ ) -> Response[ErrorResponse | list[HeadwayAggregateByDate]]:
94
+ """Retrieve aggregated headway data over a date range for the given stop(s).
95
+
96
+ Args:
97
+ start_date (datetime.date):
98
+ end_date (datetime.date):
99
+ stop (list[str] | Unset):
100
+
101
+ Raises:
102
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
103
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
104
+
105
+ Returns:
106
+ Response[ErrorResponse | list[HeadwayAggregateByDate]]
107
+ """
108
+
109
+ kwargs = _get_kwargs(
110
+ start_date=start_date,
111
+ end_date=end_date,
112
+ stop=stop,
113
+ )
114
+
115
+ response = client.get_httpx_client().request(
116
+ **kwargs,
117
+ )
118
+
119
+ return _build_response(client=client, response=response)
120
+
121
+
122
+ def sync(
123
+ *,
124
+ client: AuthenticatedClient | Client,
125
+ start_date: datetime.date,
126
+ end_date: datetime.date,
127
+ stop: list[str] | Unset = UNSET,
128
+ ) -> ErrorResponse | list[HeadwayAggregateByDate] | None:
129
+ """Retrieve aggregated headway data over a date range for the given stop(s).
130
+
131
+ Args:
132
+ start_date (datetime.date):
133
+ end_date (datetime.date):
134
+ stop (list[str] | Unset):
135
+
136
+ Raises:
137
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
138
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
139
+
140
+ Returns:
141
+ ErrorResponse | list[HeadwayAggregateByDate]
142
+ """
143
+
144
+ return sync_detailed(
145
+ client=client,
146
+ start_date=start_date,
147
+ end_date=end_date,
148
+ stop=stop,
149
+ ).parsed
150
+
151
+
152
+ async def asyncio_detailed(
153
+ *,
154
+ client: AuthenticatedClient | Client,
155
+ start_date: datetime.date,
156
+ end_date: datetime.date,
157
+ stop: list[str] | Unset = UNSET,
158
+ ) -> Response[ErrorResponse | list[HeadwayAggregateByDate]]:
159
+ """Retrieve aggregated headway data over a date range for the given stop(s).
160
+
161
+ Args:
162
+ start_date (datetime.date):
163
+ end_date (datetime.date):
164
+ stop (list[str] | Unset):
165
+
166
+ Raises:
167
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
168
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
169
+
170
+ Returns:
171
+ Response[ErrorResponse | list[HeadwayAggregateByDate]]
172
+ """
173
+
174
+ kwargs = _get_kwargs(
175
+ start_date=start_date,
176
+ end_date=end_date,
177
+ stop=stop,
178
+ )
179
+
180
+ response = await client.get_async_httpx_client().request(**kwargs)
181
+
182
+ return _build_response(client=client, response=response)
183
+
184
+
185
+ async def asyncio(
186
+ *,
187
+ client: AuthenticatedClient | Client,
188
+ start_date: datetime.date,
189
+ end_date: datetime.date,
190
+ stop: list[str] | Unset = UNSET,
191
+ ) -> ErrorResponse | list[HeadwayAggregateByDate] | None:
192
+ """Retrieve aggregated headway data over a date range for the given stop(s).
193
+
194
+ Args:
195
+ start_date (datetime.date):
196
+ end_date (datetime.date):
197
+ stop (list[str] | Unset):
198
+
199
+ Raises:
200
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
201
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
202
+
203
+ Returns:
204
+ ErrorResponse | list[HeadwayAggregateByDate]
205
+ """
206
+
207
+ return (
208
+ await asyncio_detailed(
209
+ client=client,
210
+ start_date=start_date,
211
+ end_date=end_date,
212
+ stop=stop,
213
+ )
214
+ ).parsed
@@ -0,0 +1,233 @@
1
+ from http import HTTPStatus
2
+ from typing import Any
3
+
4
+ import httpx
5
+
6
+ from ...client import AuthenticatedClient, Client
7
+ from ...types import Response, UNSET
8
+ from ... import errors
9
+
10
+ from ...models.aggregate_by_date import AggregateByDate
11
+ from ...models.error_response import ErrorResponse
12
+ from ...types import Unset
13
+ import datetime
14
+
15
+
16
+ def _get_kwargs(
17
+ *,
18
+ start_date: datetime.date,
19
+ end_date: datetime.date,
20
+ from_stop: list[str] | Unset = UNSET,
21
+ to_stop: list[str] | Unset = UNSET,
22
+ ) -> dict[str, Any]:
23
+
24
+ params: dict[str, Any] = {}
25
+
26
+ json_start_date = start_date.isoformat()
27
+ params["start_date"] = json_start_date
28
+
29
+ json_end_date = end_date.isoformat()
30
+ params["end_date"] = json_end_date
31
+
32
+ json_from_stop: list[str] | Unset = UNSET
33
+ if not isinstance(from_stop, Unset):
34
+ json_from_stop = from_stop
35
+
36
+ params["from_stop"] = json_from_stop
37
+
38
+ json_to_stop: list[str] | Unset = UNSET
39
+ if not isinstance(to_stop, Unset):
40
+ json_to_stop = to_stop
41
+
42
+ params["to_stop"] = json_to_stop
43
+
44
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
45
+
46
+ _kwargs: dict[str, Any] = {
47
+ "method": "get",
48
+ "url": "/api/aggregate/traveltimes",
49
+ "params": params,
50
+ }
51
+
52
+ return _kwargs
53
+
54
+
55
+ def _parse_response(
56
+ *, client: AuthenticatedClient | Client, response: httpx.Response
57
+ ) -> ErrorResponse | list[AggregateByDate] | None:
58
+ if response.status_code == 200:
59
+ response_200 = []
60
+ _response_200 = response.json()
61
+ for componentsschemas_travel_time_aggregate_response_item_data in _response_200:
62
+ componentsschemas_travel_time_aggregate_response_item = (
63
+ AggregateByDate.from_dict(
64
+ componentsschemas_travel_time_aggregate_response_item_data
65
+ )
66
+ )
67
+
68
+ response_200.append(componentsschemas_travel_time_aggregate_response_item)
69
+
70
+ return response_200
71
+
72
+ if response.status_code == 400:
73
+ response_400 = ErrorResponse.from_dict(response.json())
74
+
75
+ return response_400
76
+
77
+ if client.raise_on_unexpected_status:
78
+ raise errors.UnexpectedStatus(response.status_code, response.content)
79
+ else:
80
+ return None
81
+
82
+
83
+ def _build_response(
84
+ *, client: AuthenticatedClient | Client, response: httpx.Response
85
+ ) -> Response[ErrorResponse | list[AggregateByDate]]:
86
+ return Response(
87
+ status_code=HTTPStatus(response.status_code),
88
+ content=response.content,
89
+ headers=response.headers,
90
+ parsed=_parse_response(client=client, response=response),
91
+ )
92
+
93
+
94
+ def sync_detailed(
95
+ *,
96
+ client: AuthenticatedClient | Client,
97
+ start_date: datetime.date,
98
+ end_date: datetime.date,
99
+ from_stop: list[str] | Unset = UNSET,
100
+ to_stop: list[str] | Unset = UNSET,
101
+ ) -> Response[ErrorResponse | list[AggregateByDate]]:
102
+ """Retrieve aggregated travel time data over a date range, grouped by date.
103
+
104
+ Args:
105
+ start_date (datetime.date):
106
+ end_date (datetime.date):
107
+ from_stop (list[str] | Unset):
108
+ to_stop (list[str] | Unset):
109
+
110
+ Raises:
111
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
112
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
113
+
114
+ Returns:
115
+ Response[ErrorResponse | list[AggregateByDate]]
116
+ """
117
+
118
+ kwargs = _get_kwargs(
119
+ start_date=start_date,
120
+ end_date=end_date,
121
+ from_stop=from_stop,
122
+ to_stop=to_stop,
123
+ )
124
+
125
+ response = client.get_httpx_client().request(
126
+ **kwargs,
127
+ )
128
+
129
+ return _build_response(client=client, response=response)
130
+
131
+
132
+ def sync(
133
+ *,
134
+ client: AuthenticatedClient | Client,
135
+ start_date: datetime.date,
136
+ end_date: datetime.date,
137
+ from_stop: list[str] | Unset = UNSET,
138
+ to_stop: list[str] | Unset = UNSET,
139
+ ) -> ErrorResponse | list[AggregateByDate] | None:
140
+ """Retrieve aggregated travel time data over a date range, grouped by date.
141
+
142
+ Args:
143
+ start_date (datetime.date):
144
+ end_date (datetime.date):
145
+ from_stop (list[str] | Unset):
146
+ to_stop (list[str] | Unset):
147
+
148
+ Raises:
149
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
150
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
151
+
152
+ Returns:
153
+ ErrorResponse | list[AggregateByDate]
154
+ """
155
+
156
+ return sync_detailed(
157
+ client=client,
158
+ start_date=start_date,
159
+ end_date=end_date,
160
+ from_stop=from_stop,
161
+ to_stop=to_stop,
162
+ ).parsed
163
+
164
+
165
+ async def asyncio_detailed(
166
+ *,
167
+ client: AuthenticatedClient | Client,
168
+ start_date: datetime.date,
169
+ end_date: datetime.date,
170
+ from_stop: list[str] | Unset = UNSET,
171
+ to_stop: list[str] | Unset = UNSET,
172
+ ) -> Response[ErrorResponse | list[AggregateByDate]]:
173
+ """Retrieve aggregated travel time data over a date range, grouped by date.
174
+
175
+ Args:
176
+ start_date (datetime.date):
177
+ end_date (datetime.date):
178
+ from_stop (list[str] | Unset):
179
+ to_stop (list[str] | Unset):
180
+
181
+ Raises:
182
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
183
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
184
+
185
+ Returns:
186
+ Response[ErrorResponse | list[AggregateByDate]]
187
+ """
188
+
189
+ kwargs = _get_kwargs(
190
+ start_date=start_date,
191
+ end_date=end_date,
192
+ from_stop=from_stop,
193
+ to_stop=to_stop,
194
+ )
195
+
196
+ response = await client.get_async_httpx_client().request(**kwargs)
197
+
198
+ return _build_response(client=client, response=response)
199
+
200
+
201
+ async def asyncio(
202
+ *,
203
+ client: AuthenticatedClient | Client,
204
+ start_date: datetime.date,
205
+ end_date: datetime.date,
206
+ from_stop: list[str] | Unset = UNSET,
207
+ to_stop: list[str] | Unset = UNSET,
208
+ ) -> ErrorResponse | list[AggregateByDate] | None:
209
+ """Retrieve aggregated travel time data over a date range, grouped by date.
210
+
211
+ Args:
212
+ start_date (datetime.date):
213
+ end_date (datetime.date):
214
+ from_stop (list[str] | Unset):
215
+ to_stop (list[str] | Unset):
216
+
217
+ Raises:
218
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
219
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
220
+
221
+ Returns:
222
+ ErrorResponse | list[AggregateByDate]
223
+ """
224
+
225
+ return (
226
+ await asyncio_detailed(
227
+ client=client,
228
+ start_date=start_date,
229
+ end_date=end_date,
230
+ from_stop=from_stop,
231
+ to_stop=to_stop,
232
+ )
233
+ ).parsed