unique-sdk 2026.34.0.dev2__tar.gz → 2026.34.0.dev4__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.
Files changed (89) hide show
  1. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/PKG-INFO +1 -1
  2. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/pyproject.toml +1 -1
  3. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/__init__.py +4 -0
  4. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/utils/file_io.py +12 -3
  5. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/README.md +0 -0
  6. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/_api_requestor.py +0 -0
  7. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/_api_resource.py +0 -0
  8. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/_api_version.py +0 -0
  9. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/_error.py +0 -0
  10. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/_http_client.py +0 -0
  11. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/_list_object.py +0 -0
  12. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/_object_classes.py +0 -0
  13. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/_request_options.py +0 -0
  14. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/_unique_object.py +0 -0
  15. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/_unique_ql.py +0 -0
  16. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/_unique_response.py +0 -0
  17. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/_util.py +0 -0
  18. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/_version.py +0 -0
  19. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/_webhook.py +0 -0
  20. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/__init__.py +0 -0
  21. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_acronyms.py +0 -0
  22. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_agentic_table.py +0 -0
  23. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_analytics_order.py +0 -0
  24. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_benchmarking.py +0 -0
  25. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_briefing.py +0 -0
  26. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_chat_completion.py +0 -0
  27. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_content.py +0 -0
  28. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_elicitation.py +0 -0
  29. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_embedding.py +0 -0
  30. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_event.py +0 -0
  31. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_folder.py +0 -0
  32. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_group.py +0 -0
  33. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_integrated.py +0 -0
  34. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_llm_models.py +0 -0
  35. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_mcp.py +0 -0
  36. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_message.py +0 -0
  37. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_message_assessment.py +0 -0
  38. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_message_execution.py +0 -0
  39. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_message_log.py +0 -0
  40. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_message_tool.py +0 -0
  41. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_module.py +0 -0
  42. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_scheduled_task.py +0 -0
  43. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_search.py +0 -0
  44. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_search_string.py +0 -0
  45. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_short_term_memory.py +0 -0
  46. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_space.py +0 -0
  47. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_user.py +0 -0
  48. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/api_resources/_web_search.py +0 -0
  49. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/__init__.py +0 -0
  50. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/__main__.py +0 -0
  51. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/cli.py +0 -0
  52. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/__init__.py +0 -0
  53. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/_citation_manifest.py +0 -0
  54. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/agentic_table.py +0 -0
  55. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/agentic_table_write.py +0 -0
  56. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/browser.py +0 -0
  57. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/cite_file.py +0 -0
  58. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/elicitation.py +0 -0
  59. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/files.py +0 -0
  60. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/folders.py +0 -0
  61. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/mcp.py +0 -0
  62. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/navigation.py +0 -0
  63. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/read.py +0 -0
  64. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/scheduled_tasks.py +0 -0
  65. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/search.py +0 -0
  66. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/subagent.py +0 -0
  67. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/web_search.py +0 -0
  68. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/commands/web_search_config.py +0 -0
  69. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/config.py +0 -0
  70. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/formatting.py +0 -0
  71. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/identity.py +0 -0
  72. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/metadata_filter.py +0 -0
  73. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/shell.py +0 -0
  74. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/skills/unique-cli-agentic-table/SKILL.md +0 -0
  75. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/skills/unique-cli-elicitation/SKILL.md +0 -0
  76. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/skills/unique-cli-file-management/SKILL.md +0 -0
  77. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/skills/unique-cli-mcp/SKILL.md +0 -0
  78. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/skills/unique-cli-scheduled-tasks/SKILL.md +0 -0
  79. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/skills/unique-cli-search/SKILL.md +0 -0
  80. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/skills/unique-cli-subagent/SKILL.md +0 -0
  81. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/skills/unique-cli-uploaded-search/SKILL.md +0 -0
  82. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/skills/unique-cli-web-search/SKILL.md +0 -0
  83. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/cli/state.py +0 -0
  84. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/utils/analytics_order_run.py +0 -0
  85. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/utils/benchmarking_run.py +0 -0
  86. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/utils/chat_history.py +0 -0
  87. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/utils/chat_in_space.py +0 -0
  88. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/utils/sources.py +0 -0
  89. {unique_sdk-2026.34.0.dev2 → unique_sdk-2026.34.0.dev4}/unique_sdk/utils/token.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: unique-sdk
