robosystems-client 0.2.3__py3-none-any.whl → 0.2.4__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.

Potentially problematic release.


This version of robosystems-client might be problematic. Click here for more details.

Files changed (103) hide show
  1. robosystems_client/api/agent/auto_select_agent.py +1 -41
  2. robosystems_client/api/agent/batch_process_queries.py +1 -41
  3. robosystems_client/api/agent/execute_specific_agent.py +1 -41
  4. robosystems_client/api/agent/get_agent_metadata.py +5 -49
  5. robosystems_client/api/agent/list_agents.py +4 -42
  6. robosystems_client/api/agent/recommend_agent.py +5 -45
  7. robosystems_client/api/auth/generate_sso_token.py +0 -18
  8. robosystems_client/api/auth/get_current_auth_user.py +14 -74
  9. robosystems_client/api/auth/logout_user.py +14 -50
  10. robosystems_client/api/auth/refresh_auth_session.py +14 -50
  11. robosystems_client/api/auth/resend_verification_email.py +14 -74
  12. robosystems_client/api/backup/create_backup.py +5 -45
  13. robosystems_client/api/backup/get_backup_download_url.py +4 -42
  14. robosystems_client/api/backup/get_backup_stats.py +5 -49
  15. robosystems_client/api/backup/list_backups.py +4 -42
  16. robosystems_client/api/backup/restore_backup.py +5 -45
  17. robosystems_client/api/connections/create_connection.py +5 -45
  18. robosystems_client/api/connections/create_link_token.py +5 -45
  19. robosystems_client/api/connections/delete_connection.py +5 -49
  20. robosystems_client/api/connections/exchange_link_token.py +5 -45
  21. robosystems_client/api/connections/get_connection.py +5 -49
  22. robosystems_client/api/connections/get_connection_options.py +5 -49
  23. robosystems_client/api/connections/init_o_auth.py +5 -45
  24. robosystems_client/api/connections/list_connections.py +4 -42
  25. robosystems_client/api/connections/oauth_callback.py +5 -45
  26. robosystems_client/api/connections/sync_connection.py +5 -45
  27. robosystems_client/api/graph_analytics/get_graph_metrics.py +5 -49
  28. robosystems_client/api/graph_analytics/get_graph_usage_stats.py +4 -42
  29. robosystems_client/api/graph_billing/get_current_graph_bill.py +5 -49
  30. robosystems_client/api/graph_billing/get_graph_billing_history.py +4 -42
  31. robosystems_client/api/graph_billing/get_graph_monthly_bill.py +5 -49
  32. robosystems_client/api/graph_billing/get_graph_usage_details.py +4 -42
  33. robosystems_client/api/graph_credits/check_credit_balance.py +0 -38
  34. robosystems_client/api/graph_credits/check_storage_limits.py +1 -45
  35. robosystems_client/api/graph_credits/get_credit_summary.py +1 -45
  36. robosystems_client/api/graph_credits/get_storage_usage.py +0 -38
  37. robosystems_client/api/graph_credits/list_credit_transactions.py +4 -42
  38. robosystems_client/api/graph_health/get_database_health.py +5 -49
  39. robosystems_client/api/graph_info/get_database_info.py +5 -49
  40. robosystems_client/api/graph_limits/get_graph_limits.py +5 -49
  41. robosystems_client/api/graphs/create_graph.py +21 -57
  42. robosystems_client/api/graphs/get_available_extensions.py +131 -15
  43. robosystems_client/api/graphs/get_graphs.py +154 -79
  44. robosystems_client/api/graphs/select_graph.py +117 -49
  45. robosystems_client/api/mcp/call_mcp_tool.py +24 -47
  46. robosystems_client/api/mcp/list_mcp_tools.py +13 -61
  47. robosystems_client/api/operations/cancel_operation.py +1 -45
  48. robosystems_client/api/operations/get_operation_status.py +1 -45
  49. robosystems_client/api/query/execute_cypher_query.py +69 -53
  50. robosystems_client/api/schema/export_graph_schema.py +223 -65
  51. robosystems_client/api/schema/get_graph_schema.py +137 -79
  52. robosystems_client/api/schema/validate_schema.py +5 -45
  53. robosystems_client/api/subgraphs/create_subgraph.py +5 -45
  54. robosystems_client/api/subgraphs/delete_subgraph.py +5 -45
  55. robosystems_client/api/subgraphs/get_subgraph_info.py +5 -49
  56. robosystems_client/api/subgraphs/get_subgraph_quota.py +5 -49
  57. robosystems_client/api/subgraphs/list_subgraphs.py +5 -49
  58. robosystems_client/api/tables/delete_file.py +181 -301
  59. robosystems_client/api/tables/get_file_info.py +117 -265
  60. robosystems_client/api/tables/get_upload_url.py +193 -389
  61. robosystems_client/api/tables/ingest_tables.py +277 -465
  62. robosystems_client/api/tables/list_table_files.py +193 -373
  63. robosystems_client/api/tables/list_tables.py +189 -361
  64. robosystems_client/api/tables/query_tables.py +85 -141
  65. robosystems_client/api/tables/update_file_status.py +205 -349
  66. robosystems_client/api/user/create_user_api_key.py +1 -41
  67. robosystems_client/api/user/get_all_credit_summaries.py +14 -111
  68. robosystems_client/api/user/get_current_user.py +14 -75
  69. robosystems_client/api/user/list_user_api_keys.py +14 -75
  70. robosystems_client/api/user/revoke_user_api_key.py +1 -45
  71. robosystems_client/api/user/update_user.py +1 -41
  72. robosystems_client/api/user/update_user_api_key.py +1 -41
  73. robosystems_client/api/user/update_user_password.py +1 -41
  74. robosystems_client/api/user_analytics/get_detailed_user_analytics.py +0 -38
  75. robosystems_client/api/user_analytics/get_user_usage_overview.py +14 -75
  76. robosystems_client/api/user_limits/get_all_shared_repository_limits.py +14 -105
  77. robosystems_client/api/user_limits/get_shared_repository_limits.py +1 -45
  78. robosystems_client/api/user_limits/get_user_limits.py +14 -75
  79. robosystems_client/api/user_limits/get_user_usage.py +14 -75
  80. robosystems_client/api/user_subscriptions/cancel_shared_repository_subscription.py +1 -45
  81. robosystems_client/api/user_subscriptions/get_repository_credits.py +1 -45
  82. robosystems_client/api/user_subscriptions/get_shared_repository_credits.py +14 -75
  83. robosystems_client/api/user_subscriptions/get_user_shared_subscriptions.py +0 -38
  84. robosystems_client/api/user_subscriptions/subscribe_to_shared_repository.py +1 -41
  85. robosystems_client/api/user_subscriptions/upgrade_shared_repository_subscription.py +1 -41
  86. robosystems_client/extensions/__init__.py +8 -1
  87. robosystems_client/extensions/auth_integration.py +1 -2
  88. robosystems_client/extensions/query_client.py +3 -2
  89. robosystems_client/extensions/sse_client.py +1 -1
  90. robosystems_client/extensions/table_ingest_client.py +5 -0
  91. robosystems_client/extensions/utils.py +2 -2
  92. robosystems_client/models/__init__.py +4 -4
  93. robosystems_client/models/create_graph_request.py +4 -3
  94. robosystems_client/models/cypher_query_request.py +5 -22
  95. robosystems_client/models/schema_export_response.py +4 -2
  96. robosystems_client/models/schema_info_response.py +77 -0
  97. robosystems_client/models/{get_graph_schema_response_getgraphschema.py → schema_info_response_schema.py} +6 -6
  98. robosystems_client/models/schema_validation_response.py +7 -6
  99. robosystems_client/models/table_query_request.py +37 -2
  100. {robosystems_client-0.2.3.dist-info → robosystems_client-0.2.4.dist-info}/METADATA +2 -4
  101. {robosystems_client-0.2.3.dist-info → robosystems_client-0.2.4.dist-info}/RECORD +103 -102
  102. {robosystems_client-0.2.3.dist-info → robosystems_client-0.2.4.dist-info}/WHEEL +0 -0
  103. {robosystems_client-0.2.3.dist-info → robosystems_client-0.2.4.dist-info}/licenses/LICENSE +0 -0
