studyfetch-sdk 0.1.0a18__py3-none-any.whl → 0.1.0a20__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 (78) hide show
  1. studyfetch_sdk/_models.py +24 -3
  2. studyfetch_sdk/_version.py +1 -1
  3. studyfetch_sdk/resources/v1/__init__.py +0 -84
  4. studyfetch_sdk/resources/v1/assignment_grader.py +81 -1
  5. studyfetch_sdk/resources/v1/components.py +36 -4
  6. studyfetch_sdk/resources/v1/materials/materials.py +130 -2
  7. studyfetch_sdk/resources/v1/materials/upload.py +286 -0
  8. studyfetch_sdk/resources/v1/usage/analyst.py +143 -15
  9. studyfetch_sdk/resources/v1/v1.py +66 -192
  10. studyfetch_sdk/types/v1/__init__.py +2 -20
  11. studyfetch_sdk/types/v1/assignment_grader_response.py +20 -1
  12. studyfetch_sdk/types/v1/component.py +9 -1
  13. studyfetch_sdk/types/v1/component_create_params.py +81 -1
  14. studyfetch_sdk/types/v1/component_generate_embed_params.py +7 -1
  15. studyfetch_sdk/types/v1/component_list_params.py +9 -1
  16. studyfetch_sdk/types/v1/content_param.py +23 -0
  17. studyfetch_sdk/types/v1/material_create_and_process_params.py +27 -0
  18. studyfetch_sdk/types/v1/material_create_params.py +4 -17
  19. studyfetch_sdk/types/v1/materials/__init__.py +2 -0
  20. studyfetch_sdk/types/v1/materials/upload_create_presigned_url_params.py +3 -0
  21. studyfetch_sdk/types/v1/materials/upload_upload_file_and_process_params.py +29 -0
  22. studyfetch_sdk/types/v1/materials/upload_upload_file_params.py +3 -0
  23. studyfetch_sdk/types/v1/materials/upload_upload_url_and_process_params.py +26 -0
  24. studyfetch_sdk/types/v1/usage/__init__.py +3 -0
  25. studyfetch_sdk/types/v1/usage/analyst_get_test_questions_params.py +18 -0
  26. studyfetch_sdk/types/v1/usage/analyst_list_chat_messages_params.py +18 -0
  27. studyfetch_sdk/types/v1/usage/analyst_list_chat_messages_response.py +35 -0
  28. studyfetch_sdk/types/v1/usage/analyst_list_events_params.py +7 -0
  29. {studyfetch_sdk-0.1.0a18.dist-info → studyfetch_sdk-0.1.0a20.dist-info}/METADATA +1 -1
  30. {studyfetch_sdk-0.1.0a18.dist-info → studyfetch_sdk-0.1.0a20.dist-info}/RECORD +32 -71
  31. studyfetch_sdk/resources/v1/audio_recaps/__init__.py +0 -33
  32. studyfetch_sdk/resources/v1/audio_recaps/audio_recaps.py +0 -328
  33. studyfetch_sdk/resources/v1/audio_recaps/sections.py +0 -250
  34. studyfetch_sdk/resources/v1/chat/__init__.py +0 -47
  35. studyfetch_sdk/resources/v1/chat/chat.py +0 -574
  36. studyfetch_sdk/resources/v1/chat/sessions.py +0 -222
  37. studyfetch_sdk/resources/v1/chat/test.py +0 -190
  38. studyfetch_sdk/resources/v1/explainers.py +0 -441
  39. studyfetch_sdk/resources/v1/flashcards.py +0 -783
  40. studyfetch_sdk/resources/v1/scenarios/__init__.py +0 -61
  41. studyfetch_sdk/resources/v1/scenarios/component.py +0 -426
  42. studyfetch_sdk/resources/v1/scenarios/scenarios.py +0 -936
  43. studyfetch_sdk/resources/v1/scenarios/sessions.py +0 -236
  44. studyfetch_sdk/resources/v1/scenarios/submissions/__init__.py +0 -33
  45. studyfetch_sdk/resources/v1/scenarios/submissions/submissions.py +0 -102
  46. studyfetch_sdk/resources/v1/scenarios/submissions/user.py +0 -210
  47. studyfetch_sdk/resources/v1/tests/__init__.py +0 -33
  48. studyfetch_sdk/resources/v1/tests/component.py +0 -160
  49. studyfetch_sdk/resources/v1/tests/tests.py +0 -682
  50. studyfetch_sdk/types/v1/audio_recaps/__init__.py +0 -3
  51. studyfetch_sdk/types/v1/chat/__init__.py +0 -5
  52. studyfetch_sdk/types/v1/chat/session_retrieve_params.py +0 -11
  53. studyfetch_sdk/types/v1/chat_get_session_params.py +0 -13
  54. studyfetch_sdk/types/v1/chat_send_message_params.py +0 -54
  55. studyfetch_sdk/types/v1/chat_stream_params.py +0 -28
  56. studyfetch_sdk/types/v1/explainer_create_params.py +0 -45
  57. studyfetch_sdk/types/v1/explainer_handle_webhook_params.py +0 -53
  58. studyfetch_sdk/types/v1/flashcard_batch_process_params.py +0 -36
  59. studyfetch_sdk/types/v1/flashcard_batch_process_response.py +0 -39
  60. studyfetch_sdk/types/v1/flashcard_get_algorithm_response.py +0 -37
  61. studyfetch_sdk/types/v1/flashcard_get_all_params.py +0 -23
  62. studyfetch_sdk/types/v1/flashcard_get_due_params.py +0 -19
  63. studyfetch_sdk/types/v1/flashcard_get_stats_params.py +0 -17
  64. studyfetch_sdk/types/v1/flashcard_get_types_response.py +0 -14
  65. studyfetch_sdk/types/v1/flashcard_rate_params.py +0 -23
  66. studyfetch_sdk/types/v1/scenario_create_params.py +0 -48
  67. studyfetch_sdk/types/v1/scenario_submit_answer_params.py +0 -18
  68. studyfetch_sdk/types/v1/scenario_update_params.py +0 -45
  69. studyfetch_sdk/types/v1/scenarios/__init__.py +0 -5
  70. studyfetch_sdk/types/v1/scenarios/component_update_params.py +0 -45
  71. studyfetch_sdk/types/v1/scenarios/submissions/__init__.py +0 -3
  72. studyfetch_sdk/types/v1/test_create_params.py +0 -20
  73. studyfetch_sdk/types/v1/test_retake_params.py +0 -14
  74. studyfetch_sdk/types/v1/test_submit_answer_params.py +0 -20
  75. studyfetch_sdk/types/v1/test_submit_params.py +0 -14
  76. studyfetch_sdk/types/v1/tests/__init__.py +0 -3
  77. {studyfetch_sdk-0.1.0a18.dist-info → studyfetch_sdk-0.1.0a20.dist-info}/WHEEL +0 -0
  78. {studyfetch_sdk-0.1.0a18.dist-info → studyfetch_sdk-0.1.0a20.dist-info}/licenses/LICENSE +0 -0
