turbopuffer 0.1.0 → 1.2.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.
Files changed (207) hide show
  1. checksums.yaml +4 -4
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +205 -0
  4. data/README.md +270 -40
  5. data/SECURITY.md +27 -0
  6. data/lib/turbopuffer/client.rb +122 -16
  7. data/lib/turbopuffer/errors.rb +228 -0
  8. data/lib/turbopuffer/file_part.rb +55 -0
  9. data/lib/turbopuffer/internal/namespace_page.rb +86 -0
  10. data/lib/turbopuffer/internal/transport/base_client.rb +567 -0
  11. data/lib/turbopuffer/internal/transport/pooled_net_requester.rb +201 -0
  12. data/lib/turbopuffer/internal/type/array_of.rb +168 -0
  13. data/lib/turbopuffer/internal/type/base_model.rb +529 -0
  14. data/lib/turbopuffer/internal/type/base_page.rb +55 -0
  15. data/lib/turbopuffer/internal/type/boolean.rb +77 -0
  16. data/lib/turbopuffer/internal/type/converter.rb +327 -0
  17. data/lib/turbopuffer/internal/type/enum.rb +152 -0
  18. data/lib/turbopuffer/internal/type/file_input.rb +108 -0
  19. data/lib/turbopuffer/internal/type/hash_of.rb +188 -0
  20. data/lib/turbopuffer/internal/type/request_parameters.rb +42 -0
  21. data/lib/turbopuffer/internal/type/union.rb +254 -0
  22. data/lib/turbopuffer/internal/type/unknown.rb +81 -0
  23. data/lib/turbopuffer/internal/util.rb +914 -0
  24. data/lib/turbopuffer/internal.rb +20 -0
  25. data/lib/turbopuffer/models/aggregation_group.rb +8 -0
  26. data/lib/turbopuffer/models/attribute_schema.rb +19 -0
  27. data/lib/turbopuffer/models/attribute_schema_config.rb +56 -0
  28. data/lib/turbopuffer/models/attribute_type.rb +7 -0
  29. data/lib/turbopuffer/models/client_namespaces_params.rb +38 -0
  30. data/lib/turbopuffer/models/columns.rb +64 -0
  31. data/lib/turbopuffer/models/distance_metric.rb +19 -0
  32. data/lib/turbopuffer/models/full_text_search.rb +20 -0
  33. data/lib/turbopuffer/models/full_text_search_config.rb +83 -0
  34. data/lib/turbopuffer/models/id.rb +19 -0
  35. data/lib/turbopuffer/models/include_attributes.rb +22 -0
  36. data/lib/turbopuffer/models/language.rb +32 -0
  37. data/lib/turbopuffer/models/namespace_delete_all_params.rb +20 -0
  38. data/lib/turbopuffer/models/namespace_delete_all_response.rb +19 -0
  39. data/lib/turbopuffer/models/namespace_explain_query_params.rb +137 -0
  40. data/lib/turbopuffer/models/namespace_explain_query_response.rb +19 -0
  41. data/lib/turbopuffer/models/namespace_hint_cache_warm_params.rb +20 -0
  42. data/lib/turbopuffer/models/namespace_hint_cache_warm_response.rb +26 -0
  43. data/lib/turbopuffer/models/namespace_metadata.rb +43 -0
  44. data/lib/turbopuffer/models/namespace_metadata_params.rb +20 -0
  45. data/lib/turbopuffer/models/namespace_multi_query_params.rb +73 -0
  46. data/lib/turbopuffer/models/namespace_multi_query_response.rb +58 -0
  47. data/lib/turbopuffer/models/namespace_query_params.rb +137 -0
  48. data/lib/turbopuffer/models/namespace_query_response.rb +49 -0
  49. data/lib/turbopuffer/models/namespace_recall_params.rb +66 -0
  50. data/lib/turbopuffer/models/namespace_recall_response.rb +68 -0
  51. data/lib/turbopuffer/models/namespace_schema_params.rb +20 -0
  52. data/lib/turbopuffer/models/namespace_schema_response.rb +8 -0
  53. data/lib/turbopuffer/models/namespace_summary.rb +19 -0
  54. data/lib/turbopuffer/models/namespace_update_schema_params.rb +29 -0
  55. data/lib/turbopuffer/models/namespace_update_schema_response.rb +9 -0
  56. data/lib/turbopuffer/models/namespace_write_params.rb +158 -0
  57. data/lib/turbopuffer/models/namespace_write_response.rb +67 -0
  58. data/lib/turbopuffer/models/query.rb +81 -0
  59. data/lib/turbopuffer/models/query_billing.rb +26 -0
  60. data/lib/turbopuffer/models/query_performance.rb +63 -0
  61. data/lib/turbopuffer/models/row.rb +46 -0
  62. data/lib/turbopuffer/models/tokenizer.rb +19 -0
  63. data/lib/turbopuffer/models/vector.rb +22 -0
  64. data/lib/turbopuffer/models/vector_encoding.rb +16 -0
  65. data/lib/turbopuffer/models/write_billing.rb +26 -0
  66. data/lib/turbopuffer/models.rb +106 -0
  67. data/lib/turbopuffer/namespace.rb +14 -50
  68. data/lib/turbopuffer/request_options.rb +77 -0
  69. data/lib/turbopuffer/resources/namespaces.rb +366 -0
  70. data/lib/turbopuffer/version.rb +1 -1
  71. data/lib/turbopuffer.rb +92 -4
  72. data/manifest.yaml +15 -0
  73. data/rbi/turbopuffer/client.rbi +91 -0
  74. data/rbi/turbopuffer/errors.rbi +205 -0
  75. data/rbi/turbopuffer/file_part.rbi +37 -0
  76. data/rbi/turbopuffer/internal/namespace_page.rbi +22 -0
  77. data/rbi/turbopuffer/internal/transport/base_client.rbi +297 -0
  78. data/rbi/turbopuffer/internal/transport/pooled_net_requester.rbi +80 -0
  79. data/rbi/turbopuffer/internal/type/array_of.rbi +104 -0
  80. data/rbi/turbopuffer/internal/type/base_model.rbi +304 -0
  81. data/rbi/turbopuffer/internal/type/base_page.rbi +43 -0
  82. data/rbi/turbopuffer/internal/type/boolean.rbi +58 -0
  83. data/rbi/turbopuffer/internal/type/converter.rbi +216 -0
  84. data/rbi/turbopuffer/internal/type/enum.rbi +82 -0
  85. data/rbi/turbopuffer/internal/type/file_input.rbi +59 -0
  86. data/rbi/turbopuffer/internal/type/hash_of.rbi +104 -0
  87. data/rbi/turbopuffer/internal/type/request_parameters.rbi +31 -0
  88. data/rbi/turbopuffer/internal/type/union.rbi +128 -0
  89. data/rbi/turbopuffer/internal/type/unknown.rbi +58 -0
  90. data/rbi/turbopuffer/internal/util.rbi +487 -0
  91. data/rbi/turbopuffer/internal.rbi +18 -0
  92. data/rbi/turbopuffer/models/aggregation_group.rbi +13 -0
  93. data/rbi/turbopuffer/models/attribute_schema.rbi +17 -0
  94. data/rbi/turbopuffer/models/attribute_schema_config.rbi +103 -0
  95. data/rbi/turbopuffer/models/attribute_type.rbi +7 -0
  96. data/rbi/turbopuffer/models/client_namespaces_params.rbi +71 -0
  97. data/rbi/turbopuffer/models/columns.rbi +82 -0
  98. data/rbi/turbopuffer/models/distance_metric.rbi +27 -0
  99. data/rbi/turbopuffer/models/full_text_search.rbi +19 -0
  100. data/rbi/turbopuffer/models/full_text_search_config.rbi +133 -0
  101. data/rbi/turbopuffer/models/id.rbi +16 -0
  102. data/rbi/turbopuffer/models/include_attributes.rbi +24 -0
  103. data/rbi/turbopuffer/models/language.rbi +36 -0
  104. data/rbi/turbopuffer/models/namespace_delete_all_params.rbi +41 -0
  105. data/rbi/turbopuffer/models/namespace_delete_all_response.rbi +31 -0
  106. data/rbi/turbopuffer/models/namespace_explain_query_params.rbi +273 -0
  107. data/rbi/turbopuffer/models/namespace_explain_query_response.rbi +34 -0
  108. data/rbi/turbopuffer/models/namespace_hint_cache_warm_params.rbi +41 -0
  109. data/rbi/turbopuffer/models/namespace_hint_cache_warm_response.rbi +38 -0
  110. data/rbi/turbopuffer/models/namespace_metadata.rbi +62 -0
  111. data/rbi/turbopuffer/models/namespace_metadata_params.rbi +41 -0
  112. data/rbi/turbopuffer/models/namespace_multi_query_params.rbi +175 -0
  113. data/rbi/turbopuffer/models/namespace_multi_query_response.rbi +121 -0
  114. data/rbi/turbopuffer/models/namespace_query_params.rbi +267 -0
  115. data/rbi/turbopuffer/models/namespace_query_response.rbi +84 -0
  116. data/rbi/turbopuffer/models/namespace_recall_params.rbi +106 -0
  117. data/rbi/turbopuffer/models/namespace_recall_response.rbi +134 -0
  118. data/rbi/turbopuffer/models/namespace_schema_params.rbi +41 -0
  119. data/rbi/turbopuffer/models/namespace_schema_response.rbi +11 -0
  120. data/rbi/turbopuffer/models/namespace_summary.rbi +28 -0
  121. data/rbi/turbopuffer/models/namespace_update_schema_params.rbi +80 -0
  122. data/rbi/turbopuffer/models/namespace_update_schema_response.rbi +11 -0
  123. data/rbi/turbopuffer/models/namespace_write_params.rbi +290 -0
  124. data/rbi/turbopuffer/models/namespace_write_response.rbi +101 -0
  125. data/rbi/turbopuffer/models/query.rbi +132 -0
  126. data/rbi/turbopuffer/models/query_billing.rbi +46 -0
  127. data/rbi/turbopuffer/models/query_performance.rbi +82 -0
  128. data/rbi/turbopuffer/models/row.rbi +47 -0
  129. data/rbi/turbopuffer/models/tokenizer.rbi +24 -0
  130. data/rbi/turbopuffer/models/vector.rbi +22 -0
  131. data/rbi/turbopuffer/models/vector_encoding.rbi +22 -0
  132. data/rbi/turbopuffer/models/write_billing.rbi +49 -0
  133. data/rbi/turbopuffer/models.rbi +72 -0
  134. data/rbi/turbopuffer/namespace.rbi +8 -0
  135. data/rbi/turbopuffer/request_options.rbi +59 -0
  136. data/rbi/turbopuffer/resources/namespaces.rbi +304 -0
  137. data/rbi/turbopuffer/version.rbi +5 -0
  138. data/sig/turbopuffer/client.rbs +41 -0
  139. data/sig/turbopuffer/errors.rbs +117 -0
  140. data/sig/turbopuffer/file_part.rbs +21 -0
  141. data/sig/turbopuffer/internal/namespace_page.rbs +13 -0
  142. data/sig/turbopuffer/internal/transport/base_client.rbs +131 -0
  143. data/sig/turbopuffer/internal/transport/pooled_net_requester.rbs +45 -0
  144. data/sig/turbopuffer/internal/type/array_of.rbs +48 -0
  145. data/sig/turbopuffer/internal/type/base_model.rbs +102 -0
  146. data/sig/turbopuffer/internal/type/base_page.rbs +24 -0
  147. data/sig/turbopuffer/internal/type/boolean.rbs +26 -0
  148. data/sig/turbopuffer/internal/type/converter.rbs +79 -0
  149. data/sig/turbopuffer/internal/type/enum.rbs +32 -0
  150. data/sig/turbopuffer/internal/type/file_input.rbs +25 -0
  151. data/sig/turbopuffer/internal/type/hash_of.rbs +48 -0
  152. data/sig/turbopuffer/internal/type/request_parameters.rbs +19 -0
  153. data/sig/turbopuffer/internal/type/union.rbs +52 -0
  154. data/sig/turbopuffer/internal/type/unknown.rbs +26 -0
  155. data/sig/turbopuffer/internal/util.rbs +185 -0
  156. data/sig/turbopuffer/internal.rbs +9 -0
  157. data/sig/turbopuffer/models/aggregation_group.rbs +7 -0
  158. data/sig/turbopuffer/models/attribute_schema.rbs +11 -0
  159. data/sig/turbopuffer/models/attribute_schema_config.rbs +52 -0
  160. data/sig/turbopuffer/models/attribute_type.rbs +5 -0
  161. data/sig/turbopuffer/models/client_namespaces_params.rbs +38 -0
  162. data/sig/turbopuffer/models/columns.rbs +42 -0
  163. data/sig/turbopuffer/models/distance_metric.rbs +17 -0
  164. data/sig/turbopuffer/models/full_text_search.rbs +11 -0
  165. data/sig/turbopuffer/models/full_text_search_config.rbs +75 -0
  166. data/sig/turbopuffer/models/id.rbs +11 -0
  167. data/sig/turbopuffer/models/include_attributes.rbs +13 -0
  168. data/sig/turbopuffer/models/language.rbs +48 -0
  169. data/sig/turbopuffer/models/namespace_delete_all_params.rbs +25 -0
  170. data/sig/turbopuffer/models/namespace_delete_all_response.rbs +13 -0
  171. data/sig/turbopuffer/models/namespace_explain_query_params.rbs +141 -0
  172. data/sig/turbopuffer/models/namespace_explain_query_response.rbs +15 -0
  173. data/sig/turbopuffer/models/namespace_hint_cache_warm_params.rbs +25 -0
  174. data/sig/turbopuffer/models/namespace_hint_cache_warm_response.rbs +18 -0
  175. data/sig/turbopuffer/models/namespace_metadata.rbs +35 -0
  176. data/sig/turbopuffer/models/namespace_metadata_params.rbs +25 -0
  177. data/sig/turbopuffer/models/namespace_multi_query_params.rbs +86 -0
  178. data/sig/turbopuffer/models/namespace_multi_query_response.rbs +65 -0
  179. data/sig/turbopuffer/models/namespace_query_params.rbs +139 -0
  180. data/sig/turbopuffer/models/namespace_query_response.rbs +48 -0
  181. data/sig/turbopuffer/models/namespace_recall_params.rbs +63 -0
  182. data/sig/turbopuffer/models/namespace_recall_response.rbs +61 -0
  183. data/sig/turbopuffer/models/namespace_schema_params.rbs +25 -0
  184. data/sig/turbopuffer/models/namespace_schema_response.rbs +8 -0
  185. data/sig/turbopuffer/models/namespace_summary.rbs +13 -0
  186. data/sig/turbopuffer/models/namespace_update_schema_params.rbs +37 -0
  187. data/sig/turbopuffer/models/namespace_update_schema_response.rbs +8 -0
  188. data/sig/turbopuffer/models/namespace_write_params.rbs +156 -0
  189. data/sig/turbopuffer/models/namespace_write_response.rbs +56 -0
  190. data/sig/turbopuffer/models/query.rbs +75 -0
  191. data/sig/turbopuffer/models/query_billing.rbs +25 -0
  192. data/sig/turbopuffer/models/query_performance.rbs +45 -0
  193. data/sig/turbopuffer/models/row.rbs +24 -0
  194. data/sig/turbopuffer/models/tokenizer.rbs +16 -0
  195. data/sig/turbopuffer/models/vector.rbs +13 -0
  196. data/sig/turbopuffer/models/vector_encoding.rbs +14 -0
  197. data/sig/turbopuffer/models/write_billing.rbs +27 -0
  198. data/sig/turbopuffer/models.rbs +65 -0
  199. data/sig/turbopuffer/namespace.rbs +5 -0
  200. data/sig/turbopuffer/request_options.rbs +36 -0
  201. data/sig/turbopuffer/resources/namespaces.rbs +99 -0
  202. data/sig/turbopuffer/version.rbs +3 -0
  203. metadata +218 -29
  204. data/.standard.yml +0 -3
  205. data/LICENSE.txt +0 -21
  206. data/Rakefile +0 -10
  207. data/sig/turbopuffer.rbs +0 -4
