parallel-web 0.5.0__tar.gz → 0.5.1__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/.release-please-manifest.json +3 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/CHANGELOG.md +10 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/PKG-INFO +1 -1
- {parallel_web-0.5.0 → parallel_web-0.5.1}/pyproject.toml +1 -1
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_client.py +16 -8
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_version.py +1 -1
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/resources/beta/beta.py +65 -16
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/beta_extract_params.py +6 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/beta_search_params.py +6 -0
- parallel_web-0.5.1/tests/api_resources/test_beta.py +261 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/api_resources/test_client.py +4 -4
- parallel_web-0.5.0/.release-please-manifest.json +0 -3
- parallel_web-0.5.0/tests/api_resources/test_beta.py +0 -231
- {parallel_web-0.5.0 → parallel_web-0.5.1}/.gitignore +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/CONTRIBUTING.md +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/LICENSE +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/README.md +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/SECURITY.md +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/api.md +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/bin/check-release-environment +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/bin/publish-pypi +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/examples/.keep +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/noxfile.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/release-please-config.json +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/requirements-dev.lock +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/requirements.lock +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/__init__.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_base_client.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_compat.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_constants.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_exceptions.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_files.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_models.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_qs.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_resource.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_response.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_streaming.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_types.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_utils/__init__.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_utils/_compat.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_utils/_datetime_parse.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_utils/_json.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_utils/_logs.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_utils/_path.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_utils/_proxy.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_utils/_reflection.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_utils/_resources_proxy.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_utils/_streams.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_utils/_sync.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_utils/_transform.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_utils/_typing.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/_utils/_utils.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/lib/.keep +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/lib/__init__.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/lib/_parsing/__init__.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/lib/_parsing/_task_run_result.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/lib/_parsing/_task_spec.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/lib/_pydantic.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/lib/_time.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/py.typed +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/resources/__init__.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/resources/beta/__init__.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/resources/beta/api.md +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/resources/beta/findall.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/resources/beta/task_group.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/resources/beta/task_run.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/resources/task_run.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/__init__.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/advanced_extract_settings_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/advanced_search_settings_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/auto_schema.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/auto_schema_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/__init__.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/beta_run_input.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/beta_run_input_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/beta_task_run_result.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/error_event.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/excerpt_settings_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/extract_error.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/extract_response.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/extract_result.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/fetch_policy_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/findall_candidate_match_status_event.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/findall_candidates_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/findall_candidates_response.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/findall_create_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/findall_enrich_input.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/findall_enrich_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/findall_events_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/findall_events_response.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/findall_extend_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/findall_ingest_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/findall_run.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/findall_run_result.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/findall_run_status_event.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/findall_schema.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/findall_schema_updated_event.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/mcp_server.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/mcp_server_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/mcp_tool_call.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/parallel_beta_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/search_result.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/task_group.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/task_group_add_runs_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/task_group_create_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/task_group_events_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/task_group_events_response.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/task_group_get_runs_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/task_group_get_runs_response.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/task_group_run_response.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/task_group_status.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/task_run_create_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/task_run_event.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/task_run_events_response.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/task_run_result_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/usage_item.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/web_search_result.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/webhook.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/beta/webhook_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/citation.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/client_extract_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/client_search_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/error_event.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/excerpt_settings_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/extract_error.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/extract_response.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/extract_result.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/fetch_policy_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/field_basis.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/json_schema.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/json_schema_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/mcp_server.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/mcp_server_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/mcp_tool_call.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/parsed_task_run_result.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/run_input.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/run_input_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/search_result.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/shared/__init__.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/shared/error_object.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/shared/error_response.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/shared/source_policy.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/shared/warning.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/shared_params/__init__.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/shared_params/source_policy.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/task_run.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/task_run_create_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/task_run_event.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/task_run_events_response.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/task_run_json_output.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/task_run_result.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/task_run_result_params.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/task_run_text_output.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/task_spec.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/task_spec_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/text_schema.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/text_schema_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/usage_item.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/web_search_result.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/webhook.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/src/parallel/types/webhook_param.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/__init__.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/api_resources/__init__.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/api_resources/beta/__init__.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/api_resources/beta/test_findall.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/api_resources/beta/test_task_group.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/api_resources/beta/test_task_run.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/api_resources/test_task_run.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/conftest.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/sample_file.txt +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/test_client.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/test_extract_files.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/test_files.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/test_models.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/test_qs.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/test_required_args.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/test_response.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/test_streaming.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/test_transform.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/test_utils/test_datetime_parse.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/test_utils/test_json.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/test_utils/test_path.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/test_utils/test_proxy.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/test_utils/test_typing.py +0 -0
- {parallel_web-0.5.0 → parallel_web-0.5.1}/tests/utils.py +0 -0
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.1 (2026-04-22)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v0.5.0...v0.5.1](https://github.com/parallel-web/parallel-sdk-python/compare/v0.5.0...v0.5.1)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **api:** manual updates ([86c7d33](https://github.com/parallel-web/parallel-sdk-python/commit/86c7d334df7c2018d0277fe3efa93fb7029f6a41))
|
|
10
|
+
* **api:** Mark search and extract as deprecated ([cfdea3b](https://github.com/parallel-web/parallel-sdk-python/commit/cfdea3b19622911e65c9359f0acdbd4b201d2d08))
|
|
11
|
+
* **api:** OpenAPI changes ([cfc5fb3](https://github.com/parallel-web/parallel-sdk-python/commit/cfc5fb373a46c73c2f79057b593712d7b847ee33))
|
|
12
|
+
|
|
3
13
|
## 0.5.0 (2026-04-21)
|
|
4
14
|
|
|
5
15
|
Full Changelog: [v0.4.2...v0.5.0](https://github.com/parallel-web/parallel-sdk-python/compare/v0.4.2...v0.5.0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: parallel-web
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.1
|
|
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
|
|
@@ -247,8 +247,10 @@ class Parallel(SyncAPIClient):
|
|
|
247
247
|
"""
|
|
248
248
|
Extracts relevant content from specific web URLs.
|
|
249
249
|
|
|
250
|
-
The legacy Extract API reference is available
|
|
251
|
-
[here](https://docs.parallel.ai/api-reference/legacy/extract-beta/extract)
|
|
250
|
+
The legacy Extract API reference (`/v1beta/extract` endpoint) is available
|
|
251
|
+
[here](https://docs.parallel.ai/api-reference/legacy/extract-beta/extract), and
|
|
252
|
+
migration guide is
|
|
253
|
+
[here](https://docs.parallel.ai/extract/extract-migration-guide).
|
|
252
254
|
|
|
253
255
|
Args:
|
|
254
256
|
urls: URLs to extract content from. Up to 20 URLs.
|
|
@@ -322,8 +324,10 @@ class Parallel(SyncAPIClient):
|
|
|
322
324
|
"""
|
|
323
325
|
Searches the web.
|
|
324
326
|
|
|
325
|
-
The legacy Search API reference is available
|
|
326
|
-
[here](https://docs.parallel.ai/api-reference/legacy/search-beta/search)
|
|
327
|
+
The legacy Search API reference (`/v1beta/search` endpoint) is available
|
|
328
|
+
[here](https://docs.parallel.ai/api-reference/legacy/search-beta/search), and
|
|
329
|
+
migration guide is
|
|
330
|
+
[here](https://docs.parallel.ai/search/search-migration-guide).
|
|
327
331
|
|
|
328
332
|
Args:
|
|
329
333
|
search_queries: Concise keyword search queries, 3-6 words each. At least one query is required,
|
|
@@ -594,8 +598,10 @@ class AsyncParallel(AsyncAPIClient):
|
|
|
594
598
|
"""
|
|
595
599
|
Extracts relevant content from specific web URLs.
|
|
596
600
|
|
|
597
|
-
The legacy Extract API reference is available
|
|
598
|
-
[here](https://docs.parallel.ai/api-reference/legacy/extract-beta/extract)
|
|
601
|
+
The legacy Extract API reference (`/v1beta/extract` endpoint) is available
|
|
602
|
+
[here](https://docs.parallel.ai/api-reference/legacy/extract-beta/extract), and
|
|
603
|
+
migration guide is
|
|
604
|
+
[here](https://docs.parallel.ai/extract/extract-migration-guide).
|
|
599
605
|
|
|
600
606
|
Args:
|
|
601
607
|
urls: URLs to extract content from. Up to 20 URLs.
|
|
@@ -669,8 +675,10 @@ class AsyncParallel(AsyncAPIClient):
|
|
|
669
675
|
"""
|
|
670
676
|
Searches the web.
|
|
671
677
|
|
|
672
|
-
The legacy Search API reference is available
|
|
673
|
-
[here](https://docs.parallel.ai/api-reference/legacy/search-beta/search)
|
|
678
|
+
The legacy Search API reference (`/v1beta/search` endpoint) is available
|
|
679
|
+
[here](https://docs.parallel.ai/api-reference/legacy/search-beta/search), and
|
|
680
|
+
migration guide is
|
|
681
|
+
[here](https://docs.parallel.ai/search/search-migration-guide).
|
|
674
682
|
|
|
675
683
|
Args:
|
|
676
684
|
search_queries: Concise keyword search queries, 3-6 words each. At least one query is required,
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import typing_extensions
|
|
5
6
|
from typing import List, Optional
|
|
6
7
|
from itertools import chain
|
|
7
8
|
from typing_extensions import Literal
|
|
@@ -113,10 +114,14 @@ class BetaResource(SyncAPIResource):
|
|
|
113
114
|
"""
|
|
114
115
|
return BetaResourceWithStreamingResponse(self)
|
|
115
116
|
|
|
117
|
+
@typing_extensions.deprecated(
|
|
118
|
+
"Use client.extract instead. For more info, see https://docs.parallel.ai/extract/extract-migration-guide"
|
|
119
|
+
)
|
|
116
120
|
def extract(
|
|
117
121
|
self,
|
|
118
122
|
*,
|
|
119
123
|
urls: SequenceNotStr[str],
|
|
124
|
+
client_model: Optional[str] | Omit = omit,
|
|
120
125
|
excerpts: beta_extract_params.Excerpts | Omit = omit,
|
|
121
126
|
fetch_policy: Optional[FetchPolicyParam] | Omit = omit,
|
|
122
127
|
full_content: beta_extract_params.FullContent | Omit = omit,
|
|
@@ -138,6 +143,9 @@ class BetaResource(SyncAPIResource):
|
|
|
138
143
|
`search-extract-2025-10-10`.
|
|
139
144
|
|
|
140
145
|
Args:
|
|
146
|
+
client_model: The model generating this request and consuming the results. Enables
|
|
147
|
+
optimizations and tailors default settings for the model's capabilities.
|
|
148
|
+
|
|
141
149
|
excerpts: Include excerpts from each URL relevant to the search objective and queries.
|
|
142
150
|
Note that if neither objective nor search_queries is provided, excerpts are
|
|
143
151
|
redundant with full content.
|
|
@@ -181,6 +189,7 @@ class BetaResource(SyncAPIResource):
|
|
|
181
189
|
body=maybe_transform(
|
|
182
190
|
{
|
|
183
191
|
"urls": urls,
|
|
192
|
+
"client_model": client_model,
|
|
184
193
|
"excerpts": excerpts,
|
|
185
194
|
"fetch_policy": fetch_policy,
|
|
186
195
|
"full_content": full_content,
|
|
@@ -196,9 +205,13 @@ class BetaResource(SyncAPIResource):
|
|
|
196
205
|
cast_to=ExtractResponse,
|
|
197
206
|
)
|
|
198
207
|
|
|
208
|
+
@typing_extensions.deprecated(
|
|
209
|
+
"Use client.search instead. For more info, see https://docs.parallel.ai/search/search-migration-guide"
|
|
210
|
+
)
|
|
199
211
|
def search(
|
|
200
212
|
self,
|
|
201
213
|
*,
|
|
214
|
+
client_model: Optional[str] | Omit = omit,
|
|
202
215
|
excerpts: ExcerptSettingsParam | Omit = omit,
|
|
203
216
|
fetch_policy: Optional[FetchPolicyParam] | Omit = omit,
|
|
204
217
|
location: Optional[str] | Omit = omit,
|
|
@@ -222,6 +235,9 @@ class BetaResource(SyncAPIResource):
|
|
|
222
235
|
Searches the web.
|
|
223
236
|
|
|
224
237
|
Args:
|
|
238
|
+
client_model: The model generating this request and consuming the results. Enables
|
|
239
|
+
optimizations and tailors default settings for the model's capabilities.
|
|
240
|
+
|
|
225
241
|
excerpts: Optional settings to configure excerpt generation.
|
|
226
242
|
|
|
227
243
|
fetch_policy: Policy for live fetching web results.
|
|
@@ -284,6 +300,7 @@ class BetaResource(SyncAPIResource):
|
|
|
284
300
|
"/v1beta/search",
|
|
285
301
|
body=maybe_transform(
|
|
286
302
|
{
|
|
303
|
+
"client_model": client_model,
|
|
287
304
|
"excerpts": excerpts,
|
|
288
305
|
"fetch_policy": fetch_policy,
|
|
289
306
|
"location": location,
|
|
@@ -364,10 +381,14 @@ class AsyncBetaResource(AsyncAPIResource):
|
|
|
364
381
|
"""
|
|
365
382
|
return AsyncBetaResourceWithStreamingResponse(self)
|
|
366
383
|
|
|
384
|
+
@typing_extensions.deprecated(
|
|
385
|
+
"Use client.extract instead. For more info, see https://docs.parallel.ai/extract/extract-migration-guide"
|
|
386
|
+
)
|
|
367
387
|
async def extract(
|
|
368
388
|
self,
|
|
369
389
|
*,
|
|
370
390
|
urls: SequenceNotStr[str],
|
|
391
|
+
client_model: Optional[str] | Omit = omit,
|
|
371
392
|
excerpts: beta_extract_params.Excerpts | Omit = omit,
|
|
372
393
|
fetch_policy: Optional[FetchPolicyParam] | Omit = omit,
|
|
373
394
|
full_content: beta_extract_params.FullContent | Omit = omit,
|
|
@@ -389,6 +410,9 @@ class AsyncBetaResource(AsyncAPIResource):
|
|
|
389
410
|
`search-extract-2025-10-10`.
|
|
390
411
|
|
|
391
412
|
Args:
|
|
413
|
+
client_model: The model generating this request and consuming the results. Enables
|
|
414
|
+
optimizations and tailors default settings for the model's capabilities.
|
|
415
|
+
|
|
392
416
|
excerpts: Include excerpts from each URL relevant to the search objective and queries.
|
|
393
417
|
Note that if neither objective nor search_queries is provided, excerpts are
|
|
394
418
|
redundant with full content.
|
|
@@ -432,6 +456,7 @@ class AsyncBetaResource(AsyncAPIResource):
|
|
|
432
456
|
body=await async_maybe_transform(
|
|
433
457
|
{
|
|
434
458
|
"urls": urls,
|
|
459
|
+
"client_model": client_model,
|
|
435
460
|
"excerpts": excerpts,
|
|
436
461
|
"fetch_policy": fetch_policy,
|
|
437
462
|
"full_content": full_content,
|
|
@@ -447,9 +472,13 @@ class AsyncBetaResource(AsyncAPIResource):
|
|
|
447
472
|
cast_to=ExtractResponse,
|
|
448
473
|
)
|
|
449
474
|
|
|
475
|
+
@typing_extensions.deprecated(
|
|
476
|
+
"Use client.search instead. For more info, see https://docs.parallel.ai/search/search-migration-guide"
|
|
477
|
+
)
|
|
450
478
|
async def search(
|
|
451
479
|
self,
|
|
452
480
|
*,
|
|
481
|
+
client_model: Optional[str] | Omit = omit,
|
|
453
482
|
excerpts: ExcerptSettingsParam | Omit = omit,
|
|
454
483
|
fetch_policy: Optional[FetchPolicyParam] | Omit = omit,
|
|
455
484
|
location: Optional[str] | Omit = omit,
|
|
@@ -473,6 +502,9 @@ class AsyncBetaResource(AsyncAPIResource):
|
|
|
473
502
|
Searches the web.
|
|
474
503
|
|
|
475
504
|
Args:
|
|
505
|
+
client_model: The model generating this request and consuming the results. Enables
|
|
506
|
+
optimizations and tailors default settings for the model's capabilities.
|
|
507
|
+
|
|
476
508
|
excerpts: Optional settings to configure excerpt generation.
|
|
477
509
|
|
|
478
510
|
fetch_policy: Policy for live fetching web results.
|
|
@@ -535,6 +567,7 @@ class AsyncBetaResource(AsyncAPIResource):
|
|
|
535
567
|
"/v1beta/search",
|
|
536
568
|
body=await async_maybe_transform(
|
|
537
569
|
{
|
|
570
|
+
"client_model": client_model,
|
|
538
571
|
"excerpts": excerpts,
|
|
539
572
|
"fetch_policy": fetch_policy,
|
|
540
573
|
"location": location,
|
|
@@ -560,11 +593,15 @@ class BetaResourceWithRawResponse:
|
|
|
560
593
|
def __init__(self, beta: BetaResource) -> None:
|
|
561
594
|
self._beta = beta
|
|
562
595
|
|
|
563
|
-
self.extract =
|
|
564
|
-
|
|
596
|
+
self.extract = ( # pyright: ignore[reportDeprecated]
|
|
597
|
+
to_raw_response_wrapper(
|
|
598
|
+
beta.extract, # pyright: ignore[reportDeprecated],
|
|
599
|
+
)
|
|
565
600
|
)
|
|
566
|
-
self.search =
|
|
567
|
-
|
|
601
|
+
self.search = ( # pyright: ignore[reportDeprecated]
|
|
602
|
+
to_raw_response_wrapper(
|
|
603
|
+
beta.search, # pyright: ignore[reportDeprecated],
|
|
604
|
+
)
|
|
568
605
|
)
|
|
569
606
|
|
|
570
607
|
@cached_property
|
|
@@ -611,11 +648,15 @@ class AsyncBetaResourceWithRawResponse:
|
|
|
611
648
|
def __init__(self, beta: AsyncBetaResource) -> None:
|
|
612
649
|
self._beta = beta
|
|
613
650
|
|
|
614
|
-
self.extract =
|
|
615
|
-
|
|
651
|
+
self.extract = ( # pyright: ignore[reportDeprecated]
|
|
652
|
+
async_to_raw_response_wrapper(
|
|
653
|
+
beta.extract, # pyright: ignore[reportDeprecated],
|
|
654
|
+
)
|
|
616
655
|
)
|
|
617
|
-
self.search =
|
|
618
|
-
|
|
656
|
+
self.search = ( # pyright: ignore[reportDeprecated]
|
|
657
|
+
async_to_raw_response_wrapper(
|
|
658
|
+
beta.search, # pyright: ignore[reportDeprecated],
|
|
659
|
+
)
|
|
619
660
|
)
|
|
620
661
|
|
|
621
662
|
@cached_property
|
|
@@ -662,11 +703,15 @@ class BetaResourceWithStreamingResponse:
|
|
|
662
703
|
def __init__(self, beta: BetaResource) -> None:
|
|
663
704
|
self._beta = beta
|
|
664
705
|
|
|
665
|
-
self.extract =
|
|
666
|
-
|
|
706
|
+
self.extract = ( # pyright: ignore[reportDeprecated]
|
|
707
|
+
to_streamed_response_wrapper(
|
|
708
|
+
beta.extract, # pyright: ignore[reportDeprecated],
|
|
709
|
+
)
|
|
667
710
|
)
|
|
668
|
-
self.search =
|
|
669
|
-
|
|
711
|
+
self.search = ( # pyright: ignore[reportDeprecated]
|
|
712
|
+
to_streamed_response_wrapper(
|
|
713
|
+
beta.search, # pyright: ignore[reportDeprecated],
|
|
714
|
+
)
|
|
670
715
|
)
|
|
671
716
|
|
|
672
717
|
@cached_property
|
|
@@ -713,11 +758,15 @@ class AsyncBetaResourceWithStreamingResponse:
|
|
|
713
758
|
def __init__(self, beta: AsyncBetaResource) -> None:
|
|
714
759
|
self._beta = beta
|
|
715
760
|
|
|
716
|
-
self.extract =
|
|
717
|
-
|
|
761
|
+
self.extract = ( # pyright: ignore[reportDeprecated]
|
|
762
|
+
async_to_streamed_response_wrapper(
|
|
763
|
+
beta.extract, # pyright: ignore[reportDeprecated],
|
|
764
|
+
)
|
|
718
765
|
)
|
|
719
|
-
self.search =
|
|
720
|
-
|
|
766
|
+
self.search = ( # pyright: ignore[reportDeprecated]
|
|
767
|
+
async_to_streamed_response_wrapper(
|
|
768
|
+
beta.search, # pyright: ignore[reportDeprecated],
|
|
769
|
+
)
|
|
721
770
|
)
|
|
722
771
|
|
|
723
772
|
@cached_property
|
|
@@ -17,6 +17,12 @@ __all__ = ["BetaExtractParams", "Excerpts", "FullContent", "FullContentFullConte
|
|
|
17
17
|
class BetaExtractParams(TypedDict, total=False):
|
|
18
18
|
urls: Required[SequenceNotStr[str]]
|
|
19
19
|
|
|
20
|
+
client_model: Optional[str]
|
|
21
|
+
"""The model generating this request and consuming the results.
|
|
22
|
+
|
|
23
|
+
Enables optimizations and tailors default settings for the model's capabilities.
|
|
24
|
+
"""
|
|
25
|
+
|
|
20
26
|
excerpts: Excerpts
|
|
21
27
|
"""Include excerpts from each URL relevant to the search objective and queries.
|
|
22
28
|
|
|
@@ -16,6 +16,12 @@ __all__ = ["BetaSearchParams"]
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class BetaSearchParams(TypedDict, total=False):
|
|
19
|
+
client_model: Optional[str]
|
|
20
|
+
"""The model generating this request and consuming the results.
|
|
21
|
+
|
|
22
|
+
Enables optimizations and tailors default settings for the model's capabilities.
|
|
23
|
+
"""
|
|
24
|
+
|
|
19
25
|
excerpts: ExcerptSettingsParam
|
|
20
26
|
"""Optional settings to configure excerpt generation."""
|
|
21
27
|
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import os
|
|
6
|
+
from typing import Any, cast
|
|
7
|
+
|
|
8
|
+
import pytest
|
|
9
|
+
|
|
10
|
+
from parallel import Parallel, AsyncParallel
|
|
11
|
+
from tests.utils import assert_matches_type
|
|
12
|
+
from parallel._utils import parse_date
|
|
13
|
+
from parallel.types.beta import SearchResult, ExtractResponse
|
|
14
|
+
|
|
15
|
+
# pyright: reportDeprecated=false
|
|
16
|
+
|
|
17
|
+
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class TestBeta:
|
|
21
|
+
parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
|
|
22
|
+
|
|
23
|
+
@parametrize
|
|
24
|
+
def test_method_extract(self, client: Parallel) -> None:
|
|
25
|
+
with pytest.warns(DeprecationWarning):
|
|
26
|
+
beta = client.beta.extract(
|
|
27
|
+
urls=["string"],
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
assert_matches_type(ExtractResponse, beta, path=["response"])
|
|
31
|
+
|
|
32
|
+
@parametrize
|
|
33
|
+
def test_method_extract_with_all_params(self, client: Parallel) -> None:
|
|
34
|
+
with pytest.warns(DeprecationWarning):
|
|
35
|
+
beta = client.beta.extract(
|
|
36
|
+
urls=["string"],
|
|
37
|
+
client_model="claude-opus-4-7",
|
|
38
|
+
excerpts=True,
|
|
39
|
+
fetch_policy={
|
|
40
|
+
"disable_cache_fallback": True,
|
|
41
|
+
"max_age_seconds": 86400,
|
|
42
|
+
"timeout_seconds": 60,
|
|
43
|
+
},
|
|
44
|
+
full_content=True,
|
|
45
|
+
objective="objective",
|
|
46
|
+
search_queries=["string"],
|
|
47
|
+
session_id="session_id",
|
|
48
|
+
betas=["mcp-server-2025-07-17"],
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
assert_matches_type(ExtractResponse, beta, path=["response"])
|
|
52
|
+
|
|
53
|
+
@parametrize
|
|
54
|
+
def test_raw_response_extract(self, client: Parallel) -> None:
|
|
55
|
+
with pytest.warns(DeprecationWarning):
|
|
56
|
+
response = client.beta.with_raw_response.extract(
|
|
57
|
+
urls=["string"],
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
assert response.is_closed is True
|
|
61
|
+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
62
|
+
beta = response.parse()
|
|
63
|
+
assert_matches_type(ExtractResponse, beta, path=["response"])
|
|
64
|
+
|
|
65
|
+
@parametrize
|
|
66
|
+
def test_streaming_response_extract(self, client: Parallel) -> None:
|
|
67
|
+
with pytest.warns(DeprecationWarning):
|
|
68
|
+
with client.beta.with_streaming_response.extract(
|
|
69
|
+
urls=["string"],
|
|
70
|
+
) as response:
|
|
71
|
+
assert not response.is_closed
|
|
72
|
+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
73
|
+
|
|
74
|
+
beta = response.parse()
|
|
75
|
+
assert_matches_type(ExtractResponse, beta, path=["response"])
|
|
76
|
+
|
|
77
|
+
assert cast(Any, response.is_closed) is True
|
|
78
|
+
|
|
79
|
+
@parametrize
|
|
80
|
+
def test_method_search(self, client: Parallel) -> None:
|
|
81
|
+
with pytest.warns(DeprecationWarning):
|
|
82
|
+
beta = client.beta.search()
|
|
83
|
+
|
|
84
|
+
assert_matches_type(SearchResult, beta, path=["response"])
|
|
85
|
+
|
|
86
|
+
@parametrize
|
|
87
|
+
def test_method_search_with_all_params(self, client: Parallel) -> None:
|
|
88
|
+
with pytest.warns(DeprecationWarning):
|
|
89
|
+
beta = client.beta.search(
|
|
90
|
+
client_model="claude-opus-4-7",
|
|
91
|
+
excerpts={
|
|
92
|
+
"max_chars_per_result": 0,
|
|
93
|
+
"max_chars_total": 0,
|
|
94
|
+
},
|
|
95
|
+
fetch_policy={
|
|
96
|
+
"disable_cache_fallback": True,
|
|
97
|
+
"max_age_seconds": 86400,
|
|
98
|
+
"timeout_seconds": 60,
|
|
99
|
+
},
|
|
100
|
+
location="us",
|
|
101
|
+
max_chars_per_result=0,
|
|
102
|
+
max_results=0,
|
|
103
|
+
mode="one-shot",
|
|
104
|
+
objective="objective",
|
|
105
|
+
processor="base",
|
|
106
|
+
search_queries=["string"],
|
|
107
|
+
session_id="session_id",
|
|
108
|
+
source_policy={
|
|
109
|
+
"after_date": parse_date("2024-01-01"),
|
|
110
|
+
"exclude_domains": ["reddit.com", "x.com", ".ai"],
|
|
111
|
+
"include_domains": ["wikipedia.org", "usa.gov", ".edu"],
|
|
112
|
+
},
|
|
113
|
+
betas=["mcp-server-2025-07-17"],
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
assert_matches_type(SearchResult, beta, path=["response"])
|
|
117
|
+
|
|
118
|
+
@parametrize
|
|
119
|
+
def test_raw_response_search(self, client: Parallel) -> None:
|
|
120
|
+
with pytest.warns(DeprecationWarning):
|
|
121
|
+
response = client.beta.with_raw_response.search()
|
|
122
|
+
|
|
123
|
+
assert response.is_closed is True
|
|
124
|
+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
125
|
+
beta = response.parse()
|
|
126
|
+
assert_matches_type(SearchResult, beta, path=["response"])
|
|
127
|
+
|
|
128
|
+
@parametrize
|
|
129
|
+
def test_streaming_response_search(self, client: Parallel) -> None:
|
|
130
|
+
with pytest.warns(DeprecationWarning):
|
|
131
|
+
with client.beta.with_streaming_response.search() as response:
|
|
132
|
+
assert not response.is_closed
|
|
133
|
+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
134
|
+
|
|
135
|
+
beta = response.parse()
|
|
136
|
+
assert_matches_type(SearchResult, beta, path=["response"])
|
|
137
|
+
|
|
138
|
+
assert cast(Any, response.is_closed) is True
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
class TestAsyncBeta:
|
|
142
|
+
parametrize = pytest.mark.parametrize(
|
|
143
|
+
"async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
@parametrize
|
|
147
|
+
async def test_method_extract(self, async_client: AsyncParallel) -> None:
|
|
148
|
+
with pytest.warns(DeprecationWarning):
|
|
149
|
+
beta = await async_client.beta.extract(
|
|
150
|
+
urls=["string"],
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
assert_matches_type(ExtractResponse, beta, path=["response"])
|
|
154
|
+
|
|
155
|
+
@parametrize
|
|
156
|
+
async def test_method_extract_with_all_params(self, async_client: AsyncParallel) -> None:
|
|
157
|
+
with pytest.warns(DeprecationWarning):
|
|
158
|
+
beta = await async_client.beta.extract(
|
|
159
|
+
urls=["string"],
|
|
160
|
+
client_model="claude-opus-4-7",
|
|
161
|
+
excerpts=True,
|
|
162
|
+
fetch_policy={
|
|
163
|
+
"disable_cache_fallback": True,
|
|
164
|
+
"max_age_seconds": 86400,
|
|
165
|
+
"timeout_seconds": 60,
|
|
166
|
+
},
|
|
167
|
+
full_content=True,
|
|
168
|
+
objective="objective",
|
|
169
|
+
search_queries=["string"],
|
|
170
|
+
session_id="session_id",
|
|
171
|
+
betas=["mcp-server-2025-07-17"],
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
assert_matches_type(ExtractResponse, beta, path=["response"])
|
|
175
|
+
|
|
176
|
+
@parametrize
|
|
177
|
+
async def test_raw_response_extract(self, async_client: AsyncParallel) -> None:
|
|
178
|
+
with pytest.warns(DeprecationWarning):
|
|
179
|
+
response = await async_client.beta.with_raw_response.extract(
|
|
180
|
+
urls=["string"],
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
assert response.is_closed is True
|
|
184
|
+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
185
|
+
beta = await response.parse()
|
|
186
|
+
assert_matches_type(ExtractResponse, beta, path=["response"])
|
|
187
|
+
|
|
188
|
+
@parametrize
|
|
189
|
+
async def test_streaming_response_extract(self, async_client: AsyncParallel) -> None:
|
|
190
|
+
with pytest.warns(DeprecationWarning):
|
|
191
|
+
async with async_client.beta.with_streaming_response.extract(
|
|
192
|
+
urls=["string"],
|
|
193
|
+
) as response:
|
|
194
|
+
assert not response.is_closed
|
|
195
|
+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
196
|
+
|
|
197
|
+
beta = await response.parse()
|
|
198
|
+
assert_matches_type(ExtractResponse, beta, path=["response"])
|
|
199
|
+
|
|
200
|
+
assert cast(Any, response.is_closed) is True
|
|
201
|
+
|
|
202
|
+
@parametrize
|
|
203
|
+
async def test_method_search(self, async_client: AsyncParallel) -> None:
|
|
204
|
+
with pytest.warns(DeprecationWarning):
|
|
205
|
+
beta = await async_client.beta.search()
|
|
206
|
+
|
|
207
|
+
assert_matches_type(SearchResult, beta, path=["response"])
|
|
208
|
+
|
|
209
|
+
@parametrize
|
|
210
|
+
async def test_method_search_with_all_params(self, async_client: AsyncParallel) -> None:
|
|
211
|
+
with pytest.warns(DeprecationWarning):
|
|
212
|
+
beta = await async_client.beta.search(
|
|
213
|
+
client_model="claude-opus-4-7",
|
|
214
|
+
excerpts={
|
|
215
|
+
"max_chars_per_result": 0,
|
|
216
|
+
"max_chars_total": 0,
|
|
217
|
+
},
|
|
218
|
+
fetch_policy={
|
|
219
|
+
"disable_cache_fallback": True,
|
|
220
|
+
"max_age_seconds": 86400,
|
|
221
|
+
"timeout_seconds": 60,
|
|
222
|
+
},
|
|
223
|
+
location="us",
|
|
224
|
+
max_chars_per_result=0,
|
|
225
|
+
max_results=0,
|
|
226
|
+
mode="one-shot",
|
|
227
|
+
objective="objective",
|
|
228
|
+
processor="base",
|
|
229
|
+
search_queries=["string"],
|
|
230
|
+
session_id="session_id",
|
|
231
|
+
source_policy={
|
|
232
|
+
"after_date": parse_date("2024-01-01"),
|
|
233
|
+
"exclude_domains": ["reddit.com", "x.com", ".ai"],
|
|
234
|
+
"include_domains": ["wikipedia.org", "usa.gov", ".edu"],
|
|
235
|
+
},
|
|
236
|
+
betas=["mcp-server-2025-07-17"],
|
|
237
|
+
)
|
|
238
|
+
|
|
239
|
+
assert_matches_type(SearchResult, beta, path=["response"])
|
|
240
|
+
|
|
241
|
+
@parametrize
|
|
242
|
+
async def test_raw_response_search(self, async_client: AsyncParallel) -> None:
|
|
243
|
+
with pytest.warns(DeprecationWarning):
|
|
244
|
+
response = await async_client.beta.with_raw_response.search()
|
|
245
|
+
|
|
246
|
+
assert response.is_closed is True
|
|
247
|
+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
248
|
+
beta = await response.parse()
|
|
249
|
+
assert_matches_type(SearchResult, beta, path=["response"])
|
|
250
|
+
|
|
251
|
+
@parametrize
|
|
252
|
+
async def test_streaming_response_search(self, async_client: AsyncParallel) -> None:
|
|
253
|
+
with pytest.warns(DeprecationWarning):
|
|
254
|
+
async with async_client.beta.with_streaming_response.search() as response:
|
|
255
|
+
assert not response.is_closed
|
|
256
|
+
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
|
|
257
|
+
|
|
258
|
+
beta = await response.parse()
|
|
259
|
+
assert_matches_type(SearchResult, beta, path=["response"])
|
|
260
|
+
|
|
261
|
+
assert cast(Any, response.is_closed) is True
|
|
@@ -41,7 +41,7 @@ class TestClient:
|
|
|
41
41
|
},
|
|
42
42
|
"full_content": {"max_chars_per_result": 0},
|
|
43
43
|
},
|
|
44
|
-
client_model="claude-
|
|
44
|
+
client_model="claude-opus-4-7",
|
|
45
45
|
max_chars_total=0,
|
|
46
46
|
objective="objective",
|
|
47
47
|
search_queries=["string"],
|
|
@@ -99,7 +99,7 @@ class TestClient:
|
|
|
99
99
|
"include_domains": ["wikipedia.org", "usa.gov", ".edu"],
|
|
100
100
|
},
|
|
101
101
|
},
|
|
102
|
-
client_model="claude-
|
|
102
|
+
client_model="claude-opus-4-7",
|
|
103
103
|
max_chars_total=0,
|
|
104
104
|
mode="basic",
|
|
105
105
|
objective="objective",
|
|
@@ -157,7 +157,7 @@ class TestAsyncClient:
|
|
|
157
157
|
},
|
|
158
158
|
"full_content": {"max_chars_per_result": 0},
|
|
159
159
|
},
|
|
160
|
-
client_model="claude-
|
|
160
|
+
client_model="claude-opus-4-7",
|
|
161
161
|
max_chars_total=0,
|
|
162
162
|
objective="objective",
|
|
163
163
|
search_queries=["string"],
|
|
@@ -215,7 +215,7 @@ class TestAsyncClient:
|
|
|
215
215
|
"include_domains": ["wikipedia.org", "usa.gov", ".edu"],
|
|
216
216
|
},
|
|
217
217
|
},
|
|
218
|
-
client_model="claude-
|
|
218
|
+
client_model="claude-opus-4-7",
|
|
219
219
|
max_chars_total=0,
|
|
220
220
|
mode="basic",
|
|
221
221
|
objective="objective",
|