turbopuffer 2.9.0 → 2.10.0
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +1 -1
- data/lib/turbopuffer/internal/telemetry.rb +86 -10
- data/lib/turbopuffer/models/encryption.rb +11 -1
- data/lib/turbopuffer/models/namespace_explain_query_params.rb +50 -24
- data/lib/turbopuffer/models/namespace_multi_query_params.rb +50 -24
- data/lib/turbopuffer/models/namespace_query_params.rb +50 -24
- data/lib/turbopuffer/resources/namespaces.rb +3 -3
- data/lib/turbopuffer/version.rb +1 -1
- data/rbi/turbopuffer/internal/telemetry.rbi +43 -3
- data/rbi/turbopuffer/models/encryption.rbi +29 -2
- data/rbi/turbopuffer/models/namespace_explain_query_params.rbi +84 -71
- data/rbi/turbopuffer/models/namespace_multi_query_params.rbi +86 -71
- data/rbi/turbopuffer/models/namespace_query_params.rbi +88 -71
- data/rbi/turbopuffer/resources/namespaces.rbi +13 -3
- data/sig/turbopuffer/internal/telemetry.rbs +14 -1
- data/sig/turbopuffer/models/encryption.rbs +22 -3
- data/sig/turbopuffer/models/namespace_explain_query_params.rbs +30 -28
- data/sig/turbopuffer/models/namespace_multi_query_params.rbs +30 -28
- data/sig/turbopuffer/models/namespace_query_params.rbs +30 -26
- data/sig/turbopuffer/resources/namespaces.rbs +3 -3
- metadata +3 -3
|
@@ -31,17 +31,44 @@ module Turbopuffer
|
|
|
31
31
|
sig { returns(Symbol) }
|
|
32
32
|
attr_accessor :mode
|
|
33
33
|
|
|
34
|
+
# The AWS KMS encryption context to send with every request that uses the key.
|
|
35
|
+
# Only supported on AWS, and must be enabled for your organization. Keys may not
|
|
36
|
+
# start with `tpuf:` or `aws:`.
|
|
37
|
+
sig { returns(T.nilable(T::Hash[Symbol, String])) }
|
|
38
|
+
attr_reader :encryption_context
|
|
39
|
+
|
|
40
|
+
sig { params(encryption_context: T::Hash[Symbol, String]).void }
|
|
41
|
+
attr_writer :encryption_context
|
|
42
|
+
|
|
34
43
|
# Encrypt the namespace with a customer-managed encryption key (CMEK).
|
|
35
|
-
sig
|
|
44
|
+
sig do
|
|
45
|
+
params(
|
|
46
|
+
key_name: String,
|
|
47
|
+
encryption_context: T::Hash[Symbol, String],
|
|
48
|
+
mode: Symbol
|
|
49
|
+
).returns(T.attached_class)
|
|
50
|
+
end
|
|
36
51
|
def self.new(
|
|
37
52
|
# The identifier of the CMEK key to use for encryption. For GCP, the
|
|
38
53
|
# fully-qualified resource name of the key. For AWS, the ARN of the key.
|
|
39
54
|
key_name:,
|
|
55
|
+
# The AWS KMS encryption context to send with every request that uses the key.
|
|
56
|
+
# Only supported on AWS, and must be enabled for your organization. Keys may not
|
|
57
|
+
# start with `tpuf:` or `aws:`.
|
|
58
|
+
encryption_context: nil,
|
|
40
59
|
mode: :"customer-managed"
|
|
41
60
|
)
|
|
42
61
|
end
|
|
43
62
|
|
|
44
|
-
sig
|
|
63
|
+
sig do
|
|
64
|
+
override.returns(
|
|
65
|
+
{
|
|
66
|
+
key_name: String,
|
|
67
|
+
mode: Symbol,
|
|
68
|
+
encryption_context: T::Hash[Symbol, String]
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
end
|
|
45
72
|
def to_hash
|
|
46
73
|
end
|
|
47
74
|
end
|
|
@@ -40,7 +40,12 @@ module Turbopuffer
|
|
|
40
40
|
# The consistency level for a query.
|
|
41
41
|
sig do
|
|
42
42
|
returns(
|
|
43
|
-
T.nilable(
|
|
43
|
+
T.nilable(
|
|
44
|
+
T.any(
|
|
45
|
+
Turbopuffer::NamespaceExplainQueryParams::Consistency::Strong,
|
|
46
|
+
Turbopuffer::NamespaceExplainQueryParams::Consistency::Eventual
|
|
47
|
+
)
|
|
48
|
+
)
|
|
44
49
|
)
|
|
45
50
|
end
|
|
46
51
|
attr_reader :consistency
|
|
@@ -48,7 +53,10 @@ module Turbopuffer
|
|
|
48
53
|
sig do
|
|
49
54
|
params(
|
|
50
55
|
consistency:
|
|
51
|
-
|
|
56
|
+
T.any(
|
|
57
|
+
Turbopuffer::NamespaceExplainQueryParams::Consistency::Strong::OrHash,
|
|
58
|
+
Turbopuffer::NamespaceExplainQueryParams::Consistency::Eventual::OrHash
|
|
59
|
+
)
|
|
52
60
|
).void
|
|
53
61
|
end
|
|
54
62
|
attr_writer :consistency
|
|
@@ -141,7 +149,10 @@ module Turbopuffer
|
|
|
141
149
|
aggregate_by: T::Hash[Symbol, T.anything],
|
|
142
150
|
compute_attributes: T::Hash[Symbol, T.anything],
|
|
143
151
|
consistency:
|
|
144
|
-
|
|
152
|
+
T.any(
|
|
153
|
+
Turbopuffer::NamespaceExplainQueryParams::Consistency::Strong::OrHash,
|
|
154
|
+
Turbopuffer::NamespaceExplainQueryParams::Consistency::Eventual::OrHash
|
|
155
|
+
),
|
|
145
156
|
distance_metric: Turbopuffer::DistanceMetric::OrSymbol,
|
|
146
157
|
exclude_attributes: T::Array[String],
|
|
147
158
|
filters: T.anything,
|
|
@@ -200,7 +211,11 @@ module Turbopuffer
|
|
|
200
211
|
namespace: String,
|
|
201
212
|
aggregate_by: T::Hash[Symbol, T.anything],
|
|
202
213
|
compute_attributes: T::Hash[Symbol, T.anything],
|
|
203
|
-
consistency:
|
|
214
|
+
consistency:
|
|
215
|
+
T.any(
|
|
216
|
+
Turbopuffer::NamespaceExplainQueryParams::Consistency::Strong,
|
|
217
|
+
Turbopuffer::NamespaceExplainQueryParams::Consistency::Eventual
|
|
218
|
+
),
|
|
204
219
|
distance_metric: Turbopuffer::DistanceMetric::OrSymbol,
|
|
205
220
|
exclude_attributes: T::Array[String],
|
|
206
221
|
filters: T.anything,
|
|
@@ -218,94 +233,92 @@ module Turbopuffer
|
|
|
218
233
|
def to_hash
|
|
219
234
|
end
|
|
220
235
|
|
|
221
|
-
|
|
222
|
-
|
|
236
|
+
# The consistency level for a query.
|
|
237
|
+
module Consistency
|
|
238
|
+
extend Turbopuffer::Internal::Type::Union
|
|
239
|
+
|
|
240
|
+
Variants =
|
|
223
241
|
T.type_alias do
|
|
224
242
|
T.any(
|
|
225
|
-
Turbopuffer::NamespaceExplainQueryParams::Consistency,
|
|
226
|
-
Turbopuffer::
|
|
243
|
+
Turbopuffer::NamespaceExplainQueryParams::Consistency::Strong,
|
|
244
|
+
Turbopuffer::NamespaceExplainQueryParams::Consistency::Eventual
|
|
227
245
|
)
|
|
228
246
|
end
|
|
229
247
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
attr_reader :level
|
|
248
|
+
class Strong < Turbopuffer::Internal::Type::BaseModel
|
|
249
|
+
OrHash =
|
|
250
|
+
T.type_alias do
|
|
251
|
+
T.any(
|
|
252
|
+
Turbopuffer::NamespaceExplainQueryParams::Consistency::Strong,
|
|
253
|
+
Turbopuffer::Internal::AnyHash
|
|
254
|
+
)
|
|
255
|
+
end
|
|
239
256
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
level:
|
|
243
|
-
Turbopuffer::NamespaceExplainQueryParams::Consistency::Level::OrSymbol
|
|
244
|
-
).void
|
|
245
|
-
end
|
|
246
|
-
attr_writer :level
|
|
257
|
+
sig { returns(Symbol) }
|
|
258
|
+
attr_accessor :level
|
|
247
259
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
params(
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
).returns(T.attached_class)
|
|
254
|
-
end
|
|
255
|
-
def self.new(
|
|
256
|
-
# The query's consistency level.
|
|
257
|
-
level: nil
|
|
258
|
-
)
|
|
259
|
-
end
|
|
260
|
+
# Strong consistency. Requires a round-trip to object storage to fetch the latest
|
|
261
|
+
# writes.
|
|
262
|
+
sig { params(level: Symbol).returns(T.attached_class) }
|
|
263
|
+
def self.new(level: :strong)
|
|
264
|
+
end
|
|
260
265
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
level:
|
|
265
|
-
Turbopuffer::NamespaceExplainQueryParams::Consistency::Level::OrSymbol
|
|
266
|
-
}
|
|
267
|
-
)
|
|
268
|
-
end
|
|
269
|
-
def to_hash
|
|
266
|
+
sig { override.returns({ level: Symbol }) }
|
|
267
|
+
def to_hash
|
|
268
|
+
end
|
|
270
269
|
end
|
|
271
270
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
extend Turbopuffer::Internal::Type::Enum
|
|
275
|
-
|
|
276
|
-
TaggedSymbol =
|
|
271
|
+
class Eventual < Turbopuffer::Internal::Type::BaseModel
|
|
272
|
+
OrHash =
|
|
277
273
|
T.type_alias do
|
|
278
|
-
T.
|
|
279
|
-
|
|
280
|
-
Turbopuffer::
|
|
274
|
+
T.any(
|
|
275
|
+
Turbopuffer::NamespaceExplainQueryParams::Consistency::Eventual,
|
|
276
|
+
Turbopuffer::Internal::AnyHash
|
|
281
277
|
)
|
|
282
278
|
end
|
|
283
|
-
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
284
279
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
T.let(
|
|
288
|
-
:strong,
|
|
289
|
-
Turbopuffer::NamespaceExplainQueryParams::Consistency::Level::TaggedSymbol
|
|
290
|
-
)
|
|
280
|
+
sig { returns(Symbol) }
|
|
281
|
+
attr_accessor :level
|
|
291
282
|
|
|
292
|
-
#
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
Turbopuffer::NamespaceExplainQueryParams::Consistency::Level::TaggedSymbol
|
|
297
|
-
)
|
|
283
|
+
# How long the query may reuse the node's cached view of the namespace before
|
|
284
|
+
# refreshing it from object storage. Defaults to 60.
|
|
285
|
+
sig { returns(T.nilable(Integer)) }
|
|
286
|
+
attr_reader :max_staleness_seconds
|
|
298
287
|
|
|
288
|
+
sig { params(max_staleness_seconds: Integer).void }
|
|
289
|
+
attr_writer :max_staleness_seconds
|
|
290
|
+
|
|
291
|
+
# Eventual consistency. Does not require a round-trip to object storage, but may
|
|
292
|
+
# not see the latest writes.
|
|
299
293
|
sig do
|
|
300
|
-
|
|
301
|
-
T
|
|
302
|
-
Turbopuffer::NamespaceExplainQueryParams::Consistency::Level::TaggedSymbol
|
|
303
|
-
]
|
|
294
|
+
params(max_staleness_seconds: Integer, level: Symbol).returns(
|
|
295
|
+
T.attached_class
|
|
304
296
|
)
|
|
305
297
|
end
|
|
306
|
-
def self.
|
|
298
|
+
def self.new(
|
|
299
|
+
# How long the query may reuse the node's cached view of the namespace before
|
|
300
|
+
# refreshing it from object storage. Defaults to 60.
|
|
301
|
+
max_staleness_seconds: nil,
|
|
302
|
+
level: :eventual
|
|
303
|
+
)
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
sig do
|
|
307
|
+
override.returns({ level: Symbol, max_staleness_seconds: Integer })
|
|
308
|
+
end
|
|
309
|
+
def to_hash
|
|
307
310
|
end
|
|
308
311
|
end
|
|
312
|
+
|
|
313
|
+
sig do
|
|
314
|
+
override.returns(
|
|
315
|
+
T::Array[
|
|
316
|
+
Turbopuffer::NamespaceExplainQueryParams::Consistency::Variants
|
|
317
|
+
]
|
|
318
|
+
)
|
|
319
|
+
end
|
|
320
|
+
def self.variants
|
|
321
|
+
end
|
|
309
322
|
end
|
|
310
323
|
|
|
311
324
|
# Limits the documents returned by a query.
|
|
@@ -25,14 +25,24 @@ module Turbopuffer
|
|
|
25
25
|
|
|
26
26
|
# The consistency level for a query.
|
|
27
27
|
sig do
|
|
28
|
-
returns(
|
|
28
|
+
returns(
|
|
29
|
+
T.nilable(
|
|
30
|
+
T.any(
|
|
31
|
+
Turbopuffer::NamespaceMultiQueryParams::Consistency::Strong,
|
|
32
|
+
Turbopuffer::NamespaceMultiQueryParams::Consistency::Eventual
|
|
33
|
+
)
|
|
34
|
+
)
|
|
35
|
+
)
|
|
29
36
|
end
|
|
30
37
|
attr_reader :consistency
|
|
31
38
|
|
|
32
39
|
sig do
|
|
33
40
|
params(
|
|
34
41
|
consistency:
|
|
35
|
-
|
|
42
|
+
T.any(
|
|
43
|
+
Turbopuffer::NamespaceMultiQueryParams::Consistency::Strong::OrHash,
|
|
44
|
+
Turbopuffer::NamespaceMultiQueryParams::Consistency::Eventual::OrHash
|
|
45
|
+
)
|
|
36
46
|
).void
|
|
37
47
|
end
|
|
38
48
|
attr_writer :consistency
|
|
@@ -76,7 +86,10 @@ module Turbopuffer
|
|
|
76
86
|
T::Array[Turbopuffer::NamespaceMultiQueryParams::Query::OrHash],
|
|
77
87
|
namespace: String,
|
|
78
88
|
consistency:
|
|
79
|
-
|
|
89
|
+
T.any(
|
|
90
|
+
Turbopuffer::NamespaceMultiQueryParams::Consistency::Strong::OrHash,
|
|
91
|
+
Turbopuffer::NamespaceMultiQueryParams::Consistency::Eventual::OrHash
|
|
92
|
+
),
|
|
80
93
|
limit: T.any(Integer, Turbopuffer::RerankLimit::OrHash),
|
|
81
94
|
offset: Integer,
|
|
82
95
|
rerank_by: T.anything,
|
|
@@ -107,7 +120,11 @@ module Turbopuffer
|
|
|
107
120
|
{
|
|
108
121
|
namespace: String,
|
|
109
122
|
queries: T::Array[Turbopuffer::NamespaceMultiQueryParams::Query],
|
|
110
|
-
consistency:
|
|
123
|
+
consistency:
|
|
124
|
+
T.any(
|
|
125
|
+
Turbopuffer::NamespaceMultiQueryParams::Consistency::Strong,
|
|
126
|
+
Turbopuffer::NamespaceMultiQueryParams::Consistency::Eventual
|
|
127
|
+
),
|
|
111
128
|
limit: T.any(Integer, Turbopuffer::RerankLimit),
|
|
112
129
|
offset: Integer,
|
|
113
130
|
rerank_by: T.anything,
|
|
@@ -305,94 +322,92 @@ module Turbopuffer
|
|
|
305
322
|
end
|
|
306
323
|
end
|
|
307
324
|
|
|
308
|
-
|
|
309
|
-
|
|
325
|
+
# The consistency level for a query.
|
|
326
|
+
module Consistency
|
|
327
|
+
extend Turbopuffer::Internal::Type::Union
|
|
328
|
+
|
|
329
|
+
Variants =
|
|
310
330
|
T.type_alias do
|
|
311
331
|
T.any(
|
|
312
|
-
Turbopuffer::NamespaceMultiQueryParams::Consistency,
|
|
313
|
-
Turbopuffer::
|
|
332
|
+
Turbopuffer::NamespaceMultiQueryParams::Consistency::Strong,
|
|
333
|
+
Turbopuffer::NamespaceMultiQueryParams::Consistency::Eventual
|
|
314
334
|
)
|
|
315
335
|
end
|
|
316
336
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
attr_reader :level
|
|
337
|
+
class Strong < Turbopuffer::Internal::Type::BaseModel
|
|
338
|
+
OrHash =
|
|
339
|
+
T.type_alias do
|
|
340
|
+
T.any(
|
|
341
|
+
Turbopuffer::NamespaceMultiQueryParams::Consistency::Strong,
|
|
342
|
+
Turbopuffer::Internal::AnyHash
|
|
343
|
+
)
|
|
344
|
+
end
|
|
326
345
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
level:
|
|
330
|
-
Turbopuffer::NamespaceMultiQueryParams::Consistency::Level::OrSymbol
|
|
331
|
-
).void
|
|
332
|
-
end
|
|
333
|
-
attr_writer :level
|
|
346
|
+
sig { returns(Symbol) }
|
|
347
|
+
attr_accessor :level
|
|
334
348
|
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
params(
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
).returns(T.attached_class)
|
|
341
|
-
end
|
|
342
|
-
def self.new(
|
|
343
|
-
# The query's consistency level.
|
|
344
|
-
level: nil
|
|
345
|
-
)
|
|
346
|
-
end
|
|
349
|
+
# Strong consistency. Requires a round-trip to object storage to fetch the latest
|
|
350
|
+
# writes.
|
|
351
|
+
sig { params(level: Symbol).returns(T.attached_class) }
|
|
352
|
+
def self.new(level: :strong)
|
|
353
|
+
end
|
|
347
354
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
level:
|
|
352
|
-
Turbopuffer::NamespaceMultiQueryParams::Consistency::Level::OrSymbol
|
|
353
|
-
}
|
|
354
|
-
)
|
|
355
|
-
end
|
|
356
|
-
def to_hash
|
|
355
|
+
sig { override.returns({ level: Symbol }) }
|
|
356
|
+
def to_hash
|
|
357
|
+
end
|
|
357
358
|
end
|
|
358
359
|
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
extend Turbopuffer::Internal::Type::Enum
|
|
362
|
-
|
|
363
|
-
TaggedSymbol =
|
|
360
|
+
class Eventual < Turbopuffer::Internal::Type::BaseModel
|
|
361
|
+
OrHash =
|
|
364
362
|
T.type_alias do
|
|
365
|
-
T.
|
|
366
|
-
|
|
367
|
-
Turbopuffer::
|
|
363
|
+
T.any(
|
|
364
|
+
Turbopuffer::NamespaceMultiQueryParams::Consistency::Eventual,
|
|
365
|
+
Turbopuffer::Internal::AnyHash
|
|
368
366
|
)
|
|
369
367
|
end
|
|
370
|
-
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
371
368
|
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
T.let(
|
|
375
|
-
:strong,
|
|
376
|
-
Turbopuffer::NamespaceMultiQueryParams::Consistency::Level::TaggedSymbol
|
|
377
|
-
)
|
|
369
|
+
sig { returns(Symbol) }
|
|
370
|
+
attr_accessor :level
|
|
378
371
|
|
|
379
|
-
#
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
372
|
+
# How long the query may reuse the node's cached view of the namespace before
|
|
373
|
+
# refreshing it from object storage. Defaults to 60.
|
|
374
|
+
sig { returns(T.nilable(Integer)) }
|
|
375
|
+
attr_reader :max_staleness_seconds
|
|
376
|
+
|
|
377
|
+
sig { params(max_staleness_seconds: Integer).void }
|
|
378
|
+
attr_writer :max_staleness_seconds
|
|
385
379
|
|
|
380
|
+
# Eventual consistency. Does not require a round-trip to object storage, but may
|
|
381
|
+
# not see the latest writes.
|
|
386
382
|
sig do
|
|
387
|
-
|
|
388
|
-
T
|
|
389
|
-
Turbopuffer::NamespaceMultiQueryParams::Consistency::Level::TaggedSymbol
|
|
390
|
-
]
|
|
383
|
+
params(max_staleness_seconds: Integer, level: Symbol).returns(
|
|
384
|
+
T.attached_class
|
|
391
385
|
)
|
|
392
386
|
end
|
|
393
|
-
def self.
|
|
387
|
+
def self.new(
|
|
388
|
+
# How long the query may reuse the node's cached view of the namespace before
|
|
389
|
+
# refreshing it from object storage. Defaults to 60.
|
|
390
|
+
max_staleness_seconds: nil,
|
|
391
|
+
level: :eventual
|
|
392
|
+
)
|
|
393
|
+
end
|
|
394
|
+
|
|
395
|
+
sig do
|
|
396
|
+
override.returns({ level: Symbol, max_staleness_seconds: Integer })
|
|
397
|
+
end
|
|
398
|
+
def to_hash
|
|
394
399
|
end
|
|
395
400
|
end
|
|
401
|
+
|
|
402
|
+
sig do
|
|
403
|
+
override.returns(
|
|
404
|
+
T::Array[
|
|
405
|
+
Turbopuffer::NamespaceMultiQueryParams::Consistency::Variants
|
|
406
|
+
]
|
|
407
|
+
)
|
|
408
|
+
end
|
|
409
|
+
def self.variants
|
|
410
|
+
end
|
|
396
411
|
end
|
|
397
412
|
|
|
398
413
|
# Limits the total number of reranked documents returned.
|
|
@@ -38,12 +38,25 @@ module Turbopuffer
|
|
|
38
38
|
attr_writer :compute_attributes
|
|
39
39
|
|
|
40
40
|
# The consistency level for a query.
|
|
41
|
-
sig
|
|
41
|
+
sig do
|
|
42
|
+
returns(
|
|
43
|
+
T.nilable(
|
|
44
|
+
T.any(
|
|
45
|
+
Turbopuffer::NamespaceQueryParams::Consistency::Strong,
|
|
46
|
+
Turbopuffer::NamespaceQueryParams::Consistency::Eventual
|
|
47
|
+
)
|
|
48
|
+
)
|
|
49
|
+
)
|
|
50
|
+
end
|
|
42
51
|
attr_reader :consistency
|
|
43
52
|
|
|
44
53
|
sig do
|
|
45
54
|
params(
|
|
46
|
-
consistency:
|
|
55
|
+
consistency:
|
|
56
|
+
T.any(
|
|
57
|
+
Turbopuffer::NamespaceQueryParams::Consistency::Strong::OrHash,
|
|
58
|
+
Turbopuffer::NamespaceQueryParams::Consistency::Eventual::OrHash
|
|
59
|
+
)
|
|
47
60
|
).void
|
|
48
61
|
end
|
|
49
62
|
attr_writer :consistency
|
|
@@ -142,7 +155,11 @@ module Turbopuffer
|
|
|
142
155
|
namespace: String,
|
|
143
156
|
aggregate_by: T::Hash[Symbol, T.anything],
|
|
144
157
|
compute_attributes: T::Hash[Symbol, T.anything],
|
|
145
|
-
consistency:
|
|
158
|
+
consistency:
|
|
159
|
+
T.any(
|
|
160
|
+
Turbopuffer::NamespaceQueryParams::Consistency::Strong::OrHash,
|
|
161
|
+
Turbopuffer::NamespaceQueryParams::Consistency::Eventual::OrHash
|
|
162
|
+
),
|
|
146
163
|
distance_metric: Turbopuffer::DistanceMetric::OrSymbol,
|
|
147
164
|
exclude_attributes: T::Array[String],
|
|
148
165
|
filters: T.anything,
|
|
@@ -204,7 +221,11 @@ module Turbopuffer
|
|
|
204
221
|
namespace: String,
|
|
205
222
|
aggregate_by: T::Hash[Symbol, T.anything],
|
|
206
223
|
compute_attributes: T::Hash[Symbol, T.anything],
|
|
207
|
-
consistency:
|
|
224
|
+
consistency:
|
|
225
|
+
T.any(
|
|
226
|
+
Turbopuffer::NamespaceQueryParams::Consistency::Strong,
|
|
227
|
+
Turbopuffer::NamespaceQueryParams::Consistency::Eventual
|
|
228
|
+
),
|
|
208
229
|
distance_metric: Turbopuffer::DistanceMetric::OrSymbol,
|
|
209
230
|
exclude_attributes: T::Array[String],
|
|
210
231
|
filters: T.anything,
|
|
@@ -223,94 +244,90 @@ module Turbopuffer
|
|
|
223
244
|
def to_hash
|
|
224
245
|
end
|
|
225
246
|
|
|
226
|
-
|
|
227
|
-
|
|
247
|
+
# The consistency level for a query.
|
|
248
|
+
module Consistency
|
|
249
|
+
extend Turbopuffer::Internal::Type::Union
|
|
250
|
+
|
|
251
|
+
Variants =
|
|
228
252
|
T.type_alias do
|
|
229
253
|
T.any(
|
|
230
|
-
Turbopuffer::NamespaceQueryParams::Consistency,
|
|
231
|
-
Turbopuffer::
|
|
254
|
+
Turbopuffer::NamespaceQueryParams::Consistency::Strong,
|
|
255
|
+
Turbopuffer::NamespaceQueryParams::Consistency::Eventual
|
|
232
256
|
)
|
|
233
257
|
end
|
|
234
258
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
attr_reader :level
|
|
259
|
+
class Strong < Turbopuffer::Internal::Type::BaseModel
|
|
260
|
+
OrHash =
|
|
261
|
+
T.type_alias do
|
|
262
|
+
T.any(
|
|
263
|
+
Turbopuffer::NamespaceQueryParams::Consistency::Strong,
|
|
264
|
+
Turbopuffer::Internal::AnyHash
|
|
265
|
+
)
|
|
266
|
+
end
|
|
244
267
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
level:
|
|
248
|
-
Turbopuffer::NamespaceQueryParams::Consistency::Level::OrSymbol
|
|
249
|
-
).void
|
|
250
|
-
end
|
|
251
|
-
attr_writer :level
|
|
268
|
+
sig { returns(Symbol) }
|
|
269
|
+
attr_accessor :level
|
|
252
270
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
params(
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
).returns(T.attached_class)
|
|
259
|
-
end
|
|
260
|
-
def self.new(
|
|
261
|
-
# The query's consistency level.
|
|
262
|
-
level: nil
|
|
263
|
-
)
|
|
264
|
-
end
|
|
271
|
+
# Strong consistency. Requires a round-trip to object storage to fetch the latest
|
|
272
|
+
# writes.
|
|
273
|
+
sig { params(level: Symbol).returns(T.attached_class) }
|
|
274
|
+
def self.new(level: :strong)
|
|
275
|
+
end
|
|
265
276
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
level:
|
|
270
|
-
Turbopuffer::NamespaceQueryParams::Consistency::Level::OrSymbol
|
|
271
|
-
}
|
|
272
|
-
)
|
|
273
|
-
end
|
|
274
|
-
def to_hash
|
|
277
|
+
sig { override.returns({ level: Symbol }) }
|
|
278
|
+
def to_hash
|
|
279
|
+
end
|
|
275
280
|
end
|
|
276
281
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
extend Turbopuffer::Internal::Type::Enum
|
|
280
|
-
|
|
281
|
-
TaggedSymbol =
|
|
282
|
+
class Eventual < Turbopuffer::Internal::Type::BaseModel
|
|
283
|
+
OrHash =
|
|
282
284
|
T.type_alias do
|
|
283
|
-
T.
|
|
284
|
-
|
|
285
|
-
Turbopuffer::
|
|
285
|
+
T.any(
|
|
286
|
+
Turbopuffer::NamespaceQueryParams::Consistency::Eventual,
|
|
287
|
+
Turbopuffer::Internal::AnyHash
|
|
286
288
|
)
|
|
287
289
|
end
|
|
288
|
-
OrSymbol = T.type_alias { T.any(Symbol, String) }
|
|
289
290
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
T.let(
|
|
293
|
-
:strong,
|
|
294
|
-
Turbopuffer::NamespaceQueryParams::Consistency::Level::TaggedSymbol
|
|
295
|
-
)
|
|
291
|
+
sig { returns(Symbol) }
|
|
292
|
+
attr_accessor :level
|
|
296
293
|
|
|
297
|
-
#
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
294
|
+
# How long the query may reuse the node's cached view of the namespace before
|
|
295
|
+
# refreshing it from object storage. Defaults to 60.
|
|
296
|
+
sig { returns(T.nilable(Integer)) }
|
|
297
|
+
attr_reader :max_staleness_seconds
|
|
298
|
+
|
|
299
|
+
sig { params(max_staleness_seconds: Integer).void }
|
|
300
|
+
attr_writer :max_staleness_seconds
|
|
303
301
|
|
|
302
|
+
# Eventual consistency. Does not require a round-trip to object storage, but may
|
|
303
|
+
# not see the latest writes.
|
|
304
304
|
sig do
|
|
305
|
-
|
|
306
|
-
T
|
|
307
|
-
Turbopuffer::NamespaceQueryParams::Consistency::Level::TaggedSymbol
|
|
308
|
-
]
|
|
305
|
+
params(max_staleness_seconds: Integer, level: Symbol).returns(
|
|
306
|
+
T.attached_class
|
|
309
307
|
)
|
|
310
308
|
end
|
|
311
|
-
def self.
|
|
309
|
+
def self.new(
|
|
310
|
+
# How long the query may reuse the node's cached view of the namespace before
|
|
311
|
+
# refreshing it from object storage. Defaults to 60.
|
|
312
|
+
max_staleness_seconds: nil,
|
|
313
|
+
level: :eventual
|
|
314
|
+
)
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
sig do
|
|
318
|
+
override.returns({ level: Symbol, max_staleness_seconds: Integer })
|
|
319
|
+
end
|
|
320
|
+
def to_hash
|
|
312
321
|
end
|
|
313
322
|
end
|
|
323
|
+
|
|
324
|
+
sig do
|
|
325
|
+
override.returns(
|
|
326
|
+
T::Array[Turbopuffer::NamespaceQueryParams::Consistency::Variants]
|
|
327
|
+
)
|
|
328
|
+
end
|
|
329
|
+
def self.variants
|
|
330
|
+
end
|
|
314
331
|
end
|
|
315
332
|
|
|
316
333
|
# Limits the documents returned by a query.
|