parallel-web 0.3.0__tar.gz → 0.3.2__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.

Potentially problematic release.


This version of parallel-web might be problematic. Click here for more details.

Files changed (139) hide show
  1. parallel_web-0.3.2/.release-please-manifest.json +3 -0
  2. {parallel_web-0.3.0 → parallel_web-0.3.2}/CHANGELOG.md +16 -0
  3. {parallel_web-0.3.0 → parallel_web-0.3.2}/PKG-INFO +1 -1
  4. {parallel_web-0.3.0 → parallel_web-0.3.2}/api.md +1 -0
  5. {parallel_web-0.3.0 → parallel_web-0.3.2}/pyproject.toml +1 -1
  6. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_version.py +1 -1
  7. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/resources/beta/beta.py +36 -6
  8. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/resources/beta/task_group.py +25 -2
  9. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/resources/beta/task_run.py +35 -4
  10. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/__init__.py +1 -0
  11. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/beta_extract_params.py +3 -25
  12. parallel_web-0.3.2/src/parallel/types/beta/fetch_policy_param.py +31 -0
  13. parallel_web-0.3.0/.release-please-manifest.json +0 -3
  14. {parallel_web-0.3.0 → parallel_web-0.3.2}/.gitignore +0 -0
  15. {parallel_web-0.3.0 → parallel_web-0.3.2}/CONTRIBUTING.md +0 -0
  16. {parallel_web-0.3.0 → parallel_web-0.3.2}/LICENSE +0 -0
  17. {parallel_web-0.3.0 → parallel_web-0.3.2}/README.md +0 -0
  18. {parallel_web-0.3.0 → parallel_web-0.3.2}/SECURITY.md +0 -0
  19. {parallel_web-0.3.0 → parallel_web-0.3.2}/bin/check-release-environment +0 -0
  20. {parallel_web-0.3.0 → parallel_web-0.3.2}/bin/publish-pypi +0 -0
  21. {parallel_web-0.3.0 → parallel_web-0.3.2}/examples/.keep +0 -0
  22. {parallel_web-0.3.0 → parallel_web-0.3.2}/noxfile.py +0 -0
  23. {parallel_web-0.3.0 → parallel_web-0.3.2}/release-please-config.json +0 -0
  24. {parallel_web-0.3.0 → parallel_web-0.3.2}/requirements-dev.lock +0 -0
  25. {parallel_web-0.3.0 → parallel_web-0.3.2}/requirements.lock +0 -0
  26. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/__init__.py +0 -0
  27. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_base_client.py +0 -0
  28. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_client.py +0 -0
  29. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_compat.py +0 -0
  30. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_constants.py +0 -0
  31. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_exceptions.py +0 -0
  32. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_files.py +0 -0
  33. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_models.py +0 -0
  34. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_qs.py +0 -0
  35. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_resource.py +0 -0
  36. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_response.py +0 -0
  37. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_streaming.py +0 -0
  38. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_types.py +0 -0
  39. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_utils/__init__.py +0 -0
  40. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_utils/_compat.py +0 -0
  41. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_utils/_datetime_parse.py +0 -0
  42. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_utils/_logs.py +0 -0
  43. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_utils/_proxy.py +0 -0
  44. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_utils/_reflection.py +0 -0
  45. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_utils/_resources_proxy.py +0 -0
  46. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_utils/_streams.py +0 -0
  47. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_utils/_sync.py +0 -0
  48. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_utils/_transform.py +0 -0
  49. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_utils/_typing.py +0 -0
  50. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/_utils/_utils.py +0 -0
  51. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/lib/.keep +0 -0
  52. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/lib/__init__.py +0 -0
  53. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/lib/_parsing/__init__.py +0 -0
  54. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/lib/_parsing/_task_run_result.py +0 -0
  55. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/lib/_parsing/_task_spec.py +0 -0
  56. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/lib/_pydantic.py +0 -0
  57. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/lib/_time.py +0 -0
  58. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/py.typed +0 -0
  59. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/resources/__init__.py +0 -0
  60. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/resources/beta/__init__.py +0 -0
  61. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/resources/task_run.py +0 -0
  62. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/__init__.py +0 -0
  63. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/auto_schema.py +0 -0
  64. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/auto_schema_param.py +0 -0
  65. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/beta_run_input.py +0 -0
  66. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/beta_run_input_param.py +0 -0
  67. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/beta_search_params.py +0 -0
  68. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/beta_task_run_result.py +0 -0
  69. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/error_event.py +0 -0
  70. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/excerpt_settings_param.py +0 -0
  71. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/extract_error.py +0 -0
  72. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/extract_response.py +0 -0
  73. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/extract_result.py +0 -0
  74. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/mcp_server.py +0 -0
  75. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/mcp_server_param.py +0 -0
  76. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/mcp_tool_call.py +0 -0
  77. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/parallel_beta_param.py +0 -0
  78. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/search_result.py +0 -0
  79. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/task_group.py +0 -0
  80. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/task_group_add_runs_params.py +0 -0
  81. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/task_group_create_params.py +0 -0
  82. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/task_group_events_params.py +0 -0
  83. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/task_group_events_response.py +0 -0
  84. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/task_group_get_runs_params.py +0 -0
  85. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/task_group_get_runs_response.py +0 -0
  86. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/task_group_run_response.py +0 -0
  87. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/task_group_status.py +0 -0
  88. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/task_run_create_params.py +0 -0
  89. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/task_run_event.py +0 -0
  90. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/task_run_events_response.py +0 -0
  91. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/task_run_result_params.py +0 -0
  92. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/web_search_result.py +0 -0
  93. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/webhook.py +0 -0
  94. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/beta/webhook_param.py +0 -0
  95. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/citation.py +0 -0
  96. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/field_basis.py +0 -0
  97. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/json_schema.py +0 -0
  98. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/json_schema_param.py +0 -0
  99. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/parsed_task_run_result.py +0 -0
  100. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/shared/__init__.py +0 -0
  101. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/shared/error_object.py +0 -0
  102. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/shared/error_response.py +0 -0
  103. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/shared/source_policy.py +0 -0
  104. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/shared/warning.py +0 -0
  105. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/shared_params/__init__.py +0 -0
  106. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/shared_params/source_policy.py +0 -0
  107. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/task_run.py +0 -0
  108. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/task_run_create_params.py +0 -0
  109. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/task_run_json_output.py +0 -0
  110. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/task_run_result.py +0 -0
  111. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/task_run_result_params.py +0 -0
  112. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/task_run_text_output.py +0 -0
  113. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/task_spec.py +0 -0
  114. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/task_spec_param.py +0 -0
  115. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/text_schema.py +0 -0
  116. {parallel_web-0.3.0 → parallel_web-0.3.2}/src/parallel/types/text_schema_param.py +0 -0
  117. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/__init__.py +0 -0
  118. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/api_resources/__init__.py +0 -0
  119. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/api_resources/beta/__init__.py +0 -0
  120. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/api_resources/beta/test_task_group.py +0 -0
  121. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/api_resources/beta/test_task_run.py +0 -0
  122. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/api_resources/test_beta.py +0 -0
  123. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/api_resources/test_task_run.py +0 -0
  124. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/conftest.py +0 -0
  125. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/sample_file.txt +0 -0
  126. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/test_client.py +0 -0
  127. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/test_deepcopy.py +0 -0
  128. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/test_extract_files.py +0 -0
  129. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/test_files.py +0 -0
  130. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/test_models.py +0 -0
  131. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/test_qs.py +0 -0
  132. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/test_required_args.py +0 -0
  133. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/test_response.py +0 -0
  134. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/test_streaming.py +0 -0
  135. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/test_transform.py +0 -0
  136. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/test_utils/test_datetime_parse.py +0 -0
  137. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/test_utils/test_proxy.py +0 -0
  138. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/test_utils/test_typing.py +0 -0
  139. {parallel_web-0.3.0 → parallel_web-0.3.2}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.3.2"
