parallel-web 0.5.0__tar.gz → 0.6.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 (240) hide show
  1. {parallel_web-0.5.0 → parallel_web-0.6.0}/.gitignore +1 -0
  2. parallel_web-0.6.0/.release-please-manifest.json +3 -0
  3. {parallel_web-0.5.0 → parallel_web-0.6.0}/CHANGELOG.md +41 -0
  4. {parallel_web-0.5.0 → parallel_web-0.6.0}/PKG-INFO +1 -1
  5. parallel_web-0.6.0/api.md +128 -0
  6. {parallel_web-0.5.0 → parallel_web-0.6.0}/pyproject.toml +7 -2
  7. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_client.py +236 -15
  8. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_qs.py +2 -6
  9. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_types.py +3 -0
  10. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_utils/_utils.py +34 -8
  11. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_version.py +1 -1
  12. parallel_web-0.6.0/src/parallel/resources/__init__.py +47 -0
  13. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/resources/beta/api.md +12 -7
  14. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/resources/beta/beta.py +77 -94
  15. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/resources/beta/findall.py +12 -9
  16. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/resources/beta/task_group.py +95 -66
  17. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/resources/beta/task_run.py +5 -4
  18. parallel_web-0.6.0/src/parallel/resources/monitor.py +965 -0
  19. parallel_web-0.6.0/src/parallel/resources/task_group.py +787 -0
  20. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/resources/task_run.py +84 -6
  21. parallel_web-0.6.0/src/parallel/types/__init__.py +90 -0
  22. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/advanced_extract_settings_param.py +9 -14
  23. parallel_web-0.6.0/src/parallel/types/advanced_monitor_settings.py +21 -0
  24. parallel_web-0.6.0/src/parallel/types/advanced_monitor_settings_param.py +23 -0
  25. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/__init__.py +7 -0
  26. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/beta_extract_params.py +13 -13
  27. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/beta_search_params.py +6 -0
  28. parallel_web-0.5.0/src/parallel/types/beta/findall_run_result.py → parallel_web-0.6.0/src/parallel/types/beta/findall_candidate.py +2 -28
  29. parallel_web-0.6.0/src/parallel/types/beta/findall_candidate_match_status_event.py +43 -0
  30. parallel_web-0.6.0/src/parallel/types/beta/findall_candidate_metrics.py +17 -0
  31. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/findall_create_params.py +7 -16
  32. parallel_web-0.6.0/src/parallel/types/beta/findall_run.py +46 -0
  33. parallel_web-0.6.0/src/parallel/types/beta/findall_run_result.py +38 -0
  34. parallel_web-0.6.0/src/parallel/types/beta/findall_run_status.py +35 -0
  35. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/findall_schema.py +2 -15
  36. parallel_web-0.6.0/src/parallel/types/beta/full_content_settings_param.py +7 -0
  37. parallel_web-0.6.0/src/parallel/types/beta/match_condition.py +19 -0
  38. parallel_web-0.6.0/src/parallel/types/beta/match_condition_param.py +21 -0
  39. parallel_web-0.6.0/src/parallel/types/beta/task_group.py +14 -0
  40. parallel_web-0.6.0/src/parallel/types/beta/task_group_events_response.py +15 -0
  41. parallel_web-0.6.0/src/parallel/types/beta/task_group_run_response.py +7 -0
  42. parallel_web-0.6.0/src/parallel/types/beta/task_group_status.py +7 -0
  43. parallel_web-0.6.0/src/parallel/types/beta/task_group_status_event.py +7 -0
  44. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/task_run_create_params.py +6 -7
  45. parallel_web-0.6.0/src/parallel/types/beta/task_run_events_response.py +24 -0
  46. parallel_web-0.6.0/src/parallel/types/full_content_settings_param.py +19 -0
  47. parallel_web-0.6.0/src/parallel/types/monitor.py +74 -0
  48. parallel_web-0.6.0/src/parallel/types/monitor_completion_event.py +23 -0
  49. parallel_web-0.6.0/src/parallel/types/monitor_create_params.py +56 -0
  50. parallel_web-0.6.0/src/parallel/types/monitor_error_event.py +25 -0
  51. parallel_web-0.6.0/src/parallel/types/monitor_event_stream_event.py +43 -0
  52. parallel_web-0.6.0/src/parallel/types/monitor_event_stream_response_settings.py +30 -0
  53. parallel_web-0.6.0/src/parallel/types/monitor_event_stream_settings_param.py +32 -0
  54. parallel_web-0.6.0/src/parallel/types/monitor_events_params.py +29 -0
  55. parallel_web-0.6.0/src/parallel/types/monitor_list_params.py +31 -0
  56. parallel_web-0.6.0/src/parallel/types/monitor_snapshot_event.py +51 -0
  57. parallel_web-0.6.0/src/parallel/types/monitor_snapshot_output.py +26 -0
  58. parallel_web-0.6.0/src/parallel/types/monitor_snapshot_response_settings.py +21 -0
  59. parallel_web-0.6.0/src/parallel/types/monitor_snapshot_settings_param.py +14 -0
  60. parallel_web-0.6.0/src/parallel/types/monitor_update_params.py +40 -0
  61. parallel_web-0.6.0/src/parallel/types/monitor_webhook.py +20 -0
  62. parallel_web-0.6.0/src/parallel/types/monitor_webhook_param.py +18 -0
  63. parallel_web-0.6.0/src/parallel/types/paginated_monitor_events.py +32 -0
  64. parallel_web-0.6.0/src/parallel/types/paginated_monitor_response.py +21 -0
  65. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/run_input.py +8 -9
  66. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/run_input_param.py +8 -9
  67. parallel_web-0.6.0/src/parallel/types/task_advanced_settings.py +14 -0
  68. parallel_web-0.6.0/src/parallel/types/task_advanced_settings_param.py +15 -0
  69. {parallel_web-0.5.0/src/parallel/types/beta → parallel_web-0.6.0/src/parallel/types}/task_group.py +1 -1
  70. parallel_web-0.6.0/src/parallel/types/task_group_add_runs_params.py +36 -0
  71. parallel_web-0.6.0/src/parallel/types/task_group_create_params.py +13 -0
  72. parallel_web-0.6.0/src/parallel/types/task_group_events_params.py +16 -0
  73. parallel_web-0.6.0/src/parallel/types/task_group_events_response.py +15 -0
  74. parallel_web-0.6.0/src/parallel/types/task_group_get_runs_params.py +18 -0
  75. parallel_web-0.6.0/src/parallel/types/task_group_get_runs_response.py +12 -0
  76. {parallel_web-0.5.0/src/parallel/types/beta → parallel_web-0.6.0/src/parallel/types}/task_group_run_response.py +1 -1
  77. {parallel_web-0.5.0/src/parallel/types/beta → parallel_web-0.6.0/src/parallel/types}/task_group_status.py +1 -1
  78. parallel_web-0.5.0/src/parallel/types/beta/task_group_events_response.py → parallel_web-0.6.0/src/parallel/types/task_group_status_event.py +3 -12
  79. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/task_run_create_params.py +6 -7
  80. parallel_web-0.6.0/src/parallel/types/task_run_events_response.py +24 -0
  81. parallel_web-0.6.0/src/parallel/types/task_run_progress_message_event.py +27 -0
  82. parallel_web-0.6.0/src/parallel/types/task_run_progress_stats_event.py +24 -0
  83. parallel_web-0.6.0/src/parallel/types/task_run_source_stats.py +20 -0
  84. parallel_web-0.6.0/src/parallel/types/update_monitor_event_stream_settings_param.py +17 -0
  85. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/api_resources/beta/test_findall.py +8 -8
  86. parallel_web-0.6.0/tests/api_resources/beta/test_task_group.py +665 -0
  87. parallel_web-0.6.0/tests/api_resources/test_beta.py +261 -0
  88. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/api_resources/test_client.py +4 -4
  89. parallel_web-0.6.0/tests/api_resources/test_monitor.py +705 -0
  90. {parallel_web-0.5.0/tests/api_resources/beta → parallel_web-0.6.0/tests/api_resources}/test_task_group.py +145 -48
  91. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/api_resources/test_task_run.py +77 -0
  92. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/test_extract_files.py +23 -5
  93. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/test_files.py +1 -1
  94. parallel_web-0.5.0/.release-please-manifest.json +0 -3
  95. parallel_web-0.5.0/api.md +0 -62
  96. parallel_web-0.5.0/src/parallel/resources/__init__.py +0 -19
  97. parallel_web-0.5.0/src/parallel/types/__init__.py +0 -49
  98. parallel_web-0.5.0/src/parallel/types/beta/findall_candidate_match_status_event.py +0 -72
  99. parallel_web-0.5.0/src/parallel/types/beta/findall_run.py +0 -73
  100. parallel_web-0.5.0/src/parallel/types/beta/task_run_events_response.py +0 -70
  101. parallel_web-0.5.0/src/parallel/types/task_run_events_response.py +0 -70
  102. parallel_web-0.5.0/tests/api_resources/test_beta.py +0 -231
  103. {parallel_web-0.5.0 → parallel_web-0.6.0}/CONTRIBUTING.md +0 -0
  104. {parallel_web-0.5.0 → parallel_web-0.6.0}/LICENSE +0 -0
  105. {parallel_web-0.5.0 → parallel_web-0.6.0}/README.md +0 -0
  106. {parallel_web-0.5.0 → parallel_web-0.6.0}/SECURITY.md +0 -0
  107. {parallel_web-0.5.0 → parallel_web-0.6.0}/bin/check-release-environment +0 -0
  108. {parallel_web-0.5.0 → parallel_web-0.6.0}/bin/publish-pypi +0 -0
  109. {parallel_web-0.5.0 → parallel_web-0.6.0}/examples/.keep +0 -0
  110. {parallel_web-0.5.0 → parallel_web-0.6.0}/noxfile.py +0 -0
  111. {parallel_web-0.5.0 → parallel_web-0.6.0}/release-please-config.json +0 -0
  112. {parallel_web-0.5.0 → parallel_web-0.6.0}/requirements-dev.lock +0 -0
  113. {parallel_web-0.5.0 → parallel_web-0.6.0}/requirements.lock +0 -0
  114. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/__init__.py +0 -0
  115. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_base_client.py +0 -0
  116. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_compat.py +0 -0
  117. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_constants.py +0 -0
  118. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_exceptions.py +0 -0
  119. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_files.py +0 -0
  120. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_models.py +0 -0
  121. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_resource.py +0 -0
  122. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_response.py +0 -0
  123. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_streaming.py +0 -0
  124. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_utils/__init__.py +0 -0
  125. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_utils/_compat.py +0 -0
  126. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_utils/_datetime_parse.py +0 -0
  127. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_utils/_json.py +0 -0
  128. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_utils/_logs.py +0 -0
  129. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_utils/_path.py +0 -0
  130. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_utils/_proxy.py +0 -0
  131. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_utils/_reflection.py +0 -0
  132. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_utils/_resources_proxy.py +0 -0
  133. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_utils/_streams.py +0 -0
  134. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_utils/_sync.py +0 -0
  135. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_utils/_transform.py +0 -0
  136. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/_utils/_typing.py +0 -0
  137. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/lib/.keep +0 -0
  138. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/lib/__init__.py +0 -0
  139. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/lib/_parsing/__init__.py +0 -0
  140. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/lib/_parsing/_task_run_result.py +0 -0
  141. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/lib/_parsing/_task_spec.py +0 -0
  142. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/lib/_pydantic.py +0 -0
  143. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/lib/_time.py +0 -0
  144. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/py.typed +0 -0
  145. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/resources/beta/__init__.py +0 -0
  146. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/advanced_search_settings_param.py +0 -0
  147. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/auto_schema.py +0 -0
  148. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/auto_schema_param.py +0 -0
  149. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/beta_run_input.py +0 -0
  150. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/beta_run_input_param.py +0 -0
  151. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/beta_task_run_result.py +0 -0
  152. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/error_event.py +0 -0
  153. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/excerpt_settings_param.py +0 -0
  154. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/extract_error.py +0 -0
  155. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/extract_response.py +0 -0
  156. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/extract_result.py +0 -0
  157. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/fetch_policy_param.py +0 -0
  158. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/findall_candidates_params.py +0 -0
  159. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/findall_candidates_response.py +0 -0
  160. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/findall_enrich_input.py +0 -0
  161. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/findall_enrich_params.py +0 -0
  162. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/findall_events_params.py +0 -0
  163. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/findall_events_response.py +0 -0
  164. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/findall_extend_params.py +0 -0
  165. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/findall_ingest_params.py +0 -0
  166. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/findall_run_status_event.py +0 -0
  167. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/findall_schema_updated_event.py +0 -0
  168. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/mcp_server.py +0 -0
  169. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/mcp_server_param.py +0 -0
  170. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/mcp_tool_call.py +0 -0
  171. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/parallel_beta_param.py +0 -0
  172. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/search_result.py +0 -0
  173. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/task_group_add_runs_params.py +0 -0
  174. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/task_group_create_params.py +0 -0
  175. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/task_group_events_params.py +0 -0
  176. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/task_group_get_runs_params.py +0 -0
  177. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/task_group_get_runs_response.py +0 -0
  178. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/task_run_event.py +0 -0
  179. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/task_run_result_params.py +0 -0
  180. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/usage_item.py +0 -0
  181. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/web_search_result.py +0 -0
  182. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/webhook.py +0 -0
  183. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/beta/webhook_param.py +0 -0
  184. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/citation.py +0 -0
  185. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/client_extract_params.py +0 -0
  186. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/client_search_params.py +0 -0
  187. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/error_event.py +0 -0
  188. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/excerpt_settings_param.py +0 -0
  189. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/extract_error.py +0 -0
  190. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/extract_response.py +0 -0
  191. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/extract_result.py +0 -0
  192. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/fetch_policy_param.py +0 -0
  193. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/field_basis.py +0 -0
  194. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/json_schema.py +0 -0
  195. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/json_schema_param.py +0 -0
  196. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/mcp_server.py +0 -0
  197. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/mcp_server_param.py +0 -0
  198. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/mcp_tool_call.py +0 -0
  199. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/parsed_task_run_result.py +0 -0
  200. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/search_result.py +0 -0
  201. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/shared/__init__.py +0 -0
  202. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/shared/error_object.py +0 -0
  203. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/shared/error_response.py +0 -0
  204. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/shared/source_policy.py +0 -0
  205. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/shared/warning.py +0 -0
  206. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/shared_params/__init__.py +0 -0
  207. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/shared_params/source_policy.py +0 -0
  208. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/task_run.py +0 -0
  209. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/task_run_event.py +0 -0
  210. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/task_run_json_output.py +0 -0
  211. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/task_run_result.py +0 -0
  212. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/task_run_result_params.py +0 -0
  213. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/task_run_text_output.py +0 -0
  214. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/task_spec.py +0 -0
  215. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/task_spec_param.py +0 -0
  216. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/text_schema.py +0 -0
  217. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/text_schema_param.py +0 -0
  218. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/usage_item.py +0 -0
  219. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/web_search_result.py +0 -0
  220. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/webhook.py +0 -0
  221. {parallel_web-0.5.0 → parallel_web-0.6.0}/src/parallel/types/webhook_param.py +0 -0
  222. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/__init__.py +0 -0
  223. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/api_resources/__init__.py +0 -0
  224. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/api_resources/beta/__init__.py +0 -0
  225. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/api_resources/beta/test_task_run.py +0 -0
  226. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/conftest.py +0 -0
  227. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/sample_file.txt +0 -0
  228. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/test_client.py +0 -0
  229. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/test_models.py +0 -0
  230. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/test_qs.py +0 -0
  231. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/test_required_args.py +0 -0
  232. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/test_response.py +0 -0
  233. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/test_streaming.py +0 -0
  234. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/test_transform.py +0 -0
  235. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/test_utils/test_datetime_parse.py +0 -0
  236. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/test_utils/test_json.py +0 -0
  237. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/test_utils/test_path.py +0 -0
  238. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/test_utils/test_proxy.py +0 -0
  239. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/test_utils/test_typing.py +0 -0
  240. {parallel_web-0.5.0 → parallel_web-0.6.0}/tests/utils.py +0 -0
