]> git.proxmox.com Git - ceph.git/blob - ceph/src/arrow/ruby/red-arrow/lib/arrow/loader.rb
import quincy 17.2.0
[ceph.git] / ceph / src / arrow / ruby / red-arrow / lib / arrow / loader.rb
1 # Licensed to the Apache Software Foundation (ASF) under one
2 # or more contributor license agreements. See the NOTICE file
3 # distributed with this work for additional information
4 # regarding copyright ownership. The ASF licenses this file
5 # to you under the Apache License, Version 2.0 (the
6 # "License"); you may not use this file except in compliance
7 # with the License. You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing,
12 # software distributed under the License is distributed on an
13 # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 # KIND, either express or implied. See the License for the
15 # specific language governing permissions and limitations
16 # under the License.
17
18 require "arrow/block-closable"
19
20 module Arrow
21 class Loader < GObjectIntrospection::Loader
22 class << self
23 def load
24 super("Arrow", Arrow)
25 end
26 end
27
28 private
29 def post_load(repository, namespace)
30 require_libraries
31 require_extension_library
32 gc_guard
33 end
34
35 def require_libraries
36 require "arrow/column-containable"
37 require "arrow/field-containable"
38 require "arrow/generic-filterable"
39 require "arrow/generic-takeable"
40 require "arrow/record-containable"
41 require "arrow/symbol-values-appendable"
42
43 require "arrow/aggregate-node-options"
44 require "arrow/aggregation"
45 require "arrow/array"
46 require "arrow/array-builder"
47 require "arrow/bigdecimal-extension"
48 require "arrow/binary-dictionary-array-builder"
49 require "arrow/buffer"
50 require "arrow/chunked-array"
51 require "arrow/column"
52 require "arrow/compression-type"
53 require "arrow/csv-loader"
54 require "arrow/csv-read-options"
55 require "arrow/data-type"
56 require "arrow/date32-array"
57 require "arrow/date32-array-builder"
58 require "arrow/date64-array"
59 require "arrow/date64-array-builder"
60 require "arrow/datum"
61 require "arrow/decimal128"
62 require "arrow/decimal128-array"
63 require "arrow/decimal128-array-builder"
64 require "arrow/decimal128-data-type"
65 require "arrow/decimal256"
66 require "arrow/decimal256-array"
67 require "arrow/decimal256-array-builder"
68 require "arrow/decimal256-data-type"
69 require "arrow/dense-union-data-type"
70 require "arrow/dictionary-array"
71 require "arrow/dictionary-data-type"
72 require "arrow/equal-options"
73 require "arrow/expression"
74 require "arrow/field"
75 require "arrow/file-output-stream"
76 require "arrow/file-system"
77 require "arrow/fixed-size-binary-array"
78 require "arrow/fixed-size-binary-array-builder"
79 require "arrow/group"
80 require "arrow/list-array-builder"
81 require "arrow/list-data-type"
82 require "arrow/map-array"
83 require "arrow/map-array-builder"
84 require "arrow/map-data-type"
85 require "arrow/null-array"
86 require "arrow/null-array-builder"
87 require "arrow/path-extension"
88 require "arrow/record"
89 require "arrow/record-batch"
90 require "arrow/record-batch-builder"
91 require "arrow/record-batch-file-reader"
92 require "arrow/record-batch-iterator"
93 require "arrow/record-batch-reader"
94 require "arrow/record-batch-stream-reader"
95 require "arrow/rolling-window"
96 require "arrow/scalar"
97 require "arrow/schema"
98 require "arrow/slicer"
99 require "arrow/sort-key"
100 require "arrow/sort-options"
101 require "arrow/source-node-options"
102 require "arrow/sparse-union-data-type"
103 require "arrow/string-dictionary-array-builder"
104 require "arrow/struct-array"
105 require "arrow/struct-array-builder"
106 require "arrow/struct-data-type"
107 require "arrow/table"
108 require "arrow/table-concatenate-options"
109 require "arrow/table-formatter"
110 require "arrow/table-list-formatter"
111 require "arrow/table-table-formatter"
112 require "arrow/table-loader"
113 require "arrow/table-saver"
114 require "arrow/tensor"
115 require "arrow/time"
116 require "arrow/time32-array"
117 require "arrow/time32-array-builder"
118 require "arrow/time32-data-type"
119 require "arrow/time64-array"
120 require "arrow/time64-array-builder"
121 require "arrow/time64-data-type"
122 require "arrow/timestamp-array"
123 require "arrow/timestamp-array-builder"
124 require "arrow/timestamp-data-type"
125 require "arrow/writable"
126 end
127
128 def require_extension_library
129 require "arrow.so"
130 end
131
132 def gc_guard
133 require "arrow/constructor-arguments-gc-guardable"
134
135 [
136 @base_module::BinaryScalar,
137 @base_module::Buffer,
138 @base_module::DenseUnionScalar,
139 @base_module::FixedSizeBinaryScalar,
140 @base_module::LargeBinaryScalar,
141 @base_module::LargeListScalar,
142 @base_module::LargeStringScalar,
143 @base_module::ListScalar,
144 @base_module::MapScalar,
145 @base_module::SparseUnionScalar,
146 @base_module::StringScalar,
147 @base_module::StructScalar,
148 ].each do |klass|
149 klass.prepend(ConstructorArgumentsGCGuardable)
150 end
151 end
152
153 def load_object_info(info)
154 super
155
156 klass = @base_module.const_get(rubyish_class_name(info))
157 if klass.method_defined?(:close)
158 klass.extend(BlockClosable)
159 end
160 end
161
162 def load_method_info(info, klass, method_name)
163 case klass.name
164 when /Array\z/
165 case method_name
166 when "values"
167 method_name = "values_raw"
168 end
169 end
170
171 case klass.name
172 when /Builder\z/
173 case method_name
174 when "append"
175 return
176 else
177 super
178 end
179 when "Arrow::StringArray"
180 case method_name
181 when "get_value"
182 method_name = "get_raw_value"
183 when "get_string"
184 method_name = "get_value"
185 end
186 super(info, klass, method_name)
187 when "Arrow::Date32Array",
188 "Arrow::Date64Array",
189 "Arrow::Decimal128Array",
190 "Arrow::Decimal256Array",
191 "Arrow::Time32Array",
192 "Arrow::Time64Array",
193 "Arrow::TimestampArray"
194 case method_name
195 when "get_value"
196 method_name = "get_raw_value"
197 end
198 super(info, klass, method_name)
199 when "Arrow::Decimal128", "Arrow::Decimal256"
200 case method_name
201 when "copy"
202 method_name = "dup"
203 end
204 super(info, klass, method_name)
205 when "Arrow::BooleanScalar"
206 case method_name
207 when "value?"
208 method_name = "value"
209 end
210 super(info, klass, method_name)
211 else
212 super
213 end
214 end
215 end
216 end