3
+ }
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.2 (2025-10-22)
4
+
5
+ Full Changelog: [v0.3.1...v0.3.2](https://github.com/parallel-web/parallel-sdk-python/compare/v0.3.1...v0.3.2)
6
+
7
+ ### Bug Fixes
8
+
9
+ * **api:** default beta headers for v1beta/search and v1beta/extract ([9f8d8dd](https://github.com/parallel-web/parallel-sdk-python/commit/9f8d8dd6e40f77fb0d1eaf6cc300cb853e734cdf))
10
+
11
+ ## 0.3.1 (2025-10-21)
12
+
13
+ Full Changelog: [v0.3.0...v0.3.1](https://github.com/parallel-web/parallel-sdk-python/compare/v0.3.0...v0.3.1)
14
+
15
+ ### Features
16
+
17
+ * **api:** manual updates ([0acbe77](https://github.com/parallel-web/parallel-sdk-python/commit/0acbe77da0148029c21e6b3c541e0b1ca163038d))
18
+
3
19
  ## 0.3.0 (2025-10-21)
4
20
 
5
21
  Full Changelog: [v0.2.2...v0.3.0](https://github.com/parallel-web/parallel-sdk-python/compare/v0.2.2...v0.3.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: parallel-web
3
- Version: 0.3.0
3
+ Version: 0.3.2
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
@@ -45,6 +45,7 @@ from parallel.types.beta import (
45
45
  ExtractError,
46
46
  ExtractResponse,
47
47
  ExtractResult,
48
+ FetchPolicy,
48
49
  SearchResult,
49
50
  WebSearchResult,
50
51
  )
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "parallel-web"
3
- version = "0.3.0"
3
+ version = "0.3.2"
4
4
  description = "The official Python library for the Parallel API"
5
5
  dynamic = ["readme"]
6
6
  license = "MIT"
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "parallel"
4
- __version__ = "0.3.0" # x-release-please-version
4
+ __version__ = "0.3.2" # x-release-please-version
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from typing import List, Optional
6
+ from itertools import chain
6
7
  from typing_extensions import Literal
7
8
 
8
9
  import httpx
@@ -37,6 +38,7 @@ from ...types.beta import beta_search_params, beta_extract_params
37
38
  from ..._base_client import make_request_options
38
39
  from ...types.beta.search_result import SearchResult
39
40
  from ...types.beta.extract_response import ExtractResponse
41
+ from ...types.beta.fetch_policy_param import FetchPolicyParam
40
42
  from ...types.beta.parallel_beta_param import ParallelBetaParam
41
43
  from ...types.shared_params.source_policy import SourcePolicy
42
44
 
@@ -76,7 +78,7 @@ class BetaResource(SyncAPIResource):
76
78
  *,
77
79
  urls: SequenceNotStr[str],
78
80
  excerpts: beta_extract_params.Excerpts | Omit = omit,
79
- fetch_policy: Optional[beta_extract_params.FetchPolicy] | Omit = omit,
81
+ fetch_policy: Optional[FetchPolicyParam] | Omit = omit,
80
82
  full_content: beta_extract_params.FullContent | Omit = omit,
81
83
  objective: Optional[str] | Omit = omit,
82
84
  search_queries: Optional[SequenceNotStr[str]] | Omit = omit,
@@ -122,9 +124,16 @@ class BetaResource(SyncAPIResource):
122
124
  timeout: Override the client-level default timeout for this request, in seconds
123
125
  """
124
126
  extra_headers = {
125
- **strip_not_given({"parallel-beta": ",".join(str(e) for e in betas) if is_given(betas) else not_given}),
127
+ **strip_not_given(
128
+ {
129
+ "parallel-beta": ",".join(chain((str(e) for e in betas), ["search-extract-2025-10-10"]))
130
+ if is_given(betas)
131
+ else not_given
132
+ }
133
+ ),
126
134
  **(extra_headers or {}),
127
135
  }
136
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
128
137
  return self._post(
129
138
  "/v1beta/extract",
130
139
  body=maybe_transform(
@@ -196,9 +205,16 @@ class BetaResource(SyncAPIResource):
196
205
  timeout: Override the client-level default timeout for this request, in seconds
197
206
  """
198
207
  extra_headers = {
199
- **strip_not_given({"parallel-beta": ",".join(str(e) for e in betas) if is_given(betas) else not_given}),
208
+ **strip_not_given(
209
+ {
210
+ "parallel-beta": ",".join(chain((str(e) for e in betas), ["search-extract-2025-10-10"]))
211
+ if is_given(betas)
212
+ else not_given
213
+ }
214
+ ),
200
215
  **(extra_headers or {}),
201
216
  }
217
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
202
218
  return self._post(
203
219
  "/v1beta/search",
204
220
  body=maybe_transform(
@@ -252,7 +268,7 @@ class AsyncBetaResource(AsyncAPIResource):
252
268
  *,
253
269
  urls: SequenceNotStr[str],
254
270
  excerpts: beta_extract_params.Excerpts | Omit = omit,
255
- fetch_policy: Optional[beta_extract_params.FetchPolicy] | Omit = omit,
271
+ fetch_policy: Optional[FetchPolicyParam] | Omit = omit,
256
272
  full_content: beta_extract_params.FullContent | Omit = omit,
257
273
  objective: Optional[str] | Omit = omit,
258
274
  search_queries: Optional[SequenceNotStr[str]] | Omit = omit,
@@ -298,9 +314,16 @@ class AsyncBetaResource(AsyncAPIResource):
298
314
  timeout: Override the client-level default timeout for this request, in seconds
299
315
  """
300
316
  extra_headers = {
301
- **strip_not_given({"parallel-beta": ",".join(str(e) for e in betas) if is_given(betas) else not_given}),
317
+ **strip_not_given(
318
+ {
319
+ "parallel-beta": ",".join(chain((str(e) for e in betas), ["search-extract-2025-10-10"]))
320
+ if is_given(betas)
321
+ else not_given
322
+ }
323
+ ),
302
324
  **(extra_headers or {}),
303
325
  }
326
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
304
327
  return await self._post(
305
328
  "/v1beta/extract",
306
329
  body=await async_maybe_transform(
@@ -372,9 +395,16 @@ class AsyncBetaResource(AsyncAPIResource):
372
395
  timeout: Override the client-level default timeout for this request, in seconds
373
396
  """
374
397
  extra_headers = {
375
- **strip_not_given({"parallel-beta": ",".join(str(e) for e in betas) if is_given(betas) else not_given}),
398
+ **strip_not_given(
399
+ {
400
+ "parallel-beta": ",".join(chain((str(e) for e in betas), ["search-extract-2025-10-10"]))
401
+ if is_given(betas)
402
+ else not_given
403
+ }
404
+ ),
376
405
  **(extra_headers or {}),
377
406
  }
407
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
378
408
  return await self._post(
379
409
  "/v1beta/search",
380
410
  body=await async_maybe_transform(
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from typing import Any, Dict, List, Union, Iterable, Optional, cast
6
+ from itertools import chain
6
7
  from typing_extensions import Literal
7
8
 
8
9
  import httpx
@@ -81,6 +82,7 @@ class TaskGroupResource(SyncAPIResource):
81
82
 
82
83
  timeout: Override the client-level default timeout for this request, in seconds
83
84
  """
85
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
84
86
  return self._post(
85
87
  "/v1beta/tasks/groups",
86
88
  body=maybe_transform({"metadata": metadata}, task_group_create_params.TaskGroupCreateParams),
@@ -115,6 +117,7 @@ class TaskGroupResource(SyncAPIResource):
115
117
  """
116
118
  if not task_group_id:
117
119
  raise ValueError(f"Expected a non-empty value for `task_group_id` but received {task_group_id!r}")
120
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
118
121
  return self._get(
119
122
  f"/v1beta/tasks/groups/{task_group_id}",
120
123
  options=make_request_options(
@@ -163,9 +166,16 @@ class TaskGroupResource(SyncAPIResource):
163
166
  if not task_group_id:
164
167
  raise ValueError(f"Expected a non-empty value for `task_group_id` but received {task_group_id!r}")
165
168
  extra_headers = {
166
- **strip_not_given({"parallel-beta": ",".join(str(e) for e in betas) if is_given(betas) else not_given}),
169
+ **strip_not_given(
170
+ {
171
+ "parallel-beta": ",".join(chain((str(e) for e in betas), ["search-extract-2025-10-10"]))
172
+ if is_given(betas)
173
+ else not_given
174
+ }
175
+ ),
167
176
  **(extra_headers or {}),
168
177
  }
178
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
169
179
  return self._post(
170
180
  f"/v1beta/tasks/groups/{task_group_id}/runs",
171
181
  body=maybe_transform(
@@ -212,6 +222,7 @@ class TaskGroupResource(SyncAPIResource):
212
222
  if not task_group_id:
213
223
  raise ValueError(f"Expected a non-empty value for `task_group_id` but received {task_group_id!r}")
214
224
  extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
225
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
215
226
  return self._get(
216
227
  f"/v1beta/tasks/groups/{task_group_id}/events",
217
228
  options=make_request_options(
@@ -276,6 +287,7 @@ class TaskGroupResource(SyncAPIResource):
276
287
  if not task_group_id:
277
288
  raise ValueError(f"Expected a non-empty value for `task_group_id` but received {task_group_id!r}")
278
289
  extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
290
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
279
291
  return self._get(
280
292
  f"/v1beta/tasks/groups/{task_group_id}/runs",
281
293
  options=make_request_options(
@@ -346,6 +358,7 @@ class AsyncTaskGroupResource(AsyncAPIResource):
346
358
 
347
359
  timeout: Override the client-level default timeout for this request, in seconds
348
360
  """
361
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
349
362
  return await self._post(
350
363
  "/v1beta/tasks/groups",
351
364
  body=await async_maybe_transform({"metadata": metadata}, task_group_create_params.TaskGroupCreateParams),
@@ -380,6 +393,7 @@ class AsyncTaskGroupResource(AsyncAPIResource):
380
393
  """
381
394
  if not task_group_id:
382
395
  raise ValueError(f"Expected a non-empty value for `task_group_id` but received {task_group_id!r}")
396
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
383
397
  return await self._get(
384
398
  f"/v1beta/tasks/groups/{task_group_id}",
385
399
  options=make_request_options(
@@ -428,9 +442,16 @@ class AsyncTaskGroupResource(AsyncAPIResource):
428
442
  if not task_group_id:
429
443
  raise ValueError(f"Expected a non-empty value for `task_group_id` but received {task_group_id!r}")
430
444
  extra_headers = {
431
- **strip_not_given({"parallel-beta": ",".join(str(e) for e in betas) if is_given(betas) else not_given}),
445
+ **strip_not_given(
446
+ {
447
+ "parallel-beta": ",".join(chain((str(e) for e in betas), ["search-extract-2025-10-10"]))
448
+ if is_given(betas)
449
+ else not_given
450
+ }
451
+ ),
432
452
  **(extra_headers or {}),
433
453
  }
454
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
434
455
  return await self._post(
435
456
  f"/v1beta/tasks/groups/{task_group_id}/runs",
436
457
  body=await async_maybe_transform(
@@ -477,6 +498,7 @@ class AsyncTaskGroupResource(AsyncAPIResource):
477
498
  if not task_group_id:
478
499
  raise ValueError(f"Expected a non-empty value for `task_group_id` but received {task_group_id!r}")
479
500
  extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
501
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
480
502
  return await self._get(
481
503
  f"/v1beta/tasks/groups/{task_group_id}/events",
482
504
  options=make_request_options(
@@ -541,6 +563,7 @@ class AsyncTaskGroupResource(AsyncAPIResource):
541
563
  if not task_group_id:
542
564
  raise ValueError(f"Expected a non-empty value for `task_group_id` but received {task_group_id!r}")
543
565
  extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
566
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
544
567
  return await self._get(
545
568
  f"/v1beta/tasks/groups/{task_group_id}/runs",
546
569
  options=make_request_options(
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from typing import Any, Dict, List, Union, Iterable, Optional, cast
6
+ from itertools import chain
6
7
 
7
8
  import httpx
8
9
 
@@ -122,9 +123,16 @@ class TaskRunResource(SyncAPIResource):
122
123
  timeout: Override the client-level default timeout for this request, in seconds
123
124
  """
124
125
  extra_headers = {
125
- **strip_not_given({"parallel-beta": ",".join(str(e) for e in betas) if is_given(betas) else not_given}),
126
+ **strip_not_given(
127
+ {
128
+ "parallel-beta": ",".join(chain((str(e) for e in betas), ["search-extract-2025-10-10"]))
129
+ if is_given(betas)
130
+ else not_given
131
+ }
132
+ ),
126
133
  **(extra_headers or {}),
127
134
  }
135
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
128
136
  return self._post(
129
137
  "/v1/tasks/runs?beta=true",
130
138
  body=maybe_transform(
@@ -178,6 +186,7 @@ class TaskRunResource(SyncAPIResource):
178
186
  if not run_id:
179
187
  raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
180
188
  extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
189
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
181
190
  return self._get(
182
191
  f"/v1beta/tasks/runs/{run_id}/events",
183
192
  options=make_request_options(
@@ -218,9 +227,16 @@ class TaskRunResource(SyncAPIResource):
218
227
  if not run_id:
219
228
  raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
220
229
  extra_headers = {
221
- **strip_not_given({"parallel-beta": ",".join(str(e) for e in betas) if is_given(betas) else not_given}),
230
+ **strip_not_given(
231
+ {
232
+ "parallel-beta": ",".join(chain((str(e) for e in betas), ["search-extract-2025-10-10"]))
233
+ if is_given(betas)
234
+ else not_given
235
+ }
236
+ ),
222
237
  **(extra_headers or {}),
223
238
  }
239
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
224
240
  return self._get(
225
241
  f"/v1/tasks/runs/{run_id}/result?beta=true",
226
242
  options=make_request_options(
@@ -325,9 +341,16 @@ class AsyncTaskRunResource(AsyncAPIResource):
325
341
  timeout: Override the client-level default timeout for this request, in seconds
326
342
  """
327
343
  extra_headers = {
328
- **strip_not_given({"parallel-beta": ",".join(str(e) for e in betas) if is_given(betas) else not_given}),
344
+ **strip_not_given(
345
+ {
346
+ "parallel-beta": ",".join(chain((str(e) for e in betas), ["search-extract-2025-10-10"]))
347
+ if is_given(betas)
348
+ else not_given
349
+ }
350
+ ),
329
351
  **(extra_headers or {}),
330
352
  }
353
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
331
354
  return await self._post(
332
355
  "/v1/tasks/runs?beta=true",
333
356
  body=await async_maybe_transform(
@@ -381,6 +404,7 @@ class AsyncTaskRunResource(AsyncAPIResource):
381
404
  if not run_id:
382
405
  raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
383
406
  extra_headers = {"Accept": "text/event-stream", **(extra_headers or {})}
407
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
384
408
  return await self._get(
385
409
  f"/v1beta/tasks/runs/{run_id}/events",
386
410
  options=make_request_options(
@@ -421,9 +445,16 @@ class AsyncTaskRunResource(AsyncAPIResource):
421
445
  if not run_id:
422
446
  raise ValueError(f"Expected a non-empty value for `run_id` but received {run_id!r}")
423
447
  extra_headers = {
424
- **strip_not_given({"parallel-beta": ",".join(str(e) for e in betas) if is_given(betas) else not_given}),
448
+ **strip_not_given(
449
+ {
450
+ "parallel-beta": ",".join(chain((str(e) for e in betas), ["search-extract-2025-10-10"]))
451
+ if is_given(betas)
452
+ else not_given
453
+ }
454
+ ),
425
455
  **(extra_headers or {}),
426
456
  }
457
+ extra_headers = {"parallel-beta": "search-extract-2025-10-10", **(extra_headers or {})}
427
458
  return await self._get(
428
459
  f"/v1/tasks/runs/{run_id}/result?beta=true",
429
460
  options=make_request_options(
@@ -18,6 +18,7 @@ from .mcp_server_param import McpServerParam as McpServerParam
18
18
  from .task_group_status import TaskGroupStatus as TaskGroupStatus
19
19
  from .web_search_result import WebSearchResult as WebSearchResult
20
20
  from .beta_search_params import BetaSearchParams as BetaSearchParams
21
+ from .fetch_policy_param import FetchPolicyParam as FetchPolicyParam
21
22
  from .beta_extract_params import BetaExtractParams as BetaExtractParams
22
23
  from .parallel_beta_param import ParallelBetaParam as ParallelBetaParam
23
24
  from .beta_run_input_param import BetaRunInputParam as BetaRunInputParam
@@ -7,10 +7,11 @@ from typing_extensions import Required, Annotated, TypeAlias, TypedDict
7
7
 
8
8
  from ..._types import SequenceNotStr
9
9
  from ..._utils import PropertyInfo
10
+ from .fetch_policy_param import FetchPolicyParam
10
11
  from .parallel_beta_param import ParallelBetaParam
11
12
  from .excerpt_settings_param import ExcerptSettingsParam
12
13
 
13
- __all__ = ["BetaExtractParams", "Excerpts", "FetchPolicy", "FullContent", "FullContentFullContentSettings"]
14
+ __all__ = ["BetaExtractParams", "Excerpts", "FullContent", "FullContentFullContentSettings"]
14
15
 
15
16
 
16
17
  class BetaExtractParams(TypedDict, total=False):
@@ -23,7 +24,7 @@ class BetaExtractParams(TypedDict, total=False):
23
24
  redundant with full content.
24
25
  """
25
26
 
26
- fetch_policy: Optional[FetchPolicy]
27
+ fetch_policy: Optional[FetchPolicyParam]
27
28
  """Fetch policy.
28
29
 
29
30
  Determines when to return content from the cache (faster) vs fetching live
@@ -50,29 +51,6 @@ class BetaExtractParams(TypedDict, total=False):
50
51
  Excerpts: TypeAlias = Union[bool, ExcerptSettingsParam]
51
52
 
52
53
 
53
- class FetchPolicy(TypedDict, total=False):
54
- disable_cache_fallback: bool
55
- """
56
- If false, fallback to cached content older than max-age if live fetch fails or
57
- times out. If true, returns an error instead.
58
- """
59
-
60
- max_age_seconds: Optional[int]
61
- """Maximum age of cached content in seconds to trigger a live fetch.
62
-
63
- Minimum value 600 seconds (10 minutes). If not provided, a dynamic age policy
64
- will be used based on the search objective and url.
65
- """
66
-
67
- timeout_seconds: Optional[float]
68
- """Timeout in seconds for fetching live content if unavailable in cache.
69
-
70
- If unspecified a dynamic timeout will be used based on the url, generally 15
71
- seconds for simple pages and up to 60 seconds for complex pages requiring
72
- javascript or PDF rendering.
73
- """
74
-
75
-
76
54
  class FullContentFullContentSettings(TypedDict, total=False):
77
55
  max_chars_per_result: Optional[int]
78
56
  """
@@ -0,0 +1,31 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ from typing import Optional
6
+ from typing_extensions import TypedDict
7
+
8
+ __all__ = ["FetchPolicyParam"]
9
+
10
+
11
+ class FetchPolicyParam(TypedDict, total=False):
12
+ disable_cache_fallback: bool
13
+ """
14
+ If false, fallback to cached content older than max-age if live fetch fails or
15
+ times out. If true, returns an error instead.
16
+ """
17
+
18
+ max_age_seconds: Optional[int]
19
+ """Maximum age of cached content in seconds to trigger a live fetch.
20
+
21
+ Minimum value 600 seconds (10 minutes). If not provided, a dynamic age policy
22
+ will be used based on the search objective and url.
23
+ """
24
+
25
+ timeout_seconds: Optional[float]
26
+ """Timeout in seconds for fetching live content if unavailable in cache.
27
+
28
+ If unspecified a dynamic timeout will be used based on the url, generally 15
29
+ seconds for simple pages and up to 60 seconds for complex pages requiring
30
+ javascript or PDF rendering.
31
+ """
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.3.0"
3
- }
File without changes
File without changes
File without changes
File without changes
File without changes