carray 2.0.1 → 3.0.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.
Files changed (386) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +6 -25
  3. data/CHANGELOG.md +338 -0
  4. data/{NEWS.md → CHANGELOG.v1.md} +3 -0
  5. data/LICENSE +1 -1
  6. data/README.md +120 -36
  7. data/carray.gemspec +32 -30
  8. data/ext/ca_array_pool.c +91 -0
  9. data/ext/ca_axis_descriptor.h +186 -0
  10. data/ext/ca_axis_dispatch.c +924 -0
  11. data/ext/ca_axis_group.c +1244 -0
  12. data/ext/ca_bincmp_dispatch.c +76 -0
  13. data/ext/ca_bincmp_dispatch.h +85 -0
  14. data/ext/ca_binop_dispatch.c +124 -0
  15. data/ext/ca_binop_dispatch.h +152 -0
  16. data/ext/ca_categorical_iterator.c +1375 -0
  17. data/ext/ca_compare.c +94 -0
  18. data/ext/ca_compare.h +26 -0
  19. data/ext/ca_composite_dispatch.c +414 -0
  20. data/ext/ca_composite_dispatch.h +116 -0
  21. data/ext/ca_for_buffer.h +96 -0
  22. data/ext/ca_for_each_element.h +239 -0
  23. data/ext/ca_group_iter.c +304 -0
  24. data/ext/ca_iter_substrate.h +325 -0
  25. data/ext/ca_kernel_iterator.c +4367 -0
  26. data/ext/ca_kernel_iterator.h +2596 -0
  27. data/ext/ca_moncmp_dispatch.c +37 -0
  28. data/ext/ca_moncmp_dispatch.h +62 -0
  29. data/ext/ca_monop_dispatch.c +200 -0
  30. data/ext/ca_monop_dispatch.h +235 -0
  31. data/ext/ca_obj_array.c +355 -359
  32. data/ext/ca_obj_bincmp.c +839 -0
  33. data/ext/ca_obj_binop.c +948 -0
  34. data/ext/ca_obj_bitarray.c +369 -164
  35. data/ext/ca_obj_bitfield.c +294 -234
  36. data/ext/ca_obj_block.c +189 -711
  37. data/ext/ca_obj_byte_swap.c +766 -0
  38. data/ext/ca_obj_const_string.c +967 -0
  39. data/ext/ca_obj_face.c +750 -0
  40. data/ext/ca_obj_face.h +279 -0
  41. data/ext/ca_obj_fake.c +239 -100
  42. data/ext/ca_obj_farray.c +54 -441
  43. data/ext/ca_obj_field.c +82 -529
  44. data/ext/ca_obj_fixlen_string.c +308 -0
  45. data/ext/ca_obj_grid.c +866 -440
  46. data/ext/ca_obj_meld.c +1039 -0
  47. data/ext/ca_obj_moncmp.c +588 -0
  48. data/ext/ca_obj_monop.c +1123 -0
  49. data/ext/ca_obj_object.c +866 -296
  50. data/ext/ca_obj_record.c +470 -0
  51. data/ext/ca_obj_reduce.c +97 -82
  52. data/ext/ca_obj_refer.c +593 -459
  53. data/ext/ca_obj_remap.c +475 -0
  54. data/ext/ca_obj_repeat.c +92 -477
  55. data/ext/ca_obj_roll.c +624 -0
  56. data/ext/ca_obj_select.c +344 -296
  57. data/ext/ca_obj_select_axis.c +1306 -0
  58. data/ext/ca_obj_shift.c +231 -793
  59. data/ext/ca_obj_source.c +78 -0
  60. data/ext/ca_obj_stack.c +1173 -0
  61. data/ext/ca_obj_stride.c +2584 -0
  62. data/ext/ca_obj_string.c +270 -0
  63. data/ext/ca_obj_tile.c +622 -0
  64. data/ext/ca_obj_time.c +548 -0
  65. data/ext/ca_obj_timedelta.c +437 -0
  66. data/ext/ca_obj_transpose.c +62 -516
  67. data/ext/ca_obj_triop.c +785 -0
  68. data/ext/ca_obj_window.c +1202 -565
  69. data/ext/ca_op_byte_swap.c +175 -0
  70. data/ext/ca_op_cmplx64.h +123 -0
  71. data/ext/ca_op_ipower.c +316 -0
  72. data/ext/ca_op_powi.h +88 -0
  73. data/ext/ca_sort_kernels.h +132 -0
  74. data/ext/ca_sweep_engine.c +473 -0
  75. data/ext/ca_sweep_engine.h +166 -0
  76. data/ext/ca_transform_common.c +235 -0
  77. data/ext/ca_triop_dispatch.c +55 -0
  78. data/ext/ca_triop_dispatch.h +62 -0
  79. data/ext/carray.h +810 -420
  80. data/ext/carray_access.c +873 -731
  81. data/ext/carray_attribute.c +98 -329
  82. data/ext/carray_bincount.c +255 -0
  83. data/ext/carray_broadcast.c +376 -0
  84. data/ext/carray_build_flags.h +3 -0
  85. data/ext/carray_call_cfunc.c +2897 -874
  86. data/ext/carray_call_cfunc.h +313 -0
  87. data/ext/carray_cast.c +1264 -315
  88. data/ext/carray_cast_func.rb +81 -40
  89. data/ext/carray_class.c +53 -63
  90. data/ext/carray_config.h +28 -0
  91. data/ext/carray_conversion.c +350 -346
  92. data/ext/carray_copy.c +168 -270
  93. data/ext/carray_core.c +1396 -206
  94. data/ext/carray_count.c +312 -0
  95. data/ext/carray_data_type.c +43 -19
  96. data/ext/carray_element.c +585 -213
  97. data/ext/carray_factorize.c +2542 -0
  98. data/ext/carray_generate.c +230 -559
  99. data/ext/carray_histogram.c +490 -0
  100. data/ext/carray_hold.c +228 -0
  101. data/ext/carray_index_classifier.c +1021 -0
  102. data/ext/carray_index_classifier.h +27 -0
  103. data/ext/carray_internal.h +136 -0
  104. data/ext/carray_kernels_bincmp.c +4446 -0
  105. data/ext/carray_kernels_binop.c +11001 -0
  106. data/ext/carray_kernels_init.c +1131 -0
  107. data/ext/carray_kernels_map.c +3467 -0
  108. data/ext/carray_kernels_moncmp.c +2097 -0
  109. data/ext/carray_kernels_monop.c +18313 -0
  110. data/ext/carray_kernels_reduce_aggregate.c +25837 -0
  111. data/ext/carray_kernels_reduce_boolean.c +330 -0
  112. data/ext/carray_kernels_reduce_cumulative.c +14593 -0
  113. data/ext/carray_kernels_reduce_extreme.c +16948 -0
  114. data/ext/carray_kernels_reduce_variance.c +3910 -0
  115. data/ext/carray_kernels_scan.c +3693 -0
  116. data/ext/carray_kernels_search.c +32138 -0
  117. data/ext/carray_kernels_sort.c +10626 -0
  118. data/ext/carray_kernels_triop.c +1392 -0
  119. data/ext/carray_lazy.c +737 -0
  120. data/ext/carray_loop.c +88 -200
  121. data/ext/carray_mask.c +853 -158
  122. data/ext/carray_math_kernel.h +120 -0
  123. data/ext/carray_mathfunc.c +10 -241
  124. data/ext/carray_median_percentile.c +1257 -0
  125. data/ext/carray_memory_view.c +1650 -0
  126. data/ext/carray_operator.c +1525 -320
  127. data/ext/carray_order.c +664 -1394
  128. data/ext/carray_partition.c +416 -0
  129. data/ext/carray_random.c +518 -0
  130. data/ext/carray_scatter.c +357 -0
  131. data/ext/carray_slab.c +1219 -0
  132. data/ext/carray_slab.h +84 -0
  133. data/ext/carray_sort.c +829 -0
  134. data/ext/carray_sort_kernel.c +620 -0
  135. data/ext/carray_struct.c +695 -0
  136. data/ext/carray_test.c +343 -229
  137. data/ext/carray_undef.c +34 -17
  138. data/ext/carray_utils.c +175 -74
  139. data/ext/extconf.rb +234 -55
  140. data/ext/mk_call_cfunc.rb +671 -0
  141. data/ext/mkkernel.rb +9096 -0
  142. data/ext/ruby_carray.c +211 -108
  143. data/ext/version.h +4 -14
  144. data/ext/version.rb +5 -13
  145. data/lib/carray/arrow_tensor.rb +401 -0
  146. data/lib/carray/attribute.rb +166 -0
  147. data/lib/carray/autoload_carray.rb +239 -0
  148. data/lib/carray/autoload_method_extension.rb +45 -0
  149. data/lib/carray/axis_group.rb +711 -0
  150. data/lib/carray/basics.rb +481 -0
  151. data/lib/carray/bincount_nd.rb +358 -0
  152. data/lib/carray/block_iterator.rb +614 -0
  153. data/lib/carray/boolean_reduce.rb +109 -0
  154. data/lib/carray/categorical.rb +561 -0
  155. data/lib/carray/categorical_iterator.rb +1084 -0
  156. data/lib/carray/complex.rb +150 -0
  157. data/lib/carray/conditional.rb +216 -0
  158. data/lib/carray/const_string.rb +228 -0
  159. data/lib/carray/construct.rb +160 -328
  160. data/lib/carray/core_extensions.rb +297 -0
  161. data/lib/carray/data_type_extension.rb +250 -0
  162. data/lib/carray/fixlen_string.rb +95 -0
  163. data/lib/carray/frame/concat.rb +132 -0
  164. data/lib/carray/frame/convert.rb +95 -0
  165. data/lib/carray/frame/csv_parser.rb +211 -0
  166. data/lib/carray/frame/frame.rb +642 -0
  167. data/lib/carray/frame/group.rb +186 -0
  168. data/lib/carray/frame/io.rb +321 -0
  169. data/lib/carray/frame/join.rb +248 -0
  170. data/lib/carray/frame/records.rb +99 -0
  171. data/lib/carray/frame/sort.rb +113 -0
  172. data/lib/carray/frame/verbs.rb +316 -0
  173. data/lib/carray/frame.rb +16 -0
  174. data/lib/carray/fuse_source.rb +123 -0
  175. data/lib/carray/fusion.rb +218 -0
  176. data/lib/carray/histogram.rb +512 -0
  177. data/lib/carray/inspect.rb +37 -26
  178. data/lib/carray/iterator.rb +58 -349
  179. data/lib/carray/lazy.rb +941 -0
  180. data/lib/carray/mask_gap_fill.rb +200 -0
  181. data/lib/carray/math.rb +78 -342
  182. data/lib/carray/meld_reduce.rb +289 -0
  183. data/lib/carray/methods/align_addr.rb +116 -0
  184. data/lib/carray/methods/bin.rb +128 -0
  185. data/lib/carray/methods/bincount.rb +87 -0
  186. data/lib/carray/methods/bit_string.rb +92 -0
  187. data/lib/carray/methods/broadcast.rb +63 -0
  188. data/lib/carray/methods/choose.rb +39 -0
  189. data/lib/carray/methods/composition.rb +280 -0
  190. data/lib/carray/methods/gather_nd.rb +206 -0
  191. data/lib/carray/methods/index.rb +39 -0
  192. data/lib/carray/methods/insert_block.rb +99 -0
  193. data/lib/carray/methods/is_in.rb +141 -0
  194. data/lib/carray/methods/join.rb +90 -0
  195. data/lib/carray/methods/locate_addr.rb +52 -0
  196. data/lib/carray/methods/mask_duplicates.rb +41 -0
  197. data/lib/carray/methods/meshgrid.rb +90 -0
  198. data/lib/carray/methods/mode.rb +126 -0
  199. data/lib/carray/methods/nunique.rb +46 -0
  200. data/lib/carray/methods/resize.rb +56 -0
  201. data/lib/carray/methods/snap.rb +161 -0
  202. data/lib/carray/methods/string_format.rb +57 -0
  203. data/lib/carray/methods/unique.rb +47 -0
  204. data/lib/carray/methods/value_counts.rb +71 -0
  205. data/lib/carray/mkmf.rb +124 -101
  206. data/lib/carray/runtime.rb +89 -0
  207. data/lib/carray/serialize.rb +478 -167
  208. data/lib/carray/slab_iterator.rb +305 -0
  209. data/lib/carray/stack.rb +291 -0
  210. data/lib/carray/string.rb +56 -180
  211. data/lib/carray/string_operation_extension.rb +289 -0
  212. data/lib/carray/struct.rb +335 -323
  213. data/lib/carray/struct_builder.rb +697 -0
  214. data/lib/carray/table.rb +41 -2
  215. data/lib/carray/time.rb +2654 -38
  216. data/lib/carray/window_iterator.rb +927 -0
  217. data/lib/carray.rb +55 -57
  218. data/yard-stubs/ca_obj_array.rb +385 -0
  219. data/yard-stubs/ca_obj_bitarray.rb +38 -0
  220. data/yard-stubs/ca_obj_bitfield.rb +43 -0
  221. data/yard-stubs/ca_obj_block.rb +73 -0
  222. data/yard-stubs/ca_obj_byte_swap.rb +56 -0
  223. data/yard-stubs/ca_obj_fake.rb +31 -0
  224. data/yard-stubs/ca_obj_farray.rb +32 -0
  225. data/yard-stubs/ca_obj_field.rb +45 -0
  226. data/yard-stubs/ca_obj_grid.rb +35 -0
  227. data/yard-stubs/ca_obj_refer.rb +72 -0
  228. data/yard-stubs/ca_obj_roll.rb +45 -0
  229. data/yard-stubs/ca_obj_shift.rb +43 -0
  230. data/yard-stubs/ca_obj_stride.rb +181 -0
  231. data/yard-stubs/ca_obj_tile.rb +29 -0
  232. data/yard-stubs/ca_obj_transpose.rb +40 -0
  233. data/yard-stubs/ca_obj_window.rb +49 -0
  234. data/yard-stubs/carray_access.rb +131 -0
  235. data/yard-stubs/carray_attribute.rb +246 -0
  236. data/yard-stubs/carray_broadcast.rb +37 -0
  237. data/yard-stubs/carray_cast.rb +489 -0
  238. data/yard-stubs/carray_class.rb +65 -0
  239. data/yard-stubs/carray_conversion.rb +76 -0
  240. data/yard-stubs/carray_copy.rb +79 -0
  241. data/yard-stubs/carray_core.rb +114 -0
  242. data/yard-stubs/carray_count.rb +79 -0
  243. data/yard-stubs/carray_element.rb +108 -0
  244. data/yard-stubs/carray_generate.rb +66 -0
  245. data/yard-stubs/carray_lazy.rb +23 -0
  246. data/yard-stubs/carray_loop.rb +140 -0
  247. data/yard-stubs/carray_mask.rb +259 -0
  248. data/yard-stubs/carray_math.rb +132 -0
  249. data/yard-stubs/carray_mathfunc.rb +45 -0
  250. data/yard-stubs/carray_median_percentile.rb +89 -0
  251. data/yard-stubs/carray_memory_view.rb +163 -0
  252. data/yard-stubs/carray_order.rb +312 -0
  253. data/yard-stubs/carray_random.rb +89 -0
  254. data/yard-stubs/carray_scatter.rb +106 -0
  255. data/yard-stubs/carray_slab.rb +57 -0
  256. data/yard-stubs/carray_sort.rb +163 -0
  257. data/yard-stubs/carray_test.rb +85 -0
  258. data/yard-stubs/carray_undef.rb +64 -0
  259. data/yard-stubs/carray_utils.rb +97 -0
  260. data/yard-stubs/ruby_carray.rb +193 -0
  261. metadata +220 -138
  262. data/Rakefile +0 -51
  263. data/TODO.md +0 -18
  264. data/ext/ca_iter_block.c +0 -257
  265. data/ext/ca_iter_dimension.c +0 -299
  266. data/ext/ca_iter_window.c +0 -214
  267. data/ext/ca_obj_mapping.c +0 -644
  268. data/ext/ca_obj_unbound_repeat.c +0 -529
  269. data/ext/carray_iterator.c +0 -641
  270. data/ext/carray_math.rb +0 -850
  271. data/ext/carray_numeric.c +0 -259
  272. data/ext/carray_sort_addr.c +0 -254
  273. data/ext/carray_stat.c +0 -2100
  274. data/ext/carray_stat_proc.rb +0 -1999
  275. data/ext/mkmath.rb +0 -741
  276. data/ext/ruby_ccomplex.c +0 -509
  277. data/ext/ruby_float_func.c +0 -86
  278. data/lib/carray/array.rb +0 -8
  279. data/lib/carray/autoload/autoload_base.rb +0 -19
  280. data/lib/carray/autoload/autoload_gem_cairo.rb +0 -9
  281. data/lib/carray/autoload/autoload_gem_ffi.rb +0 -9
  282. data/lib/carray/autoload/autoload_gem_gnuplot.rb +0 -2
  283. data/lib/carray/autoload/autoload_gem_io_csv.rb +0 -14
  284. data/lib/carray/autoload/autoload_gem_io_pg.rb +0 -6
  285. data/lib/carray/autoload/autoload_gem_io_sqlite3.rb +0 -12
  286. data/lib/carray/autoload/autoload_gem_narray.rb +0 -10
  287. data/lib/carray/autoload/autoload_gem_numo_narray.rb +0 -15
  288. data/lib/carray/autoload/autoload_gem_opencv.rb +0 -16
  289. data/lib/carray/autoload/autoload_gem_random.rb +0 -8
  290. data/lib/carray/autoload/autoload_gem_rmagick.rb +0 -23
  291. data/lib/carray/autoload/autoload_gem_zimg.rb +0 -3
  292. data/lib/carray/autoload/autoload_io_imagemagick.rb +0 -6
  293. data/lib/carray/autoload/autoload_math_histogram.rb +0 -5
  294. data/lib/carray/autoload/autoload_math_recurrence.rb +0 -6
  295. data/lib/carray/autoload/autoload_object_iterator.rb +0 -1
  296. data/lib/carray/autoload/autoload_object_link.rb +0 -1
  297. data/lib/carray/autoload/autoload_object_pack.rb +0 -2
  298. data/lib/carray/autoload.rb +0 -141
  299. data/lib/carray/basic.rb +0 -191
  300. data/lib/carray/broadcast.rb +0 -101
  301. data/lib/carray/compose.rb +0 -315
  302. data/lib/carray/convert.rb +0 -115
  303. data/lib/carray/info.rb +0 -110
  304. data/lib/carray/io/imagemagick.rb +0 -235
  305. data/lib/carray/mask.rb +0 -102
  306. data/lib/carray/math/histogram.rb +0 -177
  307. data/lib/carray/math/recurrence.rb +0 -93
  308. data/lib/carray/object/ca_obj_iterator.rb +0 -50
  309. data/lib/carray/object/ca_obj_link.rb +0 -50
  310. data/lib/carray/object/ca_obj_pack.rb +0 -99
  311. data/lib/carray/obsolete.rb +0 -256
  312. data/lib/carray/ordering.rb +0 -181
  313. data/lib/carray/testing.rb +0 -51
  314. data/lib/carray/transform.rb +0 -109
  315. data/mailmap +0 -1
  316. data/misc/Methods.ja.md +0 -182
  317. data/misc/NOTE +0 -51
  318. data/spec/Classes/CABitfield_spec.rb +0 -58
  319. data/spec/Classes/CABlockIterator_spec.rb +0 -114
  320. data/spec/Classes/CABlock_spec.rb +0 -205
  321. data/spec/Classes/CAField_spec.rb +0 -39
  322. data/spec/Classes/CAGrid_spec.rb +0 -75
  323. data/spec/Classes/CAMap_spec.rb +0 -0
  324. data/spec/Classes/CAMapping_spec.rb +0 -105
  325. data/spec/Classes/CAObject_attribute_spec.rb +0 -33
  326. data/spec/Classes/CAObject_spec.rb +0 -33
  327. data/spec/Classes/CARefer_spec.rb +0 -93
  328. data/spec/Classes/CARepeat_spec.rb +0 -65
  329. data/spec/Classes/CASelect_spec.rb +0 -22
  330. data/spec/Classes/CAShift_spec.rb +0 -16
  331. data/spec/Classes/CAStruct_spec.rb +0 -71
  332. data/spec/Classes/CATranspose_spec.rb +0 -60
  333. data/spec/Classes/CAUnboudRepeat_spec.rb +0 -102
  334. data/spec/Classes/CAWindow_spec.rb +0 -54
  335. data/spec/Classes/CAWrap_spec.rb +0 -8
  336. data/spec/Classes/CArray_spec.rb +0 -184
  337. data/spec/Classes/CScalar_spec.rb +0 -55
  338. data/spec/Features/feature_130_spec.rb +0 -19
  339. data/spec/Features/feature_attributes_spec.rb +0 -280
  340. data/spec/Features/feature_boolean_spec.rb +0 -98
  341. data/spec/Features/feature_broadcast.rb +0 -116
  342. data/spec/Features/feature_cast_function.rb +0 -19
  343. data/spec/Features/feature_cast_spec.rb +0 -33
  344. data/spec/Features/feature_class_spec.rb +0 -84
  345. data/spec/Features/feature_complex_spec.rb +0 -42
  346. data/spec/Features/feature_composite_spec.rb +0 -124
  347. data/spec/Features/feature_convert_spec.rb +0 -46
  348. data/spec/Features/feature_copy_spec.rb +0 -123
  349. data/spec/Features/feature_creation_spec.rb +0 -84
  350. data/spec/Features/feature_element_spec.rb +0 -144
  351. data/spec/Features/feature_extream_spec.rb +0 -54
  352. data/spec/Features/feature_generate_spec.rb +0 -74
  353. data/spec/Features/feature_index_spec.rb +0 -69
  354. data/spec/Features/feature_mask_spec.rb +0 -580
  355. data/spec/Features/feature_math_spec.rb +0 -97
  356. data/spec/Features/feature_order_spec.rb +0 -146
  357. data/spec/Features/feature_ref_store_spec.rb +0 -209
  358. data/spec/Features/feature_serialization_spec.rb +0 -125
  359. data/spec/Features/feature_stat_spec.rb +0 -397
  360. data/spec/Features/feature_virtual_spec.rb +0 -48
  361. data/spec/Features/method_eq_spec.rb +0 -81
  362. data/spec/Features/method_is_nan_spec.rb +0 -12
  363. data/spec/Features/method_map_spec.rb +0 -54
  364. data/spec/Features/method_max_with.rb +0 -20
  365. data/spec/Features/method_min_with.rb +0 -19
  366. data/spec/Features/method_ne_spec.rb +0 -18
  367. data/spec/Features/method_project_spec.rb +0 -188
  368. data/spec/Features/method_ref_spec.rb +0 -27
  369. data/spec/Features/method_round_spec.rb +0 -11
  370. data/spec/Features/method_s_linspace_spec.rb +0 -48
  371. data/spec/Features/method_s_span_spec.rb +0 -14
  372. data/spec/Features/method_seq_spec.rb +0 -47
  373. data/spec/Features/method_sort_with.rb +0 -43
  374. data/spec/Features/method_sorted_with.rb +0 -29
  375. data/spec/Features/method_span_spec.rb +0 -42
  376. data/spec/Features/method_wrap_readonly_spec.rb +0 -43
  377. data/spec/UnitTest/test_CAVirtual.rb +0 -214
  378. data/spec/spec_all.rb +0 -10
  379. data/utils/ca_ase.rb +0 -21
  380. data/utils/ca_methods.rb +0 -15
  381. data/utils/cast_checker.rb +0 -30
  382. data/utils/convert_test.rb +0 -73
  383. data/utils/extract_yard.rb +0 -22
  384. data/utils/guess_shape.rb +0 -76
  385. data/utils/monkey_patch_methods.rb +0 -62
  386. data/utils/remove_resource_fork.sh +0 -5