@@ -23,6 +23,8 @@ from ....types.v1.materials import (
23
23
  upload_complete_upload_params,
24
24
  upload_upload_from_url_params,
25
25
  upload_create_presigned_url_params,
26
+ upload_upload_url_and_process_params,
27
+ upload_upload_file_and_process_params,
26
28
  )
27
29
  from ....types.v1.materials.upload_create_presigned_url_response import UploadCreatePresignedURLResponse
28
30
 
@@ -102,6 +104,7 @@ class UploadResource(SyncAPIResource):
102
104
  content_type: str,
103
105
  filename: str,
104
106
  name: str,
107
+ extract_images: bool | NotGiven = NOT_GIVEN,
105
108
  folder_id: str | NotGiven = NOT_GIVEN,
106
109
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
107
110
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -120,6 +123,8 @@ class UploadResource(SyncAPIResource):
120
123
 
121
124
  name: Display name for the material
122
125
 
126
+ extract_images: Whether to extract images from files
127
+
123
128
  folder_id: Folder ID to place the material in
124
129
 
125
130
  extra_headers: Send extra headers
@@ -137,6 +142,7 @@ class UploadResource(SyncAPIResource):
137
142
  "content_type": content_type,
138
143
  "filename": filename,
139
144
  "name": name,
145
+ "extract_images": extract_images,
140
146
  "folder_id": folder_id,
