sf-queue-sdk 0.4.0b131__tar.gz → 0.5.0b4__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 (30) hide show
  1. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/.gitignore +6 -0
  2. sf_queue_sdk-0.4.0b131/README.md → sf_queue_sdk-0.5.0b4/PKG-INFO +17 -2
  3. sf_queue_sdk-0.4.0b131/PKG-INFO → sf_queue_sdk-0.5.0b4/README.md +9 -10
  4. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/pyproject.toml +1 -1
  5. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/__init__.py +1 -1
  6. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/queues/document_upload_queue.py +5 -0
  7. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/types.py +8 -0
  8. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/client.py +0 -0
  9. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/generated/__init__.py +0 -0
  10. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/generated/queue/email/v1/email_pb2.py +0 -0
  11. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/generated/queue/email/v1/email_pb2.pyi +0 -0
  12. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/generated/queue/prompt_ingest/v1/prompt_ingest_pb2.py +0 -0
  13. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/generated/queue/prompt_ingest/v1/prompt_ingest_pb2.pyi +0 -0
  14. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/generated/queue/tool_assignment/v1/tool_assignment_pb2.py +0 -0
  15. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/generated/queue/tool_assignment/v1/tool_assignment_pb2.pyi +0 -0
  16. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/generated/queue/topic_assignment/v1/topic_assignment_pb2.py +0 -0
  17. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/generated/queue/topic_assignment/v1/topic_assignment_pb2.pyi +0 -0
  18. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/query.py +0 -0
  19. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/queues/__init__.py +0 -0
  20. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/queues/base_queue.py +0 -0
  21. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/queues/document_notes_queue.py +0 -0
  22. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/queues/document_persist_queue.py +0 -0
  23. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/queues/email_queue.py +0 -0
  24. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/queues/pdf_to_image_queue.py +0 -0
  25. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/queues/prompt_ingest_queue.py +0 -0
  26. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/queues/recommendation_queue.py +0 -0
  27. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/queues/tool_assignment_queue.py +0 -0
  28. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/queues/topic_assignment_queue.py +0 -0
  29. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/redis_client.py +0 -0
  30. {sf_queue_sdk-0.4.0b131 → sf_queue_sdk-0.5.0b4}/queue_sdk/sanitize.py +0 -0
@@ -59,3 +59,9 @@ TODO-document-upload-queue.md
59
59
  # Local pipeline test output
60
60
  scripts/.env
61
61
  scripts/local-pdfs/
62
+ scripts/mp3/
63
+ scripts/ppt/
64
+ scripts/docx/
65
+ scripts/mp3-results/
66
+ scripts/studyset/.env
67
+ scripts/studyset/downloads/
@@ -1,3 +1,11 @@
1
+ Metadata-Version: 2.5
2
+ Name: sf-queue-sdk
3
+ Version: 0.5.0b4
4
+ Summary: Python SDK for sf-queue - Redis-based queue system
5
+ Requires-Python: >=3.11
6
+ Requires-Dist: redis>=5.0.0
7
+ Description-Content-Type: text/markdown
8
+
1
9
  # sf-queue-sdk
2
10
 
3
11
  Python SDK for sf-queue. Enqueues emails via Redis Streams with optional blocking confirmation from the Go consumer service.
