turbopuffer-ruby 0.2.0.pre.alpha.1
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 +7 -0
- data/.ignore +2 -0
- data/CHANGELOG.md +60 -0
- data/README.md +291 -0
- data/SECURITY.md +27 -0
- data/lib/turbopuffer/client.rb +130 -0
- data/lib/turbopuffer/errors.rb +214 -0
- data/lib/turbopuffer/file_part.rb +55 -0
- data/lib/turbopuffer/internal/namespace_page.rb +86 -0
- data/lib/turbopuffer/internal/transport/base_client.rb +563 -0
- data/lib/turbopuffer/internal/transport/pooled_net_requester.rb +209 -0
- data/lib/turbopuffer/internal/type/array_of.rb +167 -0
- data/lib/turbopuffer/internal/type/base_model.rb +534 -0
- data/lib/turbopuffer/internal/type/base_page.rb +55 -0
- data/lib/turbopuffer/internal/type/boolean.rb +77 -0
- data/lib/turbopuffer/internal/type/converter.rb +300 -0
- data/lib/turbopuffer/internal/type/enum.rb +152 -0
- data/lib/turbopuffer/internal/type/file_input.rb +108 -0
- data/lib/turbopuffer/internal/type/hash_of.rb +187 -0
- data/lib/turbopuffer/internal/type/request_parameters.rb +42 -0
- data/lib/turbopuffer/internal/type/union.rb +252 -0
- data/lib/turbopuffer/internal/type/unknown.rb +81 -0
- data/lib/turbopuffer/internal/util.rb +914 -0
- data/lib/turbopuffer/internal.rb +20 -0
- data/lib/turbopuffer/models/attribute_schema.rb +19 -0
- data/lib/turbopuffer/models/attribute_schema_config.rb +48 -0
- data/lib/turbopuffer/models/attribute_type.rb +7 -0
- data/lib/turbopuffer/models/client_namespaces_params.rb +38 -0
- data/lib/turbopuffer/models/columns.rb +64 -0
- data/lib/turbopuffer/models/distance_metric.rb +19 -0
- data/lib/turbopuffer/models/full_text_search.rb +20 -0
- data/lib/turbopuffer/models/full_text_search_config.rb +72 -0
- data/lib/turbopuffer/models/id.rb +19 -0
- data/lib/turbopuffer/models/include_attributes.rb +22 -0
- data/lib/turbopuffer/models/language.rb +32 -0
- data/lib/turbopuffer/models/namespace_delete_all_params.rb +20 -0
- data/lib/turbopuffer/models/namespace_delete_all_response.rb +19 -0
- data/lib/turbopuffer/models/namespace_hint_cache_warm_params.rb +20 -0
- data/lib/turbopuffer/models/namespace_hint_cache_warm_response.rb +26 -0
- data/lib/turbopuffer/models/namespace_metadata.rb +35 -0
- data/lib/turbopuffer/models/namespace_metadata_params.rb +20 -0
- data/lib/turbopuffer/models/namespace_multi_query_params.rb +73 -0
- data/lib/turbopuffer/models/namespace_multi_query_response.rb +51 -0
- data/lib/turbopuffer/models/namespace_query_params.rb +119 -0
- data/lib/turbopuffer/models/namespace_query_response.rb +41 -0
- data/lib/turbopuffer/models/namespace_recall_params.rb +57 -0
- data/lib/turbopuffer/models/namespace_recall_response.rb +39 -0
- data/lib/turbopuffer/models/namespace_schema_params.rb +20 -0
- data/lib/turbopuffer/models/namespace_schema_response.rb +8 -0
- data/lib/turbopuffer/models/namespace_summary.rb +19 -0
- data/lib/turbopuffer/models/namespace_update_schema_params.rb +29 -0
- data/lib/turbopuffer/models/namespace_update_schema_response.rb +9 -0
- data/lib/turbopuffer/models/namespace_write_params.rb +158 -0
- data/lib/turbopuffer/models/namespace_write_response.rb +67 -0
- data/lib/turbopuffer/models/query.rb +63 -0
- data/lib/turbopuffer/models/query_billing.rb +26 -0
- data/lib/turbopuffer/models/query_performance.rb +63 -0
- data/lib/turbopuffer/models/row.rb +38 -0
- data/lib/turbopuffer/models/tokenizer.rb +17 -0
- data/lib/turbopuffer/models/vector.rb +22 -0
- data/lib/turbopuffer/models/vector_encoding.rb +16 -0
- data/lib/turbopuffer/models/write_billing.rb +26 -0
- data/lib/turbopuffer/models.rb +101 -0
- data/lib/turbopuffer/namespace.rb +22 -0
- data/lib/turbopuffer/request_options.rb +77 -0
- data/lib/turbopuffer/resources/namespaces.rb +311 -0
- data/lib/turbopuffer/version.rb +5 -0
- data/lib/turbopuffer.rb +94 -0
- data/manifest.yaml +15 -0
- data/rbi/turbopuffer/client.rbi +91 -0
- data/rbi/turbopuffer/errors.rbi +178 -0
- data/rbi/turbopuffer/file_part.rbi +37 -0
- data/rbi/turbopuffer/internal/namespace_page.rbi +22 -0
- data/rbi/turbopuffer/internal/transport/base_client.rbi +298 -0
- data/rbi/turbopuffer/internal/transport/pooled_net_requester.rbi +80 -0
- data/rbi/turbopuffer/internal/type/array_of.rbi +104 -0
- data/rbi/turbopuffer/internal/type/base_model.rbi +304 -0
- data/rbi/turbopuffer/internal/type/base_page.rbi +43 -0
- data/rbi/turbopuffer/internal/type/boolean.rbi +58 -0
- data/rbi/turbopuffer/internal/type/converter.rbi +162 -0
- data/rbi/turbopuffer/internal/type/enum.rbi +82 -0
- data/rbi/turbopuffer/internal/type/file_input.rbi +59 -0
- data/rbi/turbopuffer/internal/type/hash_of.rbi +104 -0
- data/rbi/turbopuffer/internal/type/request_parameters.rbi +31 -0
- data/rbi/turbopuffer/internal/type/union.rbi +121 -0
- data/rbi/turbopuffer/internal/type/unknown.rbi +58 -0
- data/rbi/turbopuffer/internal/util.rbi +487 -0
- data/rbi/turbopuffer/internal.rbi +18 -0
- data/rbi/turbopuffer/models/attribute_schema.rbi +17 -0
- data/rbi/turbopuffer/models/attribute_schema_config.rbi +92 -0
- data/rbi/turbopuffer/models/attribute_type.rbi +7 -0
- data/rbi/turbopuffer/models/client_namespaces_params.rbi +71 -0
- data/rbi/turbopuffer/models/columns.rbi +82 -0
- data/rbi/turbopuffer/models/distance_metric.rbi +27 -0
- data/rbi/turbopuffer/models/full_text_search.rbi +19 -0
- data/rbi/turbopuffer/models/full_text_search_config.rbi +116 -0
- data/rbi/turbopuffer/models/id.rbi +16 -0
- data/rbi/turbopuffer/models/include_attributes.rbi +24 -0
- data/rbi/turbopuffer/models/language.rbi +36 -0
- data/rbi/turbopuffer/models/namespace_delete_all_params.rbi +41 -0
- data/rbi/turbopuffer/models/namespace_delete_all_response.rbi +31 -0
- data/rbi/turbopuffer/models/namespace_hint_cache_warm_params.rbi +41 -0
- data/rbi/turbopuffer/models/namespace_hint_cache_warm_response.rbi +38 -0
- data/rbi/turbopuffer/models/namespace_metadata.rbi +54 -0
- data/rbi/turbopuffer/models/namespace_metadata_params.rbi +41 -0
- data/rbi/turbopuffer/models/namespace_multi_query_params.rbi +175 -0
- data/rbi/turbopuffer/models/namespace_multi_query_response.rbi +111 -0
- data/rbi/turbopuffer/models/namespace_query_params.rbi +241 -0
- data/rbi/turbopuffer/models/namespace_query_response.rbi +73 -0
- data/rbi/turbopuffer/models/namespace_recall_params.rbi +93 -0
- data/rbi/turbopuffer/models/namespace_recall_response.rbi +59 -0
- data/rbi/turbopuffer/models/namespace_schema_params.rbi +41 -0
- data/rbi/turbopuffer/models/namespace_schema_response.rbi +11 -0
- data/rbi/turbopuffer/models/namespace_summary.rbi +28 -0
- data/rbi/turbopuffer/models/namespace_update_schema_params.rbi +80 -0
- data/rbi/turbopuffer/models/namespace_update_schema_response.rbi +11 -0
- data/rbi/turbopuffer/models/namespace_write_params.rbi +290 -0
- data/rbi/turbopuffer/models/namespace_write_response.rbi +101 -0
- data/rbi/turbopuffer/models/query.rbi +106 -0
- data/rbi/turbopuffer/models/query_billing.rbi +46 -0
- data/rbi/turbopuffer/models/query_performance.rbi +82 -0
- data/rbi/turbopuffer/models/row.rbi +47 -0
- data/rbi/turbopuffer/models/tokenizer.rbi +22 -0
- data/rbi/turbopuffer/models/vector.rbi +22 -0
- data/rbi/turbopuffer/models/vector_encoding.rbi +22 -0
- data/rbi/turbopuffer/models/write_billing.rbi +49 -0
- data/rbi/turbopuffer/models.rbi +64 -0
- data/rbi/turbopuffer/namespace.rbi +8 -0
- data/rbi/turbopuffer/request_options.rbi +59 -0
- data/rbi/turbopuffer/resources/namespaces.rbi +243 -0
- data/rbi/turbopuffer/version.rbi +5 -0
- data/sig/turbopuffer/client.rbs +41 -0
- data/sig/turbopuffer/errors.rbs +110 -0
- data/sig/turbopuffer/file_part.rbs +21 -0
- data/sig/turbopuffer/internal/namespace_page.rbs +13 -0
- data/sig/turbopuffer/internal/transport/base_client.rbs +131 -0
- data/sig/turbopuffer/internal/transport/pooled_net_requester.rbs +45 -0
- data/sig/turbopuffer/internal/type/array_of.rbs +48 -0
- data/sig/turbopuffer/internal/type/base_model.rbs +102 -0
- data/sig/turbopuffer/internal/type/base_page.rbs +24 -0
- data/sig/turbopuffer/internal/type/boolean.rbs +26 -0
- data/sig/turbopuffer/internal/type/converter.rbs +62 -0
- data/sig/turbopuffer/internal/type/enum.rbs +32 -0
- data/sig/turbopuffer/internal/type/file_input.rbs +25 -0
- data/sig/turbopuffer/internal/type/hash_of.rbs +48 -0
- data/sig/turbopuffer/internal/type/request_parameters.rbs +19 -0
- data/sig/turbopuffer/internal/type/union.rbs +52 -0
- data/sig/turbopuffer/internal/type/unknown.rbs +26 -0
- data/sig/turbopuffer/internal/util.rbs +185 -0
- data/sig/turbopuffer/internal.rbs +9 -0
- data/sig/turbopuffer/models/attribute_schema.rbs +11 -0
- data/sig/turbopuffer/models/attribute_schema_config.rbs +45 -0
- data/sig/turbopuffer/models/attribute_type.rbs +5 -0
- data/sig/turbopuffer/models/client_namespaces_params.rbs +38 -0
- data/sig/turbopuffer/models/columns.rbs +42 -0
- data/sig/turbopuffer/models/distance_metric.rbs +17 -0
- data/sig/turbopuffer/models/full_text_search.rbs +11 -0
- data/sig/turbopuffer/models/full_text_search_config.rbs +68 -0
- data/sig/turbopuffer/models/id.rbs +11 -0
- data/sig/turbopuffer/models/include_attributes.rbs +13 -0
- data/sig/turbopuffer/models/language.rbs +48 -0
- data/sig/turbopuffer/models/namespace_delete_all_params.rbs +25 -0
- data/sig/turbopuffer/models/namespace_delete_all_response.rbs +13 -0
- data/sig/turbopuffer/models/namespace_hint_cache_warm_params.rbs +25 -0
- data/sig/turbopuffer/models/namespace_hint_cache_warm_response.rbs +17 -0
- data/sig/turbopuffer/models/namespace_metadata.rbs +30 -0
- data/sig/turbopuffer/models/namespace_metadata_params.rbs +25 -0
- data/sig/turbopuffer/models/namespace_multi_query_params.rbs +86 -0
- data/sig/turbopuffer/models/namespace_multi_query_response.rbs +53 -0
- data/sig/turbopuffer/models/namespace_query_params.rbs +125 -0
- data/sig/turbopuffer/models/namespace_query_response.rbs +39 -0
- data/sig/turbopuffer/models/namespace_recall_params.rbs +56 -0
- data/sig/turbopuffer/models/namespace_recall_response.rbs +26 -0
- data/sig/turbopuffer/models/namespace_schema_params.rbs +25 -0
- data/sig/turbopuffer/models/namespace_schema_response.rbs +8 -0
- data/sig/turbopuffer/models/namespace_summary.rbs +13 -0
- data/sig/turbopuffer/models/namespace_update_schema_params.rbs +37 -0
- data/sig/turbopuffer/models/namespace_update_schema_response.rbs +8 -0
- data/sig/turbopuffer/models/namespace_write_params.rbs +156 -0
- data/sig/turbopuffer/models/namespace_write_response.rbs +56 -0
- data/sig/turbopuffer/models/query.rbs +61 -0
- data/sig/turbopuffer/models/query_billing.rbs +25 -0
- data/sig/turbopuffer/models/query_performance.rbs +45 -0
- data/sig/turbopuffer/models/row.rbs +24 -0
- data/sig/turbopuffer/models/tokenizer.rbs +15 -0
- data/sig/turbopuffer/models/vector.rbs +13 -0
- data/sig/turbopuffer/models/vector_encoding.rbs +14 -0
- data/sig/turbopuffer/models/write_billing.rbs +27 -0
- data/sig/turbopuffer/models.rbs +61 -0
- data/sig/turbopuffer/namespace.rbs +5 -0
- data/sig/turbopuffer/request_options.rbs +36 -0
- data/sig/turbopuffer/resources/namespaces.rbs +81 -0
- data/sig/turbopuffer/version.rbs +3 -0
- metadata +251 -0
@@ -0,0 +1,487 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module Turbopuffer
|
4
|
+
module Internal
|
5
|
+
# @api private
|
6
|
+
module Util
|
7
|
+
extend Turbopuffer::Internal::Util::SorbetRuntimeSupport
|
8
|
+
|
9
|
+
# @api private
|
10
|
+
sig { returns(Float) }
|
11
|
+
def self.monotonic_secs
|
12
|
+
end
|
13
|
+
|
14
|
+
# @api private
|
15
|
+
sig do
|
16
|
+
params(ns: T.any(Module, T::Class[T.anything])).returns(
|
17
|
+
T::Enumerable[T.any(Module, T::Class[T.anything])]
|
18
|
+
)
|
19
|
+
end
|
20
|
+
def self.walk_namespaces(ns)
|
21
|
+
end
|
22
|
+
|
23
|
+
class << self
|
24
|
+
# @api private
|
25
|
+
sig { returns(String) }
|
26
|
+
def arch
|
27
|
+
end
|
28
|
+
|
29
|
+
# @api private
|
30
|
+
sig { returns(String) }
|
31
|
+
def os
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class << self
|
36
|
+
# @api private
|
37
|
+
sig { params(input: T.anything).returns(T::Boolean) }
|
38
|
+
def primitive?(input)
|
39
|
+
end
|
40
|
+
|
41
|
+
# @api private
|
42
|
+
sig do
|
43
|
+
params(input: T.any(String, T::Boolean)).returns(
|
44
|
+
T.any(T::Boolean, T.anything)
|
45
|
+
)
|
46
|
+
end
|
47
|
+
def coerce_boolean(input)
|
48
|
+
end
|
49
|
+
|
50
|
+
# @api private
|
51
|
+
sig do
|
52
|
+
params(input: T.any(String, T::Boolean)).returns(
|
53
|
+
T.nilable(T::Boolean)
|
54
|
+
)
|
55
|
+
end
|
56
|
+
def coerce_boolean!(input)
|
57
|
+
end
|
58
|
+
|
59
|
+
# @api private
|
60
|
+
sig do
|
61
|
+
params(input: T.any(String, Integer)).returns(
|
62
|
+
T.any(Integer, T.anything)
|
63
|
+
)
|
64
|
+
end
|
65
|
+
def coerce_integer(input)
|
66
|
+
end
|
67
|
+
|
68
|
+
# @api private
|
69
|
+
sig do
|
70
|
+
params(input: T.any(String, Integer, Float)).returns(
|
71
|
+
T.any(Float, T.anything)
|
72
|
+
)
|
73
|
+
end
|
74
|
+
def coerce_float(input)
|
75
|
+
end
|
76
|
+
|
77
|
+
# @api private
|
78
|
+
sig do
|
79
|
+
params(input: T.anything).returns(
|
80
|
+
T.any(T::Hash[T.anything, T.anything], T.anything)
|
81
|
+
)
|
82
|
+
end
|
83
|
+
def coerce_hash(input)
|
84
|
+
end
|
85
|
+
|
86
|
+
# @api private
|
87
|
+
sig do
|
88
|
+
params(input: T.anything).returns(
|
89
|
+
T.nilable(T::Hash[T.anything, T.anything])
|
90
|
+
)
|
91
|
+
end
|
92
|
+
def coerce_hash!(input)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
class << self
|
97
|
+
# @api private
|
98
|
+
sig do
|
99
|
+
params(lhs: T.anything, rhs: T.anything, concat: T::Boolean).returns(
|
100
|
+
T.anything
|
101
|
+
)
|
102
|
+
end
|
103
|
+
private def deep_merge_lr(lhs, rhs, concat: false)
|
104
|
+
end
|
105
|
+
|
106
|
+
# @api private
|
107
|
+
#
|
108
|
+
# Recursively merge one hash with another. If the values at a given key are not
|
109
|
+
# both hashes, just take the new value.
|
110
|
+
sig do
|
111
|
+
params(
|
112
|
+
values: T::Array[T.anything],
|
113
|
+
sentinel: T.nilable(T.anything),
|
114
|
+
concat: T::Boolean
|
115
|
+
).returns(T.anything)
|
116
|
+
end
|
117
|
+
def deep_merge(
|
118
|
+
*values,
|
119
|
+
# the value to return if no values are provided.
|
120
|
+
sentinel: nil,
|
121
|
+
# whether to merge sequences by concatenation.
|
122
|
+
concat: false
|
123
|
+
)
|
124
|
+
end
|
125
|
+
|
126
|
+
# @api private
|
127
|
+
sig do
|
128
|
+
params(
|
129
|
+
data:
|
130
|
+
T.any(
|
131
|
+
Turbopuffer::Internal::AnyHash,
|
132
|
+
T::Array[T.anything],
|
133
|
+
T.anything
|
134
|
+
),
|
135
|
+
pick:
|
136
|
+
T.nilable(
|
137
|
+
T.any(
|
138
|
+
Symbol,
|
139
|
+
Integer,
|
140
|
+
T::Array[T.any(Symbol, Integer)],
|
141
|
+
T.proc.params(arg0: T.anything).returns(T.anything)
|
142
|
+
)
|
143
|
+
),
|
144
|
+
blk: T.nilable(T.proc.returns(T.anything))
|
145
|
+
).returns(T.nilable(T.anything))
|
146
|
+
end
|
147
|
+
def dig(data, pick, &blk)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
class << self
|
152
|
+
# @api private
|
153
|
+
sig { params(uri: URI::Generic).returns(String) }
|
154
|
+
def uri_origin(uri)
|
155
|
+
end
|
156
|
+
|
157
|
+
# @api private
|
158
|
+
sig { params(path: T.any(String, T::Array[String])).returns(String) }
|
159
|
+
def interpolate_path(path)
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
class << self
|
164
|
+
# @api private
|
165
|
+
sig do
|
166
|
+
params(query: T.nilable(String)).returns(
|
167
|
+
T::Hash[String, T::Array[String]]
|
168
|
+
)
|
169
|
+
end
|
170
|
+
def decode_query(query)
|
171
|
+
end
|
172
|
+
|
173
|
+
# @api private
|
174
|
+
sig do
|
175
|
+
params(
|
176
|
+
query:
|
177
|
+
T.nilable(
|
178
|
+
T::Hash[String, T.nilable(T.any(T::Array[String], String))]
|
179
|
+
)
|
180
|
+
).returns(T.nilable(String))
|
181
|
+
end
|
182
|
+
def encode_query(query)
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
ParsedUri =
|
187
|
+
T.type_alias do
|
188
|
+
{
|
189
|
+
scheme: T.nilable(String),
|
190
|
+
host: T.nilable(String),
|
191
|
+
port: T.nilable(Integer),
|
192
|
+
path: T.nilable(String),
|
193
|
+
query: T::Hash[String, T::Array[String]]
|
194
|
+
}
|
195
|
+
end
|
196
|
+
|
197
|
+
class << self
|
198
|
+
# @api private
|
199
|
+
sig do
|
200
|
+
params(url: T.any(URI::Generic, String)).returns(
|
201
|
+
Turbopuffer::Internal::Util::ParsedUri
|
202
|
+
)
|
203
|
+
end
|
204
|
+
def parse_uri(url)
|
205
|
+
end
|
206
|
+
|
207
|
+
# @api private
|
208
|
+
sig do
|
209
|
+
params(parsed: Turbopuffer::Internal::Util::ParsedUri).returns(
|
210
|
+
URI::Generic
|
211
|
+
)
|
212
|
+
end
|
213
|
+
def unparse_uri(parsed)
|
214
|
+
end
|
215
|
+
|
216
|
+
# @api private
|
217
|
+
sig do
|
218
|
+
params(
|
219
|
+
lhs: Turbopuffer::Internal::Util::ParsedUri,
|
220
|
+
rhs: Turbopuffer::Internal::Util::ParsedUri
|
221
|
+
).returns(URI::Generic)
|
222
|
+
end
|
223
|
+
def join_parsed_uri(lhs, rhs)
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
class << self
|
228
|
+
# @api private
|
229
|
+
sig do
|
230
|
+
params(
|
231
|
+
headers:
|
232
|
+
T::Hash[
|
233
|
+
String,
|
234
|
+
T.nilable(
|
235
|
+
T.any(
|
236
|
+
String,
|
237
|
+
Integer,
|
238
|
+
T::Array[T.nilable(T.any(String, Integer))]
|
239
|
+
)
|
240
|
+
)
|
241
|
+
]
|
242
|
+
).returns(T::Hash[String, String])
|
243
|
+
end
|
244
|
+
def normalized_headers(*headers)
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
248
|
+
# @api private
|
249
|
+
#
|
250
|
+
# An adapter that satisfies the IO interface required by `::IO.copy_stream`
|
251
|
+
class ReadIOAdapter
|
252
|
+
# @api private
|
253
|
+
sig { returns(T.nilable(T::Boolean)) }
|
254
|
+
def close?
|
255
|
+
end
|
256
|
+
|
257
|
+
# @api private
|
258
|
+
sig { void }
|
259
|
+
def close
|
260
|
+
end
|
261
|
+
|
262
|
+
# @api private
|
263
|
+
sig { params(max_len: T.nilable(Integer)).returns(String) }
|
264
|
+
private def read_enum(max_len)
|
265
|
+
end
|
266
|
+
|
267
|
+
# @api private
|
268
|
+
sig do
|
269
|
+
params(
|
270
|
+
max_len: T.nilable(Integer),
|
271
|
+
out_string: T.nilable(String)
|
272
|
+
).returns(T.nilable(String))
|
273
|
+
end
|
274
|
+
def read(max_len = nil, out_string = nil)
|
275
|
+
end
|
276
|
+
|
277
|
+
# @api private
|
278
|
+
sig do
|
279
|
+
params(
|
280
|
+
src: T.any(String, Pathname, StringIO, T::Enumerable[String]),
|
281
|
+
blk: T.proc.params(arg0: String).void
|
282
|
+
).returns(T.attached_class)
|
283
|
+
end
|
284
|
+
def self.new(src, &blk)
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
class << self
|
289
|
+
sig do
|
290
|
+
params(blk: T.proc.params(y: Enumerator::Yielder).void).returns(
|
291
|
+
T::Enumerable[String]
|
292
|
+
)
|
293
|
+
end
|
294
|
+
def writable_enum(&blk)
|
295
|
+
end
|
296
|
+
end
|
297
|
+
|
298
|
+
JSON_CONTENT =
|
299
|
+
T.let(%r{^application/(?:vnd(?:\.[^.]+)*\+)?json(?!l)}, Regexp)
|
300
|
+
JSONL_CONTENT =
|
301
|
+
T.let(%r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}, Regexp)
|
302
|
+
|
303
|
+
class << self
|
304
|
+
# @api private
|
305
|
+
sig do
|
306
|
+
params(
|
307
|
+
y: Enumerator::Yielder,
|
308
|
+
val: T.anything,
|
309
|
+
closing: T::Array[T.proc.void],
|
310
|
+
content_type: T.nilable(String)
|
311
|
+
).void
|
312
|
+
end
|
313
|
+
private def write_multipart_content(
|
314
|
+
y,
|
315
|
+
val:,
|
316
|
+
closing:,
|
317
|
+
content_type: nil
|
318
|
+
)
|
319
|
+
end
|
320
|
+
|
321
|
+
# @api private
|
322
|
+
sig do
|
323
|
+
params(
|
324
|
+
y: Enumerator::Yielder,
|
325
|
+
boundary: String,
|
326
|
+
key: T.any(Symbol, String),
|
327
|
+
val: T.anything,
|
328
|
+
closing: T::Array[T.proc.void]
|
329
|
+
).void
|
330
|
+
end
|
331
|
+
private def write_multipart_chunk(y, boundary:, key:, val:, closing:)
|
332
|
+
end
|
333
|
+
|
334
|
+
# @api private
|
335
|
+
#
|
336
|
+
# https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.1.md#special-considerations-for-multipart-content
|
337
|
+
sig do
|
338
|
+
params(body: T.anything).returns([String, T::Enumerable[String]])
|
339
|
+
end
|
340
|
+
private def encode_multipart_streaming(body)
|
341
|
+
end
|
342
|
+
|
343
|
+
# @api private
|
344
|
+
sig do
|
345
|
+
params(headers: T::Hash[String, String], body: T.anything).returns(
|
346
|
+
T.anything
|
347
|
+
)
|
348
|
+
end
|
349
|
+
def encode_content(headers, body)
|
350
|
+
end
|
351
|
+
|
352
|
+
# @api private
|
353
|
+
#
|
354
|
+
# https://www.iana.org/assignments/character-sets/character-sets.xhtml
|
355
|
+
sig { params(content_type: String, text: String).void }
|
356
|
+
def force_charset!(content_type, text:)
|
357
|
+
end
|
358
|
+
|
359
|
+
# @api private
|
360
|
+
#
|
361
|
+
# Assumes each chunk in stream has `Encoding::BINARY`.
|
362
|
+
sig do
|
363
|
+
params(
|
364
|
+
headers: T.any(T::Hash[String, String], Net::HTTPHeader),
|
365
|
+
stream: T::Enumerable[String],
|
366
|
+
suppress_error: T::Boolean
|
367
|
+
).returns(T.anything)
|
368
|
+
end
|
369
|
+
def decode_content(headers, stream:, suppress_error: false)
|
370
|
+
end
|
371
|
+
end
|
372
|
+
|
373
|
+
class << self
|
374
|
+
# @api private
|
375
|
+
#
|
376
|
+
# https://doc.rust-lang.org/std/iter/trait.FusedIterator.html
|
377
|
+
sig do
|
378
|
+
params(
|
379
|
+
enum: T::Enumerable[T.anything],
|
380
|
+
external: T::Boolean,
|
381
|
+
close: T.proc.void
|
382
|
+
).returns(T::Enumerable[T.anything])
|
383
|
+
end
|
384
|
+
def fused_enum(enum, external: false, &close)
|
385
|
+
end
|
386
|
+
|
387
|
+
# @api private
|
388
|
+
sig { params(enum: T.nilable(T::Enumerable[T.anything])).void }
|
389
|
+
def close_fused!(enum)
|
390
|
+
end
|
391
|
+
|
392
|
+
# @api private
|
393
|
+
sig do
|
394
|
+
params(
|
395
|
+
enum: T.nilable(T::Enumerable[T.anything]),
|
396
|
+
blk: T.proc.params(arg0: Enumerator::Yielder).void
|
397
|
+
).returns(T::Enumerable[T.anything])
|
398
|
+
end
|
399
|
+
def chain_fused(enum, &blk)
|
400
|
+
end
|
401
|
+
end
|
402
|
+
|
403
|
+
ServerSentEvent =
|
404
|
+
T.type_alias do
|
405
|
+
{
|
406
|
+
event: T.nilable(String),
|
407
|
+
data: T.nilable(String),
|
408
|
+
id: T.nilable(String),
|
409
|
+
retry: T.nilable(Integer)
|
410
|
+
}
|
411
|
+
end
|
412
|
+
|
413
|
+
class << self
|
414
|
+
# @api private
|
415
|
+
#
|
416
|
+
# Assumes Strings have been forced into having `Encoding::BINARY`.
|
417
|
+
#
|
418
|
+
# This decoder is responsible for reassembling lines split across multiple
|
419
|
+
# fragments.
|
420
|
+
sig do
|
421
|
+
params(enum: T::Enumerable[String]).returns(T::Enumerable[String])
|
422
|
+
end
|
423
|
+
def decode_lines(enum)
|
424
|
+
end
|
425
|
+
|
426
|
+
# @api private
|
427
|
+
#
|
428
|
+
# https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream
|
429
|
+
#
|
430
|
+
# Assumes that `lines` has been decoded with `#decode_lines`.
|
431
|
+
sig do
|
432
|
+
params(lines: T::Enumerable[String]).returns(
|
433
|
+
T::Enumerable[Turbopuffer::Internal::Util::ServerSentEvent]
|
434
|
+
)
|
435
|
+
end
|
436
|
+
def decode_sse(lines)
|
437
|
+
end
|
438
|
+
end
|
439
|
+
|
440
|
+
# @api private
|
441
|
+
module SorbetRuntimeSupport
|
442
|
+
class MissingSorbetRuntimeError < ::RuntimeError
|
443
|
+
end
|
444
|
+
|
445
|
+
# @api private
|
446
|
+
sig { returns(T::Hash[Symbol, T.anything]) }
|
447
|
+
private def sorbet_runtime_constants
|
448
|
+
end
|
449
|
+
|
450
|
+
# @api private
|
451
|
+
sig { params(name: Symbol).void }
|
452
|
+
def const_missing(name)
|
453
|
+
end
|
454
|
+
|
455
|
+
# @api private
|
456
|
+
sig { params(name: Symbol).returns(T::Boolean) }
|
457
|
+
def sorbet_constant_defined?(name)
|
458
|
+
end
|
459
|
+
|
460
|
+
# @api private
|
461
|
+
sig { params(name: Symbol, blk: T.proc.returns(T.anything)).void }
|
462
|
+
def define_sorbet_constant!(name, &blk)
|
463
|
+
end
|
464
|
+
|
465
|
+
# @api private
|
466
|
+
sig { returns(T.anything) }
|
467
|
+
def to_sorbet_type
|
468
|
+
end
|
469
|
+
|
470
|
+
class << self
|
471
|
+
# @api private
|
472
|
+
sig do
|
473
|
+
params(
|
474
|
+
type:
|
475
|
+
T.any(
|
476
|
+
Turbopuffer::Internal::Util::SorbetRuntimeSupport,
|
477
|
+
T.anything
|
478
|
+
)
|
479
|
+
).returns(T.anything)
|
480
|
+
end
|
481
|
+
def to_sorbet_type(type)
|
482
|
+
end
|
483
|
+
end
|
484
|
+
end
|
485
|
+
end
|
486
|
+
end
|
487
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module Turbopuffer
|
4
|
+
module Internal
|
5
|
+
extend Turbopuffer::Internal::Util::SorbetRuntimeSupport
|
6
|
+
|
7
|
+
# Due to the current WIP status of Shapes support in Sorbet, types referencing
|
8
|
+
# this alias might be refined in the future.
|
9
|
+
AnyHash = T.type_alias { T::Hash[Symbol, T.anything] }
|
10
|
+
|
11
|
+
FileInput =
|
12
|
+
T.type_alias do
|
13
|
+
T.any(Pathname, StringIO, IO, String, Turbopuffer::FilePart)
|
14
|
+
end
|
15
|
+
|
16
|
+
OMIT = T.let(Object.new.freeze, T.anything)
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module Turbopuffer
|
4
|
+
module Models
|
5
|
+
# The schema for an attribute attached to a document.
|
6
|
+
module AttributeSchema
|
7
|
+
extend Turbopuffer::Internal::Type::Union
|
8
|
+
|
9
|
+
Variants =
|
10
|
+
T.type_alias { T.any(String, Turbopuffer::AttributeSchemaConfig) }
|
11
|
+
|
12
|
+
sig { override.returns(T::Array[Turbopuffer::AttributeSchema::Variants]) }
|
13
|
+
def self.variants
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module Turbopuffer
|
4
|
+
module Models
|
5
|
+
class AttributeSchemaConfig < Turbopuffer::Internal::Type::BaseModel
|
6
|
+
OrHash =
|
7
|
+
T.type_alias do
|
8
|
+
T.any(
|
9
|
+
Turbopuffer::AttributeSchemaConfig,
|
10
|
+
Turbopuffer::Internal::AnyHash
|
11
|
+
)
|
12
|
+
end
|
13
|
+
|
14
|
+
# Whether to create an approximate nearest neighbor index for the attribute.
|
15
|
+
sig { returns(T.nilable(T::Boolean)) }
|
16
|
+
attr_reader :ann
|
17
|
+
|
18
|
+
sig { params(ann: T::Boolean).void }
|
19
|
+
attr_writer :ann
|
20
|
+
|
21
|
+
# Whether or not the attributes can be used in filters.
|
22
|
+
sig { returns(T.nilable(T::Boolean)) }
|
23
|
+
attr_reader :filterable
|
24
|
+
|
25
|
+
sig { params(filterable: T::Boolean).void }
|
26
|
+
attr_writer :filterable
|
27
|
+
|
28
|
+
# Whether this attribute can be used as part of a BM25 full-text search. Requires
|
29
|
+
# the `string` or `[]string` type, and by default, BM25-enabled attributes are not
|
30
|
+
# filterable. You can override this by setting `filterable: true`.
|
31
|
+
sig do
|
32
|
+
returns(T.nilable(T.any(T::Boolean, Turbopuffer::FullTextSearchConfig)))
|
33
|
+
end
|
34
|
+
attr_reader :full_text_search
|
35
|
+
|
36
|
+
sig do
|
37
|
+
params(
|
38
|
+
full_text_search:
|
39
|
+
T.any(T::Boolean, Turbopuffer::FullTextSearchConfig::OrHash)
|
40
|
+
).void
|
41
|
+
end
|
42
|
+
attr_writer :full_text_search
|
43
|
+
|
44
|
+
# The data type of the attribute. Valid values: string, int, uint, uuid, datetime,
|
45
|
+
# bool, []string, []int, []uint, []uuid, []datetime, [DIMS]f16, [DIMS]f32.
|
46
|
+
sig { returns(T.nilable(String)) }
|
47
|
+
attr_reader :type
|
48
|
+
|
49
|
+
sig { params(type: String).void }
|
50
|
+
attr_writer :type
|
51
|
+
|
52
|
+
# Detailed configuration for an attribute attached to a document.
|
53
|
+
sig do
|
54
|
+
params(
|
55
|
+
ann: T::Boolean,
|
56
|
+
filterable: T::Boolean,
|
57
|
+
full_text_search:
|
58
|
+
T.any(T::Boolean, Turbopuffer::FullTextSearchConfig::OrHash),
|
59
|
+
type: String
|
60
|
+
).returns(T.attached_class)
|
61
|
+
end
|
62
|
+
def self.new(
|
63
|
+
# Whether to create an approximate nearest neighbor index for the attribute.
|
64
|
+
ann: nil,
|
65
|
+
# Whether or not the attributes can be used in filters.
|
66
|
+
filterable: nil,
|
67
|
+
# Whether this attribute can be used as part of a BM25 full-text search. Requires
|
68
|
+
# the `string` or `[]string` type, and by default, BM25-enabled attributes are not
|
69
|
+
# filterable. You can override this by setting `filterable: true`.
|
70
|
+
full_text_search: nil,
|
71
|
+
# The data type of the attribute. Valid values: string, int, uint, uuid, datetime,
|
72
|
+
# bool, []string, []int, []uint, []uuid, []datetime, [DIMS]f16, [DIMS]f32.
|
73
|
+
type: nil
|
74
|
+
)
|
75
|
+
end
|
76
|
+
|
77
|
+
sig do
|
78
|
+
override.returns(
|
79
|
+
{
|
80
|
+
ann: T::Boolean,
|
81
|
+
filterable: T::Boolean,
|
82
|
+
full_text_search:
|
83
|
+
T.any(T::Boolean, Turbopuffer::FullTextSearchConfig),
|
84
|
+
type: String
|
85
|
+
}
|
86
|
+
)
|
87
|
+
end
|
88
|
+
def to_hash
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# typed: strong
|
2
|
+
|
3
|
+
module Turbopuffer
|
4
|
+
module Models
|
5
|
+
class ClientNamespacesParams < Turbopuffer::Internal::Type::BaseModel
|
6
|
+
extend Turbopuffer::Internal::Type::RequestParameters::Converter
|
7
|
+
include Turbopuffer::Internal::Type::RequestParameters
|
8
|
+
|
9
|
+
OrHash =
|
10
|
+
T.type_alias do
|
11
|
+
T.any(
|
12
|
+
Turbopuffer::ClientNamespacesParams,
|
13
|
+
Turbopuffer::Internal::AnyHash
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
# Retrieve the next page of results.
|
18
|
+
sig { returns(T.nilable(String)) }
|
19
|
+
attr_reader :cursor
|
20
|
+
|
21
|
+
sig { params(cursor: String).void }
|
22
|
+
attr_writer :cursor
|
23
|
+
|
24
|
+
# Limit the number of results per page.
|
25
|
+
sig { returns(T.nilable(Integer)) }
|
26
|
+
attr_reader :page_size
|
27
|
+
|
28
|
+
sig { params(page_size: Integer).void }
|
29
|
+
attr_writer :page_size
|
30
|
+
|
31
|
+
# Retrieve only the namespaces that match the prefix.
|
32
|
+
sig { returns(T.nilable(String)) }
|
33
|
+
attr_reader :prefix
|
34
|
+
|
35
|
+
sig { params(prefix: String).void }
|
36
|
+
attr_writer :prefix
|
37
|
+
|
38
|
+
sig do
|
39
|
+
params(
|
40
|
+
cursor: String,
|
41
|
+
page_size: Integer,
|
42
|
+
prefix: String,
|
43
|
+
request_options: Turbopuffer::RequestOptions::OrHash
|
44
|
+
).returns(T.attached_class)
|
45
|
+
end
|
46
|
+
def self.new(
|
47
|
+
# Retrieve the next page of results.
|
48
|
+
cursor: nil,
|
49
|
+
# Limit the number of results per page.
|
50
|
+
page_size: nil,
|
51
|
+
# Retrieve only the namespaces that match the prefix.
|
52
|
+
prefix: nil,
|
53
|
+
request_options: {}
|
54
|
+
)
|
55
|
+
end
|
56
|
+
|
57
|
+
sig do
|
58
|
+
override.returns(
|
59
|
+
{
|
60
|
+
cursor: String,
|
61
|
+
page_size: Integer,
|
62
|
+
prefix: String,
|
63
|
+
request_options: Turbopuffer::RequestOptions
|
64
|
+
}
|
65
|
+
)
|
66
|
+
end
|
67
|
+
def to_hash
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|