parallel-web 0.4.1__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.1 → parallel_web-0.5.0}/.gitignore +1 -0
- parallel_web-0.5.0/.release-please-manifest.json +3 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/CHANGELOG.md +73 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/CONTRIBUTING.md +2 -3
- {parallel_web-0.4.1 → parallel_web-0.5.0}/PKG-INFO +4 -3
- {parallel_web-0.4.1 → parallel_web-0.5.0}/README.md +2 -1
- parallel_web-0.5.0/api.md +62 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/pyproject.toml +3 -3
- {parallel_web-0.4.1 → parallel_web-0.5.0}/requirements-dev.lock +10 -10
- {parallel_web-0.4.1 → parallel_web-0.5.0}/requirements.lock +4 -4
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_base_client.py +9 -2
- parallel_web-0.5.0/src/parallel/_client.py +920 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_compat.py +11 -4
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_files.py +53 -3
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_qs.py +4 -1
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_response.py +3 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_streaming.py +8 -3
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_utils/__init__.py +1 -1
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_utils/_compat.py +1 -1
- parallel_web-0.5.0/src/parallel/_utils/_json.py +35 -0
- parallel_web-0.5.0/src/parallel/_utils/_path.py +127 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_utils/_utils.py +3 -17
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_version.py +1 -1
- {parallel_web-0.4.1 → parallel_web-0.5.0/src/parallel/resources/beta}/api.md +6 -40
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/resources/beta/beta.py +215 -21
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/resources/beta/findall.py +145 -17
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/resources/beta/task_group.py +55 -13
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/resources/beta/task_run.py +121 -56
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/resources/task_run.py +211 -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.1 → parallel_web-0.5.0}/src/parallel/types/beta/__init__.py +2 -0
- {parallel_web-0.4.1 → 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.1 → parallel_web-0.5.0}/src/parallel/types/beta/beta_search_params.py +19 -9
- 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.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/excerpt_settings_param.py +3 -3
- parallel_web-0.5.0/src/parallel/types/beta/extract_error.py +7 -0
- {parallel_web-0.4.1 → 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.1 → parallel_web-0.5.0}/src/parallel/types/beta/findall_create_params.py +2 -2
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/findall_enrich_input.py +1 -1
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/findall_enrich_params.py +1 -1
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/findall_events_response.py +1 -2
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/findall_run.py +7 -1
- 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.1 → parallel_web-0.5.0}/src/parallel/types/beta/search_result.py +1 -1
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_add_runs_params.py +9 -3
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_events_response.py +2 -2
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_get_runs_response.py +2 -2
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/task_run_create_params.py +21 -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.1/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.1/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.1/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/mcp_server.py +1 -1
- {parallel_web-0.4.1/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/mcp_server_param.py +1 -1
- {parallel_web-0.4.1/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/mcp_tool_call.py +1 -1
- parallel_web-0.4.1/src/parallel/types/beta/beta_run_input.py → parallel_web-0.5.0/src/parallel/types/run_input.py +24 -17
- parallel_web-0.4.1/src/parallel/types/beta/beta_run_input_param.py → parallel_web-0.5.0/src/parallel/types/run_input_param.py +23 -16
- parallel_web-0.5.0/src/parallel/types/search_result.py +33 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/shared/source_policy.py +4 -2
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/shared_params/source_policy.py +4 -2
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/task_run.py +8 -4
- parallel_web-0.5.0/src/parallel/types/task_run_create_params.py +77 -0
- {parallel_web-0.4.1/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/task_run_event.py +8 -8
- {parallel_web-0.4.1/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/task_run_events_response.py +2 -2
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/task_run_json_output.py +8 -11
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/task_run_result.py +0 -1
- {parallel_web-0.4.1 → 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.1/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.1/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/webhook.py +1 -1
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/api_resources/beta/test_findall.py +87 -10
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/api_resources/beta/test_task_group.py +6 -20
- parallel_web-0.5.0/tests/api_resources/beta/test_task_run.py +385 -0
- {parallel_web-0.4.1 → 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.1 → parallel_web-0.5.0}/tests/api_resources/test_task_run.py +114 -1
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/test_client.py +64 -0
- {parallel_web-0.4.1 → 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_json.py +126 -0
- parallel_web-0.5.0/tests/test_utils/test_path.py +89 -0
- parallel_web-0.4.1/.release-please-manifest.json +0 -3
- parallel_web-0.4.1/src/parallel/_client.py +0 -488
- parallel_web-0.4.1/src/parallel/types/__init__.py +0 -27
- parallel_web-0.4.1/src/parallel/types/beta/beta_task_run_result.py +0 -88
- parallel_web-0.4.1/src/parallel/types/task_run_create_params.py +0 -41
- parallel_web-0.4.1/src/parallel/types/task_run_text_output.py +0 -39
- parallel_web-0.4.1/tests/api_resources/beta/test_task_run.py +0 -352
- parallel_web-0.4.1/tests/test_deepcopy.py +0 -58
- parallel_web-0.4.1/tests/test_files.py +0 -51
- {parallel_web-0.4.1 → parallel_web-0.5.0}/LICENSE +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/SECURITY.md +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/bin/check-release-environment +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/bin/publish-pypi +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/examples/.keep +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/noxfile.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/release-please-config.json +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/__init__.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_constants.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_exceptions.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_models.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_resource.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_types.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_utils/_datetime_parse.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_utils/_logs.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_utils/_proxy.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_utils/_reflection.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_utils/_resources_proxy.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_utils/_streams.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_utils/_sync.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_utils/_transform.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/_utils/_typing.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/lib/.keep +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/lib/__init__.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/lib/_parsing/__init__.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/lib/_parsing/_task_run_result.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/lib/_parsing/_task_spec.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/lib/_pydantic.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/lib/_time.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/py.typed +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/resources/__init__.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/resources/beta/__init__.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/auto_schema.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/auto_schema_param.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/extract_result.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/findall_candidate_match_status_event.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/findall_events_params.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/findall_extend_params.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/findall_ingest_params.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/findall_run_result.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/findall_run_status_event.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/findall_schema.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/findall_schema_updated_event.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/parallel_beta_param.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/task_group.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_create_params.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_events_params.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_get_runs_params.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_run_response.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/task_group_status.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/task_run_result_params.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/beta/web_search_result.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/citation.py +0 -0
- {parallel_web-0.4.1/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/fetch_policy_param.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/field_basis.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/json_schema.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/json_schema_param.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/parsed_task_run_result.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/shared/__init__.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/shared/error_object.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/shared/error_response.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/shared/warning.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/shared_params/__init__.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/task_spec.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/task_spec_param.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/text_schema.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/src/parallel/types/text_schema_param.py +0 -0
- {parallel_web-0.4.1/src/parallel/types/beta → parallel_web-0.5.0/src/parallel/types}/webhook_param.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/__init__.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/api_resources/__init__.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/api_resources/beta/__init__.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/conftest.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/sample_file.txt +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/test_models.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/test_qs.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/test_required_args.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/test_response.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/test_streaming.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/test_transform.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/test_utils/test_datetime_parse.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/test_utils/test_proxy.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/test_utils/test_typing.py +0 -0
- {parallel_web-0.4.1 → parallel_web-0.5.0}/tests/utils.py +0 -0
|
@@ -1,5 +1,78 @@
|
|
|
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
|
+
|
|
52
|
+
## 0.4.2 (2026-03-09)
|
|
53
|
+
|
|
54
|
+
Full Changelog: [v0.4.1...v0.4.2](https://github.com/parallel-web/parallel-sdk-python/compare/v0.4.1...v0.4.2)
|
|
55
|
+
|
|
56
|
+
### Features
|
|
57
|
+
|
|
58
|
+
* **api:** add betas back in for search ([23493c6](https://github.com/parallel-web/parallel-sdk-python/commit/23493c6ae666649f7ac2af185bb6caf49b9fefee))
|
|
59
|
+
* **api:** sync openapi spec ([e00288b](https://github.com/parallel-web/parallel-sdk-python/commit/e00288bd8ed2a250c9a0d7935a52fd40b9d1bec5))
|
|
60
|
+
* **client:** add custom JSON encoder for extended type support ([b2c8bf9](https://github.com/parallel-web/parallel-sdk-python/commit/b2c8bf9b8246e2e8f1d53a7c8e238dd19b727a77))
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
### Chores
|
|
64
|
+
|
|
65
|
+
* **ci:** skip uploading artifacts on stainless-internal branches ([bb389c0](https://github.com/parallel-web/parallel-sdk-python/commit/bb389c0078e00e615c1aa650674c006c6e906c81))
|
|
66
|
+
* format all `api.md` files ([b74b93b](https://github.com/parallel-web/parallel-sdk-python/commit/b74b93bf04d678cc283b8f312a3a4c5bb314c468))
|
|
67
|
+
* **internal:** add request options to SSE classes ([00dbc30](https://github.com/parallel-web/parallel-sdk-python/commit/00dbc3027e59adda51eb623d6a724501f70a7720))
|
|
68
|
+
* **internal:** bump dependencies ([f49c841](https://github.com/parallel-web/parallel-sdk-python/commit/f49c841670d88f8fc38e0a17f19242f7570a9aad))
|
|
69
|
+
* **internal:** codegen related update ([1b7c8ff](https://github.com/parallel-web/parallel-sdk-python/commit/1b7c8ff1969c65a422d6bcfcdc01c5b0c477b45b))
|
|
70
|
+
* **internal:** fix lint error on Python 3.14 ([cb3f364](https://github.com/parallel-web/parallel-sdk-python/commit/cb3f3645bc67b98235a732f357d8a24fdf164032))
|
|
71
|
+
* **internal:** make `test_proxy_environment_variables` more resilient ([d3ba149](https://github.com/parallel-web/parallel-sdk-python/commit/d3ba149917deab7ee28a3f38bd7b1f3f4bd2b9c6))
|
|
72
|
+
* **internal:** make `test_proxy_environment_variables` more resilient to env ([1e1d858](https://github.com/parallel-web/parallel-sdk-python/commit/1e1d858e7c21785744d94ceef33e655dcf75eacc))
|
|
73
|
+
* **test:** do not count install time for mock server timeout ([9766097](https://github.com/parallel-web/parallel-sdk-python/commit/9766097052cc86f0081cfe38b25d7dbf90232438))
|
|
74
|
+
* update mock server docs ([028965c](https://github.com/parallel-web/parallel-sdk-python/commit/028965c0b2868051617b266493466f9fc7816705))
|
|
75
|
+
|
|
3
76
|
## 0.4.1 (2026-01-28)
|
|
4
77
|
|
|
5
78
|
Full Changelog: [v0.4.0...v0.4.1](https://github.com/parallel-web/parallel-sdk-python/compare/v0.4.0...v0.4.1)
|
|
@@ -85,11 +85,10 @@ $ 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
|
-
|
|
92
|
-
$ npx prism mock path/to/your/openapi.yml
|
|
91
|
+
$ ./scripts/mock
|
|
93
92
|
```
|
|
94
93
|
|
|
95
94
|
```sh
|
|
@@ -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'
|
|
@@ -133,6 +133,7 @@ All beta parameters are accessible via the `client.beta` namespace in the SDK.
|
|
|
133
133
|
|
|
134
134
|
Yes, all methods support a timeout. For more information, see [Timeouts](https://github.com/parallel-web/parallel-sdk-python/tree/main/#timeouts).
|
|
135
135
|
|
|
136
|
+
|
|
136
137
|
**Can I specify retries via the SDK?**
|
|
137
138
|
|
|
138
139
|
Yes, errors can be retried via the SDK — the default retry count is 2. The maximum number
|
|
@@ -327,7 +328,7 @@ response = client.task_run.with_raw_response.create(
|
|
|
327
328
|
print(response.headers.get('X-My-Header'))
|
|
328
329
|
|
|
329
330
|
task_run = response.parse()
|
|
330
|
-
print(task_run.
|
|
331
|
+
print(task_run.interaction_id)
|
|
331
332
|
```
|
|
332
333
|
|
|
333
334
|
These methods return an [`APIResponse`](https://github.com/parallel-web/parallel-sdk-python/tree/main/src/parallel/_response.py) object.
|
|
@@ -98,6 +98,7 @@ All beta parameters are accessible via the `client.beta` namespace in the SDK.
|
|
|
98
98
|
|
|
99
99
|
Yes, all methods support a timeout. For more information, see [Timeouts](#timeouts).
|
|
100
100
|
|
|
101
|
+
|
|
101
102
|
**Can I specify retries via the SDK?**
|
|
102
103
|
|
|
103
104
|
Yes, errors can be retried via the SDK — the default retry count is 2. The maximum number
|
|
@@ -292,7 +293,7 @@ response = client.task_run.with_raw_response.create(
|
|
|
292
293
|
print(response.headers.get('X-My-Header'))
|
|
293
294
|
|
|
294
295
|
task_run = response.parse()
|
|
295
|
-
print(task_run.
|
|
296
|
+
print(task_run.interaction_id)
|
|
296
297
|
```
|
|
297
298
|
|
|
298
299
|
These methods return an [`APIResponse`](https://github.com/parallel-web/parallel-sdk-python/tree/main/src/parallel/_response.py) object.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Shared Types
|
|
2
|
+
|
|
3
|
+
```python
|
|
4
|
+
from parallel.types import ErrorObject, ErrorResponse, SourcePolicy, Warning
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
# Parallel
|
|
8
|
+
|
|
9
|
+
Types:
|
|
10
|
+
|
|
11
|
+
```python
|
|
12
|
+
from parallel.types import (
|
|
13
|
+
AdvancedExtractSettings,
|
|
14
|
+
AdvancedSearchSettings,
|
|
15
|
+
ExcerptSettings,
|
|
16
|
+
ExtractError,
|
|
17
|
+
ExtractResponse,
|
|
18
|
+
ExtractResult,
|
|
19
|
+
FetchPolicy,
|
|
20
|
+
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
|
+
|
|
31
|
+
# TaskRun
|
|
32
|
+
|
|
33
|
+
Types:
|
|
34
|
+
|
|
35
|
+
```python
|
|
36
|
+
from parallel.types import (
|
|
37
|
+
AutoSchema,
|
|
38
|
+
Citation,
|
|
39
|
+
FieldBasis,
|
|
40
|
+
JsonSchema,
|
|
41
|
+
ParsedTaskRunResult,
|
|
42
|
+
RunInput,
|
|
43
|
+
TaskRun,
|
|
44
|
+
TaskRunJsonOutput,
|
|
45
|
+
TaskRunResult,
|
|
46
|
+
TaskRunTextOutput,
|
|
47
|
+
TaskSpec,
|
|
48
|
+
TextSchema,
|
|
49
|
+
)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Methods:
|
|
53
|
+
|
|
54
|
+
- <code title="post /v1/tasks/runs">client.task_run.<a href="./src/parallel/resources/task_run.py">create</a>(\*\*<a href="src/parallel/types/task_run_create_params.py">params</a>) -> <a href="./src/parallel/types/task_run.py">TaskRun</a></code>
|
|
55
|
+
- <code title="get /v1/tasks/runs/{run_id}">client.task_run.<a href="./src/parallel/resources/task_run.py">retrieve</a>(run_id) -> <a href="./src/parallel/types/task_run.py">TaskRun</a></code>
|
|
56
|
+
- <code title="get /v1/tasks/runs/{run_id}/result">client.task_run.<a href="./src/parallel/resources/task_run.py">result</a>(run_id, \*\*<a href="src/parallel/types/task_run_result_params.py">params</a>) -> <a href="./src/parallel/types/task_run_result.py">TaskRunResult</a></code>
|
|
57
|
+
|
|
58
|
+
Convenience methods:
|
|
59
|
+
|
|
60
|
+
- <code title="post /v1/tasks/runs">client.task_run.<a href="./src/parallel/resources/task_run.py">execute</a>(input, processor, output: <a href="./src/parallel/types/task_spec_param.py">OutputSchema</a>) -> <a href="./src/parallel/types/task_run_result.py">TaskRunResult</a></code>
|
|
61
|
+
- <code title="post /v1/tasks/runs">client.task_run.<a href="./src/parallel/resources/task_run.py">execute</a>(input, processor, output: Type[OutputT]) -> <a href="./src/parallel/types/parsed_task_run_result.py">ParsedTaskRunResult[OutputT]</a></code>
|
|
62
|
+
# [Beta](src/parallel/resources/beta/api.md)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "parallel-web"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.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",
|
|
@@ -70,7 +70,7 @@ format = { chain = [
|
|
|
70
70
|
# run formatting again to fix any inconsistencies when imports are stripped
|
|
71
71
|
"format:ruff",
|
|
72
72
|
]}
|
|
73
|
-
"format:docs" = "python scripts/utils/ruffen-docs.py README.md api.md"
|
|
73
|
+
"format:docs" = "bash -c 'python scripts/utils/ruffen-docs.py README.md $(find . -type f -name api.md)'"
|
|
74
74
|
"format:ruff" = "ruff format"
|
|
75
75
|
|
|
76
76
|
"lint" = { chain = [
|
|
@@ -12,14 +12,14 @@
|
|
|
12
12
|
-e file:.
|
|
13
13
|
aiohappyeyeballs==2.6.1
|
|
14
14
|
# via aiohttp
|
|
15
|
-
aiohttp==3.13.
|
|
15
|
+
aiohttp==3.13.3
|
|
16
16
|
# via httpx-aiohttp
|
|
17
17
|
# via parallel-web
|
|
18
18
|
aiosignal==1.4.0
|
|
19
19
|
# via aiohttp
|
|
20
20
|
annotated-types==0.7.0
|
|
21
21
|
# via pydantic
|
|
22
|
-
anyio==4.12.
|
|
22
|
+
anyio==4.12.1
|
|
23
23
|
# via httpx
|
|
24
24
|
# via parallel-web
|
|
25
25
|
argcomplete==3.6.3
|
|
@@ -31,7 +31,7 @@ attrs==25.4.0
|
|
|
31
31
|
# via nox
|
|
32
32
|
backports-asyncio-runner==1.2.0
|
|
33
33
|
# via pytest-asyncio
|
|
34
|
-
certifi==
|
|
34
|
+
certifi==2026.1.4
|
|
35
35
|
# via httpcore
|
|
36
36
|
# via httpx
|
|
37
37
|
colorama==0.4.6
|
|
@@ -64,7 +64,7 @@ httpx==0.28.1
|
|
|
64
64
|
# via httpx-aiohttp
|
|
65
65
|
# via parallel-web
|
|
66
66
|
# via respx
|
|
67
|
-
httpx-aiohttp==0.1.
|
|
67
|
+
httpx-aiohttp==0.1.12
|
|
68
68
|
# via parallel-web
|
|
69
69
|
humanize==4.13.0
|
|
70
70
|
# via nox
|
|
@@ -72,7 +72,7 @@ idna==3.11
|
|
|
72
72
|
# via anyio
|
|
73
73
|
# via httpx
|
|
74
74
|
# via yarl
|
|
75
|
-
importlib-metadata==8.7.
|
|
75
|
+
importlib-metadata==8.7.1
|
|
76
76
|
iniconfig==2.1.0
|
|
77
77
|
# via pytest
|
|
78
78
|
markdown-it-py==3.0.0
|
|
@@ -85,14 +85,14 @@ multidict==6.7.0
|
|
|
85
85
|
mypy==1.17.0
|
|
86
86
|
mypy-extensions==1.1.0
|
|
87
87
|
# via mypy
|
|
88
|
-
nodeenv==1.
|
|
88
|
+
nodeenv==1.10.0
|
|
89
89
|
# via pyright
|
|
90
90
|
nox==2025.11.12
|
|
91
91
|
packaging==25.0
|
|
92
92
|
# via dependency-groups
|
|
93
93
|
# via nox
|
|
94
94
|
# via pytest
|
|
95
|
-
pathspec==0.
|
|
95
|
+
pathspec==1.0.3
|
|
96
96
|
# via mypy
|
|
97
97
|
platformdirs==4.4.0
|
|
98
98
|
# via virtualenv
|
|
@@ -118,13 +118,13 @@ python-dateutil==2.9.0.post0
|
|
|
118
118
|
# via time-machine
|
|
119
119
|
respx==0.22.0
|
|
120
120
|
rich==14.2.0
|
|
121
|
-
ruff==0.14.
|
|
121
|
+
ruff==0.14.13
|
|
122
122
|
six==1.17.0
|
|
123
123
|
# via python-dateutil
|
|
124
124
|
sniffio==1.3.1
|
|
125
125
|
# via parallel-web
|
|
126
126
|
time-machine==2.19.0
|
|
127
|
-
tomli==2.
|
|
127
|
+
tomli==2.4.0
|
|
128
128
|
# via dependency-groups
|
|
129
129
|
# via mypy
|
|
130
130
|
# via nox
|
|
@@ -144,7 +144,7 @@ typing-extensions==4.15.0
|
|
|
144
144
|
# via virtualenv
|
|
145
145
|
typing-inspection==0.4.2
|
|
146
146
|
# via pydantic
|
|
147
|
-
virtualenv==20.
|
|
147
|
+
virtualenv==20.36.1
|
|
148
148
|
# via nox
|
|
149
149
|
yarl==1.22.0
|
|
150
150
|
# via aiohttp
|
|
@@ -12,21 +12,21 @@
|
|
|
12
12
|
-e file:.
|
|
13
13
|
aiohappyeyeballs==2.6.1
|
|
14
14
|
# via aiohttp
|
|
15
|
-
aiohttp==3.13.
|
|
15
|
+
aiohttp==3.13.3
|
|
16
16
|
# via httpx-aiohttp
|
|
17
17
|
# via parallel-web
|
|
18
18
|
aiosignal==1.4.0
|
|
19
19
|
# via aiohttp
|
|
20
20
|
annotated-types==0.7.0
|
|
21
21
|
# via pydantic
|
|
22
|
-
anyio==4.12.
|
|
22
|
+
anyio==4.12.1
|
|
23
23
|
# via httpx
|
|
24
24
|
# via parallel-web
|
|
25
25
|
async-timeout==5.0.1
|
|
26
26
|
# via aiohttp
|
|
27
27
|
attrs==25.4.0
|
|
28
28
|
# via aiohttp
|
|
29
|
-
certifi==
|
|
29
|
+
certifi==2026.1.4
|
|
30
30
|
# via httpcore
|
|
31
31
|
# via httpx
|
|
32
32
|
distro==1.9.0
|
|
@@ -43,7 +43,7 @@ httpcore==1.0.9
|
|
|
43
43
|
httpx==0.28.1
|
|
44
44
|
# via httpx-aiohttp
|
|
45
45
|
# via parallel-web
|
|
46
|
-
httpx-aiohttp==0.1.
|
|
46
|
+
httpx-aiohttp==0.1.12
|
|
47
47
|
# via parallel-web
|
|
48
48
|
idna==3.11
|
|
49
49
|
# via anyio
|
|
@@ -86,6 +86,7 @@ from ._exceptions import (
|
|
|
86
86
|
APIConnectionError,
|
|
87
87
|
APIResponseValidationError,
|
|
88
88
|
)
|
|
89
|
+
from ._utils._json import openapi_dumps
|
|
89
90
|
|
|
90
91
|
log: logging.Logger = logging.getLogger(__name__)
|
|
91
92
|
|
|
@@ -539,6 +540,10 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
|
539
540
|
files = cast(HttpxRequestFiles, ForceMultipartDict())
|
|
540
541
|
|
|
541
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])
|
|
542
547
|
if "_" in prepared_url.host:
|
|
543
548
|
# work around https://github.com/encode/httpx/discussions/2880
|
|
544
549
|
kwargs["extensions"] = {"sni_hostname": prepared_url.host.replace("_", "-")}
|
|
@@ -554,8 +559,10 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
|
554
559
|
kwargs["content"] = options.content
|
|
555
560
|
elif isinstance(json_data, bytes):
|
|
556
561
|
kwargs["content"] = json_data
|
|
557
|
-
|
|
558
|
-
|
|
562
|
+
elif not files:
|
|
563
|
+
# Don't set content when JSON is sent as multipart/form-data,
|
|
564
|
+
# since httpx's content param overrides other body arguments
|
|
565
|
+
kwargs["content"] = openapi_dumps(json_data) if is_given(json_data) and json_data is not None else None
|
|
559
566
|
kwargs["files"] = files
|
|
560
567
|
else:
|
|
561
568
|
headers.pop("Content-Type", None)
|