141
147
  },
142
148
  upload_create_presigned_url_params.UploadCreatePresignedURLParams,
@@ -152,6 +158,7 @@ class UploadResource(SyncAPIResource):
152
158
  *,
153
159
  file: FileTypes,
154
160
  name: str,
161
+ extract_images: str | NotGiven = NOT_GIVEN,
155
162
  folder_id: str | NotGiven = NOT_GIVEN,
156
163
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
157
164
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -166,6 +173,8 @@ class UploadResource(SyncAPIResource):
166
173
  Args:
167
174
  name: Material name
168
175
 
176
+ extract_images: Whether to extract images from files (true/false, default: true)
177
+
169
178
  folder_id: Folder ID (optional)
170
179
 
171
180
  extra_headers: Send extra headers
@@ -180,6 +189,7 @@ class UploadResource(SyncAPIResource):
180
189
  {
181
190
  "file": file,
182
191
  "name": name,
192
+ "extract_images": extract_images,
183
193
  "folder_id": folder_id,
184
194
  }
185
195
  )
@@ -198,6 +208,71 @@ class UploadResource(SyncAPIResource):
198
208
  cast_to=Material,
199
209
  )
200
210
 
211
+ def upload_file_and_process(
212
+ self,
213
+ *,
214
+ file: FileTypes,
215
+ name: str,
216
+ extract_images: str | NotGiven = NOT_GIVEN,
217
+ folder_id: str | NotGiven = NOT_GIVEN,
218
+ poll_interval_ms: float | NotGiven = NOT_GIVEN,
219
+ timeout_ms: float | NotGiven = NOT_GIVEN,
220
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
221
+ # The extra values given here take precedence over values defined on the client or passed to this method.
222
+ extra_headers: Headers | None = None,
223
+ extra_query: Query | None = None,
224
+ extra_body: Body | None = None,
225
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
226
+ ) -> Material:
227
+ """Uploads a file and waits for processing to finish before returning.
228
+
229
+ Useful for
230
+ synchronous API usage.
231
+
232
+ Args:
233
+ name: Material name
234
+
235
+ extract_images: Whether to extract images from files (true/false, default: true)
236
+
237
+ folder_id: Folder ID (optional)
238
+
239
+ poll_interval_ms: Polling interval in milliseconds (default: 2000)
240
+
241
+ timeout_ms: Processing timeout in milliseconds (default: 300000)
242
+
243
+ extra_headers: Send extra headers
244
+
245
+ extra_query: Add additional query parameters to the request
246
+
247
+ extra_body: Add additional JSON properties to the request
248
+
249
+ timeout: Override the client-level default timeout for this request, in seconds
250
+ """
251
+ body = deepcopy_minimal(
252
+ {
253
+ "file": file,
254
+ "name": name,
255
+ "extract_images": extract_images,
256
+ "folder_id": folder_id,
257
+ "poll_interval_ms": poll_interval_ms,
258
+ "timeout_ms": timeout_ms,
259
+ }
260
+ )
261
+ files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
262
+ # It should be noted that the actual Content-Type header that will be
263
+ # sent to the server will contain a `boundary` parameter, e.g.
264
+ # multipart/form-data; boundary=---abc--
265
+ extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
266
+ return self._post(
267
+ "/api/v1/materials/upload/file-and-process",
268
+ body=maybe_transform(body, upload_upload_file_and_process_params.UploadUploadFileAndProcessParams),
269
+ files=files,
270
+ options=make_request_options(
271
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
272
+ ),
273
+ cast_to=Material,
274
+ )
275
+
201
276
  def upload_from_url(
202
277
  self,
203
278
  *,
@@ -245,6 +320,62 @@ class UploadResource(SyncAPIResource):
245
320
  cast_to=Material,
246
321
  )