@@ -0,0 +1,80 @@
1
+ # typed: strong
2
+
3
+ module Turbopuffer
4
+ module Internal
5
+ module Transport
6
+ # @api private
7
+ class PooledNetRequester
8
+ extend Turbopuffer::Internal::Util::SorbetRuntimeSupport
9
+
10
+ Request =
11
+ T.type_alias do
12
+ {
13
+ method: Symbol,
14
+ url: URI::Generic,
15
+ headers: T::Hash[String, String],
16
+ body: T.anything,
17
+ deadline: Float
18
+ }
19
+ end
20
+
21
+ # from the golang stdlib
22
+ # https://github.com/golang/go/blob/c8eced8580028328fde7c03cbfcb720ce15b2358/src/net/http/transport.go#L49
23
+ KEEP_ALIVE_TIMEOUT = 30
24
+
25
+ DEFAULT_MAX_CONNECTIONS = T.let(T.unsafe(nil), Integer)
26
+
27
+ class << self
28
+ # @api private
29
+ sig { params(url: URI::Generic).returns(Net::HTTP) }
30
+ def connect(url)
31
+ end
32
+
33
+ # @api private
34
+ sig { params(conn: Net::HTTP, deadline: Float).void }
35
+ def calibrate_socket_timeout(conn, deadline)
36
+ end
37
+
38
+ # @api private
39
+ sig do
40
+ params(
41
+ request:
42
+ Turbopuffer::Internal::Transport::PooledNetRequester::Request,
43
+ blk: T.proc.params(arg0: String).void
44
+ ).returns([Net::HTTPGenericRequest, T.proc.void])
45
+ end
46
+ def build_request(request, &blk)
47
+ end
48
+ end
49
+
50
+ # @api private
51
+ sig do
52
+ params(
53
+ url: URI::Generic,
54
+ deadline: Float,
55
+ blk: T.proc.params(arg0: Net::HTTP).void
56
+ ).void
57
+ end
58
+ private def with_pool(url, deadline:, &blk)
59
+ end
60
+
61
+ # @api private
62
+ sig do
63
+ params(
64
+ request:
65
+ Turbopuffer::Internal::Transport::PooledNetRequester::Request
66
+ ).returns([Integer, Net::HTTPResponse, T::Enumerable[String]])
67
+ end
68
+ def execute(request)
69
+ end
70
+
71
+ # @api private
72
+ sig { params(size: Integer).returns(T.attached_class) }
73
+ def self.new(
74
+ size: Turbopuffer::Internal::Transport::PooledNetRequester::DEFAULT_MAX_CONNECTIONS
75
+ )
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,104 @@
1
+ # typed: strong
2
+
3
+ module Turbopuffer
4
+ module Internal
5
+ module Type
6
+ # @api private
7
+ #
8
+ # Array of items of a given type.
9
+ class ArrayOf
10
+ include Turbopuffer::Internal::Type::Converter
11
+ include Turbopuffer::Internal::Util::SorbetRuntimeSupport
12
+
13
+ abstract!
14
+
15
+ Elem = type_member(:out)
16
+
17
+ sig do
18
+ params(
19
+ type_info:
20
+ T.any(
21
+ Turbopuffer::Internal::AnyHash,
22
+ T.proc.returns(Turbopuffer::Internal::Type::Converter::Input),
23
+ Turbopuffer::Internal::Type::Converter::Input
24
+ ),
25
+ spec: Turbopuffer::Internal::AnyHash
26
+ ).returns(T.attached_class)
27
+ end
28
+ def self.[](type_info, spec = {})
29
+ end
30
+
31
+ sig { params(other: T.anything).returns(T::Boolean) }
32
+ def ===(other)
33
+ end
34
+
35
+ sig { params(other: T.anything).returns(T::Boolean) }
36
+ def ==(other)
37
+ end
38
+
39
+ sig { returns(Integer) }
40
+ def hash
41
+ end
42
+
43
+ # @api private
44
+ sig do
45
+ override
46
+ .params(
47
+ value: T.any(T::Array[T.anything], T.anything),
48
+ state: Turbopuffer::Internal::Type::Converter::CoerceState
49
+ )
50
+ .returns(T.any(T::Array[T.anything], T.anything))
51
+ end
52
+ def coerce(value, state:)
53
+ end
54
+
55
+ # @api private
56
+ sig do
57
+ override
58
+ .params(
59
+ value: T.any(T::Array[T.anything], T.anything),
60
+ state: Turbopuffer::Internal::Type::Converter::DumpState
61
+ )
62
+ .returns(T.any(T::Array[T.anything], T.anything))
63
+ end
64
+ def dump(value, state:)
65
+ end
66
+
67
+ # @api private
68
+ sig { returns(T.anything) }
69
+ def to_sorbet_type
70
+ end
71
+
72
+ # @api private
73
+ sig { returns(Elem) }
74
+ protected def item_type
75
+ end
76
+
77
+ # @api private
78
+ sig { returns(T::Boolean) }
79
+ protected def nilable?
80
+ end
81
+
82
+ # @api private
83
+ sig do
84
+ params(
85
+ type_info:
86
+ T.any(
87
+ Turbopuffer::Internal::AnyHash,
88
+ T.proc.returns(Turbopuffer::Internal::Type::Converter::Input),
89
+ Turbopuffer::Internal::Type::Converter::Input
90
+ ),
91
+ spec: Turbopuffer::Internal::AnyHash
92
+ ).void
93
+ end
94
+ def initialize(type_info, spec = {})
95
+ end
96
+
97
+ # @api private
98
+ sig { params(depth: Integer).returns(String) }
99
+ def inspect(depth: 0)
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,304 @@
1
+ # typed: strong
2
+
3
+ module Turbopuffer
4
+ module Internal
5
+ module Type
6
+ class BaseModel
7
+ extend Turbopuffer::Internal::Type::Converter
8
+ extend Turbopuffer::Internal::Util::SorbetRuntimeSupport
9
+
10
+ abstract!
11
+
12
+ KnownField =
13
+ T.type_alias do
14
+ {
15
+ mode: T.nilable(Symbol),
16
+ required: T::Boolean,
17
+ nilable: T::Boolean
18
+ }
19
+ end
20
+
21
+ OrHash =
22
+ T.type_alias do
23
+ T.any(
24
+ Turbopuffer::Internal::Type::BaseModel,
25
+ Turbopuffer::Internal::AnyHash
26
+ )
27
+ end
28
+
29
+ class << self
30
+ # @api private
31
+ #
32
+ # Assumes superclass fields are totally defined before fields are accessed /
33
+ # defined on subclasses.
34
+ sig { params(child: T.self_type).void }
35
+ def inherited(child)
36
+ end
37
+
38
+ # @api private
39
+ sig do
40
+ returns(
41
+ T::Hash[
42
+ Symbol,
43
+ T.all(
44
+ Turbopuffer::Internal::Type::BaseModel::KnownField,
45
+ {
46
+ type_fn:
47
+ T.proc.returns(
48
+ Turbopuffer::Internal::Type::Converter::Input
49
+ )
50
+ }
51
+ )
52
+ ]
53
+ )
54
+ end
55
+ def known_fields
56
+ end
57
+
58
+ # @api private
59
+ sig do
60
+ returns(
61
+ T::Hash[
62
+ Symbol,
63
+ T.all(
64
+ Turbopuffer::Internal::Type::BaseModel::KnownField,
65
+ { type: Turbopuffer::Internal::Type::Converter::Input }
66
+ )
67
+ ]
68
+ )
69
+ end
70
+ def fields
71
+ end
72
+
73
+ # @api private
74
+ sig do
75
+ params(
76
+ name_sym: Symbol,
77
+ required: T::Boolean,
78
+ type_info:
79
+ T.any(
80
+ {
81
+ const:
82
+ T.nilable(
83
+ T.any(NilClass, T::Boolean, Integer, Float, Symbol)
84
+ ),
85
+ enum:
86
+ T.nilable(
87
+ T.proc.returns(
88
+ Turbopuffer::Internal::Type::Converter::Input
89
+ )
90
+ ),
91
+ union:
92
+ T.nilable(
93
+ T.proc.returns(
94
+ Turbopuffer::Internal::Type::Converter::Input
95
+ )
96
+ ),
97
+ api_name: Symbol,
98
+ nil?: T::Boolean
99
+ },
100
+ T.proc.returns(Turbopuffer::Internal::Type::Converter::Input),
101
+ Turbopuffer::Internal::Type::Converter::Input
102
+ ),
103
+ spec: Turbopuffer::Internal::AnyHash
104
+ ).void
105
+ end
106
+ private def add_field(name_sym, required:, type_info:, spec:)
107
+ end
108
+
109
+ # @api private
110
+ sig do
111
+ params(
112
+ name_sym: Symbol,
113
+ type_info:
114
+ T.any(
115
+ Turbopuffer::Internal::AnyHash,
116
+ T.proc.returns(Turbopuffer::Internal::Type::Converter::Input),
117
+ Turbopuffer::Internal::Type::Converter::Input
118
+ ),
119
+ spec: Turbopuffer::Internal::AnyHash
120
+ ).void
121
+ end
122
+ def required(name_sym, type_info, spec = {})
123
+ end
124
+
125
+ # @api private
126
+ sig do
127
+ params(
128
+ name_sym: Symbol,
129
+ type_info:
130
+ T.any(
131
+ Turbopuffer::Internal::AnyHash,
132
+ T.proc.returns(Turbopuffer::Internal::Type::Converter::Input),
133
+ Turbopuffer::Internal::Type::Converter::Input
134
+ ),
135
+ spec: Turbopuffer::Internal::AnyHash
136
+ ).void
137
+ end
138
+ def optional(name_sym, type_info, spec = {})
139
+ end
140
+
141
+ # @api private
142
+ #
143
+ # `request_only` attributes not excluded from `.#coerce` when receiving responses
144
+ # even if well behaved servers should not send them
145
+ sig { params(blk: T.proc.void).void }
146
+ private def request_only(&blk)
147
+ end
148
+
149
+ # @api private
150
+ #
151
+ # `response_only` attributes are omitted from `.#dump` when making requests
152
+ sig { params(blk: T.proc.void).void }
153
+ private def response_only(&blk)
154
+ end
155
+
156
+ sig { params(other: T.anything).returns(T::Boolean) }
157
+ def ==(other)
158
+ end
159
+
160
+ sig { returns(Integer) }
161
+ def hash
162
+ end
163
+ end
164
+
165
+ sig { params(other: T.anything).returns(T::Boolean) }
166
+ def ==(other)
167
+ end
168
+
169
+ sig { returns(Integer) }
170
+ def hash
171
+ end
172
+
173
+ class << self
174
+ # @api private
175
+ sig do
176
+ override
177
+ .params(
178
+ value:
179
+ T.any(
180
+ Turbopuffer::Internal::Type::BaseModel,
181
+ T::Hash[T.anything, T.anything],
182
+ T.anything
183
+ ),
184
+ state: Turbopuffer::Internal::Type::Converter::CoerceState
185
+ )
186
+ .returns(T.any(T.attached_class, T.anything))
187
+ end
188
+ def coerce(value, state:)
189
+ end
190
+
191
+ # @api private
192
+ sig do
193
+ override
194
+ .params(
195
+ value: T.any(T.attached_class, T.anything),
196
+ state: Turbopuffer::Internal::Type::Converter::DumpState
197
+ )
198
+ .returns(T.any(T::Hash[T.anything, T.anything], T.anything))
199
+ end
200
+ def dump(value, state:)
201
+ end
202
+
203
+ # @api private
204
+ sig { returns(T.anything) }
205
+ def to_sorbet_type
206
+ end
207
+ end
208
+
209
+ class << self
210
+ # @api private
211
+ sig do
212
+ params(
213
+ model: Turbopuffer::Internal::Type::BaseModel,
214
+ convert: T::Boolean
215
+ ).returns(Turbopuffer::Internal::AnyHash)
216
+ end
217
+ def recursively_to_h(model, convert:)
218
+ end
219
+ end
220
+
221
+ # Returns the raw value associated with the given key, if found. Otherwise, nil is
222
+ # returned.
223
+ #
224
+ # It is valid to lookup keys that are not in the API spec, for example to access
225
+ # undocumented features. This method does not parse response data into
226
+ # higher-level types. Lookup by anything other than a Symbol is an ArgumentError.
227
+ sig { params(key: Symbol).returns(T.nilable(T.anything)) }
228
+ def [](key)
229
+ end
230
+
231
+ # Returns a Hash of the data underlying this object. O(1)
232
+ #
233
+ # Keys are Symbols and values are the raw values from the response. The return
234
+ # value indicates which values were ever set on the object. i.e. there will be a
235
+ # key in this hash if they ever were, even if the set value was nil.
236
+ #
237
+ # This method is not recursive. The returned value is shared by the object, so it
238
+ # should not be mutated.
239
+ sig { overridable.returns(Turbopuffer::Internal::AnyHash) }
240
+ def to_h
241
+ end
242
+
243
+ # Returns a Hash of the data underlying this object. O(1)
244
+ #
245
+ # Keys are Symbols and values are the raw values from the response. The return
246
+ # value indicates which values were ever set on the object. i.e. there will be a
247
+ # key in this hash if they ever were, even if the set value was nil.
248
+ #
249
+ # This method is not recursive. The returned value is shared by the object, so it
250
+ # should not be mutated.
251
+ sig { overridable.returns(Turbopuffer::Internal::AnyHash) }
252
+ def to_hash
253
+ end
254
+
255
+ # In addition to the behaviour of `#to_h`, this method will recursively call
256
+ # `#to_h` on nested models.
257
+ sig { overridable.returns(Turbopuffer::Internal::AnyHash) }
258
+ def deep_to_h
259
+ end
260
+
261
+ sig do
262
+ params(keys: T.nilable(T::Array[Symbol])).returns(
263
+ Turbopuffer::Internal::AnyHash
264
+ )
265
+ end
266
+ def deconstruct_keys(keys)
267
+ end
268
+
269
+ sig { params(a: T.anything).returns(String) }
270
+ def to_json(*a)
271
+ end
272
+
273
+ sig { params(a: T.anything).returns(String) }
274
+ def to_yaml(*a)
275
+ end
276
+
277
+ # Create a new instance of a model.
278
+ sig do
279
+ params(data: T.any(T::Hash[Symbol, T.anything], T.self_type)).returns(
280
+ T.attached_class
281
+ )
282
+ end
283
+ def self.new(data = {})
284
+ end
285
+
286
+ class << self
287
+ # @api private
288
+ sig { params(depth: Integer).returns(String) }
289
+ def inspect(depth: 0)
290
+ end
291
+ end
292
+
293
+ sig { returns(String) }
294
+ def to_s
295
+ end
296
+
297
+ # @api private
298
+ sig { returns(String) }
299
+ def inspect
300
+ end
301
+ end
302
+ end
303
+ end
304
+ end
@@ -0,0 +1,43 @@
1
+ # typed: strong
2
+
3
+ module Turbopuffer
4
+ module Internal
5
+ module Type
6
+ # @api private
7
+ #
8
+ # This module provides a base implementation for paginated responses in the SDK.
9
+ module BasePage
10
+ Elem = type_member(:out)
11
+
12
+ sig { overridable.returns(T::Boolean) }
13
+ def next_page?
14
+ end
15
+
16
+ sig { overridable.returns(T.self_type) }
17
+ def next_page
18
+ end
19
+
20
+ sig { overridable.params(blk: T.proc.params(arg0: Elem).void).void }
21
+ def auto_paging_each(&blk)
22
+ end
23
+
24
+ sig { returns(T::Enumerable[Elem]) }
25
+ def to_enum
26
+ end
27
+
28
+ # @api private
29
+ sig do
30
+ params(
31
+ client: Turbopuffer::Internal::Transport::BaseClient,
32
+ req:
33
+ Turbopuffer::Internal::Transport::BaseClient::RequestComponents,
34
+ headers: T::Hash[String, String],
35
+ page_data: T.anything
36
+ ).void
37
+ end
38
+ def initialize(client:, req:, headers:, page_data:)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,58 @@
1
+ # typed: strong
2
+
3
+ module Turbopuffer
4
+ module Internal
5
+ module Type
6
+ # @api private
7
+ #
8
+ # Ruby has no Boolean class; this is something for models to refer to.
9
+ class Boolean
10
+ extend Turbopuffer::Internal::Type::Converter
11
+ extend Turbopuffer::Internal::Util::SorbetRuntimeSupport
12
+
13
+ abstract!
14
+
15
+ sig { params(other: T.anything).returns(T::Boolean) }
16
+ def self.===(other)
17
+ end
18
+
19
+ sig { params(other: T.anything).returns(T::Boolean) }
20
+ def self.==(other)
21
+ end
22
+
23
+ class << self
24
+ # @api private
25
+ #
26
+ # Coerce value to Boolean if possible, otherwise return the original value.
27
+ sig do
28
+ override
29
+ .params(
30
+ value: T.any(T::Boolean, T.anything),
31
+ state: Turbopuffer::Internal::Type::Converter::CoerceState
32
+ )
33
+ .returns(T.any(T::Boolean, T.anything))
34
+ end
35
+ def coerce(value, state:)
36
+ end
37
+
38
+ # @api private
39
+ sig do
40
+ override
41
+ .params(
42
+ value: T.any(T::Boolean, T.anything),
43
+ state: Turbopuffer::Internal::Type::Converter::DumpState
44
+ )
45
+ .returns(T.any(T::Boolean, T.anything))
46
+ end
47
+ def dump(value, state:)
48
+ end
49
+
50
+ # @api private
51
+ sig { returns(T.anything) }
52
+ def to_sorbet_type
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end