@@ -8,38 +8,18 @@ from ...client import AuthenticatedClient, Client
8
8
  from ...models.error_response import ErrorResponse
9
9
  from ...models.get_file_info_response import GetFileInfoResponse
10
10
  from ...models.http_validation_error import HTTPValidationError
11
- from ...types import UNSET, Response, Unset
11
+ from ...types import Response
12
12
 
13
13
 
14
14
  def _get_kwargs(
15
15
  graph_id: str,
16
16
  file_id: str,
17
- *,
18
- token: Union[None, Unset, str] = UNSET,
19
- authorization: Union[None, Unset, str] = UNSET,
20
17
  ) -> dict[str, Any]:
21
- headers: dict[str, Any] = {}
22
- if not isinstance(authorization, Unset):
23
- headers["authorization"] = authorization
24
-
25
- params: dict[str, Any] = {}
26
-
27
- json_token: Union[None, Unset, str]
28
- if isinstance(token, Unset):
29
- json_token = UNSET
30
- else:
31
- json_token = token
32
- params["token"] = json_token
33
-
34
- params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
35
-
36
18
  _kwargs: dict[str, Any] = {
37
19
  "method": "get",
38
20
  "url": f"/v1/graphs/{graph_id}/tables/files/{file_id}",
39
- "params": params,
40
21
  }