247
322
 
323
+ def upload_url_and_process(
324
+ self,
325
+ *,
326
+ name: str,
327
+ url: str,
328
+ folder_id: str | NotGiven = NOT_GIVEN,
329
+ poll_interval_ms: float | NotGiven = NOT_GIVEN,
330
+ timeout_ms: float | NotGiven = NOT_GIVEN,
331
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
332
+ # The extra values given here take precedence over values defined on the client or passed to this method.
333
+ extra_headers: Headers | None = None,
334
+ extra_query: Query | None = None,
335
+ extra_body: Body | None = None,
336
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
337
+ ) -> Material:
338
+ """
339
+ Fetches content from URL and waits for processing to finish before returning.
340
+ Useful for synchronous API usage.
341
+
342
+ Args:
343
+ name: Material name
344
+
345
+ url: URL to fetch content from
346
+
347
+ folder_id: Folder ID (optional)
348
+
349
+ poll_interval_ms: Polling interval in milliseconds (default: 2 seconds)
350
+
351
+ timeout_ms: Maximum time to wait for processing in milliseconds (default: 5 minutes)
352
+
353
+ extra_headers: Send extra headers
354
+
355
+ extra_query: Add additional query parameters to the request
356
+
357
+ extra_body: Add additional JSON properties to the request
358
+
359
+ timeout: Override the client-level default timeout for this request, in seconds
360
+ """
361
+ return self._post(
362
+ "/api/v1/materials/upload/url-and-process",
363
+ body=maybe_transform(
364
+ {
365
+ "name": name,
366
+ "url": url,
367
+ "folder_id": folder_id,
368
+ "poll_interval_ms": poll_interval_ms,
369
+ "timeout_ms": timeout_ms,
370
+ },
371
+ upload_upload_url_and_process_params.UploadUploadURLAndProcessParams,
372
+ ),
373
+ options=make_request_options(
374
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
375
+ ),
376
+ cast_to=Material,
377
+ )
378
+
248
379
 
249
380
  class AsyncUploadResource(AsyncAPIResource):
250
381
  @cached_property
@@ -319,6 +450,7 @@ class AsyncUploadResource(AsyncAPIResource):
319
450
  content_type: str,
320
451
  filename: str,
321
452
  name: str,
453
+ extract_images: bool | NotGiven = NOT_GIVEN,
322
454
  folder_id: str | NotGiven = NOT_GIVEN,
323
455
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
324
456
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -337,6 +469,8 @@ class AsyncUploadResource(AsyncAPIResource):
337
469
 
338
470
  name: Display name for the material
339
471
 
472
+ extract_images: Whether to extract images from files
473
+
340
474
  folder_id: Folder ID to place the material in
341
475
 
342
476
  extra_headers: Send extra headers
@@ -354,6 +488,7 @@ class AsyncUploadResource(AsyncAPIResource):
354
488
  "content_type": content_type,
355
489
  "filename": filename,
356
490
  "name": name,
491
+ "extract_images": extract_images,
357
492
  "folder_id": folder_id,
358
493
  },
359
494
  upload_create_presigned_url_params.UploadCreatePresignedURLParams,
@@ -369,6 +504,7 @@ class AsyncUploadResource(AsyncAPIResource):
369
504
  *,
370
505
  file: FileTypes,
371
506
  name: str,
507
+ extract_images: str | NotGiven = NOT_GIVEN,
372
508
  folder_id: str | NotGiven = NOT_GIVEN,
373
509
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
374
510
  # The extra values given here take precedence over values defined on the client or passed to this method.
@@ -383,6 +519,8 @@ class AsyncUploadResource(AsyncAPIResource):
383
519
  Args:
384
520
  name: Material name
385
521
 
522
+ extract_images: Whether to extract images from files (true/false, default: true)
523
+
386
524
  folder_id: Folder ID (optional)
387
525
 