@@ -591,7 +599,7 @@ result = client.document_upload.send(
591
599
  | `generate_notes` | `bool` | Yes | Whether to generate study notes |
592
600
  | `generate_study_path` | `bool` | Yes | Whether to generate a study path |
593
601
  | `splitting` | `str` | No | Splitting strategy for sources with at least 40,000 tokens (default: `"auto"`). Smaller sources always persist as one material after per-topic note generation. |
594
- | `language` | `str` | No | Target language code (default: `"en"`) |
602
+ | `language` | `str` | No | Output language as an app ISO code, e.g. `"de"` — not a locale like `"de-DE"`. Note the non-standard `cz` (Czech) and `gr` (Greek). (default: `"en"`) |
595
603
  | `use_markdown_ocr` | `bool` | No | Use Markdown OCR for image interpretation (default: `False`) |
596
604
  | `flashcard_amount` | `int` | No | Number of flashcards to generate (default: `12`) |
597
605
  | `new_url` | `Optional[str]` | No | Alternative URL if file was re-uploaded |
@@ -605,6 +613,13 @@ result = client.document_upload.send(
605
613
  | `youtube_title` | `Optional[str]` | No | Title override for YouTube video transcripts |
606
614
  | `skip_material_creation` | `Optional[bool]` | No | Skip folder and material creation when the material already exists (e.g. live lectures) |
607
615
  | `existing_material_id` | `Optional[str]` | No | ID of an existing material to link to topics instead of creating new ones (used with `skip_material_creation`) |
616
+ | `params` | `Optional[dict]` | No | Typed extensible flags for pipeline behavior (see below) |
617
+
618
+ #### `params` fields
619
+
620
+ | Field | Type | Description |
621
+ |-------|------|-------------|
622
+ | `liveLecture` | `bool` | When true, forces `generateNotes=false` and `skipMaterialCreation=true` in the pipeline. Clustering still runs to produce sections/topics for study path generation. Use with `existing_material_id` and `extracted_content`. |
608
623
 
609
624
  ### Response Type
610
625
 
@@ -787,7 +802,7 @@ result = client.document_persist.send(
787
802
  | `study_set_id` | `str` | Yes | Study set to persist materials into |
788
803
  | `user_id` | `str` | Yes | User who uploaded the document |
789
804
  | `stash_key` | `str` | Yes | GCS key of the clustering stash JSON |
790
- | `language` | `str` | No | Target language code (default: `"en"`) |
805
+ | `language` | `str` | No | Output language as an app ISO code, e.g. `"de"` — not a locale like `"de-DE"`. Note the non-standard `cz` (Czech) and `gr` (Greek). (default: `"en"`) |
791
806
  | `callback_url` | `Optional[str]` | No | URL to POST results to after persistence |
792
807
  | `callback_api_key` | `Optional[str]` | No | Auth key for the callback |
793
808
  | `approved_topic_ids` | `Optional[list[str]]` | No | Filter to only these topic IDs from the stash (omit to persist all) |
@@ -1,11 +1,3 @@
1
- Metadata-Version: 2.4
2
- Name: sf-queue-sdk
3
- Version: 0.4.0b131
4
- Summary: Python SDK for sf-queue - Redis-based queue system
5
- Requires-Python: >=3.11
6
- Requires-Dist: redis>=5.0.0
7
- Description-Content-Type: text/markdown
8
-
9
1
  # sf-queue-sdk
10
2
 
11
3
  Python SDK for sf-queue. Enqueues emails via Redis Streams with optional blocking confirmation from the Go consumer service.
@@ -599,7 +591,7 @@ result = client.document_upload.send(
599
591
  | `generate_notes` | `bool` | Yes | Whether to generate study notes |
600
592
  | `generate_study_path` | `bool` | Yes | Whether to generate a study path |
601
593
  | `splitting` | `str` | No | Splitting strategy for sources with at least 40,000 tokens (default: `"auto"`). Smaller sources always persist as one material after per-topic note generation. |
602
- | `language` | `str` | No | Target language code (default: `"en"`) |
594
+ | `language` | `str` | No | Output language as an app ISO code, e.g. `"de"` — not a locale like `"de-DE"`. Note the non-standard `cz` (Czech) and `gr` (Greek). (default: `"en"`) |
603
595
  | `use_markdown_ocr` | `bool` | No | Use Markdown OCR for image interpretation (default: `False`) |
604
596
  | `flashcard_amount` | `int` | No | Number of flashcards to generate (default: `12`) |
605
597
  | `new_url` | `Optional[str]` | No | Alternative URL if file was re-uploaded |
@@ -613,6 +605,13 @@ result = client.document_upload.send(
613
605
  | `youtube_title` | `Optional[str]` | No | Title override for YouTube video transcripts |
614
606
  | `skip_material_creation` | `Optional[bool]` | No | Skip folder and material creation when the material already exists (e.g. live lectures) |
615
607
  | `existing_material_id` | `Optional[str]` | No | ID of an existing material to link to topics instead of creating new ones (used with `skip_material_creation`) |
608
+ | `params` | `Optional[dict]` | No | Typed extensible flags for pipeline behavior (see below) |
609
+
610
+ #### `params` fields
611
+
612
+ | Field | Type | Description |
613
+ |-------|------|-------------|
614
+ | `liveLecture` | `bool` | When true, forces `generateNotes=false` and `skipMaterialCreation=true` in the pipeline. Clustering still runs to produce sections/topics for study path generation. Use with `existing_material_id` and `extracted_content`. |
616
615
 
617
616
  ### Response Type
618
617
 
@@ -795,7 +794,7 @@ result = client.document_persist.send(
795
794
  | `study_set_id` | `str` | Yes | Study set to persist materials into |
796
795
  | `user_id` | `str` | Yes | User who uploaded the document |
797
796
  | `stash_key` | `str` | Yes | GCS key of the clustering stash JSON |
798
- | `language` | `str` | No | Target language code (default: `"en"`) |
797
+ | `language` | `str` | No | Output language as an app ISO code, e.g. `"de"` — not a locale like `"de-DE"`. Note the non-standard `cz` (Czech) and `gr` (Greek). (default: `"en"`) |
799
798
  | `callback_url` | `Optional[str]` | No | URL to POST results to after persistence |
800
799
  | `callback_api_key` | `Optional[str]` | No | Auth key for the callback |
801
800
  | `approved_topic_ids` | `Optional[list[str]]` | No | Filter to only these topic IDs from the stash (omit to persist all) |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sf-queue-sdk"
3
- version = "0.4.0b131"
3
+ version = "0.5.0b4"
4
4
  description = "Python SDK for sf-queue - Redis-based queue system"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -1,6 +1,6 @@
1
1
  """sf-queue Python SDK - Redis-based queue system."""
2
2
 
3
- __version__ = "0.4.0b131"
3
+ __version__ = "0.5.0b4"
4
4
 
5
5
  from queue_sdk.client import QueueClient
6
6
  from queue_sdk.query import QueryClient
@@ -52,6 +52,7 @@ class DocumentUploadQueue(BaseQueue):
52
52
  study_plan_hook: Optional[bool] = None,
53
53
  skip_material_creation: Optional[bool] = None,
54
54
  existing_material_id: Optional[str] = None,
55
+ params: Optional[dict] = None,
55
56
  ) -> SendResult:
56
57
  """Enqueue a document upload processing request (fire and forget)."""
57
58
  self._validate(uploaded_file_id, study_set_id, user_id, pdf_s3_key, filename)
@@ -88,6 +89,7 @@ class DocumentUploadQueue(BaseQueue):
88
89
  study_plan_hook=study_plan_hook,
89
90
  skip_material_creation=skip_material_creation,
90
91
  existing_material_id=existing_material_id,
92
+ params=params,
91
93
  )
92
94
  message_id = self._enqueue(payload)
93
95
  self._set_initial_status(message_id)
@@ -174,6 +176,7 @@ class DocumentUploadQueue(BaseQueue):
174
176
  study_plan_hook: Optional[bool],
175
177
  skip_material_creation: Optional[bool],
176
178
  existing_material_id: Optional[str],
179
+ params: Optional[dict],
177
180
  ) -> dict[str, Any]:
178
181
  """Build the document upload payload (snake_case -> camelCase)."""
179
182
  payload: dict[str, Any] = {
@@ -227,6 +230,8 @@ class DocumentUploadQueue(BaseQueue):
227
230
  payload["skipMaterialCreation"] = skip_material_creation
228
231
  if existing_material_id is not None:
229
232
  payload["existingMaterialId"] = existing_material_id
233
+ if params is not None:
234
+ payload["params"] = params
230
235
 
231
236
  return payload
232
237
 
@@ -173,6 +173,13 @@ class BatchRecommendationResponse:
173
173
  processed_at: Optional[str] = None
174
174
 
175
175
 
176
+ @dataclass
177
+ class DocumentUploadParams:
178
+ """Extensible flags for pipeline behavior."""
179
+
180
+ live_lecture: Optional[bool] = None
181
+
182
+
176
183
  @dataclass
177
184
  class DocumentUploadData:
178
185
  """Data for a document upload processing request."""
@@ -206,6 +213,7 @@ class DocumentUploadData:
206
213
  callback_url: Optional[str] = None
207
214
  callback_api_key: Optional[str] = None
208
215
  study_plan_hook: Optional[bool] = None
216
+ params: Optional[DocumentUploadParams] = None
209
217
 
210
218
 
211
219
  @dataclass