41
22
 
42
- _kwargs["headers"] = headers
43
23
  return _kwargs
44
24
 
45
25
 
@@ -92,72 +72,40 @@ def sync_detailed(
92
72
  file_id: str,
93
73
  *,
94
74
  client: AuthenticatedClient,
95
- token: Union[None, Unset, str] = UNSET,
96
- authorization: Union[None, Unset, str] = UNSET,
97
75
  ) -> Response[Union[Any, ErrorResponse, GetFileInfoResponse, HTTPValidationError]]:
98
- r""" Get File Information
99
-
100
- Get detailed information about a specific file.
101
-
102
- **Purpose:**
103
- Retrieve comprehensive metadata for a single file, including upload status,
104
- size, row count, and timestamps. Useful for validating individual files
105
- before ingestion.
106
-
107
- **Use Cases:**
108
- - Validate file upload completion
109
- - Check file metadata before ingestion
110
- - Debug upload issues
111
- - Verify file format and size
112
- - Track file lifecycle
113
-
114
- **Example Response:**
115
- ```json
116
- {
117
- \"file_id\": \"f123\",
118
- \"graph_id\": \"kg123\",
119
- \"table_id\": \"t456\",
120
- \"table_name\": \"Entity\",
121
- \"file_name\": \"entities_batch1.parquet\",
122
- \"file_format\": \"parquet\",
123
- \"size_bytes\": 1048576,
124
- \"row_count\": 5000,
125
- \"upload_status\": \"uploaded\",
126
- \"upload_method\": \"presigned_url\",
127
- \"created_at\": \"2025-10-28T10:00:00Z\",
128
- \"uploaded_at\": \"2025-10-28T10:01:30Z\",
129
- \"s3_key\": \"user-staging/user123/kg123/Entity/entities_batch1.parquet\"
130
- }
131
- ```
132
-
133
- **Example Usage:**
134
- ```bash
135
- curl -H \"Authorization: Bearer YOUR_TOKEN\" \
136
- https://api.robosystems.ai/v1/graphs/kg123/tables/files/f123
137
- ```
138
-
139
- **Note:**
140
- File info retrieval is included - no credit consumption.
141
-
142
- Args:
143
- graph_id (str): Graph database identifier
144
- file_id (str): File ID
145
- token (Union[None, Unset, str]): JWT token for SSE authentication
146
- authorization (Union[None, Unset, str]):
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
- Response[Union[Any, ErrorResponse, GetFileInfoResponse, HTTPValidationError]]
154
- """
76
+ """Get File Information
77
+
78
+ Get detailed information about a specific file.
79
+
80
+ Retrieve comprehensive metadata for a single file, including upload status,
81
+ size, row count, and timestamps. Useful for validating individual files
82
+ before ingestion.
83
+
84
+ **Use Cases:**
85
+ - Validate file upload completion
86
+ - Check file metadata before ingestion
87
+ - Debug upload issues
88
+ - Verify file format and size
89
+ - Track file lifecycle
90
+
91
+ **Note:**
92
+ File info retrieval is included - no credit consumption
93
+
94
+ Args:
95
+ graph_id (str):
96
+ file_id (str): File ID
97
+
98
+ Raises:
99
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
100
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
101
+
102
+ Returns:
103
+ Response[Union[Any, ErrorResponse, GetFileInfoResponse, HTTPValidationError]]
104
+ """
155
105
 