388
526
  extra_headers: Send extra headers
@@ -397,6 +535,7 @@ class AsyncUploadResource(AsyncAPIResource):
397
535
  {
398
536
  "file": file,
399
537
  "name": name,
538
+ "extract_images": extract_images,
400
539
  "folder_id": folder_id,
401
540
  }
402
541
  )
@@ -415,6 +554,73 @@ class AsyncUploadResource(AsyncAPIResource):
415
554
  cast_to=Material,
416
555
  )
417
556
 
557
+ async def upload_file_and_process(
558
+ self,
559
+ *,
560
+ file: FileTypes,
561
+ name: str,
562
+ extract_images: str | NotGiven = NOT_GIVEN,
563
+ folder_id: str | NotGiven = NOT_GIVEN,
564
+ poll_interval_ms: float | NotGiven = NOT_GIVEN,
565
+ timeout_ms: float | NotGiven = NOT_GIVEN,
566
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
567
+ # The extra values given here take precedence over values defined on the client or passed to this method.
568
+ extra_headers: Headers | None = None,
569
+ extra_query: Query | None = None,
570
+ extra_body: Body | None = None,
571
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
572
+ ) -> Material:
573
+ """Uploads a file and waits for processing to finish before returning.
574
+
575
+ Useful for
576
+ synchronous API usage.
577
+
578
+ Args:
579
+ name: Material name
580
+
581
+ extract_images: Whether to extract images from files (true/false, default: true)
582
+
583
+ folder_id: Folder ID (optional)
584
+
585
+ poll_interval_ms: Polling interval in milliseconds (default: 2000)
586
+
587
+ timeout_ms: Processing timeout in milliseconds (default: 300000)
588
+
589
+ extra_headers: Send extra headers
590
+
591
+ extra_query: Add additional query parameters to the request
592
+
593
+ extra_body: Add additional JSON properties to the request
594
+
595
+ timeout: Override the client-level default timeout for this request, in seconds
596
+ """
597
+ body = deepcopy_minimal(
598
+ {
599
+ "file": file,
600
+ "name": name,
601
+ "extract_images": extract_images,
602
+ "folder_id": folder_id,
603
+ "poll_interval_ms": poll_interval_ms,
604
+ "timeout_ms": timeout_ms,
605
+ }
606
+ )
607
+ files = extract_files(cast(Mapping[str, object], body), paths=[["file"]])
608
+ # It should be noted that the actual Content-Type header that will be
609
+ # sent to the server will contain a `boundary` parameter, e.g.
610
+ # multipart/form-data; boundary=---abc--
611
+ extra_headers = {"Content-Type": "multipart/form-data", **(extra_headers or {})}
612
+ return await self._post(
613
+ "/api/v1/materials/upload/file-and-process",
614
+ body=await async_maybe_transform(
615
+ body, upload_upload_file_and_process_params.UploadUploadFileAndProcessParams
616
+ ),
617
+ files=files,
618
+ options=make_request_options(
619
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
620
+ ),
621
+ cast_to=Material,
622
+ )
623
+
418
624
  async def upload_from_url(
419
625
  self,
420
626
  *,
@@ -462,6 +668,62 @@ class AsyncUploadResource(AsyncAPIResource):
462
668
  cast_to=Material,
463
669
  )
464
670
 
