openrag-sdk 0.3.1__tar.gz → 0.4.0.dev0__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openrag-sdk
3
- Version: 0.3.1
3
+ Version: 0.4.0.dev0
4
4
  Summary: Official Python SDK for OpenRAG API
5
5
  Author: OpenRAG Team
6
6
  License-Expression: MIT
@@ -68,7 +68,7 @@ from .models import (
68
68
  UpdateKnowledgeFilterOptions,
69
69
  )
70
70
 
71
- __version__ = "0.2.2"
71
+ __version__ = "0.4.0"
72
72
 
73
73
  __all__ = [
74
74
  # Main client
@@ -125,27 +125,46 @@ class DocumentsClient:
125
125
  await asyncio.sleep(poll_interval)
126
126
  elapsed += poll_interval
127
127
 
128
- raise TimeoutError(f"Ingestion task {task_id} did not complete within {timeout}s")
128
+ raise TimeoutError(
129
+ f"Ingestion task {task_id} did not complete within {timeout}s"
130
+ )
129
131
 
130
- async def delete(self, filename: str) -> DeleteDocumentResponse:
132
+ async def delete(
133
+ self,
134
+ filename: str | None = None,
135
+ *,
136
+ filter_id: str | None = None,
137
+ ) -> DeleteDocumentResponse:
131
138
  """
132
- Delete a document from the knowledge base.
139
+ Delete document(s) from the knowledge base.
133
140
 
134
- Args:
135
- filename: Name of the file to delete.
141
+ Provide exactly one of:
142
+ filename: delete all chunks for that filename.
143
+ filter_id: delete chunks for each filename in the filter's data_sources.
136
144
 
137
145
  Returns:
138
146
  DeleteDocumentResponse with deleted chunk count.
139
147
  """
148
+ if bool(filename) == bool(filter_id):
149
+ raise ValueError("Provide exactly one of `filename` or `filter_id`")
150
+
151
+ body: dict[str, str] = {}
152
+ if filename is not None:
153
+ body["filename"] = filename
154
+ if filter_id is not None:
155
+ body["filter_id"] = filter_id
156
+
140
157
  try:
141
158
  response = await self._client._request(
142
159
  "DELETE",
143
160
  "/api/v1/documents",
144
- json={"filename": filename},
161
+ json=body,
145
162
  )
146
163
  except NotFoundError as e:
147
- # Keep delete idempotent for SDK callers: a missing document is not an exception.
148
- if getattr(e, "status_code", None) == 404:
164
+ # Keep delete idempotent for SDK callers: a missing document is not
165
+ # an exception.
166
+ # Filter-not-found 404s still raise because the filter_id is caller input.
167
+ if filename is not None and getattr(e, "status_code", None) == 404:
149
168
  return DeleteDocumentResponse(
150
169
  success=False,
151
170
  deleted_chunks=0,
@@ -1,7 +1,6 @@
1
1
  """OpenRAG SDK data models."""
2
2
 
3
- from datetime import datetime
4
- from typing import Any, Literal
3
+ from typing import Literal
5
4
 
6
5
  from pydantic import BaseModel, Field
7
6
 
@@ -98,6 +97,10 @@ class DeleteDocumentResponse(BaseModel):
98
97
  filename: str | None = None
99
98
  message: str | None = None
100
99
  error: str | None = None
100
+ # Populated when deleting by filter_id — one entry per resolved data_source.
101
+ filenames: list[str] | None = None
102
+ filter_id: str | None = None
103
+ per_file: list[dict] | None = None
101
104
 
102
105
 
103
106
  # Chat history models
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openrag-sdk
3
- Version: 0.3.1
3
+ Version: 0.4.0.dev0
4
4
  Summary: Official Python SDK for OpenRAG API
5
5
  Author: OpenRAG Team
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "openrag-sdk"
7
- version = "0.3.1"
7
+ version = "0.4.0.dev0"
8
8
  description = "Official Python SDK for OpenRAG API"
9
9
  readme = "README.md"
10
10
  license = "MIT"
File without changes
File without changes