156
106
  kwargs = _get_kwargs(
157
107
  graph_id=graph_id,
158
108
  file_id=file_id,
159
- token=token,
160
- authorization=authorization,
161
109
  )
162
110
 
163
111
  response = client.get_httpx_client().request(
@@ -172,73 +120,41 @@ def sync(
172
120
  file_id: str,
173
121
  *,
174
122
  client: AuthenticatedClient,
175
- token: Union[None, Unset, str] = UNSET,
176
- authorization: Union[None, Unset, str] = UNSET,
177
123
  ) -> Optional[Union[Any, ErrorResponse, GetFileInfoResponse, HTTPValidationError]]:
178
- r""" Get File Information
179
-
180
- Get detailed information about a specific file.
181
-
182
- **Purpose:**
183
- Retrieve comprehensive metadata for a single file, including upload status,
184
- size, row count, and timestamps. Useful for validating individual files
185
- before ingestion.
186
-
187
- **Use Cases:**
188
- - Validate file upload completion
189
- - Check file metadata before ingestion
190
- - Debug upload issues
191
- - Verify file format and size
192
- - Track file lifecycle
193
-
194
- **Example Response:**
195
- ```json
196
- {
197
- \"file_id\": \"f123\",
198
- \"graph_id\": \"kg123\",
199
- \"table_id\": \"t456\",
200
- \"table_name\": \"Entity\",
201
- \"file_name\": \"entities_batch1.parquet\",
202
- \"file_format\": \"parquet\",
203
- \"size_bytes\": 1048576,
204
- \"row_count\": 5000,
205
- \"upload_status\": \"uploaded\",
206
- \"upload_method\": \"presigned_url\",
207
- \"created_at\": \"2025-10-28T10:00:00Z\",
208
- \"uploaded_at\": \"2025-10-28T10:01:30Z\",
209
- \"s3_key\": \"user-staging/user123/kg123/Entity/entities_batch1.parquet\"
210
- }
211
- ```
212
-
213
- **Example Usage:**
214
- ```bash
215
- curl -H \"Authorization: Bearer YOUR_TOKEN\" \
216
- https://api.robosystems.ai/v1/graphs/kg123/tables/files/f123
217
- ```
218
-
219
- **Note:**
220
- File info retrieval is included - no credit consumption.
221
-
222
- Args:
223
- graph_id (str): Graph database identifier
224
- file_id (str): File ID
225
- token (Union[None, Unset, str]): JWT token for SSE authentication
226
- authorization (Union[None, Unset, str]):
227
-
228
- Raises:
229
- errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
230
- httpx.TimeoutException: If the request takes longer than Client.timeout.
231
-
232
- Returns:
233
- Union[Any, ErrorResponse, GetFileInfoResponse, HTTPValidationError]
234
- """
124
+ """Get File Information
125
+
126
+ Get detailed information about a specific file.
127
+
128
+ Retrieve comprehensive metadata for a single file, including upload status,
129
+ size, row count, and timestamps. Useful for validating individual files
130
+ before ingestion.
131
+
132
+ **Use Cases:**
133
+ - Validate file upload completion
134
+ - Check file metadata before ingestion
135
+ - Debug upload issues
136
+ - Verify file format and size
137
+ - Track file lifecycle
138
+
139
+ **Note:**
140
+ File info retrieval is included - no credit consumption
141
+
142
+ Args:
143
+ graph_id (str):
144
+ file_id (str): File ID
145
+
146
+ Raises:
147
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
148
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
149
+
150
+ Returns:
151
+ Union[Any, ErrorResponse, GetFileInfoResponse, HTTPValidationError]
152
+ """
235
153
 
236
154
  return sync_detailed(
237
155
  graph_id=graph_id,
238
156
  file_id=file_id,
239
157
  client=client,
240
- token=token,
241
- authorization=authorization,
242
158
  ).parsed
243
159
 
244
160
 
@@ -247,72 +163,40 @@ async def asyncio_detailed(
247
163
  file_id: str,
248
164
  *,
249
165
  client: AuthenticatedClient,
250
- token: Union[None, Unset, str] = UNSET,
251
- authorization: Union[None, Unset, str] = UNSET,
252
166
  ) -> Response[Union[Any, ErrorResponse, GetFileInfoResponse, HTTPValidationError]]:
253
- r""" Get File Information
254
-
255
- Get detailed information about a specific file.
256
-
257
- **Purpose:**
258
- Retrieve comprehensive metadata for a single file, including upload status,
259
- size, row count, and timestamps. Useful for validating individual files
260
- before ingestion.
261
-
262
- **Use Cases:**
263
- - Validate file upload completion
264
- - Check file metadata before ingestion
265
- - Debug upload issues
266
- - Verify file format and size
267
- - Track file lifecycle
268
-
269
- **Example Response:**
270
- ```json
271
- {
272
- \"file_id\": \"f123\",
273
- \"graph_id\": \"kg123\",
274
- \"table_id\": \"t456\",
275
- \"table_name\": \"Entity\",
276
- \"file_name\": \"entities_batch1.parquet\",
277
- \"file_format\": \"parquet\",
278
- \"size_bytes\": 1048576,
279
- \"row_count\": 5000,
280
- \"upload_status\": \"uploaded\",
281
- \"upload_method\": \"presigned_url\",
282
- \"created_at\": \"2025-10-28T10:00:00Z\",
283
- \"uploaded_at\": \"2025-10-28T10:01:30Z\",
284
- \"s3_key\": \"user-staging/user123/kg123/Entity/entities_batch1.parquet\"
285
- }
286
- ```
287
-
288
- **Example Usage:**
289
- ```bash
290
- curl -H \"Authorization: Bearer YOUR_TOKEN\" \
291
- https://api.robosystems.ai/v1/graphs/kg123/tables/files/f123
292
- ```
293
-
294
- **Note:**
295
- File info retrieval is included - no credit consumption.
296
-
297
- Args:
298
- graph_id (str): Graph database identifier
299
- file_id (str): File ID
300
- token (Union[None, Unset, str]): JWT token for SSE authentication
301
- authorization (Union[None, Unset, str]):
302
-
303
- Raises:
304
- errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
305
- httpx.TimeoutException: If the request takes longer than Client.timeout.
306
-
307
- Returns:
308
- Response[Union[Any, ErrorResponse, GetFileInfoResponse, HTTPValidationError]]
309
- """
167
+ """Get File Information
168
+
169
+ Get detailed information about a specific file.
170
+
171
+ Retrieve comprehensive metadata for a single file, including upload status,
172
+ size, row count, and timestamps. Useful for validating individual files
173
+ before ingestion.
174
+
175
+ **Use Cases:**
176
+ - Validate file upload completion
177
+ - Check file metadata before ingestion
178
+ - Debug upload issues
179
+ - Verify file format and size
180
+ - Track file lifecycle
181
+
182
+ **Note:**
183
+ File info retrieval is included - no credit consumption
184
+
185
+ Args:
186
+ graph_id (str):
187
+ file_id (str): File ID
188
+
189
+ Raises:
190
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
191
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
192
+
193
+ Returns:
194
+ Response[Union[Any, ErrorResponse, GetFileInfoResponse, HTTPValidationError]]
195
+ """
310
196
 
311
197
  kwargs = _get_kwargs(
312
198
  graph_id=graph_id,
313
199
  file_id=file_id,
314
- token=token,
315
- authorization=authorization,
316
200
  )
317
201
 
318
202
  response = await client.get_async_httpx_client().request(**kwargs)
@@ -325,73 +209,41 @@ async def asyncio(
325
209
  file_id: str,
326
210
  *,
327
211
  client: AuthenticatedClient,
328
- token: Union[None, Unset, str] = UNSET,
329
- authorization: Union[None, Unset, str] = UNSET,
330
212
  ) -> Optional[Union[Any, ErrorResponse, GetFileInfoResponse, HTTPValidationError]]:
331
- r""" Get File Information
332
-
333
- Get detailed information about a specific file.
334
-
335
- **Purpose:**
336
- Retrieve comprehensive metadata for a single file, including upload status,
337
- size, row count, and timestamps. Useful for validating individual files
338
- before ingestion.
339
-
340
- **Use Cases:**
341
- - Validate file upload completion
342
- - Check file metadata before ingestion
343
- - Debug upload issues
344
- - Verify file format and size
345
- - Track file lifecycle
346
-
347
- **Example Response:**
348
- ```json
349
- {
350
- \"file_id\": \"f123\",
351
- \"graph_id\": \"kg123\",
352
- \"table_id\": \"t456\",
353
- \"table_name\": \"Entity\",
354
- \"file_name\": \"entities_batch1.parquet\",
355
- \"file_format\": \"parquet\",
356
- \"size_bytes\": 1048576,
357
- \"row_count\": 5000,
358
- \"upload_status\": \"uploaded\",
359
- \"upload_method\": \"presigned_url\",
360
- \"created_at\": \"2025-10-28T10:00:00Z\",
361
- \"uploaded_at\": \"2025-10-28T10:01:30Z\",
362
- \"s3_key\": \"user-staging/user123/kg123/Entity/entities_batch1.parquet\"
363
- }
364
- ```
365
-
366
- **Example Usage:**
367
- ```bash
368
- curl -H \"Authorization: Bearer YOUR_TOKEN\" \
369
- https://api.robosystems.ai/v1/graphs/kg123/tables/files/f123
370
- ```
371
-
372
- **Note:**
373
- File info retrieval is included - no credit consumption.
374
-
375
- Args:
376
- graph_id (str): Graph database identifier
377
- file_id (str): File ID
378
- token (Union[None, Unset, str]): JWT token for SSE authentication
379
- authorization (Union[None, Unset, str]):
380
-
381
- Raises:
382
- errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
383
- httpx.TimeoutException: If the request takes longer than Client.timeout.
384
-
385
- Returns:
386
- Union[Any, ErrorResponse, GetFileInfoResponse, HTTPValidationError]
387
- """
213
+ """Get File Information
214
+
215
+ Get detailed information about a specific file.
216
+
217
+ Retrieve comprehensive metadata for a single file, including upload status,
218
+ size, row count, and timestamps. Useful for validating individual files
219
+ before ingestion.
220
+
221
+ **Use Cases:**
222
+ - Validate file upload completion
223
+ - Check file metadata before ingestion
224
+ - Debug upload issues
225
+ - Verify file format and size
226
+ - Track file lifecycle
227
+
228
+ **Note:**
229
+ File info retrieval is included - no credit consumption
230
+
231
+ Args:
232
+ graph_id (str):
233
+ file_id (str): File ID
234
+
235
+ Raises:
236
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
237
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
238
+
239
+ Returns:
240
+ Union[Any, ErrorResponse, GetFileInfoResponse, HTTPValidationError]
241
+ """
388
242
 
389
243
  return (
390
244
  await asyncio_detailed(
391
245
  graph_id=graph_id,
392
246
  file_id=file_id,
393
247
  client=client,
394
- token=token,
395
- authorization=authorization,
396
248
  )
397
249
  ).parsed