@@ -14,3 +14,4 @@ dist
14
14
  .envrc
15
15
  codegen.log
16
16
  Brewfile.lock.json
17
+ uv.lock
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.6.0"
3
+ }
@@ -1,5 +1,46 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.6.0 (2026-05-06)
4
+
5
+ Full Changelog: [v0.5.1...v0.6.0](https://github.com/parallel-web/parallel-sdk-python/compare/v0.5.1...v0.6.0)
6
+
7
+ ### Features
8
+
9
+ * **api:** manual updates ([8cb17ac](https://github.com/parallel-web/parallel-sdk-python/commit/8cb17ac6d6c9a5a9e6443d9ecf5c121250b2eed2))
10
+ * **api:** manual updates ([e4008e4](https://github.com/parallel-web/parallel-sdk-python/commit/e4008e4f8432a6c3e2341d18fee37fcedf8a530e))
11
+ * **api:** manual updates ([174407f](https://github.com/parallel-web/parallel-sdk-python/commit/174407ff7467789e19d3abeffcaccd36fd35e786))
12
+ * **api:** manual updates ([1c47c8b](https://github.com/parallel-web/parallel-sdk-python/commit/1c47c8baa579a403064e59a5fbb75400315951c9))
13
+ * **api:** Task Groups v1 added to SDK ([198e317](https://github.com/parallel-web/parallel-sdk-python/commit/198e317bb3b5e5961e63c1c04bac0eb593385b7b))
14
+ * support setting headers via env ([6dd2b05](https://github.com/parallel-web/parallel-sdk-python/commit/6dd2b05bcf25259ae50e650376c3182913439487))
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * re-export TaskGroup from parallel.types.beta and silence reportDeprecated ([dc6119f](https://github.com/parallel-web/parallel-sdk-python/commit/dc6119f6dccdef75bdbe4ce838dd8ba51cc2428a))
20
+ * **scripts:** remove unreachable check and redundant type annotation ([f63ad0a](https://github.com/parallel-web/parallel-sdk-python/commit/f63ad0ae48994be8b16c20438bb80c61cd943fec))
21
+ * **scripts:** satisfy pyright in alias resolver ([892f474](https://github.com/parallel-web/parallel-sdk-python/commit/892f4743488ae5d8c4683123193da4f4e61d2464))
22
+ * **types:** preserve back-compat aliases for renamed inline classes ([532ee8f](https://github.com/parallel-web/parallel-sdk-python/commit/532ee8f32ecbaf611f0ff5f6c80a532e2f0bcd66))
23
+ * **types:** use module-level alias instead of import-as ([b1b9858](https://github.com/parallel-web/parallel-sdk-python/commit/b1b9858ffa95d90871ce36b06e510638e3546bde))
24
+ * use correct field name format for multipart file arrays ([1e34228](https://github.com/parallel-web/parallel-sdk-python/commit/1e3422859a25c66804f7f588fd24276417c52057))
25
+
26
+
27
+ ### Chores
28
+
29
+ * **internal:** more robust bootstrap script ([d4c7737](https://github.com/parallel-web/parallel-sdk-python/commit/d4c773762e983a657fb4c6f5d39529c3467e0994))
30
+ * **internal:** reformat pyproject.toml ([b3c0639](https://github.com/parallel-web/parallel-sdk-python/commit/b3c063982542886a490679f840ca0fad94695227))
31
+ * **scripts:** follow alias and attribute redirections in breaking-change detection ([89b1495](https://github.com/parallel-web/parallel-sdk-python/commit/89b1495236f280eee8af7c48ecff3ff2453291bd))
32
+ * stop tracking uv.lock (project uses requirements*.lock from rye) ([540471a](https://github.com/parallel-web/parallel-sdk-python/commit/540471afb4da3a6ed485af15554cb548e7086bbd))
33
+
34
+ ## 0.5.1 (2026-04-22)
35
+
36
+ Full Changelog: [v0.5.0...v0.5.1](https://github.com/parallel-web/parallel-sdk-python/compare/v0.5.0...v0.5.1)
37
+
38
+ ### Features
39
+
40
+ * **api:** manual updates ([86c7d33](https://github.com/parallel-web/parallel-sdk-python/commit/86c7d334df7c2018d0277fe3efa93fb7029f6a41))
41
+ * **api:** Mark search and extract as deprecated ([cfdea3b](https://github.com/parallel-web/parallel-sdk-python/commit/cfdea3b19622911e65c9359f0acdbd4b201d2d08))
42
+ * **api:** OpenAPI changes ([cfc5fb3](https://github.com/parallel-web/parallel-sdk-python/commit/cfc5fb373a46c73c2f79057b593712d7b847ee33))
43
+
3
44
  ## 0.5.0 (2026-04-21)
4
45
 
5
46
  Full Changelog: [v0.4.2...v0.5.0](https://github.com/parallel-web/parallel-sdk-python/compare/v0.4.2...v0.5.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: parallel-web
3
- Version: 0.5.0
3
+ Version: 0.6.0
4
4
  Summary: The official Python library for the Parallel API
5
5
  Project-URL: Homepage, https://github.com/parallel-web/parallel-sdk-python
6
6
  Project-URL: Repository, https://github.com/parallel-web/parallel-sdk-python
@@ -0,0 +1,128 @@
1
+ # Shared Types
2
+
3
+ ```python
4
+ from parallel.types import ErrorObject, ErrorResponse, SourcePolicy, Warning
5
+ ```
6
+
7
+ # Parallel
8
+
9
+ Types:
10
+
11
+ ```python
12
+ from parallel.types import (
13
+ AdvancedExtractSettings,
14
+ AdvancedSearchSettings,
15
+ ExcerptSettings,
16
+ ExtractError,
17
+ ExtractResponse,
18
+ ExtractResult,
19
+ FetchPolicy,
20
+ FullContentSettings,
21
+ SearchResult,
22
+ UsageItem,
23
+ WebSearchResult,
24
+ )
25
+ ```
26
+
27
+ Methods:
28
+
29
+ - <code title="post /v1/extract">client.<a href="./src/parallel/_client.py">extract</a>(\*\*<a href="src/parallel/types/client_extract_params.py">params</a>) -> <a href="./src/parallel/types/extract_response.py">ExtractResponse</a></code>
30
+ - <code title="post /v1/search">client.<a href="./src/parallel/_client.py">search</a>(\*\*<a href="src/parallel/types/client_search_params.py">params</a>) -> <a href="./src/parallel/types/search_result.py">SearchResult</a></code>
31
+
32
+ # TaskRun
33
+
34
+ Types:
35
+
36
+ ```python
37
+ from parallel.types import (
38
+ AutoSchema,
39
+ Citation,
40
+ FieldBasis,
41
+ JsonSchema,
42
+ ParsedTaskRunResult,
43
+ RunInput,
44
+ TaskAdvancedSettings,
45
+ TaskRun,
46
+ TaskRunJsonOutput,
47
+ TaskRunProgressMessageEvent,
48
+ TaskRunProgressStatsEvent,
49
+ TaskRunResult,
50
+ TaskRunSourceStats,
51
+ TaskRunTextOutput,
52
+ TaskSpec,
53
+ TextSchema,
54
+ )
55
+ ```
56
+
57
+ Methods:
58
+
59
+ - <code title="post /v1/tasks/runs">client.task_run.<a href="./src/parallel/resources/task_run.py">create</a>(\*\*<a href="src/parallel/types/task_run_create_params.py">params</a>) -> <a href="./src/parallel/types/task_run.py">TaskRun</a></code>
60
+ - <code title="get /v1/tasks/runs/{run_id}">client.task_run.<a href="./src/parallel/resources/task_run.py">retrieve</a>(run_id) -> <a href="./src/parallel/types/task_run.py">TaskRun</a></code>
61
+ - <code title="get /v1/tasks/runs/{run_id}/result">client.task_run.<a href="./src/parallel/resources/task_run.py">result</a>(run_id, \*\*<a href="src/parallel/types/task_run_result_params.py">params</a>) -> <a href="./src/parallel/types/task_run_result.py">TaskRunResult</a></code>
62
+ - <code title="get /v1/tasks/runs/{run_id}/input">client.task_run.<a href="./src/parallel/resources/task_run.py">retrieve_input</a>(run_id) -> <a href="./src/parallel/types/run_input.py">RunInput</a></code>
63
+
64
+ Convenience methods:
65
+
66
+ - <code title="post /v1/tasks/runs">client.task_run.<a href="./src/parallel/resources/task_run.py">execute</a>(input, processor, output: <a href="./src/parallel/types/task_spec_param.py">OutputSchema</a>) -> <a href="./src/parallel/types/task_run_result.py">TaskRunResult</a></code>
67
+ - <code title="post /v1/tasks/runs">client.task_run.<a href="./src/parallel/resources/task_run.py">execute</a>(input, processor, output: Type[OutputT]) -> <a href="./src/parallel/types/parsed_task_run_result.py">ParsedTaskRunResult[OutputT]</a></code>
68
+ # TaskGroup
69
+
70
+ Types:
71
+
72
+ ```python
73
+ from parallel.types import (
74
+ TaskGroup,
75
+ TaskGroupRunResponse,
76
+ TaskGroupStatus,
77
+ TaskGroupStatusEvent,
78
+ TaskGroupEventsResponse,
79
+ TaskGroupGetRunsResponse,
80
+ )
81
+ ```
82
+
83
+ Methods:
84
+
85
+ - <code title="post /v1/tasks/groups">client.task_group.<a href="./src/parallel/resources/task_group.py">create</a>(\*\*<a href="src/parallel/types/task_group_create_params.py">params</a>) -> <a href="./src/parallel/types/task_group.py">TaskGroup</a></code>
86
+ - <code title="get /v1/tasks/groups/{taskgroup_id}">client.task_group.<a href="./src/parallel/resources/task_group.py">retrieve</a>(task_group_id) -> <a href="./src/parallel/types/task_group.py">TaskGroup</a></code>
87
+ - <code title="post /v1/tasks/groups/{taskgroup_id}/runs">client.task_group.<a href="./src/parallel/resources/task_group.py">add_runs</a>(task_group_id, \*\*<a href="src/parallel/types/task_group_add_runs_params.py">params</a>) -> <a href="./src/parallel/types/task_group_run_response.py">TaskGroupRunResponse</a></code>
88
+ - <code title="get /v1/tasks/groups/{taskgroup_id}/events">client.task_group.<a href="./src/parallel/resources/task_group.py">events</a>(task_group_id, \*\*<a href="src/parallel/types/task_group_events_params.py">params</a>) -> <a href="./src/parallel/types/task_group_events_response.py">TaskGroupEventsResponse</a></code>
89
+ - <code title="get /v1/tasks/groups/{taskgroup_id}/runs">client.task_group.<a href="./src/parallel/resources/task_group.py">get_runs</a>(task_group_id, \*\*<a href="src/parallel/types/task_group_get_runs_params.py">params</a>) -> <a href="./src/parallel/types/task_group_get_runs_response.py">TaskGroupGetRunsResponse</a></code>
90
+ - <code title="get /v1/tasks/groups/{taskgroup_id}/runs/{run_id}">client.task_group.<a href="./src/parallel/resources/task_group.py">retrieve_run</a>(run_id, \*, task_group_id) -> <a href="./src/parallel/types/task_run.py">TaskRun</a></code>
91
+
92
+ # Monitor
93
+
94
+ Types:
95
+
96
+ ```python
97
+ from parallel.types import (
98
+ AdvancedMonitorSettings,
99
+ CreateMonitorRequest,
100
+ Monitor,
101
+ MonitorCompletionEvent,
102
+ MonitorErrorEvent,
103
+ MonitorEventStreamEvent,
104
+ MonitorEventStreamResponseSettings,
105
+ MonitorEventStreamSettings,
106
+ MonitorSnapshotEvent,
107
+ MonitorSnapshotOutput,
108
+ MonitorSnapshotResponseSettings,
109
+ MonitorSnapshotSettings,
110
+ MonitorWebhook,
111
+ PaginatedMonitorEvents,
112
+ PaginatedMonitorResponse,
113
+ UpdateMonitorEventStreamSettings,
114
+ UpdateMonitorRequest,
115
+ )
116
+ ```
117
+
118
+ Methods:
119
+
120
+ - <code title="post /v1/monitors">client.monitor.<a href="./src/parallel/resources/monitor.py">create</a>(\*\*<a href="src/parallel/types/monitor_create_params.py">params</a>) -> <a href="./src/parallel/types/monitor.py">Monitor</a></code>
121
+ - <code title="get /v1/monitors/{monitor_id}">client.monitor.<a href="./src/parallel/resources/monitor.py">retrieve</a>(monitor_id) -> <a href="./src/parallel/types/monitor.py">Monitor</a></code>
122
+ - <code title="post /v1/monitors/{monitor_id}/update">client.monitor.<a href="./src/parallel/resources/monitor.py">update</a>(monitor_id, \*\*<a href="src/parallel/types/monitor_update_params.py">params</a>) -> <a href="./src/parallel/types/monitor.py">Monitor</a></code>
123
+ - <code title="get /v1/monitors">client.monitor.<a href="./src/parallel/resources/monitor.py">list</a>(\*\*<a href="src/parallel/types/monitor_list_params.py">params</a>) -> <a href="./src/parallel/types/paginated_monitor_response.py">PaginatedMonitorResponse</a></code>
124
+ - <code title="post /v1/monitors/{monitor_id}/cancel">client.monitor.<a href="./src/parallel/resources/monitor.py">cancel</a>(monitor_id) -> <a href="./src/parallel/types/monitor.py">Monitor</a></code>
125
+ - <code title="get /v1/monitors/{monitor_id}/events">client.monitor.<a href="./src/parallel/resources/monitor.py">events</a>(monitor_id, \*\*<a href="src/parallel/types/monitor_events_params.py">params</a>) -> <a href="./src/parallel/types/paginated_monitor_events.py">PaginatedMonitorEvents</a></code>
126
+ - <code title="post /v1/monitors/{monitor_id}/trigger">client.monitor.<a href="./src/parallel/resources/monitor.py">trigger</a>(monitor_id) -> None</code>
127
+
128
+ # [Beta](src/parallel/resources/beta/api.md)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "parallel-web"
3
- version = "0.5.0"
3
+ version = "0.6.0"
4
4
  description = "The official Python library for the Parallel API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -158,6 +158,11 @@ reportOverlappingOverload = false
158
158
 
159
159
  reportImportCycles = false
160
160
  reportPrivateUsage = false
161
+ # Deprecation is a runtime concern; type-check warnings produce noise when the
162
+ # breaking-change detector compares against pre-deprecation baseline tests.
163
+ # Newly-generated tests already add a per-file `# pyright: reportDeprecated=false`
164
+ # marker for deprecated resources, so this just promotes that to project-level.
165
+ reportDeprecated = false
161
166
 
162
167
  [tool.mypy]
163
168
  pretty = true
@@ -169,7 +174,7 @@ show_error_codes = true
169
174
  #
170
175
  # We also exclude our `tests` as mypy doesn't always infer
171
176
  # types correctly and Pyright will still catch any type errors.
172
- exclude = ['src/parallel/_files.py', '_dev/.*.py', 'tests/.*']
177
+ exclude = ["src/parallel/_files.py", "_dev/.*.py", "tests/.*"]
173
178
 
174
179
  strict_equality = true
175
180
  implicit_reexport = true
@@ -27,6 +27,7 @@ from ._types import (
27
27
  )
28
28
  from ._utils import (
29
29
  is_given,
30
+ is_mapping_t,
30
31
  maybe_transform,
31
32
  get_async_library,
32
33
  async_maybe_transform,
@@ -53,9 +54,11 @@ from .types.advanced_search_settings_param import AdvancedSearchSettingsParam
53
54
  from .types.advanced_extract_settings_param import AdvancedExtractSettingsParam
54
55
 
55
56
  if TYPE_CHECKING:
56
- from .resources import beta, task_run
57
+ from .resources import beta, monitor, task_run, task_group
58
+ from .resources.monitor import MonitorResource, AsyncMonitorResource
57
59
  from .resources.task_run import TaskRunResource, AsyncTaskRunResource
58
60
  from .resources.beta.beta import BetaResource, AsyncBetaResource
61
+ from .resources.task_group import TaskGroupResource, AsyncTaskGroupResource
59
62
 
60
63
  __all__ = [
61
64
  "Timeout",
@@ -113,6 +116,15 @@ class Parallel(SyncAPIClient):
113
116
  if base_url is None:
114
117
  base_url = f"https://api.parallel.ai"
115
118
 
119
+ custom_headers_env = os.environ.get("PARALLEL_CUSTOM_HEADERS")
120
+ if custom_headers_env is not None:
121
+ parsed: dict[str, str] = {}
122
+ for line in custom_headers_env.split("\n"):
123
+ colon = line.find(":")
124
+ if colon >= 0:
125
+ parsed[line[:colon].strip()] = line[colon + 1 :].strip()
126
+ default_headers = {**parsed, **(default_headers if is_mapping_t(default_headers) else {})}
127
+
116
128
  super().__init__(
117
129
  version=__version__,
118
130
  base_url=base_url,
@@ -132,7 +144,7 @@ class Parallel(SyncAPIClient):
132
144
  - Output metadata: citations, excerpts, reasoning, and confidence per field
133
145
 
134
146
  Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
135
- - Submit hundreds or thousands of Tasks as a single group
147
+ - Submit hundreds or thousands of Tasks as a single group
136
148
  - Observe group progress and receive results as they complete
137
149
  - Real-time updates via Server-Sent Events (SSE)
138
150
  - Add tasks to an existing group while it is running
@@ -142,6 +154,38 @@ class Parallel(SyncAPIClient):
142
154
 
143
155
  return TaskRunResource(self)
144
156
 
157
+ @cached_property
158
+ def task_group(self) -> TaskGroupResource:
159
+ """The Task API executes web research and extraction tasks.
160
+
161
+ Clients submit a natural-language objective with an optional input schema; the service plans retrieval, fetches relevant URLs, and returns outputs that conform to a provided or inferred JSON schema. Supports deep research style queries and can return rich structured JSON outputs. Processors trade-off between cost, latency, and quality. Each processor supports calibrated confidences.
162
+ - Output metadata: citations, excerpts, reasoning, and confidence per field
163
+
164
+ Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
165
+ - Submit hundreds or thousands of Tasks as a single group
166
+ - Observe group progress and receive results as they complete
167
+ - Real-time updates via Server-Sent Events (SSE)
168
+ - Add tasks to an existing group while it is running
169
+ - Group-level retry and error aggregation
170
+ """
171
+ from .resources.task_group import TaskGroupResource
172
+
173
+ return TaskGroupResource(self)
174
+
175
+ @cached_property
176
+ def monitor(self) -> MonitorResource:
177
+ """The Monitor API watches the web for material changes on a fixed frequency.
178
+
179
+ Each monitor runs once on creation and then on its configured schedule, emitting events when meaningful changes are detected.
180
+ - `event_stream` monitors track a search query and emit an event for each new material change.
181
+ - `snapshot` monitors track a specific task run's output and emit an event when the output changes.
182
+
183
+ Results can be polled via the events endpoint or delivered via webhooks.
184
+ """
185
+ from .resources.monitor import MonitorResource
186
+
187
+ return MonitorResource(self)
188
+
145
189
  @cached_property
146
190
  def beta(self) -> BetaResource:
147
191
  from .resources.beta import BetaResource
@@ -247,8 +291,10 @@ class Parallel(SyncAPIClient):
247
291
  """
248
292
  Extracts relevant content from specific web URLs.
249
293
 
250
- The legacy Extract API reference is available
251
- [here](https://docs.parallel.ai/api-reference/legacy/extract-beta/extract).
294
+ The legacy Extract API reference (`/v1beta/extract` endpoint) is available
295
+ [here](https://docs.parallel.ai/api-reference/legacy/extract-beta/extract), and
296
+ migration guide is
297
+ [here](https://docs.parallel.ai/extract/extract-migration-guide).
252
298
 
253
299
  Args:
254
300
  urls: URLs to extract content from. Up to 20 URLs.
@@ -322,8 +368,10 @@ class Parallel(SyncAPIClient):
322
368
  """
323
369
  Searches the web.
324
370
 
325
- The legacy Search API reference is available
326
- [here](https://docs.parallel.ai/api-reference/legacy/search-beta/search).
371
+ The legacy Search API reference (`/v1beta/search` endpoint) is available
372
+ [here](https://docs.parallel.ai/api-reference/legacy/search-beta/search), and
373
+ migration guide is
374
+ [here](https://docs.parallel.ai/search/search-migration-guide).
327
375
 
328
376
  Args:
329
377
  search_queries: Concise keyword search queries, 3-6 words each. At least one query is required,
@@ -460,6 +508,15 @@ class AsyncParallel(AsyncAPIClient):
460
508
  if base_url is None:
461
509
  base_url = f"https://api.parallel.ai"
462
510
 
511
+ custom_headers_env = os.environ.get("PARALLEL_CUSTOM_HEADERS")
512
+ if custom_headers_env is not None:
513
+ parsed: dict[str, str] = {}
514
+ for line in custom_headers_env.split("\n"):
515
+ colon = line.find(":")
516
+ if colon >= 0:
517
+ parsed[line[:colon].strip()] = line[colon + 1 :].strip()
518
+ default_headers = {**parsed, **(default_headers if is_mapping_t(default_headers) else {})}
519
+
463
520
  super().__init__(
464
521
  version=__version__,
465
522
  base_url=base_url,
@@ -479,7 +536,7 @@ class AsyncParallel(AsyncAPIClient):
479
536
  - Output metadata: citations, excerpts, reasoning, and confidence per field
480
537
 
481
538
  Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
482
- - Submit hundreds or thousands of Tasks as a single group
539
+ - Submit hundreds or thousands of Tasks as a single group
483
540
  - Observe group progress and receive results as they complete
484
541
  - Real-time updates via Server-Sent Events (SSE)
485
542
  - Add tasks to an existing group while it is running
@@ -489,6 +546,38 @@ class AsyncParallel(AsyncAPIClient):
489
546
 
490
547
  return AsyncTaskRunResource(self)
491
548
 
549
+ @cached_property
550
+ def task_group(self) -> AsyncTaskGroupResource:
551
+ """The Task API executes web research and extraction tasks.
552
+
553
+ Clients submit a natural-language objective with an optional input schema; the service plans retrieval, fetches relevant URLs, and returns outputs that conform to a provided or inferred JSON schema. Supports deep research style queries and can return rich structured JSON outputs. Processors trade-off between cost, latency, and quality. Each processor supports calibrated confidences.
554
+ - Output metadata: citations, excerpts, reasoning, and confidence per field
555
+
556
+ Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
557
+ - Submit hundreds or thousands of Tasks as a single group
558
+ - Observe group progress and receive results as they complete
559
+ - Real-time updates via Server-Sent Events (SSE)
560
+ - Add tasks to an existing group while it is running
561
+ - Group-level retry and error aggregation
562
+ """
563
+ from .resources.task_group import AsyncTaskGroupResource
564
+
565
+ return AsyncTaskGroupResource(self)
566
+
567
+ @cached_property
568
+ def monitor(self) -> AsyncMonitorResource:
569
+ """The Monitor API watches the web for material changes on a fixed frequency.
570
+
571
+ Each monitor runs once on creation and then on its configured schedule, emitting events when meaningful changes are detected.
572
+ - `event_stream` monitors track a search query and emit an event for each new material change.
573
+ - `snapshot` monitors track a specific task run's output and emit an event when the output changes.
574
+
575
+ Results can be polled via the events endpoint or delivered via webhooks.
576
+ """
577
+ from .resources.monitor import AsyncMonitorResource
578
+
579
+ return AsyncMonitorResource(self)
580
+
492
581
  @cached_property
493
582
  def beta(self) -> AsyncBetaResource:
494
583
  from .resources.beta import AsyncBetaResource
@@ -594,8 +683,10 @@ class AsyncParallel(AsyncAPIClient):
594
683
  """
595
684
  Extracts relevant content from specific web URLs.
596
685
 
597
- The legacy Extract API reference is available
598
- [here](https://docs.parallel.ai/api-reference/legacy/extract-beta/extract).
686
+ The legacy Extract API reference (`/v1beta/extract` endpoint) is available
687
+ [here](https://docs.parallel.ai/api-reference/legacy/extract-beta/extract), and
688
+ migration guide is
689
+ [here](https://docs.parallel.ai/extract/extract-migration-guide).
599
690
 
600
691
  Args:
601
692
  urls: URLs to extract content from. Up to 20 URLs.
@@ -669,8 +760,10 @@ class AsyncParallel(AsyncAPIClient):
669
760
  """
670
761
  Searches the web.
671
762
 
672
- The legacy Search API reference is available
673
- [here](https://docs.parallel.ai/api-reference/legacy/search-beta/search).
763
+ The legacy Search API reference (`/v1beta/search` endpoint) is available
764
+ [here](https://docs.parallel.ai/api-reference/legacy/search-beta/search), and
765
+ migration guide is
766
+ [here](https://docs.parallel.ai/search/search-migration-guide).
674
767
 
675
768
  Args:
676
769
  search_queries: Concise keyword search queries, 3-6 words each. At least one query is required,
@@ -784,7 +877,7 @@ class ParallelWithRawResponse:
784
877
  - Output metadata: citations, excerpts, reasoning, and confidence per field
785
878
 
786
879
  Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
787
- - Submit hundreds or thousands of Tasks as a single group
880
+ - Submit hundreds or thousands of Tasks as a single group
788
881
  - Observe group progress and receive results as they complete
789
882
  - Real-time updates via Server-Sent Events (SSE)
790
883
  - Add tasks to an existing group while it is running
@@ -794,6 +887,38 @@ class ParallelWithRawResponse:
794
887
 
795
888
  return TaskRunResourceWithRawResponse(self._client.task_run)
796
889
 
890
+ @cached_property
891
+ def task_group(self) -> task_group.TaskGroupResourceWithRawResponse:
892
+ """The Task API executes web research and extraction tasks.
893
+
894
+ Clients submit a natural-language objective with an optional input schema; the service plans retrieval, fetches relevant URLs, and returns outputs that conform to a provided or inferred JSON schema. Supports deep research style queries and can return rich structured JSON outputs. Processors trade-off between cost, latency, and quality. Each processor supports calibrated confidences.
895
+ - Output metadata: citations, excerpts, reasoning, and confidence per field
896
+
897
+ Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
898
+ - Submit hundreds or thousands of Tasks as a single group
899
+ - Observe group progress and receive results as they complete
900
+ - Real-time updates via Server-Sent Events (SSE)
901
+ - Add tasks to an existing group while it is running
902
+ - Group-level retry and error aggregation
903
+ """
904
+ from .resources.task_group import TaskGroupResourceWithRawResponse
905
+
906
+ return TaskGroupResourceWithRawResponse(self._client.task_group)
907
+
908
+ @cached_property
909
+ def monitor(self) -> monitor.MonitorResourceWithRawResponse:
910
+ """The Monitor API watches the web for material changes on a fixed frequency.
911
+
912
+ Each monitor runs once on creation and then on its configured schedule, emitting events when meaningful changes are detected.
913
+ - `event_stream` monitors track a search query and emit an event for each new material change.
914
+ - `snapshot` monitors track a specific task run's output and emit an event when the output changes.
915
+
916
+ Results can be polled via the events endpoint or delivered via webhooks.
917
+ """
918
+ from .resources.monitor import MonitorResourceWithRawResponse
919
+
920
+ return MonitorResourceWithRawResponse(self._client.monitor)
921
+
797
922
  @cached_property
798
923
  def beta(self) -> beta.BetaResourceWithRawResponse:
799
924
  from .resources.beta import BetaResourceWithRawResponse
@@ -822,7 +947,7 @@ class AsyncParallelWithRawResponse:
822
947
  - Output metadata: citations, excerpts, reasoning, and confidence per field
823
948
 
824
949
  Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
825
- - Submit hundreds or thousands of Tasks as a single group
950
+ - Submit hundreds or thousands of Tasks as a single group
826
951
  - Observe group progress and receive results as they complete
827
952
  - Real-time updates via Server-Sent Events (SSE)
828
953
  - Add tasks to an existing group while it is running
@@ -832,6 +957,38 @@ class AsyncParallelWithRawResponse:
832
957
 
833
958
  return AsyncTaskRunResourceWithRawResponse(self._client.task_run)
834
959
 
960
+ @cached_property
961
+ def task_group(self) -> task_group.AsyncTaskGroupResourceWithRawResponse:
962
+ """The Task API executes web research and extraction tasks.
963
+
964
+ Clients submit a natural-language objective with an optional input schema; the service plans retrieval, fetches relevant URLs, and returns outputs that conform to a provided or inferred JSON schema. Supports deep research style queries and can return rich structured JSON outputs. Processors trade-off between cost, latency, and quality. Each processor supports calibrated confidences.
965
+ - Output metadata: citations, excerpts, reasoning, and confidence per field
966
+
967
+ Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
968
+ - Submit hundreds or thousands of Tasks as a single group
969
+ - Observe group progress and receive results as they complete
970
+ - Real-time updates via Server-Sent Events (SSE)
971
+ - Add tasks to an existing group while it is running
972
+ - Group-level retry and error aggregation
973
+ """
974
+ from .resources.task_group import AsyncTaskGroupResourceWithRawResponse
975
+
976
+ return AsyncTaskGroupResourceWithRawResponse(self._client.task_group)
977
+
978
+ @cached_property
979
+ def monitor(self) -> monitor.AsyncMonitorResourceWithRawResponse:
980
+ """The Monitor API watches the web for material changes on a fixed frequency.
981
+
982
+ Each monitor runs once on creation and then on its configured schedule, emitting events when meaningful changes are detected.
983
+ - `event_stream` monitors track a search query and emit an event for each new material change.
984
+ - `snapshot` monitors track a specific task run's output and emit an event when the output changes.
985
+
986
+ Results can be polled via the events endpoint or delivered via webhooks.
987
+ """
988
+ from .resources.monitor import AsyncMonitorResourceWithRawResponse
989
+
990
+ return AsyncMonitorResourceWithRawResponse(self._client.monitor)
991
+
835
992
  @cached_property
836
993
  def beta(self) -> beta.AsyncBetaResourceWithRawResponse:
837
994
  from .resources.beta import AsyncBetaResourceWithRawResponse
@@ -860,7 +1017,7 @@ class ParallelWithStreamedResponse:
860
1017
  - Output metadata: citations, excerpts, reasoning, and confidence per field
861
1018
 
862
1019
  Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
863
- - Submit hundreds or thousands of Tasks as a single group
1020
+ - Submit hundreds or thousands of Tasks as a single group
864
1021
  - Observe group progress and receive results as they complete
865
1022
  - Real-time updates via Server-Sent Events (SSE)
866
1023
  - Add tasks to an existing group while it is running
@@ -870,6 +1027,38 @@ class ParallelWithStreamedResponse:
870
1027
 
871
1028
  return TaskRunResourceWithStreamingResponse(self._client.task_run)
872
1029
 
1030
+ @cached_property
1031
+ def task_group(self) -> task_group.TaskGroupResourceWithStreamingResponse:
1032
+ """The Task API executes web research and extraction tasks.
1033
+
1034
+ Clients submit a natural-language objective with an optional input schema; the service plans retrieval, fetches relevant URLs, and returns outputs that conform to a provided or inferred JSON schema. Supports deep research style queries and can return rich structured JSON outputs. Processors trade-off between cost, latency, and quality. Each processor supports calibrated confidences.
1035
+ - Output metadata: citations, excerpts, reasoning, and confidence per field
1036
+
1037
+ Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
1038
+ - Submit hundreds or thousands of Tasks as a single group
1039
+ - Observe group progress and receive results as they complete
1040
+ - Real-time updates via Server-Sent Events (SSE)
1041
+ - Add tasks to an existing group while it is running
1042
+ - Group-level retry and error aggregation
1043
+ """
1044
+ from .resources.task_group import TaskGroupResourceWithStreamingResponse
1045
+
1046
+ return TaskGroupResourceWithStreamingResponse(self._client.task_group)
1047
+
1048
+ @cached_property
1049
+ def monitor(self) -> monitor.MonitorResourceWithStreamingResponse:
1050
+ """The Monitor API watches the web for material changes on a fixed frequency.
1051
+
1052
+ Each monitor runs once on creation and then on its configured schedule, emitting events when meaningful changes are detected.
1053
+ - `event_stream` monitors track a search query and emit an event for each new material change.
1054
+ - `snapshot` monitors track a specific task run's output and emit an event when the output changes.
1055
+
1056
+ Results can be polled via the events endpoint or delivered via webhooks.
1057
+ """
1058
+ from .resources.monitor import MonitorResourceWithStreamingResponse
1059
+
1060
+ return MonitorResourceWithStreamingResponse(self._client.monitor)
1061
+
873
1062
  @cached_property
874
1063
  def beta(self) -> beta.BetaResourceWithStreamingResponse:
875
1064
  from .resources.beta import BetaResourceWithStreamingResponse
@@ -898,7 +1087,7 @@ class AsyncParallelWithStreamedResponse:
898
1087
  - Output metadata: citations, excerpts, reasoning, and confidence per field
899
1088
 
900
1089
  Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
901
- - Submit hundreds or thousands of Tasks as a single group
1090
+ - Submit hundreds or thousands of Tasks as a single group
902
1091
  - Observe group progress and receive results as they complete
903
1092
  - Real-time updates via Server-Sent Events (SSE)
904
1093
  - Add tasks to an existing group while it is running
@@ -908,6 +1097,38 @@ class AsyncParallelWithStreamedResponse:
908
1097
 
909
1098
  return AsyncTaskRunResourceWithStreamingResponse(self._client.task_run)
910
1099
 
1100
+ @cached_property
1101
+ def task_group(self) -> task_group.AsyncTaskGroupResourceWithStreamingResponse:
1102
+ """The Task API executes web research and extraction tasks.
1103
+
1104
+ Clients submit a natural-language objective with an optional input schema; the service plans retrieval, fetches relevant URLs, and returns outputs that conform to a provided or inferred JSON schema. Supports deep research style queries and can return rich structured JSON outputs. Processors trade-off between cost, latency, and quality. Each processor supports calibrated confidences.
1105
+ - Output metadata: citations, excerpts, reasoning, and confidence per field
1106
+
1107
+ Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
1108
+ - Submit hundreds or thousands of Tasks as a single group
1109
+ - Observe group progress and receive results as they complete
1110
+ - Real-time updates via Server-Sent Events (SSE)
1111
+ - Add tasks to an existing group while it is running
1112
+ - Group-level retry and error aggregation
1113
+ """
1114
+ from .resources.task_group import AsyncTaskGroupResourceWithStreamingResponse
1115
+
1116
+ return AsyncTaskGroupResourceWithStreamingResponse(self._client.task_group)
1117
+
1118
+ @cached_property
1119
+ def monitor(self) -> monitor.AsyncMonitorResourceWithStreamingResponse:
1120
+ """The Monitor API watches the web for material changes on a fixed frequency.
1121
+
1122
+ Each monitor runs once on creation and then on its configured schedule, emitting events when meaningful changes are detected.
1123
+ - `event_stream` monitors track a search query and emit an event for each new material change.
1124
+ - `snapshot` monitors track a specific task run's output and emit an event when the output changes.
1125
+
1126
+ Results can be polled via the events endpoint or delivered via webhooks.
1127
+ """
1128
+ from .resources.monitor import AsyncMonitorResourceWithStreamingResponse
1129
+
1130
+ return AsyncMonitorResourceWithStreamingResponse(self._client.monitor)
1131
+
911
1132
  @cached_property
912
1133
  def beta(self) -> beta.AsyncBetaResourceWithStreamingResponse:
913
1134
  from .resources.beta import AsyncBetaResourceWithStreamingResponse
@@ -2,17 +2,13 @@ from __future__ import annotations
2
2
 
3
3
  from typing import Any, List, Tuple, Union, Mapping, TypeVar
4
4
  from urllib.parse import parse_qs, urlencode
5
- from typing_extensions import Literal, get_args
5
+ from typing_extensions import get_args
6
6
 
7
- from ._types import NotGiven, not_given
7
+ from ._types import NotGiven, ArrayFormat, NestedFormat, not_given
8
8
  from ._utils import flatten
9
9
 
10
10
  _T = TypeVar("_T")
11
11
 
12
-
13
- ArrayFormat = Literal["comma", "repeat", "indices", "brackets"]
14
- NestedFormat = Literal["dots", "brackets"]
15
-
16
12
  PrimitiveData = Union[str, int, float, bool, None]
17
13
  # this should be Data = Union[PrimitiveData, "List[Data]", "Tuple[Data]", "Mapping[str, Data]"]
18
14
  # https://github.com/microsoft/pyright/issues/3555
@@ -47,6 +47,9 @@ AnyMapping = Mapping[str, object]
47
47
  ModelT = TypeVar("ModelT", bound=pydantic.BaseModel)
48
48
  _T = TypeVar("_T")
49
49
 
50
+ ArrayFormat = Literal["comma", "repeat", "indices", "brackets"]
51
+ NestedFormat = Literal["dots", "brackets"]
52
+
50
53
 
51
54
  # Approximates httpx internal ProxiesTypes and RequestFiles types
52
55
  # while adding support for `PathLike` instances