parallel-web 0.5.1__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.
- {parallel_web-0.5.1 → parallel_web-0.6.0}/.gitignore +1 -0
- parallel_web-0.6.0/.release-please-manifest.json +3 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/CHANGELOG.md +31 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/PKG-INFO +1 -1
- parallel_web-0.6.0/api.md +128 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/pyproject.toml +7 -2
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_client.py +220 -7
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_qs.py +2 -6
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_types.py +3 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_utils/_utils.py +34 -8
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_version.py +1 -1
- parallel_web-0.6.0/src/parallel/resources/__init__.py +47 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/resources/beta/api.md +12 -7
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/resources/beta/beta.py +12 -78
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/resources/beta/findall.py +12 -9
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/resources/beta/task_group.py +95 -66
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/resources/beta/task_run.py +5 -4
- parallel_web-0.6.0/src/parallel/resources/monitor.py +965 -0
- parallel_web-0.6.0/src/parallel/resources/task_group.py +787 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/resources/task_run.py +84 -6
- parallel_web-0.6.0/src/parallel/types/__init__.py +90 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/advanced_extract_settings_param.py +9 -14
- parallel_web-0.6.0/src/parallel/types/advanced_monitor_settings.py +21 -0
- parallel_web-0.6.0/src/parallel/types/advanced_monitor_settings_param.py +23 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/__init__.py +7 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/beta_extract_params.py +7 -13
- parallel_web-0.5.1/src/parallel/types/beta/findall_run_result.py → parallel_web-0.6.0/src/parallel/types/beta/findall_candidate.py +2 -28
- parallel_web-0.6.0/src/parallel/types/beta/findall_candidate_match_status_event.py +43 -0
- parallel_web-0.6.0/src/parallel/types/beta/findall_candidate_metrics.py +17 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/findall_create_params.py +7 -16
- parallel_web-0.6.0/src/parallel/types/beta/findall_run.py +46 -0
- parallel_web-0.6.0/src/parallel/types/beta/findall_run_result.py +38 -0
- parallel_web-0.6.0/src/parallel/types/beta/findall_run_status.py +35 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/findall_schema.py +2 -15
- parallel_web-0.6.0/src/parallel/types/beta/full_content_settings_param.py +7 -0
- parallel_web-0.6.0/src/parallel/types/beta/match_condition.py +19 -0
- parallel_web-0.6.0/src/parallel/types/beta/match_condition_param.py +21 -0
- parallel_web-0.6.0/src/parallel/types/beta/task_group.py +14 -0
- parallel_web-0.6.0/src/parallel/types/beta/task_group_events_response.py +15 -0
- parallel_web-0.6.0/src/parallel/types/beta/task_group_run_response.py +7 -0
- parallel_web-0.6.0/src/parallel/types/beta/task_group_status.py +7 -0
- parallel_web-0.6.0/src/parallel/types/beta/task_group_status_event.py +7 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/task_run_create_params.py +6 -7
- parallel_web-0.6.0/src/parallel/types/beta/task_run_events_response.py +24 -0
- parallel_web-0.6.0/src/parallel/types/full_content_settings_param.py +19 -0
- parallel_web-0.6.0/src/parallel/types/monitor.py +74 -0
- parallel_web-0.6.0/src/parallel/types/monitor_completion_event.py +23 -0
- parallel_web-0.6.0/src/parallel/types/monitor_create_params.py +56 -0
- parallel_web-0.6.0/src/parallel/types/monitor_error_event.py +25 -0
- parallel_web-0.6.0/src/parallel/types/monitor_event_stream_event.py +43 -0
- parallel_web-0.6.0/src/parallel/types/monitor_event_stream_response_settings.py +30 -0
- parallel_web-0.6.0/src/parallel/types/monitor_event_stream_settings_param.py +32 -0
- parallel_web-0.6.0/src/parallel/types/monitor_events_params.py +29 -0
- parallel_web-0.6.0/src/parallel/types/monitor_list_params.py +31 -0
- parallel_web-0.6.0/src/parallel/types/monitor_snapshot_event.py +51 -0
- parallel_web-0.6.0/src/parallel/types/monitor_snapshot_output.py +26 -0
- parallel_web-0.6.0/src/parallel/types/monitor_snapshot_response_settings.py +21 -0
- parallel_web-0.6.0/src/parallel/types/monitor_snapshot_settings_param.py +14 -0
- parallel_web-0.6.0/src/parallel/types/monitor_update_params.py +40 -0
- parallel_web-0.6.0/src/parallel/types/monitor_webhook.py +20 -0
- parallel_web-0.6.0/src/parallel/types/monitor_webhook_param.py +18 -0
- parallel_web-0.6.0/src/parallel/types/paginated_monitor_events.py +32 -0
- parallel_web-0.6.0/src/parallel/types/paginated_monitor_response.py +21 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/run_input.py +8 -9
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/run_input_param.py +8 -9
- parallel_web-0.6.0/src/parallel/types/task_advanced_settings.py +14 -0
- parallel_web-0.6.0/src/parallel/types/task_advanced_settings_param.py +15 -0
- {parallel_web-0.5.1/src/parallel/types/beta → parallel_web-0.6.0/src/parallel/types}/task_group.py +1 -1
- parallel_web-0.6.0/src/parallel/types/task_group_add_runs_params.py +36 -0
- parallel_web-0.6.0/src/parallel/types/task_group_create_params.py +13 -0
- parallel_web-0.6.0/src/parallel/types/task_group_events_params.py +16 -0
- parallel_web-0.6.0/src/parallel/types/task_group_events_response.py +15 -0
- parallel_web-0.6.0/src/parallel/types/task_group_get_runs_params.py +18 -0
- parallel_web-0.6.0/src/parallel/types/task_group_get_runs_response.py +12 -0
- {parallel_web-0.5.1/src/parallel/types/beta → parallel_web-0.6.0/src/parallel/types}/task_group_run_response.py +1 -1
- {parallel_web-0.5.1/src/parallel/types/beta → parallel_web-0.6.0/src/parallel/types}/task_group_status.py +1 -1
- parallel_web-0.5.1/src/parallel/types/beta/task_group_events_response.py → parallel_web-0.6.0/src/parallel/types/task_group_status_event.py +3 -12
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/task_run_create_params.py +6 -7
- parallel_web-0.6.0/src/parallel/types/task_run_events_response.py +24 -0
- parallel_web-0.6.0/src/parallel/types/task_run_progress_message_event.py +27 -0
- parallel_web-0.6.0/src/parallel/types/task_run_progress_stats_event.py +24 -0
- parallel_web-0.6.0/src/parallel/types/task_run_source_stats.py +20 -0
- parallel_web-0.6.0/src/parallel/types/update_monitor_event_stream_settings_param.py +17 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/api_resources/beta/test_findall.py +8 -8
- parallel_web-0.6.0/tests/api_resources/beta/test_task_group.py +665 -0
- parallel_web-0.6.0/tests/api_resources/test_monitor.py +705 -0
- {parallel_web-0.5.1/tests/api_resources/beta → parallel_web-0.6.0/tests/api_resources}/test_task_group.py +145 -48
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/api_resources/test_task_run.py +77 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/test_extract_files.py +23 -5
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/test_files.py +1 -1
- parallel_web-0.5.1/.release-please-manifest.json +0 -3
- parallel_web-0.5.1/api.md +0 -62
- parallel_web-0.5.1/src/parallel/resources/__init__.py +0 -19
- parallel_web-0.5.1/src/parallel/types/__init__.py +0 -49
- parallel_web-0.5.1/src/parallel/types/beta/findall_candidate_match_status_event.py +0 -72
- parallel_web-0.5.1/src/parallel/types/beta/findall_run.py +0 -73
- parallel_web-0.5.1/src/parallel/types/beta/task_run_events_response.py +0 -70
- parallel_web-0.5.1/src/parallel/types/task_run_events_response.py +0 -70
- {parallel_web-0.5.1 → parallel_web-0.6.0}/CONTRIBUTING.md +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/LICENSE +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/README.md +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/SECURITY.md +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/bin/check-release-environment +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/bin/publish-pypi +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/examples/.keep +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/noxfile.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/release-please-config.json +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/requirements-dev.lock +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/requirements.lock +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/__init__.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_base_client.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_compat.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_constants.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_exceptions.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_files.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_models.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_resource.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_response.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_streaming.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_utils/__init__.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_utils/_compat.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_utils/_datetime_parse.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_utils/_json.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_utils/_logs.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_utils/_path.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_utils/_proxy.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_utils/_reflection.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_utils/_resources_proxy.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_utils/_streams.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_utils/_sync.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_utils/_transform.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/_utils/_typing.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/lib/.keep +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/lib/__init__.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/lib/_parsing/__init__.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/lib/_parsing/_task_run_result.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/lib/_parsing/_task_spec.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/lib/_pydantic.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/lib/_time.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/py.typed +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/resources/beta/__init__.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/advanced_search_settings_param.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/auto_schema.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/auto_schema_param.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/beta_run_input.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/beta_run_input_param.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/beta_search_params.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/beta_task_run_result.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/error_event.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/excerpt_settings_param.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/extract_error.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/extract_response.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/extract_result.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/fetch_policy_param.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/findall_candidates_params.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/findall_candidates_response.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/findall_enrich_input.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/findall_enrich_params.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/findall_events_params.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/findall_events_response.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/findall_extend_params.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/findall_ingest_params.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/findall_run_status_event.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/findall_schema_updated_event.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/mcp_server.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/mcp_server_param.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/mcp_tool_call.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/parallel_beta_param.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/search_result.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/task_group_add_runs_params.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/task_group_create_params.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/task_group_events_params.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/task_group_get_runs_params.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/task_group_get_runs_response.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/task_run_event.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/task_run_result_params.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/usage_item.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/web_search_result.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/webhook.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/beta/webhook_param.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/citation.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/client_extract_params.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/client_search_params.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/error_event.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/excerpt_settings_param.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/extract_error.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/extract_response.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/extract_result.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/fetch_policy_param.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/field_basis.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/json_schema.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/json_schema_param.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/mcp_server.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/mcp_server_param.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/mcp_tool_call.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/parsed_task_run_result.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/search_result.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/shared/__init__.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/shared/error_object.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/shared/error_response.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/shared/source_policy.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/shared/warning.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/shared_params/__init__.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/shared_params/source_policy.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/task_run.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/task_run_event.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/task_run_json_output.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/task_run_result.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/task_run_result_params.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/task_run_text_output.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/task_spec.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/task_spec_param.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/text_schema.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/text_schema_param.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/usage_item.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/web_search_result.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/webhook.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/src/parallel/types/webhook_param.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/__init__.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/api_resources/__init__.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/api_resources/beta/__init__.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/api_resources/beta/test_task_run.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/api_resources/test_beta.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/api_resources/test_client.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/conftest.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/sample_file.txt +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/test_client.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/test_models.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/test_qs.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/test_required_args.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/test_response.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/test_streaming.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/test_transform.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/test_utils/test_json.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/test_utils/test_path.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/test_utils/test_proxy.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/test_utils/test_typing.py +0 -0
- {parallel_web-0.5.1 → parallel_web-0.6.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,36 @@
|
|
|
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
|
+
|
|
3
34
|
## 0.5.1 (2026-04-22)
|
|
4
35
|
|
|
5
36
|
Full Changelog: [v0.5.0...v0.5.1](https://github.com/parallel-web/parallel-sdk-python/compare/v0.5.0...v0.5.1)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: parallel-web
|
|
3
|
-
Version: 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.
|
|
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 = [
|
|
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
|
-
|
|
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
|
|
@@ -464,6 +508,15 @@ class AsyncParallel(AsyncAPIClient):
|
|
|
464
508
|
if base_url is None:
|
|
465
509
|
base_url = f"https://api.parallel.ai"
|
|
466
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
|
+
|
|
467
520
|
super().__init__(
|
|
468
521
|
version=__version__,
|
|
469
522
|
base_url=base_url,
|
|
@@ -483,7 +536,7 @@ class AsyncParallel(AsyncAPIClient):
|
|
|
483
536
|
- Output metadata: citations, excerpts, reasoning, and confidence per field
|
|
484
537
|
|
|
485
538
|
Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
|
|
486
|
-
|
|
539
|
+
- Submit hundreds or thousands of Tasks as a single group
|
|
487
540
|
- Observe group progress and receive results as they complete
|
|
488
541
|
- Real-time updates via Server-Sent Events (SSE)
|
|
489
542
|
- Add tasks to an existing group while it is running
|
|
@@ -493,6 +546,38 @@ class AsyncParallel(AsyncAPIClient):
|
|
|
493
546
|
|
|
494
547
|
return AsyncTaskRunResource(self)
|
|
495
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
|
+
|
|
496
581
|
@cached_property
|
|
497
582
|
def beta(self) -> AsyncBetaResource:
|
|
498
583
|
from .resources.beta import AsyncBetaResource
|
|
@@ -792,7 +877,7 @@ class ParallelWithRawResponse:
|
|
|
792
877
|
- Output metadata: citations, excerpts, reasoning, and confidence per field
|
|
793
878
|
|
|
794
879
|
Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
|
|
795
|
-
|
|
880
|
+
- Submit hundreds or thousands of Tasks as a single group
|
|
796
881
|
- Observe group progress and receive results as they complete
|
|
797
882
|
- Real-time updates via Server-Sent Events (SSE)
|
|
798
883
|
- Add tasks to an existing group while it is running
|
|
@@ -802,6 +887,38 @@ class ParallelWithRawResponse:
|
|
|
802
887
|
|
|
803
888
|
return TaskRunResourceWithRawResponse(self._client.task_run)
|
|
804
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
|
+
|
|
805
922
|
@cached_property
|
|
806
923
|
def beta(self) -> beta.BetaResourceWithRawResponse:
|
|
807
924
|
from .resources.beta import BetaResourceWithRawResponse
|
|
@@ -830,7 +947,7 @@ class AsyncParallelWithRawResponse:
|
|
|
830
947
|
- Output metadata: citations, excerpts, reasoning, and confidence per field
|
|
831
948
|
|
|
832
949
|
Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
|
|
833
|
-
|
|
950
|
+
- Submit hundreds or thousands of Tasks as a single group
|
|
834
951
|
- Observe group progress and receive results as they complete
|
|
835
952
|
- Real-time updates via Server-Sent Events (SSE)
|
|
836
953
|
- Add tasks to an existing group while it is running
|
|
@@ -840,6 +957,38 @@ class AsyncParallelWithRawResponse:
|
|
|
840
957
|
|
|
841
958
|
return AsyncTaskRunResourceWithRawResponse(self._client.task_run)
|
|
842
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
|
+
|
|
843
992
|
@cached_property
|
|
844
993
|
def beta(self) -> beta.AsyncBetaResourceWithRawResponse:
|
|
845
994
|
from .resources.beta import AsyncBetaResourceWithRawResponse
|
|
@@ -868,7 +1017,7 @@ class ParallelWithStreamedResponse:
|
|
|
868
1017
|
- Output metadata: citations, excerpts, reasoning, and confidence per field
|
|
869
1018
|
|
|
870
1019
|
Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
|
|
871
|
-
|
|
1020
|
+
- Submit hundreds or thousands of Tasks as a single group
|
|
872
1021
|
- Observe group progress and receive results as they complete
|
|
873
1022
|
- Real-time updates via Server-Sent Events (SSE)
|
|
874
1023
|
- Add tasks to an existing group while it is running
|
|
@@ -878,6 +1027,38 @@ class ParallelWithStreamedResponse:
|
|
|
878
1027
|
|
|
879
1028
|
return TaskRunResourceWithStreamingResponse(self._client.task_run)
|
|
880
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
|
+
|
|
881
1062
|
@cached_property
|
|
882
1063
|
def beta(self) -> beta.BetaResourceWithStreamingResponse:
|
|
883
1064
|
from .resources.beta import BetaResourceWithStreamingResponse
|
|
@@ -906,7 +1087,7 @@ class AsyncParallelWithStreamedResponse:
|
|
|
906
1087
|
- Output metadata: citations, excerpts, reasoning, and confidence per field
|
|
907
1088
|
|
|
908
1089
|
Task Groups enable batch execution of many independent Task runs with group-level monitoring and failure handling.
|
|
909
|
-
|
|
1090
|
+
- Submit hundreds or thousands of Tasks as a single group
|
|
910
1091
|
- Observe group progress and receive results as they complete
|
|
911
1092
|
- Real-time updates via Server-Sent Events (SSE)
|
|
912
1093
|
- Add tasks to an existing group while it is running
|
|
@@ -916,6 +1097,38 @@ class AsyncParallelWithStreamedResponse:
|
|
|
916
1097
|
|
|
917
1098
|
return AsyncTaskRunResourceWithStreamingResponse(self._client.task_run)
|
|
918
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
|
+
|
|
919
1132
|
@cached_property
|
|
920
1133
|
def beta(self) -> beta.AsyncBetaResourceWithStreamingResponse:
|
|
921
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
|
|
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
|