671
+ async def upload_url_and_process(
672
+ self,
673
+ *,
674
+ name: str,
675
+ url: str,
676
+ folder_id: str | NotGiven = NOT_GIVEN,
677
+ poll_interval_ms: float | NotGiven = NOT_GIVEN,
678
+ timeout_ms: float | NotGiven = NOT_GIVEN,
679
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
680
+ # The extra values given here take precedence over values defined on the client or passed to this method.
681
+ extra_headers: Headers | None = None,
682
+ extra_query: Query | None = None,
683
+ extra_body: Body | None = None,
684
+ timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
685
+ ) -> Material:
686
+ """
687
+ Fetches content from URL and waits for processing to finish before returning.
688
+ Useful for synchronous API usage.
689
+
690
+ Args:
691
+ name: Material name
692
+
693
+ url: URL to fetch content from
694
+
695
+ folder_id: Folder ID (optional)
696
+
697
+ poll_interval_ms: Polling interval in milliseconds (default: 2 seconds)
698
+
699
+ timeout_ms: Maximum time to wait for processing in milliseconds (default: 5 minutes)
700
+
701
+ extra_headers: Send extra headers
702
+
703
+ extra_query: Add additional query parameters to the request
704
+
705
+ extra_body: Add additional JSON properties to the request
706
+
707
+ timeout: Override the client-level default timeout for this request, in seconds
708
+ """
709
+ return await self._post(
710
+ "/api/v1/materials/upload/url-and-process",
711
+ body=await async_maybe_transform(
712
+ {
713
+ "name": name,
714
+ "url": url,
715
+ "folder_id": folder_id,
716
+ "poll_interval_ms": poll_interval_ms,
717
+ "timeout_ms": timeout_ms,
718
+ },
719
+ upload_upload_url_and_process_params.UploadUploadURLAndProcessParams,
720
+ ),
721
+ options=make_request_options(
722
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
723
+ ),
724
+ cast_to=Material,
725
+ )
726
+
465
727
 
466
728
  class UploadResourceWithRawResponse:
467
729
  def __init__(self, upload: UploadResource) -> None:
@@ -476,9 +738,15 @@ class UploadResourceWithRawResponse:
476
738
  self.upload_file = to_raw_response_wrapper(
477
739
  upload.upload_file,
478
740
  )
741
+ self.upload_file_and_process = to_raw_response_wrapper(
742
+ upload.upload_file_and_process,
743
+ )
479
744
  self.upload_from_url = to_raw_response_wrapper(
480
745
  upload.upload_from_url,
481
746
  )
747
+ self.upload_url_and_process = to_raw_response_wrapper(
748
+ upload.upload_url_and_process,
749
+ )
482
750
 
483
751
 
484
752
  class AsyncUploadResourceWithRawResponse:
@@ -494,9 +762,15 @@ class AsyncUploadResourceWithRawResponse:
494
762
  self.upload_file = async_to_raw_response_wrapper(
495
763
  upload.upload_file,
496
764
  )
765
+ self.upload_file_and_process = async_to_raw_response_wrapper(
766
+ upload.upload_file_and_process,
767
+ )
497
768
  self.upload_from_url = async_to_raw_response_wrapper(
498
769
  upload.upload_from_url,
499
770
  )
771
+ self.upload_url_and_process = async_to_raw_response_wrapper(
772
+ upload.upload_url_and_process,
773
+ )
500
774
 
501
775
 
502
776
  class UploadResourceWithStreamingResponse:
@@ -512,9 +786,15 @@ class UploadResourceWithStreamingResponse:
512
786
  self.upload_file = to_streamed_response_wrapper(
513
787
  upload.upload_file,
514
788
  )
789
+ self.upload_file_and_process = to_streamed_response_wrapper(
790
+ upload.upload_file_and_process,
791
+ )
515
792
  self.upload_from_url = to_streamed_response_wrapper(
516
793
  upload.upload_from_url,
517
794
  )
795
+ self.upload_url_and_process = to_streamed_response_wrapper(
796
+ upload.upload_url_and_process,
797
+ )
518
798
 
519
799
 
520
800
  class AsyncUploadResourceWithStreamingResponse:
@@ -530,6 +810,12 @@ class AsyncUploadResourceWithStreamingResponse:
530
810
  self.upload_file = async_to_streamed_response_wrapper(
531
811
  upload.upload_file,
532
812
  )
813
+ self.upload_file_and_process = async_to_streamed_response_wrapper(
814
+ upload.upload_file_and_process,
815
+ )
533
816
  self.upload_from_url = async_to_streamed_response_wrapper(
534
817
  upload.upload_from_url,
535
818
  )
819
+ self.upload_url_and_process = async_to_streamed_response_wrapper(
820
+ upload.upload_url_and_process,
821
+ )