3
- Version: 2026.34.0.dev2
3
+ Version: 2026.34.0.dev4
4
4
  Summary:
5
5
  Author: Martin Fadler, Konstantin Krauss, Andreas Hauri
6
6
  Author-email: Martin Fadler <martin.fadler@unique.ch>, Konstantin Krauss <konstantin@unique.ch>, Andreas Hauri <andreas@unique.ch>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "unique_sdk"
3
- version = "2026.34.0.dev2"
3
+ version = "2026.34.0.dev4"
4
4
  description = ""
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -15,6 +15,10 @@ api_verify_mode: bool = True
15
15
  default_http_client: "HTTPClient | None" = None
16
16
  ingestion_upload_api_url_internal: str | None = None
17
17
 
18
+ # Timeout (seconds) for the direct-to-blob requests in utils/file_io.py,
19
+ # which bypass _http_client. Defaults to match _http_client's own default.
20
+ blob_transfer_timeout: float = 600
21
+
18
22
  # Set to either 'debug' or 'info', controls console logging
19
23
  log: Literal["debug", "info"] | None = None
20
24
 
@@ -46,7 +46,7 @@ def download_file(url: str, filename: str):
46
46
  file_path = Path(random_dir) / filename
47
47
 
48
48
  # Download the file and save it to the random directory
49
- response = requests.get(url)
49
+ response = requests.get(url, timeout=unique_sdk.blob_transfer_timeout)
50
50
  if response.status_code == 200:
51
51
  with open(file_path, "wb") as file:
52
52
  file.write(response.content)
@@ -100,6 +100,7 @@ def _put_preview_pdf(write_url: str, preview_pdf_path: str) -> None:
100
100
  "X-Ms-Blob-Content-Type": _PREVIEW_PDF_MIME_TYPE,
101
101
  "X-Ms-Blob-Type": "BlockBlob",
102
102
  },
103
+ timeout=unique_sdk.blob_transfer_timeout,
103
104
  )
104
105
  if response.status_code >= 400:
105
106
  raise RuntimeError(
@@ -219,13 +220,19 @@ def upload_file(
219
220
  raise ValueError("createdContent.writeUrl is None")
220
221
  uploadUrl = _apply_ingestion_upload_url_override(uploadUrl)
221
222
  with open(path_to_file, "rb") as file:
222
- requests.put(
223
+ response = requests.put(
223
224
  uploadUrl,
224
225
  data=file,
225
226
  headers={
226
227
  "X-Ms-Blob-Content-Type": mime_type,
227
228
  "X-Ms-Blob-Type": "BlockBlob",
228
229
  },
230
+ timeout=unique_sdk.blob_transfer_timeout,
231
+ )
232
+ if response.status_code >= 400:
233
+ raise RuntimeError(
234
+ f"Content upload failed with status {response.status_code}: "
235
+ f"{response.text[:500]}"
229
236
  )
230
237
 
231
238
  # Step 3 — finalize upsert: ``byteSize`` + ``fileUrl`` flip the row
@@ -362,7 +369,9 @@ def download_content(
362
369
  # Issue the request before resolving the destination. A non-200
363
370
  # response should never leave a half-created directory or empty
364
371
  # file behind for callers who supplied ``target_path``.
365
- response = requests.get(url, headers=headers)
372
+ response = requests.get(
373
+ url, headers=headers, timeout=unique_sdk.blob_transfer_timeout
374
+ )
366
375
  if response.status_code != 200:
367
376
  raise Exception(f"Error downloading file: Status code {response.status_code}")
368
377