Skip to content

Commit a6a055b

Browse files
rgambeegithub-actions[bot]
authored andcommitted
Add support for Opus 4.7 (#5444)
The settings mostly match the ones for Opus 4.6. The RPM limit is lower to match what I see in the Claude Console. Note that this brings in some unrelated changes to the generated SDK code. Others merged into main without updating the SDK. Sourced from commit 888962adb43dee5881fd630a38c2c12b2ab41245
1 parent 83c7e0a commit a6a055b

3 files changed

Lines changed: 36 additions & 80 deletions

File tree

src/futuresearch/generated/models/llm_enum_public.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ class LLMEnumPublic(str, Enum):
2323
CLAUDE_4_6_SONNET_MAX = "CLAUDE_4_6_SONNET_MAX"
2424
CLAUDE_4_6_SONNET_MEDIUM = "CLAUDE_4_6_SONNET_MEDIUM"
2525
CLAUDE_4_6_SONNET_NT = "CLAUDE_4_6_SONNET_NT"
26+
CLAUDE_4_7_OPUS_HIGH = "CLAUDE_4_7_OPUS_HIGH"
27+
CLAUDE_4_7_OPUS_LOW = "CLAUDE_4_7_OPUS_LOW"
28+
CLAUDE_4_7_OPUS_MAX = "CLAUDE_4_7_OPUS_MAX"
29+
CLAUDE_4_7_OPUS_MEDIUM = "CLAUDE_4_7_OPUS_MEDIUM"
30+
CLAUDE_4_7_OPUS_NT = "CLAUDE_4_7_OPUS_NT"
2631
GEMINI_3_1_PRO_HIGH = "GEMINI_3_1_PRO_HIGH"
2732
GEMINI_3_1_PRO_LOW = "GEMINI_3_1_PRO_LOW"
2833
GEMINI_3_1_PRO_MEDIUM = "GEMINI_3_1_PRO_MEDIUM"

src/futuresearch/generated/models/merge_operation.py

Lines changed: 23 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,15 @@
88
from attrs import field as _attrs_field
99

1010
from ..models.llm_enum_public import LLMEnumPublic
11-
from ..models.merge_operation_relationship_type_type_0 import (
12-
MergeOperationRelationshipTypeType0,
13-
)
14-
from ..models.merge_operation_use_web_search_type_0 import (
15-
MergeOperationUseWebSearchType0,
16-
)
11+
from ..models.merge_operation_relationship_type_type_0 import MergeOperationRelationshipTypeType0
12+
from ..models.merge_operation_use_web_search_type_0 import MergeOperationUseWebSearchType0
1713
from ..types import UNSET, Unset
1814

1915
if TYPE_CHECKING:
20-
from ..models.merge_operation_left_input_type_1_item import (
21-
MergeOperationLeftInputType1Item,
22-
)
16+
from ..models.merge_operation_left_input_type_1_item import MergeOperationLeftInputType1Item
2317
from ..models.merge_operation_left_input_type_2 import MergeOperationLeftInputType2
24-
from ..models.merge_operation_right_input_type_1_item import (
25-
MergeOperationRightInputType1Item,
26-
)
27-
from ..models.merge_operation_right_input_type_2 import (
28-
MergeOperationRightInputType2,
29-
)
18+
from ..models.merge_operation_right_input_type_1_item import MergeOperationRightInputType1Item
19+
from ..models.merge_operation_right_input_type_2 import MergeOperationRightInputType2
3020

3121

3222
T = TypeVar("T", bound="MergeOperation")
@@ -49,26 +39,20 @@ class MergeOperation:
4939
relationship_type (MergeOperationRelationshipTypeType0 | None | Unset): Control merge relationship behavior:
5040
'many_to_one' (default) allows multiple left rows to match the same right row, 'one_to_one' enforces unique
5141
matches and resolves clashes Default: MergeOperationRelationshipTypeType0.MANY_TO_ONE.
52-
llm (LLMEnumPublic | None | Unset): LLM to use for the merge operation (both initial LLM matching and web
53-
search agent). If not provided, uses system defaults.
54-
document_query_llm (LLMEnumPublic | None | Unset): LLM to use for the document query tool (QDLLM) that reads
55-
and extracts information from web pages. If not provided, defaults to the system default.
42+
llm (LLMEnumPublic | None | Unset): LLM to use for the merge operation (both initial LLM matching and web search
43+
agent). If not provided, uses system defaults.
44+
document_query_llm (LLMEnumPublic | None | Unset): LLM to use for the document query tool (QDLLM) that reads and
45+
extracts information from web pages. If not provided, defaults to the system default.
5646
session_id (None | Unset | UUID): Session ID. If not provided, a new session is auto-created for this task.
5747
webhook_url (None | str | Unset): Optional URL to receive a POST callback when the task completes or fails.
5848
"""
5949

60-
left_input: (
61-
list[MergeOperationLeftInputType1Item] | MergeOperationLeftInputType2 | UUID
62-
)
63-
right_input: (
64-
list[MergeOperationRightInputType1Item] | MergeOperationRightInputType2 | UUID
65-
)
50+
left_input: list[MergeOperationLeftInputType1Item] | MergeOperationLeftInputType2 | UUID
51+
right_input: list[MergeOperationRightInputType1Item] | MergeOperationRightInputType2 | UUID
6652
task: str
6753
left_key: None | str | Unset = UNSET
6854
right_key: None | str | Unset = UNSET
69-
use_web_search: MergeOperationUseWebSearchType0 | None | Unset = (
70-
MergeOperationUseWebSearchType0.AUTO
71-
)
55+
use_web_search: MergeOperationUseWebSearchType0 | None | Unset = MergeOperationUseWebSearchType0.AUTO
7256
relationship_type: MergeOperationRelationshipTypeType0 | None | Unset = (
7357
MergeOperationRelationshipTypeType0.MANY_TO_ONE
7458
)
@@ -193,26 +177,16 @@ def to_dict(self) -> dict[str, Any]:
193177

194178
@classmethod
195179
def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
196-
from ..models.merge_operation_left_input_type_1_item import (
197-
MergeOperationLeftInputType1Item,
198-
)
199-
from ..models.merge_operation_left_input_type_2 import (
200-
MergeOperationLeftInputType2,
201-
)
202-
from ..models.merge_operation_right_input_type_1_item import (
203-
MergeOperationRightInputType1Item,
204-
)
205-
from ..models.merge_operation_right_input_type_2 import (
206-
MergeOperationRightInputType2,
207-
)
180+
from ..models.merge_operation_left_input_type_1_item import MergeOperationLeftInputType1Item
181+
from ..models.merge_operation_left_input_type_2 import MergeOperationLeftInputType2
182+
from ..models.merge_operation_right_input_type_1_item import MergeOperationRightInputType1Item
183+
from ..models.merge_operation_right_input_type_2 import MergeOperationRightInputType2
208184

209185
d = dict(src_dict)
210186

211187
def _parse_left_input(
212188
data: object,
213-
) -> (
214-
list[MergeOperationLeftInputType1Item] | MergeOperationLeftInputType2 | UUID
215-
):
189+
) -> list[MergeOperationLeftInputType1Item] | MergeOperationLeftInputType2 | UUID:
216190
try:
217191
if not isinstance(data, str):
218192
raise TypeError()
@@ -227,9 +201,7 @@ def _parse_left_input(
227201
left_input_type_1 = []
228202
_left_input_type_1 = data
229203
for left_input_type_1_item_data in _left_input_type_1:
230-
left_input_type_1_item = MergeOperationLeftInputType1Item.from_dict(
231-
left_input_type_1_item_data
232-
)
204+
left_input_type_1_item = MergeOperationLeftInputType1Item.from_dict(left_input_type_1_item_data)
233205

234206
left_input_type_1.append(left_input_type_1_item)
235207

@@ -246,11 +218,7 @@ def _parse_left_input(
246218

247219
def _parse_right_input(
248220
data: object,
249-
) -> (
250-
list[MergeOperationRightInputType1Item]
251-
| MergeOperationRightInputType2
252-
| UUID
253-
):
221+
) -> list[MergeOperationRightInputType1Item] | MergeOperationRightInputType2 | UUID:
254222
try:
255223
if not isinstance(data, str):
256224
raise TypeError()
@@ -265,11 +233,7 @@ def _parse_right_input(
265233
right_input_type_1 = []
266234
_right_input_type_1 = data
267235
for right_input_type_1_item_data in _right_input_type_1:
268-
right_input_type_1_item = (
269-
MergeOperationRightInputType1Item.from_dict(
270-
right_input_type_1_item_data
271-
)
272-
)
236+
right_input_type_1_item = MergeOperationRightInputType1Item.from_dict(right_input_type_1_item_data)
273237

274238
right_input_type_1.append(right_input_type_1_item)
275239

@@ -304,9 +268,7 @@ def _parse_right_key(data: object) -> None | str | Unset:
304268

305269
right_key = _parse_right_key(d.pop("right_key", UNSET))
306270

307-
def _parse_use_web_search(
308-
data: object,
309-
) -> MergeOperationUseWebSearchType0 | None | Unset:
271+
def _parse_use_web_search(data: object) -> MergeOperationUseWebSearchType0 | None | Unset:
310272
if data is None:
311273
return data
312274
if isinstance(data, Unset):
@@ -323,9 +285,7 @@ def _parse_use_web_search(
323285

324286
use_web_search = _parse_use_web_search(d.pop("use_web_search", UNSET))
325287

326-
def _parse_relationship_type(
327-
data: object,
328-
) -> MergeOperationRelationshipTypeType0 | None | Unset:
288+
def _parse_relationship_type(data: object) -> MergeOperationRelationshipTypeType0 | None | Unset:
329289
if data is None:
330290
return data
331291
if isinstance(data, Unset):
@@ -374,9 +334,7 @@ def _parse_document_query_llm(data: object) -> LLMEnumPublic | None | Unset:
374334
pass
375335
return cast(LLMEnumPublic | None | Unset, data)
376336

377-
document_query_llm = _parse_document_query_llm(
378-
d.pop("document_query_llm", UNSET)
379-
)
337+
document_query_llm = _parse_document_query_llm(d.pop("document_query_llm", UNSET))
380338

381339
def _parse_session_id(data: object) -> None | Unset | UUID:
382340
if data is None:

src/futuresearch/generated/models/task_cost_response.py

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
from attrs import field as _attrs_field
99

1010
from ..models.task_cost_status import TaskCostStatus
11-
from ..types import UNSET, Unset
1211

1312
T = TypeVar("T", bound="TaskCostResponse")
1413

@@ -19,35 +18,31 @@ class TaskCostResponse:
1918
Attributes:
2019
task_id (UUID): The task ID
2120
status (TaskCostStatus):
22-
cost_dollars (float | None | Unset): The amount charged to the user (null while pending)
21+
cost_dollars (float | None): The amount charged to the user (null while pending)
2322
"""
2423

2524
task_id: UUID
2625
status: TaskCostStatus
27-
cost_dollars: float | None | Unset = UNSET
26+
cost_dollars: float | None
2827
additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
2928

3029
def to_dict(self) -> dict[str, Any]:
3130
task_id = str(self.task_id)
3231

3332
status = self.status.value
3433

35-
cost_dollars: float | None | Unset
36-
if isinstance(self.cost_dollars, Unset):
37-
cost_dollars = UNSET
38-
else:
39-
cost_dollars = self.cost_dollars
34+
cost_dollars: float | None
35+
cost_dollars = self.cost_dollars
4036

4137
field_dict: dict[str, Any] = {}
4238
field_dict.update(self.additional_properties)
4339
field_dict.update(
4440
{
4541
"task_id": task_id,
4642
"status": status,
43+
"cost_dollars": cost_dollars,
4744
}
4845
)
49-
if cost_dollars is not UNSET:
50-
field_dict["cost_dollars"] = cost_dollars
5146

5247
return field_dict
5348

@@ -58,14 +53,12 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
5853

5954
status = TaskCostStatus(d.pop("status"))
6055

61-
def _parse_cost_dollars(data: object) -> float | None | Unset:
56+
def _parse_cost_dollars(data: object) -> float | None:
6257
if data is None:
6358
return data
64-
if isinstance(data, Unset):
65-
return data
66-
return cast(float | None | Unset, data)
59+
return cast(float | None, data)
6760

68-
cost_dollars = _parse_cost_dollars(d.pop("cost_dollars", UNSET))
61+
cost_dollars = _parse_cost_dollars(d.pop("cost_dollars"))
6962

7063
task_cost_response = cls(
7164
task_id=task_id,

0 commit comments

Comments
 (0)