|
59 | 59 | _T = TypeVar("_T") |
60 | 60 |
|
61 | 61 |
|
62 | | -def _apply_extra_body_parameters( |
63 | | - request_data: dict, extra_body_parameters: Optional[dict] |
64 | | -) -> None: |
65 | | - # Entries replace keys of the same name set by the client. |
66 | | - if extra_body_parameters: |
67 | | - for k, v in extra_body_parameters.items(): |
68 | | - request_data[k] = v |
69 | | - |
70 | | - |
71 | 62 | def _parse_improvements(json: Any, text_count: int) -> List[WriteResult]: |
72 | 63 | improvements = json.get("improvements") if isinstance(json, dict) else None |
73 | 64 | if not isinstance(improvements, list) or len(improvements) < text_count: |
@@ -115,14 +106,6 @@ def _renamed_argument( |
115 | 106 | return value |
116 | 107 |
|
117 | 108 |
|
118 | | -def _add_extra_body_parameters( |
119 | | - request_data: Dict[str, Any], extra_body_parameters: Optional[dict] |
120 | | -) -> None: |
121 | | - # Entries replace keys of the same name set by the SDK. |
122 | | - if extra_body_parameters: |
123 | | - request_data.update(extra_body_parameters) |
124 | | - |
125 | | - |
126 | 109 | class DeepLClient(Translator): |
127 | 110 | def __init__( |
128 | 111 | self, |
@@ -216,7 +199,7 @@ def rephrase_text( |
216 | 199 | request_data["writing_style"] = str(writing_style) |
217 | 200 | if tone: |
218 | 201 | request_data["tone"] = str(tone) |
219 | | - _apply_extra_body_parameters(request_data, extra_body_parameters) |
| 202 | + util._add_extra_body_parameters(request_data, extra_body_parameters) |
220 | 203 |
|
221 | 204 | status, content, json = self._api_call( |
222 | 205 | "v2/write/rephrase", json=request_data |
@@ -267,7 +250,7 @@ def correct_text( |
267 | 250 | request_data: dict = {"text": text} |
268 | 251 | if target_lang: |
269 | 252 | request_data["target_lang"] = str(target_lang) |
270 | | - _apply_extra_body_parameters(request_data, extra_body_parameters) |
| 253 | + util._add_extra_body_parameters(request_data, extra_body_parameters) |
271 | 254 |
|
272 | 255 | status, content, json = self._api_call( |
273 | 256 | "v2/write/correct", json=request_data |
@@ -414,7 +397,7 @@ def _create_multilingual_glossary( |
414 | 397 | "name": name, |
415 | 398 | "dictionaries": self._dictionaries_json(dictionaries), |
416 | 399 | } |
417 | | - _add_extra_body_parameters(request_data, extra_body_parameters) |
| 400 | + util._add_extra_body_parameters(request_data, extra_body_parameters) |
418 | 401 |
|
419 | 402 | status, content, json = self._api_call( |
420 | 403 | "v3/glossaries", json=request_data |
@@ -625,7 +608,7 @@ def _update_multilingual_glossary( |
625 | 608 | request_data["dictionaries"] = self._dictionaries_json( |
626 | 609 | dictionaries |
627 | 610 | ) |
628 | | - _add_extra_body_parameters(request_data, extra_body_parameters) |
| 611 | + util._add_extra_body_parameters(request_data, extra_body_parameters) |
629 | 612 |
|
630 | 613 | status, content, json = self._api_call( |
631 | 614 | f"v3/glossaries/{glossary_id}", method="PATCH", json=request_data |
@@ -761,7 +744,7 @@ def _replace_multilingual_glossary_dictionary( |
761 | 744 | source_lang, target_lang, entries |
762 | 745 | ) |
763 | 746 | ) |
764 | | - _add_extra_body_parameters(request_data, extra_body_parameters) |
| 747 | + util._add_extra_body_parameters(request_data, extra_body_parameters) |
765 | 748 |
|
766 | 749 | status, content, json = self._api_call( |
767 | 750 | f"v3/glossaries/{glossary_id}/dictionaries", |
@@ -1032,7 +1015,7 @@ def create_spoken_terms( |
1032 | 1015 | self._spoken_terms_json(entries) for entries in term_lists |
1033 | 1016 | ], |
1034 | 1017 | } |
1035 | | - request_data.update(extra_body_parameters or {}) |
| 1018 | + util._add_extra_body_parameters(request_data, extra_body_parameters) |
1036 | 1019 | status, content, json = self._api_call( |
1037 | 1020 | "v3/spoken-terms", json=request_data |
1038 | 1021 | ) |
@@ -1104,7 +1087,7 @@ def update_spoken_terms( |
1104 | 1087 | request_data["term_lists"] = [ |
1105 | 1088 | self._spoken_terms_json(entries) for entries in term_lists |
1106 | 1089 | ] |
1107 | | - request_data.update(extra_body_parameters or {}) |
| 1090 | + util._add_extra_body_parameters(request_data, extra_body_parameters) |
1108 | 1091 | status, content, json = self._api_call( |
1109 | 1092 | f"v3/spoken-terms/{spoken_terms_id}", |
1110 | 1093 | method="PATCH", |
@@ -1156,7 +1139,7 @@ def replace_spoken_terms_list( |
1156 | 1139 | """ |
1157 | 1140 | spoken_terms_id = self._spoken_terms_id(spoken_terms) |
1158 | 1141 | request_data = self._spoken_terms_json(entries) |
1159 | | - request_data.update(extra_body_parameters or {}) |
| 1142 | + util._add_extra_body_parameters(request_data, extra_body_parameters) |
1160 | 1143 | status, content, json = self._api_call( |
1161 | 1144 | f"v3/spoken-terms/{spoken_terms_id}/term-lists", |
1162 | 1145 | method="PUT", |
@@ -1355,9 +1338,10 @@ def create_style_rule( |
1355 | 1338 | if custom_instructions is not None: |
1356 | 1339 | request_data["custom_instructions"] = custom_instructions |
1357 | 1340 |
|
| 1341 | + util._add_extra_body_parameters(request_data, extra_body_parameters) |
1358 | 1342 | status, content, json = self._api_call( |
1359 | 1343 | "v3/style_rules", |
1360 | | - json=self._with_extra_body(request_data, extra_body_parameters), |
| 1344 | + json=request_data, |
1361 | 1345 | ) |
1362 | 1346 | self._raise_for_status(status, content, json) |
1363 | 1347 | return self._parse_style_rule_response(StyleRuleInfo.from_json, json) |
@@ -1399,10 +1383,11 @@ def update_style_rule_name( |
1399 | 1383 | if not name: |
1400 | 1384 | raise ValueError("name must not be empty") |
1401 | 1385 | request_data = {"name": name} |
| 1386 | + util._add_extra_body_parameters(request_data, extra_body_parameters) |
1402 | 1387 | status, content, json = self._api_call( |
1403 | 1388 | f"v3/style_rules/{style_id}", |
1404 | 1389 | method="PATCH", |
1405 | | - json=self._with_extra_body(request_data, extra_body_parameters), |
| 1390 | + json=request_data, |
1406 | 1391 | ) |
1407 | 1392 | self._raise_for_status(status, content, json) |
1408 | 1393 | return self._parse_style_rule_response(StyleRuleInfo.from_json, json) |
@@ -1439,12 +1424,13 @@ def update_style_rule_configured_rules( |
1439 | 1424 | :return: Updated StyleRuleInfo. |
1440 | 1425 | """ |
1441 | 1426 | style_id = self._style_rule_id(style_rule) |
| 1427 | + # Copy so the caller's configured_rules dict is not modified. |
| 1428 | + request_data = dict(configured_rules) |
| 1429 | + util._add_extra_body_parameters(request_data, extra_body_parameters) |
1442 | 1430 | status, content, json = self._api_call( |
1443 | 1431 | f"v3/style_rules/{style_id}/configured_rules", |
1444 | 1432 | method="PUT", |
1445 | | - json=self._with_extra_body( |
1446 | | - configured_rules, extra_body_parameters |
1447 | | - ), |
| 1433 | + json=request_data, |
1448 | 1434 | ) |
1449 | 1435 | self._raise_for_status(status, content, json) |
1450 | 1436 | return self._parse_style_rule_response(StyleRuleInfo.from_json, json) |
@@ -1478,9 +1464,10 @@ def create_style_rule_custom_instruction( |
1478 | 1464 | request_data = {"label": label, "prompt": prompt} |
1479 | 1465 | if source_language is not None: |
1480 | 1466 | request_data["source_language"] = source_language |
| 1467 | + util._add_extra_body_parameters(request_data, extra_body_parameters) |
1481 | 1468 | status, content, json = self._api_call( |
1482 | 1469 | f"v3/style_rules/{style_id}/custom_instructions", |
1483 | | - json=self._with_extra_body(request_data, extra_body_parameters), |
| 1470 | + json=request_data, |
1484 | 1471 | ) |
1485 | 1472 | self._raise_for_status(status, content, json) |
1486 | 1473 | return self._parse_style_rule_response( |
@@ -1545,10 +1532,11 @@ def update_style_rule_custom_instruction( |
1545 | 1532 | if source_language is not None: |
1546 | 1533 | request_data["source_language"] = source_language |
1547 | 1534 | url = f"v3/style_rules/{style_id}/custom_instructions/{instruction}" |
| 1535 | + util._add_extra_body_parameters(request_data, extra_body_parameters) |
1548 | 1536 | status, content, json = self._api_call( |
1549 | 1537 | url, |
1550 | 1538 | method="PUT", |
1551 | | - json=self._with_extra_body(request_data, extra_body_parameters), |
| 1539 | + json=request_data, |
1552 | 1540 | ) |
1553 | 1541 | self._raise_for_status(status, content, json) |
1554 | 1542 | return self._parse_style_rule_response( |
@@ -1801,16 +1789,9 @@ def _style_profile_json( |
1801 | 1789 | ] |
1802 | 1790 | # Unset (None) fields are not sent; "" and [] are sent as given. |
1803 | 1791 | request_data = {k: v for k, v in fields.items() if v is not None} |
1804 | | - # Entries replace keys of the same name set above. |
1805 | | - if extra_body_parameters: |
1806 | | - request_data.update(extra_body_parameters) |
| 1792 | + util._add_extra_body_parameters(request_data, extra_body_parameters) |
1807 | 1793 | return request_data |
1808 | 1794 |
|
1809 | | - @staticmethod |
1810 | | - def _with_extra_body(body: dict, extra: Optional[dict]) -> dict: |
1811 | | - # Entries replace keys of the same name set by the client. |
1812 | | - return {**body, **extra} if extra else body |
1813 | | - |
1814 | 1795 | @staticmethod |
1815 | 1796 | def _parse_style_rule_response( |
1816 | 1797 | parse: Callable[[Any], _T], json: Any |
@@ -2053,9 +2034,7 @@ def create_translation_memory_import( |
2053 | 2034 | if display_name is not None: |
2054 | 2035 | request_data["parameters"] = {"display_name": display_name} |
2055 | 2036 |
|
2056 | | - # Entries replace keys of the same name set above. |
2057 | | - if extra_body_parameters: |
2058 | | - request_data.update(extra_body_parameters) |
| 2037 | + util._add_extra_body_parameters(request_data, extra_body_parameters) |
2059 | 2038 |
|
2060 | 2039 | status, content, json = self._api_call( |
2061 | 2040 | "v3/translation_memories/import", json=request_data |
|
0 commit comments