parallel-web 0.4.2__tar.gz → 0.5.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.4.2 → parallel_web-0.5.0}/.gitignore +1 -0
- parallel_web-0.5.0/.release-please-manifest.json +3 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/CHANGELOG.md +49 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/CONTRIBUTING.md +1 -1
- {parallel_web-0.4.2 → parallel_web-0.5.0}/PKG-INFO +2 -2
- {parallel_web-0.4.2 → parallel_web-0.5.0}/api.md +24 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/pyproject.toml +2 -2
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_base_client.py +4 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_client.py +405 -3
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_compat.py +9 -2
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_files.py +53 -3
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_qs.py +4 -1
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_utils/__init__.py +1 -1
- parallel_web-0.5.0/src/parallel/_utils/_path.py +127 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_utils/_utils.py +3 -17
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_version.py +1 -1
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/resources/beta/api.md +6 -3
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/resources/beta/beta.py +111 -19
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/resources/beta/findall.py +137 -17
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/resources/beta/task_group.py +37 -17
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/resources/beta/task_run.py +101 -56
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/resources/task_run.py +191 -6
- parallel_web-0.5.0/src/parallel/types/__init__.py +49 -0
- parallel_web-0.5.0/src/parallel/types/advanced_extract_settings_param.py +46 -0
- parallel_web-0.5.0/src/parallel/types/advanced_search_settings_param.py +38 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/__init__.py +2 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/beta_extract_params.py +8 -1
- parallel_web-0.5.0/src/parallel/types/beta/beta_run_input.py +8 -0
- parallel_web-0.5.0/src/parallel/types/beta/beta_run_input_param.py +7 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/beta_search_params.py +11 -1
- parallel_web-0.5.0/src/parallel/types/beta/beta_task_run_result.py +31 -0
- parallel_web-0.5.0/src/parallel/types/beta/error_event.py +8 -0
- parallel_web-0.5.0/src/parallel/types/beta/extract_error.py +7 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/extract_response.py +2 -2
- parallel_web-0.5.0/src/parallel/types/beta/fetch_policy_param.py +7 -0
- parallel_web-0.5.0/src/parallel/types/beta/findall_candidates_params.py +22 -0
- parallel_web-0.5.0/src/parallel/types/beta/findall_candidates_response.py +29 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/findall_create_params.py +2 -2
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/findall_enrich_input.py +1 -1
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/findall_enrich_params.py +1 -1
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/findall_events_response.py +1 -2
- parallel_web-0.5.0/src/parallel/types/beta/mcp_server.py +8 -0
- parallel_web-0.5.0/src/parallel/types/beta/mcp_server_param.py +7 -0
- parallel_web-0.5.0/src/parallel/types/beta/mcp_tool_call.py +8 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/search_result.py +1 -1
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_add_runs_params.py +4 -2
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_events_response.py +2 -2
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_get_runs_response.py +2 -2
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/task_run_create_params.py +18 -14
- parallel_web-0.5.0/src/parallel/types/beta/task_run_event.py +11 -0
- parallel_web-0.5.0/src/parallel/types/beta/task_run_events_response.py +70 -0
- parallel_web-0.5.0/src/parallel/types/beta/usage_item.py +7 -0
- parallel_web-0.5.0/src/parallel/types/beta/webhook.py +8 -0
- parallel_web-0.5.0/src/parallel/types/beta/webhook_param.py +7 -0
- parallel_web-0.5.0/src/parallel/types/client_extract_params.py +52 -0
- parallel_web-0.5.0/src/parallel/types/client_search_params.py +59 -0
- {parallel_web-0.4.2/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/error_event.py +2 -2
- parallel_web-0.5.0/src/parallel/types/excerpt_settings_param.py +19 -0
- {parallel_web-0.4.2/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/extract_error.py +1 -1
- parallel_web-0.5.0/src/parallel/types/extract_response.py +38 -0
- parallel_web-0.5.0/src/parallel/types/extract_result.py +26 -0
- {parallel_web-0.4.2/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/mcp_server.py +1 -1
- {parallel_web-0.4.2/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/mcp_server_param.py +1 -1
- {parallel_web-0.4.2/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/mcp_tool_call.py +1 -1
- parallel_web-0.4.2/src/parallel/types/beta/beta_run_input.py → parallel_web-0.5.0/src/parallel/types/run_input.py +21 -17
- parallel_web-0.4.2/src/parallel/types/beta/beta_run_input_param.py → parallel_web-0.5.0/src/parallel/types/run_input_param.py +20 -16
- parallel_web-0.5.0/src/parallel/types/search_result.py +33 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/shared/source_policy.py +4 -2
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/shared_params/source_policy.py +4 -2
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/task_run.py +1 -4
- parallel_web-0.5.0/src/parallel/types/task_run_create_params.py +77 -0
- {parallel_web-0.4.2/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/task_run_event.py +8 -8
- {parallel_web-0.4.2/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/task_run_events_response.py +2 -2
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/task_run_json_output.py +8 -11
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/task_run_result.py +0 -1
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/task_run_result_params.py +5 -0
- parallel_web-0.5.0/src/parallel/types/task_run_text_output.py +36 -0
- {parallel_web-0.4.2/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/usage_item.py +1 -1
- parallel_web-0.5.0/src/parallel/types/web_search_result.py +23 -0
- {parallel_web-0.4.2/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/webhook.py +1 -1
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/api_resources/beta/test_findall.py +87 -10
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/api_resources/beta/test_task_group.py +4 -20
- parallel_web-0.5.0/tests/api_resources/beta/test_task_run.py +385 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/api_resources/test_beta.py +7 -4
- parallel_web-0.5.0/tests/api_resources/test_client.py +248 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/api_resources/test_task_run.py +112 -1
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/test_client.py +48 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/test_extract_files.py +9 -0
- parallel_web-0.5.0/tests/test_files.py +148 -0
- parallel_web-0.5.0/tests/test_utils/test_path.py +89 -0
- parallel_web-0.4.2/.release-please-manifest.json +0 -3
- parallel_web-0.4.2/src/parallel/types/__init__.py +0 -27
- parallel_web-0.4.2/src/parallel/types/beta/beta_task_run_result.py +0 -88
- parallel_web-0.4.2/src/parallel/types/task_run_create_params.py +0 -44
- parallel_web-0.4.2/src/parallel/types/task_run_text_output.py +0 -39
- parallel_web-0.4.2/tests/api_resources/beta/test_task_run.py +0 -354
- parallel_web-0.4.2/tests/test_deepcopy.py +0 -58
- parallel_web-0.4.2/tests/test_files.py +0 -51
- {parallel_web-0.4.2 → parallel_web-0.5.0}/LICENSE +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/README.md +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/SECURITY.md +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/bin/check-release-environment +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/bin/publish-pypi +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/examples/.keep +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/noxfile.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/release-please-config.json +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/requirements-dev.lock +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/requirements.lock +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/__init__.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_constants.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_exceptions.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_models.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_resource.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_response.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_streaming.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_types.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_utils/_compat.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_utils/_datetime_parse.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_utils/_json.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_utils/_logs.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_utils/_proxy.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_utils/_reflection.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_utils/_resources_proxy.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_utils/_streams.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_utils/_sync.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_utils/_transform.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/_utils/_typing.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/lib/.keep +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/lib/__init__.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/lib/_parsing/__init__.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/lib/_parsing/_task_run_result.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/lib/_parsing/_task_spec.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/lib/_pydantic.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/lib/_time.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/py.typed +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/resources/__init__.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/resources/beta/__init__.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/auto_schema.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/auto_schema_param.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/excerpt_settings_param.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/extract_result.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/findall_candidate_match_status_event.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/findall_events_params.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/findall_extend_params.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/findall_ingest_params.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/findall_run.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/findall_run_result.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/findall_run_status_event.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/findall_schema.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/findall_schema_updated_event.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/parallel_beta_param.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/task_group.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_create_params.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_events_params.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_get_runs_params.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_run_response.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_status.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/task_run_result_params.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/beta/web_search_result.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/citation.py +0 -0
- {parallel_web-0.4.2/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/fetch_policy_param.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/field_basis.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/json_schema.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/json_schema_param.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/parsed_task_run_result.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/shared/__init__.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/shared/error_object.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/shared/error_response.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/shared/warning.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/shared_params/__init__.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/task_spec.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/task_spec_param.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/text_schema.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/src/parallel/types/text_schema_param.py +0 -0
- {parallel_web-0.4.2/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/webhook_param.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/__init__.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/api_resources/__init__.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/api_resources/beta/__init__.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/conftest.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/sample_file.txt +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/test_models.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/test_qs.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/test_required_args.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/test_response.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/test_streaming.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/test_transform.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/test_utils/test_json.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/test_utils/test_proxy.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/test_utils/test_typing.py +0 -0
- {parallel_web-0.4.2 → parallel_web-0.5.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,54 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.0 (2026-04-21)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.4.2...v0.5.0](https://github.com/parallel-web/parallel-sdk-python/compare/v0.4.2...v0.5.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** Add Findall Candidates ([57c4ae2](https://github.com/parallel-web/parallel-sdk-python/commit/57c4ae25d77a8627c6be3673312bfd7f373e17da))
|
|
10
|
+
* **api:** Add Search and Extract v1 and associated types ([ea487f3](https://github.com/parallel-web/parallel-sdk-python/commit/ea487f32b73aee955f662d1fa225841421ce1ba3))
|
|
11
|
+
* **api:** manual - add AdvancedSearchSettings and AdvancedExtractSettings models ([5836a6f](https://github.com/parallel-web/parallel-sdk-python/commit/5836a6fbe8db3a3509556442067f087918edb2bb))
|
|
12
|
+
* **api:** manual updates - update openapi spec ([02db6c0](https://github.com/parallel-web/parallel-sdk-python/commit/02db6c07ec5eb254b18732fcb6f7dc43e31de471))
|
|
13
|
+
* **api:** Remove full_content from OpenAPI Spec ([7a4d651](https://github.com/parallel-web/parallel-sdk-python/commit/7a4d651c3e9f35334175f82daaf6392e9f76dee5))
|
|
14
|
+
* **api:** Search/Extract v1 with advanced_settings and max_results ([4ded29c](https://github.com/parallel-web/parallel-sdk-python/commit/4ded29c2382594f1735101753a0b09a2f7c6972e))
|
|
15
|
+
* **api:** Update OpenAPI spec ([58f19f3](https://github.com/parallel-web/parallel-sdk-python/commit/58f19f38174fb71dc906049c0aef6610ac67971e))
|
|
16
|
+
* **api:** Update OpenAPI spec ([fae95f4](https://github.com/parallel-web/parallel-sdk-python/commit/fae95f4f2c7cb60ebc0babc4fe540617e3334b2d))
|
|
17
|
+
* **internal:** implement indices array format for query and form serialization ([3df5972](https://github.com/parallel-web/parallel-sdk-python/commit/3df5972e34c9aa1709eabc4eb5b8cbbc0adccae2))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* **client:** preserve hardcoded query params when merging with user params ([08080bc](https://github.com/parallel-web/parallel-sdk-python/commit/08080bc22c415881cc9f9b05bc22f09ab83c7e8d))
|
|
23
|
+
* **deps:** bump minimum typing-extensions version ([964a46d](https://github.com/parallel-web/parallel-sdk-python/commit/964a46ddfc9ead64e4105e42192a780bc91716b0))
|
|
24
|
+
* ensure file data are only sent as 1 parameter ([1c15cc0](https://github.com/parallel-web/parallel-sdk-python/commit/1c15cc00b1ae223db8e51893ce23b9a2193e3ae7))
|
|
25
|
+
* **pydantic:** do not pass `by_alias` unless set ([f0793c1](https://github.com/parallel-web/parallel-sdk-python/commit/f0793c171465dd57d0fbf82a3bb2281d046f500e))
|
|
26
|
+
* sanitize endpoint path params ([5931597](https://github.com/parallel-web/parallel-sdk-python/commit/59315972d27246485be5cb52671aecaa3aa46253))
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
### Performance Improvements
|
|
30
|
+
|
|
31
|
+
* **client:** optimize file structure copying in multipart requests ([00e8564](https://github.com/parallel-web/parallel-sdk-python/commit/00e856464a2828693483a704de83ee5d6c4fe19e))
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
### Chores
|
|
35
|
+
|
|
36
|
+
* **ci:** skip lint on metadata-only changes ([403448c](https://github.com/parallel-web/parallel-sdk-python/commit/403448c7760e70fe0f4b3998a20f048910e91cd6))
|
|
37
|
+
* **internal:** tweak CI branches ([014c802](https://github.com/parallel-web/parallel-sdk-python/commit/014c80287318df0db6207df1579be00c4717f24d))
|
|
38
|
+
* **internal:** update gitignore ([1f4f6b0](https://github.com/parallel-web/parallel-sdk-python/commit/1f4f6b0e5d2a46e1a5457879e937ea5aa551073c))
|
|
39
|
+
* **tests:** bump steady to v0.19.4 ([ebee2e7](https://github.com/parallel-web/parallel-sdk-python/commit/ebee2e761e2a8587cc6aa4c2decfd6310092b039))
|
|
40
|
+
* **tests:** bump steady to v0.19.5 ([2774099](https://github.com/parallel-web/parallel-sdk-python/commit/2774099f753bc0826e9c6b6e9fbb40d4e72e3405))
|
|
41
|
+
* **tests:** bump steady to v0.19.6 ([8e3ee3d](https://github.com/parallel-web/parallel-sdk-python/commit/8e3ee3d04dc149b2bcedb0e4acd92474fafd8d05))
|
|
42
|
+
* **tests:** bump steady to v0.19.7 ([4bcf12e](https://github.com/parallel-web/parallel-sdk-python/commit/4bcf12e670b7997e23ade3d991711fe1ef741e35))
|
|
43
|
+
* **tests:** bump steady to v0.20.1 ([d82ce60](https://github.com/parallel-web/parallel-sdk-python/commit/d82ce601c5687553b0e96990e418289fd8a14e00))
|
|
44
|
+
* **tests:** bump steady to v0.20.2 ([746ca39](https://github.com/parallel-web/parallel-sdk-python/commit/746ca39c749f899dc9137a2f9be5de9aa39210c6))
|
|
45
|
+
* **tests:** bump steady to v0.22.1 ([dec81af](https://github.com/parallel-web/parallel-sdk-python/commit/dec81afb89f46850635daa89e64debe15717d053))
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
### Refactors
|
|
49
|
+
|
|
50
|
+
* **tests:** switch from prism to steady ([032745e](https://github.com/parallel-web/parallel-sdk-python/commit/032745ea1a03b3d2516b789a28a3c8b8034660d8))
|
|
51
|
+
|
|
3
52
|
## 0.4.2 (2026-03-09)
|
|
4
53
|
|
|
5
54
|
Full Changelog: [v0.4.1...v0.4.2](https://github.com/parallel-web/parallel-sdk-python/compare/v0.4.1...v0.4.2)
|
|
@@ -85,7 +85,7 @@ $ pip install ./path-to-wheel-file.whl
|
|
|
85
85
|
|
|
86
86
|
## Running tests
|
|
87
87
|
|
|
88
|
-
Most tests require you to [set up a mock server](https://github.com/
|
|
88
|
+
Most tests require you to [set up a mock server](https://github.com/dgellow/steady) against the OpenAPI spec to run the tests.
|
|
89
89
|
|
|
90
90
|
```sh
|
|
91
91
|
$ ./scripts/mock
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: parallel-web
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.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
|
|
@@ -27,7 +27,7 @@ Requires-Dist: distro<2,>=1.7.0
|
|
|
27
27
|
Requires-Dist: httpx<1,>=0.23.0
|
|
28
28
|
Requires-Dist: pydantic<3,>=1.9.0
|
|
29
29
|
Requires-Dist: sniffio
|
|
30
|
-
Requires-Dist: typing-extensions<5,>=4.
|
|
30
|
+
Requires-Dist: typing-extensions<5,>=4.14
|
|
31
31
|
Provides-Extra: aiohttp
|
|
32
32
|
Requires-Dist: aiohttp; extra == 'aiohttp'
|
|
33
33
|
Requires-Dist: httpx-aiohttp>=0.1.9; extra == 'aiohttp'
|
|
@@ -4,6 +4,30 @@
|
|
|
4
4
|
from parallel.types import ErrorObject, ErrorResponse, SourcePolicy, Warning
|
|
5
5
|
```
|
|
6
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
|
+
SearchResult,
|
|
21
|
+
UsageItem,
|
|
22
|
+
WebSearchResult,
|
|
23
|
+
)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Methods:
|
|
27
|
+
|
|
28
|
+
- <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>
|
|
29
|
+
- <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>
|
|
30
|
+
|
|
7
31
|
# TaskRun
|
|
8
32
|
|
|
9
33
|
Types:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "parallel-web"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.5.0"
|
|
4
4
|
description = "The official Python library for the Parallel API"
|
|
5
5
|
dynamic = ["readme"]
|
|
6
6
|
license = "MIT"
|
|
@@ -11,7 +11,7 @@ authors = [
|
|
|
11
11
|
dependencies = [
|
|
12
12
|
"httpx>=0.23.0, <1",
|
|
13
13
|
"pydantic>=1.9.0, <3",
|
|
14
|
-
"typing-extensions>=4.
|
|
14
|
+
"typing-extensions>=4.14, <5",
|
|
15
15
|
"anyio>=3.5.0, <5",
|
|
16
16
|
"distro>=1.7.0, <2",
|
|
17
17
|
"sniffio",
|
|
@@ -540,6 +540,10 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
|
540
540
|
files = cast(HttpxRequestFiles, ForceMultipartDict())
|
|
541
541
|
|
|
542
542
|
prepared_url = self._prepare_url(options.url)
|
|
543
|
+
# preserve hard-coded query params from the url
|
|
544
|
+
if params and prepared_url.query:
|
|
545
|
+
params = {**dict(prepared_url.params.items()), **params}
|
|
546
|
+
prepared_url = prepared_url.copy_with(raw_path=prepared_url.raw_path.split(b"?", 1)[0])
|
|
543
547
|
if "_" in prepared_url.host:
|
|
544
548
|
# work around https://github.com/encode/httpx/discussions/2880
|
|
545
549
|
kwargs["extensions"] = {"sni_hostname": prepared_url.host.replace("_", "-")}
|
|
@@ -3,32 +3,54 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import os
|
|
6
|
-
from typing import TYPE_CHECKING, Any, Mapping
|
|
7
|
-
from typing_extensions import Self, override
|
|
6
|
+
from typing import TYPE_CHECKING, Any, Mapping, Optional
|
|
7
|
+
from typing_extensions import Self, Literal, override
|
|
8
8
|
|
|
9
9
|
import httpx
|
|
10
10
|
|
|
11
11
|
from . import _exceptions
|
|
12
12
|
from ._qs import Querystring
|
|
13
|
+
from .types import client_search_params, client_extract_params
|
|
13
14
|
from ._types import (
|
|
15
|
+
Body,
|
|
14
16
|
Omit,
|
|
17
|
+
Query,
|
|
18
|
+
Headers,
|
|
15
19
|
Timeout,
|
|
16
20
|
NotGiven,
|
|
17
21
|
Transport,
|
|
18
22
|
ProxiesTypes,
|
|
19
23
|
RequestOptions,
|
|
24
|
+
SequenceNotStr,
|
|
25
|
+
omit,
|
|
20
26
|
not_given,
|
|
21
27
|
)
|
|
22
|
-
from ._utils import
|
|
28
|
+
from ._utils import (
|
|
29
|
+
is_given,
|
|
30
|
+
maybe_transform,
|
|
31
|
+
get_async_library,
|
|
32
|
+
async_maybe_transform,
|
|
33
|
+
)
|
|
23
34
|
from ._compat import cached_property
|
|
24
35
|
from ._version import __version__
|
|
36
|
+
from ._response import (
|
|
37
|
+
to_raw_response_wrapper,
|
|
38
|
+
to_streamed_response_wrapper,
|
|
39
|
+
async_to_raw_response_wrapper,
|
|
40
|
+
async_to_streamed_response_wrapper,
|
|
41
|
+
)
|
|
25
42
|
from ._streaming import Stream as Stream, AsyncStream as AsyncStream
|
|
26
43
|
from ._exceptions import ParallelError, APIStatusError
|
|
27
44
|
from ._base_client import (
|
|
28
45
|
DEFAULT_MAX_RETRIES,
|
|
29
46
|
SyncAPIClient,
|
|
30
47
|
AsyncAPIClient,
|
|
48
|
+
make_request_options,
|
|
31
49
|
)
|
|
50
|
+
from .types.search_result import SearchResult
|
|
51
|
+
from .types.extract_response import ExtractResponse
|
|
52
|
+
from .types.advanced_search_settings_param import AdvancedSearchSettingsParam
|
|
53
|
+
from .types.advanced_extract_settings_param import AdvancedExtractSettingsParam
|
|
32
54
|
|
|
33
55
|
if TYPE_CHECKING:
|
|
34
56
|
from .resources import beta, task_run
|
|
@@ -108,6 +130,13 @@ class Parallel(SyncAPIClient):
|
|
|
108
130
|
|
|
109
131
|
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.
|
|
110
132
|
- Output metadata: citations, excerpts, reasoning, and confidence per field
|
|
133
|
+
|
|
134
|
+
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
|
|
136
|
+
- Observe group progress and receive results as they complete
|
|
137
|
+
- Real-time updates via Server-Sent Events (SSE)
|
|
138
|
+
- Add tasks to an existing group while it is running
|
|
139
|
+
- Group-level retry and error aggregation
|
|
111
140
|
"""
|
|
112
141
|
from .resources.task_run import TaskRunResource
|
|
113
142
|
|
|
@@ -198,6 +227,161 @@ class Parallel(SyncAPIClient):
|
|
|
198
227
|
# client.with_options(timeout=10).foo.create(...)
|
|
199
228
|
with_options = copy
|
|
200
229
|
|
|
230
|
+
def extract(
|
|
231
|
+
self,
|
|
232
|
+
*,
|
|
233
|
+
urls: SequenceNotStr[str],
|
|
234
|
+
advanced_settings: Optional[AdvancedExtractSettingsParam] | Omit = omit,
|
|
235
|
+
client_model: Optional[str] | Omit = omit,
|
|
236
|
+
max_chars_total: Optional[int] | Omit = omit,
|
|
237
|
+
objective: Optional[str] | Omit = omit,
|
|
238
|
+
search_queries: Optional[SequenceNotStr[str]] | Omit = omit,
|
|
239
|
+
session_id: Optional[str] | Omit = omit,
|
|
240
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
241
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
242
|
+
extra_headers: Headers | None = None,
|
|
243
|
+
extra_query: Query | None = None,
|
|
244
|
+
extra_body: Body | None = None,
|
|
245
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
246
|
+
) -> ExtractResponse:
|
|
247
|
+
"""
|
|
248
|
+
Extracts relevant content from specific web URLs.
|
|
249
|
+
|
|
250
|
+
The legacy Extract API reference is available
|
|
251
|
+
[here](https://docs.parallel.ai/api-reference/legacy/extract-beta/extract).
|
|
252
|
+
|
|
253
|
+
Args:
|
|
254
|
+
urls: URLs to extract content from. Up to 20 URLs.
|
|
255
|
+
|
|
256
|
+
advanced_settings: Advanced extract configuration.
|
|
257
|
+
|
|
258
|
+
These settings may impact result quality and latency unless used carefully. See
|
|
259
|
+
https://docs.parallel.ai/search/advanced-extract-settings for more info.
|
|
260
|
+
|
|
261
|
+
client_model: The model generating this request and consuming the results. Enables
|
|
262
|
+
optimizations and tailors default settings for the model's capabilities.
|
|
263
|
+
|
|
264
|
+
max_chars_total: Upper bound on total characters across excerpts from all extracted results.
|
|
265
|
+
|
|
266
|
+
objective: As in SearchRequest, a natural-language description of the underlying question
|
|
267
|
+
or goal driving the request. Used together with search_queries to focus excerpts
|
|
268
|
+
on the most relevant content.
|
|
269
|
+
|
|
270
|
+
search_queries: Optional keyword search queries, as in SearchRequest. Used together with
|
|
271
|
+
objective to focus excerpts on the most relevant content.
|
|
272
|
+
|
|
273
|
+
session_id: Session identifier to track calls across separate search and extract calls, to
|
|
274
|
+
be used as part of a larger task. Specifying it may give better contextual
|
|
275
|
+
results for subsequent API calls.
|
|
276
|
+
|
|
277
|
+
extra_headers: Send extra headers
|
|
278
|
+
|
|
279
|
+
extra_query: Add additional query parameters to the request
|
|
280
|
+
|
|
281
|
+
extra_body: Add additional JSON properties to the request
|
|
282
|
+
|
|
283
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
284
|
+
"""
|
|
285
|
+
return self.post(
|
|
286
|
+
"/v1/extract",
|
|
287
|
+
body=maybe_transform(
|
|
288
|
+
{
|
|
289
|
+
"urls": urls,
|
|
290
|
+
"advanced_settings": advanced_settings,
|
|
291
|
+
"client_model": client_model,
|
|
292
|
+
"max_chars_total": max_chars_total,
|
|
293
|
+
"objective": objective,
|
|
294
|
+
"search_queries": search_queries,
|
|
295
|
+
"session_id": session_id,
|
|
296
|
+
},
|
|
297
|
+
client_extract_params.ClientExtractParams,
|
|
298
|
+
),
|
|
299
|
+
options=make_request_options(
|
|
300
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
301
|
+
),
|
|
302
|
+
cast_to=ExtractResponse,
|
|
303
|
+
)
|
|
304
|
+
|
|
305
|
+
def search(
|
|
306
|
+
self,
|
|
307
|
+
*,
|
|
308
|
+
search_queries: SequenceNotStr[str],
|
|
309
|
+
advanced_settings: Optional[AdvancedSearchSettingsParam] | Omit = omit,
|
|
310
|
+
client_model: Optional[str] | Omit = omit,
|
|
311
|
+
max_chars_total: Optional[int] | Omit = omit,
|
|
312
|
+
mode: Optional[Literal["basic", "advanced"]] | Omit = omit,
|
|
313
|
+
objective: Optional[str] | Omit = omit,
|
|
314
|
+
session_id: Optional[str] | Omit = omit,
|
|
315
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
316
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
317
|
+
extra_headers: Headers | None = None,
|
|
318
|
+
extra_query: Query | None = None,
|
|
319
|
+
extra_body: Body | None = None,
|
|
320
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
321
|
+
) -> SearchResult:
|
|
322
|
+
"""
|
|
323
|
+
Searches the web.
|
|
324
|
+
|
|
325
|
+
The legacy Search API reference is available
|
|
326
|
+
[here](https://docs.parallel.ai/api-reference/legacy/search-beta/search).
|
|
327
|
+
|
|
328
|
+
Args:
|
|
329
|
+
search_queries: Concise keyword search queries, 3-6 words each. At least one query is required,
|
|
330
|
+
provide 2-3 for best results. Used together with objective to focus results on
|
|
331
|
+
the most relevant content.
|
|
332
|
+
|
|
333
|
+
advanced_settings: Advanced search configuration.
|
|
334
|
+
|
|
335
|
+
These settings may impact result quality and latency unless used carefully. See
|
|
336
|
+
https://docs.parallel.ai/search/advanced-search-settings for more info.
|
|
337
|
+
|
|
338
|
+
client_model: The model generating this request and consuming the results. Enables
|
|
339
|
+
optimizations and tailors default settings for the model's capabilities.
|
|
340
|
+
|
|
341
|
+
max_chars_total: Upper bound on total characters across excerpts from all results.
|
|
342
|
+
|
|
343
|
+
mode: Search mode preset: supported values are `basic` and `advanced`. Basic mode
|
|
344
|
+
offers the lowest latency and works best with 2-3 high-quality search_queries.
|
|
345
|
+
Advanced mode provides higher quality with more advanced retrieval and
|
|
346
|
+
compression. Defaults to `advanced` when omitted.
|
|
347
|
+
|
|
348
|
+
objective: Natural-language description of the underlying question or goal driving the
|
|
349
|
+
search. Used together with search_queries to focus results on the most relevant
|
|
350
|
+
content. Should be self-contained with enough context to understand the intent
|
|
351
|
+
of the search.
|
|
352
|
+
|
|
353
|
+
session_id: Session identifier to track calls across separate search and extract calls, to
|
|
354
|
+
be used as part of a larger task. Specifying it may give better contextual
|
|
355
|
+
results for subsequent API calls.
|
|
356
|
+
|
|
357
|
+
extra_headers: Send extra headers
|
|
358
|
+
|
|
359
|
+
extra_query: Add additional query parameters to the request
|
|
360
|
+
|
|
361
|
+
extra_body: Add additional JSON properties to the request
|
|
362
|
+
|
|
363
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
364
|
+
"""
|
|
365
|
+
return self.post(
|
|
366
|
+
"/v1/search",
|
|
367
|
+
body=maybe_transform(
|
|
368
|
+
{
|
|
369
|
+
"search_queries": search_queries,
|
|
370
|
+
"advanced_settings": advanced_settings,
|
|
371
|
+
"client_model": client_model,
|
|
372
|
+
"max_chars_total": max_chars_total,
|
|
373
|
+
"mode": mode,
|
|
374
|
+
"objective": objective,
|
|
375
|
+
"session_id": session_id,
|
|
376
|
+
},
|
|
377
|
+
client_search_params.ClientSearchParams,
|
|
378
|
+
),
|
|
379
|
+
options=make_request_options(
|
|
380
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
381
|
+
),
|
|
382
|
+
cast_to=SearchResult,
|
|
383
|
+
)
|
|
384
|
+
|
|
201
385
|
@override
|
|
202
386
|
def _make_status_error(
|
|
203
387
|
self,
|
|
@@ -293,6 +477,13 @@ class AsyncParallel(AsyncAPIClient):
|
|
|
293
477
|
|
|
294
478
|
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.
|
|
295
479
|
- Output metadata: citations, excerpts, reasoning, and confidence per field
|
|
480
|
+
|
|
481
|
+
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
|
|
483
|
+
- Observe group progress and receive results as they complete
|
|
484
|
+
- Real-time updates via Server-Sent Events (SSE)
|
|
485
|
+
- Add tasks to an existing group while it is running
|
|
486
|
+
- Group-level retry and error aggregation
|
|
296
487
|
"""
|
|
297
488
|
from .resources.task_run import AsyncTaskRunResource
|
|
298
489
|
|
|
@@ -383,6 +574,161 @@ class AsyncParallel(AsyncAPIClient):
|
|
|
383
574
|
# client.with_options(timeout=10).foo.create(...)
|
|
384
575
|
with_options = copy
|
|
385
576
|
|
|
577
|
+
async def extract(
|
|
578
|
+
self,
|
|
579
|
+
*,
|
|
580
|
+
urls: SequenceNotStr[str],
|
|
581
|
+
advanced_settings: Optional[AdvancedExtractSettingsParam] | Omit = omit,
|
|
582
|
+
client_model: Optional[str] | Omit = omit,
|
|
583
|
+
max_chars_total: Optional[int] | Omit = omit,
|
|
584
|
+
objective: Optional[str] | Omit = omit,
|
|
585
|
+
search_queries: Optional[SequenceNotStr[str]] | Omit = omit,
|
|
586
|
+
session_id: Optional[str] | Omit = omit,
|
|
587
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
588
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
589
|
+
extra_headers: Headers | None = None,
|
|
590
|
+
extra_query: Query | None = None,
|
|
591
|
+
extra_body: Body | None = None,
|
|
592
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
593
|
+
) -> ExtractResponse:
|
|
594
|
+
"""
|
|
595
|
+
Extracts relevant content from specific web URLs.
|
|
596
|
+
|
|
597
|
+
The legacy Extract API reference is available
|
|
598
|
+
[here](https://docs.parallel.ai/api-reference/legacy/extract-beta/extract).
|
|
599
|
+
|
|
600
|
+
Args:
|
|
601
|
+
urls: URLs to extract content from. Up to 20 URLs.
|
|
602
|
+
|
|
603
|
+
advanced_settings: Advanced extract configuration.
|
|
604
|
+
|
|
605
|
+
These settings may impact result quality and latency unless used carefully. See
|
|
606
|
+
https://docs.parallel.ai/search/advanced-extract-settings for more info.
|
|
607
|
+
|
|
608
|
+
client_model: The model generating this request and consuming the results. Enables
|
|
609
|
+
optimizations and tailors default settings for the model's capabilities.
|
|
610
|
+
|
|
611
|
+
max_chars_total: Upper bound on total characters across excerpts from all extracted results.
|
|
612
|
+
|
|
613
|
+
objective: As in SearchRequest, a natural-language description of the underlying question
|
|
614
|
+
or goal driving the request. Used together with search_queries to focus excerpts
|
|
615
|
+
on the most relevant content.
|
|
616
|
+
|
|
617
|
+
search_queries: Optional keyword search queries, as in SearchRequest. Used together with
|
|
618
|
+
objective to focus excerpts on the most relevant content.
|
|
619
|
+
|
|
620
|
+
session_id: Session identifier to track calls across separate search and extract calls, to
|
|
621
|
+
be used as part of a larger task. Specifying it may give better contextual
|
|
622
|
+
results for subsequent API calls.
|
|
623
|
+
|
|
624
|
+
extra_headers: Send extra headers
|
|
625
|
+
|
|
626
|
+
extra_query: Add additional query parameters to the request
|
|
627
|
+
|
|
628
|
+
extra_body: Add additional JSON properties to the request
|
|
629
|
+
|
|
630
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
631
|
+
"""
|
|
632
|
+
return await self.post(
|
|
633
|
+
"/v1/extract",
|
|
634
|
+
body=await async_maybe_transform(
|
|
635
|
+
{
|
|
636
|
+
"urls": urls,
|
|
637
|
+
"advanced_settings": advanced_settings,
|
|
638
|
+
"client_model": client_model,
|
|
639
|
+
"max_chars_total": max_chars_total,
|
|
640
|
+
"objective": objective,
|
|
641
|
+
"search_queries": search_queries,
|
|
642
|
+
"session_id": session_id,
|
|
643
|
+
},
|
|
644
|
+
client_extract_params.ClientExtractParams,
|
|
645
|
+
),
|
|
646
|
+
options=make_request_options(
|
|
647
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
648
|
+
),
|
|
649
|
+
cast_to=ExtractResponse,
|
|
650
|
+
)
|
|
651
|
+
|
|
652
|
+
async def search(
|
|
653
|
+
self,
|
|
654
|
+
*,
|
|
655
|
+
search_queries: SequenceNotStr[str],
|
|
656
|
+
advanced_settings: Optional[AdvancedSearchSettingsParam] | Omit = omit,
|
|
657
|
+
client_model: Optional[str] | Omit = omit,
|
|
658
|
+
max_chars_total: Optional[int] | Omit = omit,
|
|
659
|
+
mode: Optional[Literal["basic", "advanced"]] | Omit = omit,
|
|
660
|
+
objective: Optional[str] | Omit = omit,
|
|
661
|
+
session_id: Optional[str] | Omit = omit,
|
|
662
|
+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
|
663
|
+
# The extra values given here take precedence over values defined on the client or passed to this method.
|
|
664
|
+
extra_headers: Headers | None = None,
|
|
665
|
+
extra_query: Query | None = None,
|
|
666
|
+
extra_body: Body | None = None,
|
|
667
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
|
668
|
+
) -> SearchResult:
|
|
669
|
+
"""
|
|
670
|
+
Searches the web.
|
|
671
|
+
|
|
672
|
+
The legacy Search API reference is available
|
|
673
|
+
[here](https://docs.parallel.ai/api-reference/legacy/search-beta/search).
|
|
674
|
+
|
|
675
|
+
Args:
|
|
676
|
+
search_queries: Concise keyword search queries, 3-6 words each. At least one query is required,
|
|
677
|
+
provide 2-3 for best results. Used together with objective to focus results on
|
|
678
|
+
the most relevant content.
|
|
679
|
+
|
|
680
|
+
advanced_settings: Advanced search configuration.
|
|
681
|
+
|
|
682
|
+
These settings may impact result quality and latency unless used carefully. See
|
|
683
|
+
https://docs.parallel.ai/search/advanced-search-settings for more info.
|
|
684
|
+
|
|
685
|
+
client_model: The model generating this request and consuming the results. Enables
|
|
686
|
+
optimizations and tailors default settings for the model's capabilities.
|
|
687
|
+
|
|
688
|
+
max_chars_total: Upper bound on total characters across excerpts from all results.
|
|
689
|
+
|
|
690
|
+
mode: Search mode preset: supported values are `basic` and `advanced`. Basic mode
|
|
691
|
+
offers the lowest latency and works best with 2-3 high-quality search_queries.
|
|
692
|
+
Advanced mode provides higher quality with more advanced retrieval and
|
|
693
|
+
compression. Defaults to `advanced` when omitted.
|
|
694
|
+
|
|
695
|
+
objective: Natural-language description of the underlying question or goal driving the
|
|
696
|
+
search. Used together with search_queries to focus results on the most relevant
|
|
697
|
+
content. Should be self-contained with enough context to understand the intent
|
|
698
|
+
of the search.
|
|
699
|
+
|
|
700
|
+
session_id: Session identifier to track calls across separate search and extract calls, to
|
|
701
|
+
be used as part of a larger task. Specifying it may give better contextual
|
|
702
|
+
results for subsequent API calls.
|
|
703
|
+
|
|
704
|
+
extra_headers: Send extra headers
|
|
705
|
+
|
|
706
|
+
extra_query: Add additional query parameters to the request
|
|
707
|
+
|
|
708
|
+
extra_body: Add additional JSON properties to the request
|
|
709
|
+
|
|
710
|
+
timeout: Override the client-level default timeout for this request, in seconds
|
|
711
|
+
"""
|
|
712
|
+
return await self.post(
|
|
713
|
+
"/v1/search",
|
|
714
|
+
body=await async_maybe_transform(
|
|
715
|
+
{
|
|
716
|
+
"search_queries": search_queries,
|
|
717
|
+
"advanced_settings": advanced_settings,
|
|
718
|
+
"client_model": client_model,
|
|
719
|
+
"max_chars_total": max_chars_total,
|
|
720
|
+
"mode": mode,
|
|
721
|
+
"objective": objective,
|
|
722
|
+
"session_id": session_id,
|
|
723
|
+
},
|
|
724
|
+
client_search_params.ClientSearchParams,
|
|
725
|
+
),
|
|
726
|
+
options=make_request_options(
|
|
727
|
+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
|
728
|
+
),
|
|
729
|
+
cast_to=SearchResult,
|
|
730
|
+
)
|
|
731
|
+
|
|
386
732
|
@override
|
|
387
733
|
def _make_status_error(
|
|
388
734
|
self,
|
|
@@ -423,12 +769,26 @@ class ParallelWithRawResponse:
|
|
|
423
769
|
def __init__(self, client: Parallel) -> None:
|
|
424
770
|
self._client = client
|
|
425
771
|
|
|
772
|
+
self.extract = to_raw_response_wrapper(
|
|
773
|
+
client.extract,
|
|
774
|
+
)
|
|
775
|
+
self.search = to_raw_response_wrapper(
|
|
776
|
+
client.search,
|
|
777
|
+
)
|
|
778
|
+
|
|
426
779
|
@cached_property
|
|
427
780
|
def task_run(self) -> task_run.TaskRunResourceWithRawResponse:
|
|
428
781
|
"""The Task API executes web research and extraction tasks.
|
|
429
782
|
|
|
430
783
|
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.
|
|
431
784
|
- Output metadata: citations, excerpts, reasoning, and confidence per field
|
|
785
|
+
|
|
786
|
+
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
|
|
788
|
+
- Observe group progress and receive results as they complete
|
|
789
|
+
- Real-time updates via Server-Sent Events (SSE)
|
|
790
|
+
- Add tasks to an existing group while it is running
|
|
791
|
+
- Group-level retry and error aggregation
|
|
432
792
|
"""
|
|
433
793
|
from .resources.task_run import TaskRunResourceWithRawResponse
|
|
434
794
|
|
|
@@ -447,12 +807,26 @@ class AsyncParallelWithRawResponse:
|
|
|
447
807
|
def __init__(self, client: AsyncParallel) -> None:
|
|
448
808
|
self._client = client
|
|
449
809
|
|
|
810
|
+
self.extract = async_to_raw_response_wrapper(
|
|
811
|
+
client.extract,
|
|
812
|
+
)
|
|
813
|
+
self.search = async_to_raw_response_wrapper(
|
|
814
|
+
client.search,
|
|
815
|
+
)
|
|
816
|
+
|
|
450
817
|
@cached_property
|
|
451
818
|
def task_run(self) -> task_run.AsyncTaskRunResourceWithRawResponse:
|
|
452
819
|
"""The Task API executes web research and extraction tasks.
|
|
453
820
|
|
|
454
821
|
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.
|
|
455
822
|
- Output metadata: citations, excerpts, reasoning, and confidence per field
|
|
823
|
+
|
|
824
|
+
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
|
|
826
|
+
- Observe group progress and receive results as they complete
|
|
827
|
+
- Real-time updates via Server-Sent Events (SSE)
|
|
828
|
+
- Add tasks to an existing group while it is running
|
|
829
|
+
- Group-level retry and error aggregation
|
|
456
830
|
"""
|
|
457
831
|
from .resources.task_run import AsyncTaskRunResourceWithRawResponse
|
|
458
832
|
|
|
@@ -471,12 +845,26 @@ class ParallelWithStreamedResponse:
|
|
|
471
845
|
def __init__(self, client: Parallel) -> None:
|
|
472
846
|
self._client = client
|
|
473
847
|
|
|
848
|
+
self.extract = to_streamed_response_wrapper(
|
|
849
|
+
client.extract,
|
|
850
|
+
)
|
|
851
|
+
self.search = to_streamed_response_wrapper(
|
|
852
|
+
client.search,
|
|
853
|
+
)
|
|
854
|
+
|
|
474
855
|
@cached_property
|
|
475
856
|
def task_run(self) -> task_run.TaskRunResourceWithStreamingResponse:
|
|
476
857
|
"""The Task API executes web research and extraction tasks.
|
|
477
858
|
|
|
478
859
|
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.
|
|
479
860
|
- Output metadata: citations, excerpts, reasoning, and confidence per field
|
|
861
|
+
|
|
862
|
+
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
|
|
864
|
+
- Observe group progress and receive results as they complete
|
|
865
|
+
- Real-time updates via Server-Sent Events (SSE)
|
|
866
|
+
- Add tasks to an existing group while it is running
|
|
867
|
+
- Group-level retry and error aggregation
|
|
480
868
|
"""
|
|
481
869
|
from .resources.task_run import TaskRunResourceWithStreamingResponse
|
|
482
870
|
|
|
@@ -495,12 +883,26 @@ class AsyncParallelWithStreamedResponse:
|
|
|
495
883
|
def __init__(self, client: AsyncParallel) -> None:
|
|
496
884
|
self._client = client
|
|
497
885
|
|
|
886
|
+
self.extract = async_to_streamed_response_wrapper(
|
|
887
|
+
client.extract,
|
|
888
|
+
)
|
|
889
|
+
self.search = async_to_streamed_response_wrapper(
|
|
890
|
+
client.search,
|
|
891
|
+
)
|
|
892
|
+
|
|
498
893
|
@cached_property
|
|
499
894
|
def task_run(self) -> task_run.AsyncTaskRunResourceWithStreamingResponse:
|
|
500
895
|
"""The Task API executes web research and extraction tasks.
|
|
501
896
|
|
|
502
897
|
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.
|
|
503
898
|
- Output metadata: citations, excerpts, reasoning, and confidence per field
|
|
899
|
+
|
|
900
|
+
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
|
|
902
|
+
- Observe group progress and receive results as they complete
|
|
903
|
+
- Real-time updates via Server-Sent Events (SSE)
|
|
904
|
+
- Add tasks to an existing group while it is running
|
|
905
|
+
- Group-level retry and error aggregation
|
|
504
906
|
"""
|
|
505
907
|
from .resources.task_run import AsyncTaskRunResourceWithStreamingResponse
|
|
506
908
|
|