sf-queue-sdk 0.5.0b45__tar.gz → 0.5.0b47__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.
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/.gitignore +1 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/PKG-INFO +1 -1
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/pyproject.toml +1 -1
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/__init__.py +1 -1
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/generated/queue/email/v1/email_pb2.py +3 -3
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/generated/queue/prompt_ingest/v1/prompt_ingest_pb2.py +3 -3
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/generated/queue/tool_assignment/v1/tool_assignment_pb2.py +3 -3
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/generated/queue/topic_assignment/v1/topic_assignment_pb2.py +3 -3
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/queues/document_upload_queue.py +8 -4
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/tests/test_idempotency.py +29 -5
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/README.md +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/client.py +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/generated/__init__.py +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/generated/queue/email/v1/email_pb2.pyi +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/generated/queue/prompt_ingest/v1/prompt_ingest_pb2.pyi +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/generated/queue/tool_assignment/v1/tool_assignment_pb2.pyi +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/generated/queue/topic_assignment/v1/topic_assignment_pb2.pyi +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/query.py +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/queues/__init__.py +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/queues/base_queue.py +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/queues/document_notes_queue.py +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/queues/document_persist_queue.py +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/queues/email_queue.py +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/queues/pdf_to_image_queue.py +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/queues/prompt_ingest_queue.py +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/queues/recommendation_queue.py +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/queues/tool_assignment_queue.py +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/queues/topic_assignment_queue.py +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/redis_client.py +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/sanitize.py +0 -0
- {sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/types.py +0 -0
{sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/generated/queue/email/v1/email_pb2.py
RENAMED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
3
|
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
4
|
# source: queue/email/v1/email.proto
|
|
5
|
-
# Protobuf Python Version: 7.
|
|
5
|
+
# Protobuf Python Version: 7.35.1
|
|
6
6
|
"""Generated protocol buffer code."""
|
|
7
7
|
from google.protobuf import descriptor as _descriptor
|
|
8
8
|
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
@@ -12,8 +12,8 @@ from google.protobuf.internal import builder as _builder
|
|
|
12
12
|
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
13
|
_runtime_version.Domain.PUBLIC,
|
|
14
14
|
7,
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
35,
|
|
16
|
+
1,
|
|
17
17
|
'',
|
|
18
18
|
'queue/email/v1/email.proto'
|
|
19
19
|
)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
3
|
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
4
|
# source: queue/prompt_ingest/v1/prompt_ingest.proto
|
|
5
|
-
# Protobuf Python Version: 7.
|
|
5
|
+
# Protobuf Python Version: 7.35.1
|
|
6
6
|
"""Generated protocol buffer code."""
|
|
7
7
|
from google.protobuf import descriptor as _descriptor
|
|
8
8
|
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
@@ -12,8 +12,8 @@ from google.protobuf.internal import builder as _builder
|
|
|
12
12
|
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
13
|
_runtime_version.Domain.PUBLIC,
|
|
14
14
|
7,
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
35,
|
|
16
|
+
1,
|
|
17
17
|
'',
|
|
18
18
|
'queue/prompt_ingest/v1/prompt_ingest.proto'
|
|
19
19
|
)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
3
|
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
4
|
# source: queue/tool_assignment/v1/tool_assignment.proto
|
|
5
|
-
# Protobuf Python Version: 7.
|
|
5
|
+
# Protobuf Python Version: 7.35.1
|
|
6
6
|
"""Generated protocol buffer code."""
|
|
7
7
|
from google.protobuf import descriptor as _descriptor
|
|
8
8
|
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
@@ -12,8 +12,8 @@ from google.protobuf.internal import builder as _builder
|
|
|
12
12
|
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
13
|
_runtime_version.Domain.PUBLIC,
|
|
14
14
|
7,
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
35,
|
|
16
|
+
1,
|
|
17
17
|
'',
|
|
18
18
|
'queue/tool_assignment/v1/tool_assignment.proto'
|
|
19
19
|
)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
3
|
# NO CHECKED-IN PROTOBUF GENCODE
|
|
4
4
|
# source: queue/topic_assignment/v1/topic_assignment.proto
|
|
5
|
-
# Protobuf Python Version: 7.
|
|
5
|
+
# Protobuf Python Version: 7.35.1
|
|
6
6
|
"""Generated protocol buffer code."""
|
|
7
7
|
from google.protobuf import descriptor as _descriptor
|
|
8
8
|
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
@@ -12,8 +12,8 @@ from google.protobuf.internal import builder as _builder
|
|
|
12
12
|
_runtime_version.ValidateProtobufRuntimeVersion(
|
|
13
13
|
_runtime_version.Domain.PUBLIC,
|
|
14
14
|
7,
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
35,
|
|
16
|
+
1,
|
|
17
17
|
'',
|
|
18
18
|
'queue/topic_assignment/v1/topic_assignment.proto'
|
|
19
19
|
)
|
|
@@ -9,7 +9,7 @@ from queue_sdk.queues.base_queue import BaseQueue
|
|
|
9
9
|
from queue_sdk.redis_client import status_key
|
|
10
10
|
from queue_sdk.types import DocumentUploadStatus, SendResult
|
|
11
11
|
|
|
12
|
-
STATUS_TTL_SECONDS =
|
|
12
|
+
STATUS_TTL_SECONDS = 7200
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class DocumentUploadQueue(BaseQueue):
|
|
@@ -137,7 +137,7 @@ class DocumentUploadQueue(BaseQueue):
|
|
|
137
137
|
"""Write the initial queued status hash after enqueuing."""
|
|
138
138
|
key = status_key(self._environment, self._queue_name, request_id)
|
|
139
139
|
now = datetime.now(timezone.utc).isoformat()
|
|
140
|
-
|
|
140
|
+
initial_status = {
|
|
141
141
|
"status": "queued",
|
|
142
142
|
"step": "",
|
|
143
143
|
"stepNumber": "0",
|
|
@@ -148,8 +148,12 @@ class DocumentUploadQueue(BaseQueue):
|
|
|
148
148
|
"startedAt": "",
|
|
149
149
|
"updatedAt": now,
|
|
150
150
|
"error": "",
|
|
151
|
-
}
|
|
152
|
-
self._redis.
|
|
151
|
+
}
|
|
152
|
+
pipe = self._redis.pipeline(transaction=False)
|
|
153
|
+
for field, value in initial_status.items():
|
|
154
|
+
pipe.hsetnx(key, field, value)
|
|
155
|
+
pipe.expire(key, STATUS_TTL_SECONDS)
|
|
156
|
+
pipe.execute()
|
|
153
157
|
|
|
154
158
|
@staticmethod
|
|
155
159
|
def _build_payload(
|
|
@@ -5,6 +5,31 @@ import unittest
|
|
|
5
5
|
from queue_sdk.queues.document_upload_queue import DocumentUploadQueue
|
|
6
6
|
|
|
7
7
|
|
|
8
|
+
class FakePipeline:
|
|
9
|
+
def __init__(self, redis: "FakeRedis") -> None:
|
|
10
|
+
self.redis = redis
|
|
11
|
+
self.operations: list[tuple[str, tuple[object, ...]]] = []
|
|
12
|
+
|
|
13
|
+
def hsetnx(self, *args: object) -> "FakePipeline":
|
|
14
|
+
self.operations.append(("hsetnx", args))
|
|
15
|
+
return self
|
|
16
|
+
|
|
17
|
+
def expire(self, *args: object) -> "FakePipeline":
|
|
18
|
+
self.operations.append(("expire", args))
|
|
19
|
+
return self
|
|
20
|
+
|
|
21
|
+
def execute(self) -> None:
|
|
22
|
+
hsetnx_count = sum(
|
|
23
|
+
operation == "hsetnx"
|
|
24
|
+
for operation, _ in self.operations
|
|
25
|
+
)
|
|
26
|
+
if hsetnx_count != 10:
|
|
27
|
+
raise AssertionError("unexpected initial status field count")
|
|
28
|
+
if self.operations[-1][1][1] != 7200:
|
|
29
|
+
raise AssertionError("unexpected status TTL")
|
|
30
|
+
self.redis.status_writes += 1
|
|
31
|
+
|
|
32
|
+
|
|
8
33
|
class FakeRedis:
|
|
9
34
|
"""Redis test double for the idempotent enqueue script."""
|
|
10
35
|
|
|
@@ -49,11 +74,10 @@ class FakeRedis:
|
|
|
49
74
|
|
|
50
75
|
return [request_id, 1]
|
|
51
76
|
|
|
52
|
-
def
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
pass
|
|
77
|
+
def pipeline(self, *, transaction: bool) -> FakePipeline:
|
|
78
|
+
if transaction:
|
|
79
|
+
raise AssertionError("status initialization should not use a transaction")
|
|
80
|
+
return FakePipeline(self)
|
|
57
81
|
|
|
58
82
|
|
|
59
83
|
def send_upload(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sf_queue_sdk-0.5.0b45 → sf_queue_sdk-0.5.0b47}/queue_sdk/generated/queue/email/v1/email_pb2.pyi
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|