@@ -0,0 +1,239 @@
1
+ # ----------------------------------------------------------------------------
2
+ #
3
+ # carray/autoload_carray.rb
4
+ #
5
+ # Autoload stubs for CArray's Ruby-side surface. Loaded from lib/carray.rb
6
+ # after autoload_method_extension is installed. Split by intent:
7
+ #
8
+ # (1) Top-level feature files under carray/ — constant class + entry
9
+ # methods (Serializer, TableMethods, iterators, aggregation
10
+ # accumulators, categorical / axis-group).
11
+ # (2) Single-feature method files under carray/methods/ — each first
12
+ # call requires its file, whose definitions overwrite the stubs
13
+ # and re-dispatch. None of these methods has internal callers,
14
+ # so they never load unless user code uses them.
15
+ #
16
+ # ----------------------------------------------------------------------------
17
+
18
+
19
+ # ============================================================================
20
+ # (1) Top-level feature files
21
+ # ============================================================================
22
+
23
+ # ---- Inspection (#inspect / #source_code) ----------------------------------
24
+ #
25
+ # CArray::Inspector (:nodoc:) and #inspect / #source_code live in carray/inspect.rb.
26
+ # #inspect is an implicit method (p / pp / irb / error interpolation), so the
27
+ # stub loads the file the first time any CArray is displayed. Nothing in the
28
+ # eager core references it at load time; #desc is private (code-internal) and
29
+ # Inspector is internal, so only the two public methods need stubs.
30
+
31
+ class CArray
32
+ inspect_rb = "carray/inspect"
33
+ autoload_method "inspect", inspect_rb
34
+ autoload_method "source_code", inspect_rb
35
+ end
36
+
37
+ # ---- Serializer / Marshal / dump / load ------------------------------------
38
+
39
+ class CArray
40
+ serialize_rb = "carray/serialize"
41
+ autoload :Serializer, serialize_rb
42
+ autoload_method "self.save", serialize_rb
43
+ autoload_method "self.load", serialize_rb
44
+ autoload_method "self.dump", serialize_rb
45
+ autoload_method "self.load_from_file", serialize_rb
46
+ autoload_method "marshal_dump", serialize_rb
47
+ autoload_method "marshal_load", serialize_rb
48
+ end
49
+
50
+ # ---- Arrow tensor IPC (interop) --------------------------------------------
51
+
52
+ class CArray
53
+ arrow_tensor_rb = "carray/arrow_tensor"
54
+ autoload :ArrowTensor, arrow_tensor_rb
55
+ autoload_method "self.load_arrow_tensor", arrow_tensor_rb
56
+ autoload_method "save_arrow_tensor", arrow_tensor_rb
57
+ end
58
+
59
+ # ---- Table (row-major dispatch helper) -------------------------------------
60
+
61
+ class CArray
62
+ autoload :TableMethods, "carray/table"
63
+ end
64
+
65
+ # ---- Fusion (reading a lazy expression as a plan) --------------------------
66
+ #
67
+ # Nothing in the core asks for a plan -- CArray can always walk the view --
68
+ # so this loads only when something that compiles one asks.
69
+
70
+ class CArray
71
+ autoload :Fusion, "carray/fusion"
72
+ end
73
+
74
+ # ---- Reading a block as an expression (CArray.fuse) -------------------------
75
+ #
76
+ # Only `fuse` needs this, and only when it is called, so the parser it uses
77
+ # is not loaded by `require "carray"`.
78
+
79
+ class CArray
80
+ autoload :FuseSource, "carray/fuse_source"
81
+ end
82
+
83
+ # ---- Iterators (class / slab) ----------------------------------------------
84
+
85
+ autoload :CASlabIterator, "carray/slab_iterator"
86
+ autoload :CAWindowIterator, "carray/window_iterator"
87
+ autoload :CABlockIterator, "carray/block_iterator"
88
+
89
+ class CArray
90
+ autoload_method "windows", "carray/window_iterator"
91
+ autoload_method "blocks", "carray/block_iterator"
92
+ end
93
+
94
+ # ---- Aggregation accumulators (histogram / bincount_nd) --------------------
95
+
96
+ class CArray
97
+ histogram_rb = "carray/histogram"
98
+ autoload :Histogram, histogram_rb
99
+ autoload_method "histogram1d", histogram_rb
100
+ autoload_method "histogram2d", histogram_rb
101
+ autoload_method "histogram", histogram_rb
102
+
103
+ bincount_nd_rb = "carray/bincount_nd"
104
+ autoload :BincountND, bincount_nd_rb
105
+ autoload_method "bincount_nd", bincount_nd_rb
106
+ end
107
+
108
+ # ---- Categorical / Axis-group reduction ------------------------------------
109
+ #
110
+ # Classifier is CACategorical; axis_group builds the reduction spec.
111
+ # AxisGroup / GroupLabels are top-level;
112
+ # CAGroupIterator is C-defined (ext/ca_group_iter.c), no autoload.
113
+ # The C `[]` type gate (ext/ca_group_iter.c) arms itself lazily the first
114
+ # time a fixlen-surface CArray index appears, so a categorical from any
115
+ # construction path (`categorize` / CACategorical.from_codes) is recognised
116
+ # without routing categorical's autoload through this file (which would
117
+ # recurse when categorical.rb reopens `class CACategorical`).
118
+
119
+ class CArray
120
+ categorical_rb = "carray/categorical"
121
+ autoload_method "categorize", categorical_rb
122
+
123
+ axis_group_rb = "carray/axis_group"
124
+ autoload_method "axis_group", axis_group_rb
125
+
126
+ categorical_iterator_rb = "carray/categorical_iterator"
127
+ autoload_method "group_by_category", categorical_iterator_rb
128
+ autoload_method "group_by_run", categorical_iterator_rb
129
+ end
130
+
131
+ autoload :CACategorical, "carray/categorical"
132
+ autoload :CACategoricalIterator, "carray/categorical_iterator"
133
+ autoload :AxisGroup, "carray/axis_group"
134
+ autoload :GroupLabels, "carray/axis_group"
135
+
136
+
137
+ # ---- CAStruct / CAUnion (fixlen data_class DSL) ----------------------------
138
+ #
139
+ # The struct/union surface is only reached through CArray.struct / .union
140
+ # (definition) or the CAStruct / CAUnion constants (subclassing, rescue
141
+ # CAStruct::Error). Nothing in the eager core references it, so it loads on
142
+ # first use. CAStruct::Builder stays nested-autoloaded inside struct.rb.
143
+
144
+ autoload :CAStruct, "carray/struct"
145
+ autoload :CAUnion, "carray/struct"
146
+
147
+ # ---- CAFrame (DataFrame over CArray columns) -------------------------------
148
+ #
149
+ # The frame is only reached through the CAFrame constant (CAFrame.new /
150
+ # .from_csv / subclassing) or GroupedFrame (obtained from CAFrame#group_by,
151
+ # by which point CAFrame is already loaded). Both constants live in the same
152
+ # require bundle (carray/frame.rb), so autoloading either loads the whole
153
+ # frame. Nothing in the eager core references them, so it loads on first use.
154
+
155
+ autoload :CAFrame, "carray/frame"
156
+ autoload :GroupedFrame, "carray/frame"
157
+
158
+ class CArray
159
+ struct_rb = "carray/struct"
160
+ autoload_method "self.struct", struct_rb
161
+ autoload_method "self.union", struct_rb
162
+ autoload_method "st", struct_rb
163
+ end
164
+
165
+ # ---- CAStack composition surface (stack / meld / montage / split / append) --
166
+ #
167
+ # CAStack is C-defined (ext/ca_obj_stack.c), so its constant and raw
168
+ # `CAStack.new` are always present without this file. Only the Ruby
169
+ # composition surface lives in carray/stack.rb; nothing in the eager core
170
+ # calls it (promote_list / normalize_axis are C-defined), so it loads on
171
+ # first use. CAStack#append needs its own stub, so CAStack extends the DSL.
172
+
173
+ class CArray
174
+ stack_rb = "carray/stack"
175
+ autoload_method "self.stack", stack_rb
176
+ autoload_method "self.meld", stack_rb
177
+ autoload_method "self.montage", stack_rb
178
+ autoload_method "stack", stack_rb
179
+ autoload_method "meld", stack_rb
180
+ autoload_method "split", stack_rb
181
+ end
182
+
183
+ class CAStack
184
+ extend AutoloadMethodExtension
185
+ autoload_method "append", "carray/stack"
186
+ end
187
+
188
+
189
+ # ============================================================================
190
+ # (2) Single-feature method files under carray/methods/
191
+ # ============================================================================
192
+
193
+
194
+ class CArray
195
+ # composition family (eager ragged list -> one array)
196
+ autoload_method "self.concatenate", "carray/methods/composition"
197
+ autoload_method "concatenate", "carray/methods/composition"
198
+ autoload_method "self.mosaic", "carray/methods/composition"
199
+ autoload_method "self.tabulate", "carray/methods/composition"
200
+
201
+ autoload_method "self.meshgrid", "carray/methods/meshgrid"
202
+
203
+ autoload_method "bincount", "carray/methods/bincount"
204
+ autoload_method "self.broadcast", "carray/methods/broadcast"
205
+ autoload_method "gather_nd", "carray/methods/gather_nd"
206
+ autoload_method "put_nd", "carray/methods/gather_nd"
207
+ autoload_method "mask_duplicates", "carray/methods/mask_duplicates"
208
+ autoload_method "unique", "carray/methods/unique"
209
+ autoload_method "is_in", "carray/methods/is_in"
210
+ autoload_method "intersection", "carray/methods/is_in"
211
+ autoload_method "difference", "carray/methods/is_in"
212
+ autoload_method "union", "carray/methods/is_in"
213
+ autoload_method "self.align_addr", "carray/methods/align_addr"
214
+ autoload_method "self.align_nearest_addr", "carray/methods/align_addr"
215
+ autoload_method "value_counts", "carray/methods/value_counts"
216
+ autoload_method "nunique", "carray/methods/nunique"
217
+ autoload_method "is_mode", "carray/methods/mode"
218
+ autoload_method "mode", "carray/methods/mode"
219
+ autoload_method "snap", "carray/methods/snap"
220
+ autoload_method "snap_to", "carray/methods/snap"
221
+ autoload_method "bin", "carray/methods/bin"
222
+ autoload_method "bin_to", "carray/methods/bin"
223
+ autoload_method "index", "carray/methods/index"
224
+ autoload_method "indices", "carray/methods/index"
225
+ autoload_method "to_bit_string", "carray/methods/bit_string"
226
+ autoload_method "from_bit_string", "carray/methods/bit_string"
227
+ autoload_method "self.from_bit_string", "carray/methods/bit_string"
228
+ autoload_method "pack_bits", "carray/methods/bit_string"
229
+ autoload_method "validity_bits", "carray/methods/bit_string"
230
+ autoload_method "choose", "carray/methods/choose"
231
+ autoload_method "join", "carray/methods/join"
232
+ autoload_method "locate_addr", "carray/methods/locate_addr"
233
+ autoload_method "locate_nearest_addr", "carray/methods/locate_addr"
234
+ autoload_method "resize", "carray/methods/resize"
235
+ autoload_method "insert_block", "carray/methods/insert_block"
236
+ autoload_method "delete_block", "carray/methods/insert_block"
237
+ autoload_method "self.format", "carray/methods/string_format"
238
+ autoload_method "format", "carray/methods/string_format"
239
+ end
@@ -0,0 +1,45 @@
1
+ # Mixin that adds a small `autoload_method` DSL to a class:
2
+ #
3
+ # class Foo
4
+ # extend AutoloadMethodExtension
5
+ # autoload_method "self.bar", "libfoo" # singleton method stub
6
+ # autoload_method "baz", "libfoo" # instance method stub
7
+ # end
8
+ #
9
+ # Each stub requires `library` on first call; after the require, the
10
+ # real definition (which the library must install) replaces the stub
11
+ # and the original call is forwarded.
12
+ #
13
+ # Defined at the top level instead of nested under CArray so companion
14
+ # gems can extend their own classes with the same DSL. Module-wide
15
+ # monkey patching is avoided -- only classes that explicitly `extend
16
+ # AutoloadMethodExtension` gain the method.
17
+
18
+ # @private
19
+ module AutoloadMethodExtension
20
+ # @!visibility private
21
+ def autoload_method (method, library)
22
+ if method.to_s =~ /\Aself\.(.+)\z/
23
+ name = $1.to_sym
24
+ target = singleton_class
25
+ else
26
+ name = method.to_sym
27
+ target = self
28
+ end
29
+ autoload_define(target, name, library, method)
30
+ end
31
+
32
+ private
33
+
34
+ def autoload_define (target, name, library, original_spec)
35
+ target.define_method(name) do |*args, **kwargs, &block|
36
+ begin
37
+ require library
38
+ rescue LoadError
39
+ raise "error in autoloading '#{library}' hooked by method " \
40
+ "'#{original_spec}', check gem installation."
41
+ end
42
+ send(name, *args, **kwargs, &block)
43
+ end
44
+ end
45
+ end