carray 2.0.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +5 -25
- data/CHANGELOG.md +16 -0
- data/LICENSE +1 -1
- data/NEWS.md +3 -0
- data/README.md +128 -44
- data/carray.gemspec +22 -24
- data/ext/ca_array_pool.c +91 -0
- data/ext/ca_axis_descriptor.h +186 -0
- data/ext/ca_axis_dispatch.c +924 -0
- data/ext/ca_axis_group.c +1208 -0
- data/ext/ca_bincmp_dispatch.c +76 -0
- data/ext/ca_bincmp_dispatch.h +85 -0
- data/ext/ca_binop_dispatch.c +125 -0
- data/ext/ca_binop_dispatch.h +159 -0
- data/ext/ca_categorical_iterator.c +1375 -0
- data/ext/ca_compare.c +94 -0
- data/ext/ca_compare.h +26 -0
- data/ext/ca_composite_dispatch.c +414 -0
- data/ext/ca_composite_dispatch.h +116 -0
- data/ext/ca_for_buffer.h +96 -0
- data/ext/ca_for_each_element.h +241 -0
- data/ext/ca_group_iter.c +304 -0
- data/ext/ca_iter_substrate.h +325 -0
- data/ext/ca_kernel_iterator.c +4321 -0
- data/ext/ca_kernel_iterator.h +2603 -0
- data/ext/ca_moncmp_dispatch.c +37 -0
- data/ext/ca_moncmp_dispatch.h +62 -0
- data/ext/ca_monop_dispatch.c +200 -0
- data/ext/ca_monop_dispatch.h +235 -0
- data/ext/ca_obj_array.c +355 -359
- data/ext/ca_obj_bincmp.c +809 -0
- data/ext/ca_obj_binop.c +892 -0
- data/ext/ca_obj_bitarray.c +369 -164
- data/ext/ca_obj_bitfield.c +294 -234
- data/ext/ca_obj_block.c +189 -711
- data/ext/ca_obj_byte_swap.c +766 -0
- data/ext/ca_obj_const_string.c +965 -0
- data/ext/ca_obj_face.c +670 -0
- data/ext/ca_obj_face.h +247 -0
- data/ext/ca_obj_fake.c +228 -100
- data/ext/ca_obj_farray.c +54 -441
- data/ext/ca_obj_field.c +82 -529
- data/ext/ca_obj_fixlen_string.c +306 -0
- data/ext/ca_obj_grid.c +858 -440
- data/ext/ca_obj_meld.c +1034 -0
- data/ext/ca_obj_moncmp.c +569 -0
- data/ext/ca_obj_monop.c +1111 -0
- data/ext/ca_obj_object.c +774 -298
- data/ext/ca_obj_record.c +468 -0
- data/ext/ca_obj_reduce.c +97 -82
- data/ext/ca_obj_refer.c +569 -459
- data/ext/ca_obj_remap.c +475 -0
- data/ext/ca_obj_repeat.c +92 -477
- data/ext/ca_obj_roll.c +616 -0
- data/ext/ca_obj_select.c +344 -296
- data/ext/ca_obj_select_axis.c +1296 -0
- data/ext/ca_obj_shift.c +230 -792
- data/ext/ca_obj_source.c +78 -0
- data/ext/ca_obj_stack.c +1173 -0
- data/ext/ca_obj_stride.c +2501 -0
- data/ext/ca_obj_string.c +268 -0
- data/ext/ca_obj_tile.c +614 -0
- data/ext/ca_obj_time.c +546 -0
- data/ext/ca_obj_timedelta.c +435 -0
- data/ext/ca_obj_transpose.c +62 -516
- data/ext/ca_obj_triop.c +746 -0
- data/ext/ca_obj_unbound_repeat.c +208 -241
- data/ext/ca_obj_window.c +1131 -563
- data/ext/ca_op_byte_swap.c +175 -0
- data/ext/ca_op_ipower.c +319 -0
- data/ext/ca_op_powi.h +88 -0
- data/ext/ca_sort_kernels.h +132 -0
- data/ext/ca_sweep_engine.c +430 -0
- data/ext/ca_sweep_engine.h +157 -0
- data/ext/ca_transform_common.c +228 -0
- data/ext/ca_triop_dispatch.c +55 -0
- data/ext/ca_triop_dispatch.h +62 -0
- data/ext/carray.h +795 -402
- data/ext/carray_access.c +831 -711
- data/ext/carray_attribute.c +98 -330
- data/ext/carray_bincount.c +255 -0
- data/ext/carray_broadcast.c +283 -0
- data/ext/carray_call_cfunc.c +1360 -828
- data/ext/carray_call_cfunc.h +160 -0
- data/ext/carray_cast.c +1212 -301
- data/ext/carray_cast_func.rb +81 -40
- data/ext/carray_class.c +53 -63
- data/ext/carray_config.h +28 -0
- data/ext/carray_conversion.c +350 -346
- data/ext/carray_copy.c +156 -268
- data/ext/carray_core.c +1342 -199
- data/ext/carray_count.c +312 -0
- data/ext/carray_data_type.c +43 -19
- data/ext/carray_element.c +585 -213
- data/ext/carray_factorize.c +2542 -0
- data/ext/carray_generate.c +230 -559
- data/ext/carray_histogram.c +490 -0
- data/ext/carray_hold.c +228 -0
- data/ext/carray_index_classifier.c +1035 -0
- data/ext/carray_index_classifier.h +27 -0
- data/ext/carray_internal.h +120 -0
- data/ext/carray_kernels_bincmp.c +4445 -0
- data/ext/carray_kernels_binop.c +10979 -0
- data/ext/carray_kernels_init.c +36 -0
- data/ext/carray_kernels_map.c +3466 -0
- data/ext/carray_kernels_moncmp.c +2096 -0
- data/ext/carray_kernels_monop.c +18312 -0
- data/ext/carray_kernels_reduce_aggregate.c +25836 -0
- data/ext/carray_kernels_reduce_boolean.c +329 -0
- data/ext/carray_kernels_reduce_cumulative.c +14592 -0
- data/ext/carray_kernels_reduce_extreme.c +16947 -0
- data/ext/carray_kernels_reduce_variance.c +3909 -0
- data/ext/carray_kernels_scan.c +3692 -0
- data/ext/carray_kernels_search.c +32137 -0
- data/ext/carray_kernels_sort.c +10625 -0
- data/ext/carray_kernels_triop.c +1391 -0
- data/ext/carray_lazy.c +567 -0
- data/ext/carray_loop.c +88 -200
- data/ext/carray_mask.c +848 -154
- data/ext/carray_math_kernel.h +120 -0
- data/ext/carray_mathfunc.c +10 -241
- data/ext/carray_median_percentile.c +1257 -0
- data/ext/carray_memory_view.c +1625 -0
- data/ext/carray_operator.c +1526 -318
- data/ext/carray_order.c +664 -1394
- data/ext/carray_partition.c +416 -0
- data/ext/carray_random.c +518 -0
- data/ext/carray_scatter.c +357 -0
- data/ext/carray_slab.c +1219 -0
- data/ext/carray_slab.h +84 -0
- data/ext/carray_sort.c +829 -0
- data/ext/carray_sort_kernel.c +620 -0
- data/ext/carray_struct.c +695 -0
- data/ext/carray_test.c +343 -229
- data/ext/carray_undef.c +34 -17
- data/ext/carray_utils.c +175 -74
- data/ext/extconf.rb +216 -55
- data/ext/mk_call_cfunc.rb +480 -0
- data/ext/mkkernel.rb +8842 -0
- data/ext/ruby_carray.c +202 -101
- data/ext/version.h +4 -14
- data/ext/version.rb +5 -13
- data/lib/carray/arrow_tensor.rb +401 -0
- data/lib/carray/attribute.rb +166 -0
- data/lib/carray/autoload_carray.rb +220 -0
- data/lib/carray/autoload_method_extension.rb +44 -0
- data/lib/carray/axis_group.rb +711 -0
- data/lib/carray/basics.rb +481 -0
- data/lib/carray/bincount_nd.rb +358 -0
- data/lib/carray/block_iterator.rb +604 -0
- data/lib/carray/boolean_reduce.rb +109 -0
- data/lib/carray/categorical.rb +561 -0
- data/lib/carray/categorical_iterator.rb +1062 -0
- data/lib/carray/complex.rb +150 -0
- data/lib/carray/conditional.rb +216 -0
- data/lib/carray/const_string.rb +228 -0
- data/lib/carray/construct.rb +139 -328
- data/lib/carray/core_extensions.rb +240 -0
- data/lib/carray/data_type_extension.rb +233 -0
- data/lib/carray/fixlen_string.rb +95 -0
- data/lib/carray/frame/concat.rb +132 -0
- data/lib/carray/frame/convert.rb +95 -0
- data/lib/carray/frame/csv_parser.rb +211 -0
- data/lib/carray/frame/frame.rb +649 -0
- data/lib/carray/frame/group.rb +186 -0
- data/lib/carray/frame/io.rb +164 -0
- data/lib/carray/frame/join.rb +248 -0
- data/lib/carray/frame/records.rb +99 -0
- data/lib/carray/frame/sort.rb +113 -0
- data/lib/carray/frame/verbs.rb +299 -0
- data/lib/carray/frame.rb +16 -0
- data/lib/carray/histogram.rb +512 -0
- data/lib/carray/inspect.rb +37 -20
- data/lib/carray/iterator.rb +57 -349
- data/lib/carray/lazy.rb +889 -0
- data/lib/carray/mask_gap_fill.rb +200 -0
- data/lib/carray/math.rb +78 -342
- data/lib/carray/meld_reduce.rb +289 -0
- data/lib/carray/methods/align_addr.rb +116 -0
- data/lib/carray/methods/bin.rb +128 -0
- data/lib/carray/methods/bincount.rb +87 -0
- data/lib/carray/methods/bit_string.rb +92 -0
- data/lib/carray/methods/broadcast.rb +63 -0
- data/lib/carray/methods/choose.rb +39 -0
- data/lib/carray/methods/composition.rb +280 -0
- data/lib/carray/methods/gather_nd.rb +206 -0
- data/lib/carray/methods/index.rb +39 -0
- data/lib/carray/methods/insert_block.rb +99 -0
- data/lib/carray/methods/is_in.rb +141 -0
- data/lib/carray/methods/join.rb +90 -0
- data/lib/carray/methods/locate_addr.rb +47 -0
- data/lib/carray/methods/mask_duplicates.rb +41 -0
- data/lib/carray/methods/meshgrid.rb +91 -0
- data/lib/carray/methods/mode.rb +126 -0
- data/lib/carray/methods/nunique.rb +46 -0
- data/lib/carray/methods/resize.rb +56 -0
- data/lib/carray/methods/snap.rb +156 -0
- data/lib/carray/methods/string_format.rb +57 -0
- data/lib/carray/methods/unique.rb +47 -0
- data/lib/carray/methods/value_counts.rb +71 -0
- data/lib/carray/mkmf.rb +124 -101
- data/lib/carray/runtime.rb +108 -0
- data/lib/carray/serialize.rb +478 -167
- data/lib/carray/slab_iterator.rb +292 -0
- data/lib/carray/stack.rb +291 -0
- data/lib/carray/string.rb +56 -180
- data/lib/carray/string_operation_extension.rb +289 -0
- data/lib/carray/struct.rb +335 -323
- data/lib/carray/struct_builder.rb +697 -0
- data/lib/carray/table.rb +41 -2
- data/lib/carray/time.rb +2255 -38
- data/lib/carray/window_iterator.rb +655 -0
- data/lib/carray.rb +55 -57
- metadata +163 -130
- data/Rakefile +0 -51
- data/TODO.md +0 -18
- data/ext/ca_iter_block.c +0 -257
- data/ext/ca_iter_dimension.c +0 -299
- data/ext/ca_iter_window.c +0 -214
- data/ext/ca_obj_mapping.c +0 -644
- data/ext/carray_iterator.c +0 -641
- data/ext/carray_math.rb +0 -850
- data/ext/carray_numeric.c +0 -259
- data/ext/carray_sort_addr.c +0 -254
- data/ext/carray_stat.c +0 -2100
- data/ext/carray_stat_proc.rb +0 -1999
- data/ext/mkmath.rb +0 -741
- data/ext/ruby_ccomplex.c +0 -509
- data/ext/ruby_float_func.c +0 -86
- data/lib/carray/array.rb +0 -8
- data/lib/carray/autoload/autoload_base.rb +0 -19
- data/lib/carray/autoload/autoload_gem_cairo.rb +0 -9
- data/lib/carray/autoload/autoload_gem_ffi.rb +0 -9
- data/lib/carray/autoload/autoload_gem_gnuplot.rb +0 -2
- data/lib/carray/autoload/autoload_gem_io_csv.rb +0 -14
- data/lib/carray/autoload/autoload_gem_io_pg.rb +0 -6
- data/lib/carray/autoload/autoload_gem_io_sqlite3.rb +0 -12
- data/lib/carray/autoload/autoload_gem_narray.rb +0 -10
- data/lib/carray/autoload/autoload_gem_numo_narray.rb +0 -15
- data/lib/carray/autoload/autoload_gem_opencv.rb +0 -16
- data/lib/carray/autoload/autoload_gem_random.rb +0 -8
- data/lib/carray/autoload/autoload_gem_rmagick.rb +0 -23
- data/lib/carray/autoload/autoload_gem_zimg.rb +0 -3
- data/lib/carray/autoload/autoload_io_imagemagick.rb +0 -6
- data/lib/carray/autoload/autoload_math_histogram.rb +0 -5
- data/lib/carray/autoload/autoload_math_recurrence.rb +0 -6
- data/lib/carray/autoload/autoload_object_iterator.rb +0 -1
- data/lib/carray/autoload/autoload_object_link.rb +0 -1
- data/lib/carray/autoload/autoload_object_pack.rb +0 -2
- data/lib/carray/autoload.rb +0 -141
- data/lib/carray/basic.rb +0 -191
- data/lib/carray/broadcast.rb +0 -101
- data/lib/carray/compose.rb +0 -315
- data/lib/carray/convert.rb +0 -115
- data/lib/carray/info.rb +0 -110
- data/lib/carray/io/imagemagick.rb +0 -235
- data/lib/carray/mask.rb +0 -102
- data/lib/carray/math/histogram.rb +0 -177
- data/lib/carray/math/recurrence.rb +0 -93
- data/lib/carray/object/ca_obj_iterator.rb +0 -50
- data/lib/carray/object/ca_obj_link.rb +0 -50
- data/lib/carray/object/ca_obj_pack.rb +0 -99
- data/lib/carray/obsolete.rb +0 -256
- data/lib/carray/ordering.rb +0 -181
- data/lib/carray/testing.rb +0 -51
- data/lib/carray/transform.rb +0 -109
- data/misc/Methods.ja.md +0 -182
- data/misc/NOTE +0 -51
- data/spec/Classes/CABitfield_spec.rb +0 -58
- data/spec/Classes/CABlockIterator_spec.rb +0 -114
- data/spec/Classes/CABlock_spec.rb +0 -205
- data/spec/Classes/CAField_spec.rb +0 -39
- data/spec/Classes/CAGrid_spec.rb +0 -75
- data/spec/Classes/CAMap_spec.rb +0 -0
- data/spec/Classes/CAMapping_spec.rb +0 -105
- data/spec/Classes/CAObject_attribute_spec.rb +0 -33
- data/spec/Classes/CAObject_spec.rb +0 -33
- data/spec/Classes/CARefer_spec.rb +0 -93
- data/spec/Classes/CARepeat_spec.rb +0 -65
- data/spec/Classes/CASelect_spec.rb +0 -22
- data/spec/Classes/CAShift_spec.rb +0 -16
- data/spec/Classes/CAStruct_spec.rb +0 -71
- data/spec/Classes/CATranspose_spec.rb +0 -60
- data/spec/Classes/CAUnboudRepeat_spec.rb +0 -102
- data/spec/Classes/CAWindow_spec.rb +0 -54
- data/spec/Classes/CAWrap_spec.rb +0 -8
- data/spec/Classes/CArray_spec.rb +0 -184
- data/spec/Classes/CScalar_spec.rb +0 -55
- data/spec/Classes/ex1.rb +0 -46
- data/spec/Features/feature_130_spec.rb +0 -19
- data/spec/Features/feature_attributes_spec.rb +0 -280
- data/spec/Features/feature_boolean_spec.rb +0 -98
- data/spec/Features/feature_broadcast.rb +0 -116
- data/spec/Features/feature_cast_function.rb +0 -19
- data/spec/Features/feature_cast_spec.rb +0 -33
- data/spec/Features/feature_class_spec.rb +0 -84
- data/spec/Features/feature_complex_spec.rb +0 -42
- data/spec/Features/feature_composite_spec.rb +0 -124
- data/spec/Features/feature_convert_spec.rb +0 -46
- data/spec/Features/feature_copy_spec.rb +0 -123
- data/spec/Features/feature_creation_spec.rb +0 -84
- data/spec/Features/feature_element_spec.rb +0 -144
- data/spec/Features/feature_extream_spec.rb +0 -54
- data/spec/Features/feature_generate_spec.rb +0 -74
- data/spec/Features/feature_index_spec.rb +0 -69
- data/spec/Features/feature_mask_spec.rb +0 -580
- data/spec/Features/feature_math_spec.rb +0 -97
- data/spec/Features/feature_order_spec.rb +0 -146
- data/spec/Features/feature_ref_store_spec.rb +0 -209
- data/spec/Features/feature_serialization_spec.rb +0 -125
- data/spec/Features/feature_stat_spec.rb +0 -397
- data/spec/Features/feature_virtual_spec.rb +0 -48
- data/spec/Features/method_eq_spec.rb +0 -81
- data/spec/Features/method_is_nan_spec.rb +0 -12
- data/spec/Features/method_map_spec.rb +0 -54
- data/spec/Features/method_max_with.rb +0 -20
- data/spec/Features/method_min_with.rb +0 -19
- data/spec/Features/method_ne_spec.rb +0 -18
- data/spec/Features/method_project_spec.rb +0 -188
- data/spec/Features/method_ref_spec.rb +0 -27
- data/spec/Features/method_round_spec.rb +0 -11
- data/spec/Features/method_s_linspace_spec.rb +0 -48
- data/spec/Features/method_s_span_spec.rb +0 -14
- data/spec/Features/method_seq_spec.rb +0 -47
- data/spec/Features/method_sort_with.rb +0 -43
- data/spec/Features/method_sorted_with.rb +0 -29
- data/spec/Features/method_span_spec.rb +0 -42
- data/spec/Features/method_wrap_readonly_spec.rb +0 -43
- data/spec/UnitTest/test_CAVirtual.rb +0 -214
- data/spec/spec_all.rb +0 -10
- data/utils/ca_ase.rb +0 -21
- data/utils/ca_methods.rb +0 -15
- data/utils/cast_checker.rb +0 -30
- data/utils/convert_test.rb +0 -73
- data/utils/extract_yard.rb +0 -22
- data/utils/guess_shape.rb +0 -76
- data/utils/monkey_patch_methods.rb +0 -62
- data/utils/remove_resource_fork.sh +0 -5
|
@@ -0,0 +1,220 @@
|
|
|
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
|
+
# ---- Iterators (class / slab) ----------------------------------------------
|
|
66
|
+
|
|
67
|
+
autoload :CASlabIterator, "carray/slab_iterator"
|
|
68
|
+
autoload :CAWindowIterator, "carray/window_iterator"
|
|
69
|
+
autoload :CABlockIterator, "carray/block_iterator"
|
|
70
|
+
|
|
71
|
+
class CArray
|
|
72
|
+
autoload_method "windows", "carray/window_iterator"
|
|
73
|
+
autoload_method "blocks", "carray/block_iterator"
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# ---- Aggregation accumulators (histogram / bincount_nd) --------------------
|
|
77
|
+
|
|
78
|
+
class CArray
|
|
79
|
+
histogram_rb = "carray/histogram"
|
|
80
|
+
autoload :Histogram, histogram_rb
|
|
81
|
+
autoload_method "histogram1d", histogram_rb
|
|
82
|
+
autoload_method "histogram2d", histogram_rb
|
|
83
|
+
autoload_method "histogram", histogram_rb
|
|
84
|
+
|
|
85
|
+
bincount_nd_rb = "carray/bincount_nd"
|
|
86
|
+
autoload :BincountND, bincount_nd_rb
|
|
87
|
+
autoload_method "bincount_nd", bincount_nd_rb
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# ---- Categorical / Axis-group reduction ------------------------------------
|
|
91
|
+
#
|
|
92
|
+
# Classifier is CACategorical; axis_group builds the reduction spec.
|
|
93
|
+
# AxisGroup / GroupLabels are top-level;
|
|
94
|
+
# CAGroupIterator is C-defined (ext/ca_group_iter.c), no autoload.
|
|
95
|
+
# The C `[]` type gate (ext/ca_group_iter.c) arms itself lazily the first
|
|
96
|
+
# time a fixlen-surface CArray index appears, so a categorical from any
|
|
97
|
+
# construction path (`categorize` / CACategorical.from_codes) is recognised
|
|
98
|
+
# without routing categorical's autoload through this file (which would
|
|
99
|
+
# recurse when categorical.rb reopens `class CACategorical`).
|
|
100
|
+
|
|
101
|
+
class CArray
|
|
102
|
+
categorical_rb = "carray/categorical"
|
|
103
|
+
autoload_method "categorize", categorical_rb
|
|
104
|
+
|
|
105
|
+
axis_group_rb = "carray/axis_group"
|
|
106
|
+
autoload_method "axis_group", axis_group_rb
|
|
107
|
+
|
|
108
|
+
categorical_iterator_rb = "carray/categorical_iterator"
|
|
109
|
+
autoload_method "group_by_category", categorical_iterator_rb
|
|
110
|
+
autoload_method "group_by_run", categorical_iterator_rb
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
autoload :CACategorical, "carray/categorical"
|
|
114
|
+
autoload :CACategoricalIterator, "carray/categorical_iterator"
|
|
115
|
+
autoload :AxisGroup, "carray/axis_group"
|
|
116
|
+
autoload :GroupLabels, "carray/axis_group"
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
# ---- CAStruct / CAUnion (fixlen data_class DSL) ----------------------------
|
|
120
|
+
#
|
|
121
|
+
# The struct/union surface is only reached through CArray.struct / .union
|
|
122
|
+
# (definition) or the CAStruct / CAUnion constants (subclassing, rescue
|
|
123
|
+
# CAStruct::Error). Nothing in the eager core references it, so it loads on
|
|
124
|
+
# first use. CAStruct::Builder stays nested-autoloaded inside struct.rb.
|
|
125
|
+
|
|
126
|
+
autoload :CAStruct, "carray/struct"
|
|
127
|
+
autoload :CAUnion, "carray/struct"
|
|
128
|
+
|
|
129
|
+
# ---- CAFrame (DataFrame over CArray columns) -------------------------------
|
|
130
|
+
#
|
|
131
|
+
# The frame is only reached through the CAFrame constant (CAFrame.new /
|
|
132
|
+
# .from_csv / subclassing) or GroupedFrame (obtained from CAFrame#group_by,
|
|
133
|
+
# by which point CAFrame is already loaded). Both constants live in the same
|
|
134
|
+
# require bundle (carray/frame.rb), so autoloading either loads the whole
|
|
135
|
+
# frame. Nothing in the eager core references them, so it loads on first use.
|
|
136
|
+
|
|
137
|
+
autoload :CAFrame, "carray/frame"
|
|
138
|
+
autoload :GroupedFrame, "carray/frame"
|
|
139
|
+
|
|
140
|
+
class CArray
|
|
141
|
+
struct_rb = "carray/struct"
|
|
142
|
+
autoload_method "self.struct", struct_rb
|
|
143
|
+
autoload_method "self.union", struct_rb
|
|
144
|
+
autoload_method "st", struct_rb
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# ---- CAStack composition surface (stack / meld / montage / split / append) --
|
|
148
|
+
#
|
|
149
|
+
# CAStack is C-defined (ext/ca_obj_stack.c), so its constant and raw
|
|
150
|
+
# `CAStack.new` are always present without this file. Only the Ruby
|
|
151
|
+
# composition surface lives in carray/stack.rb; nothing in the eager core
|
|
152
|
+
# calls it (promote_list / normalize_axis are C-defined), so it loads on
|
|
153
|
+
# first use. CAStack#append needs its own stub, so CAStack extends the DSL.
|
|
154
|
+
|
|
155
|
+
class CArray
|
|
156
|
+
stack_rb = "carray/stack"
|
|
157
|
+
autoload_method "self.stack", stack_rb
|
|
158
|
+
autoload_method "self.meld", stack_rb
|
|
159
|
+
autoload_method "self.montage", stack_rb
|
|
160
|
+
autoload_method "stack", stack_rb
|
|
161
|
+
autoload_method "meld", stack_rb
|
|
162
|
+
autoload_method "split", stack_rb
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
class CAStack
|
|
166
|
+
extend AutoloadMethodExtension
|
|
167
|
+
autoload_method "append", "carray/stack"
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
# ============================================================================
|
|
172
|
+
# (2) Single-feature method files under carray/methods/
|
|
173
|
+
# ============================================================================
|
|
174
|
+
|
|
175
|
+
class CArray
|
|
176
|
+
# composition family (eager ragged list -> one array)
|
|
177
|
+
autoload_method "self.concatenate", "carray/methods/composition"
|
|
178
|
+
autoload_method "concatenate", "carray/methods/composition"
|
|
179
|
+
autoload_method "self.mosaic", "carray/methods/composition"
|
|
180
|
+
autoload_method "self.tabulate", "carray/methods/composition"
|
|
181
|
+
|
|
182
|
+
autoload_method "self.meshgrid", "carray/methods/meshgrid"
|
|
183
|
+
|
|
184
|
+
autoload_method "bincount", "carray/methods/bincount"
|
|
185
|
+
autoload_method "self.broadcast", "carray/methods/broadcast"
|
|
186
|
+
autoload_method "gather_nd", "carray/methods/gather_nd"
|
|
187
|
+
autoload_method "put_nd", "carray/methods/gather_nd"
|
|
188
|
+
autoload_method "mask_duplicates", "carray/methods/mask_duplicates"
|
|
189
|
+
autoload_method "unique", "carray/methods/unique"
|
|
190
|
+
autoload_method "is_in", "carray/methods/is_in"
|
|
191
|
+
autoload_method "intersection", "carray/methods/is_in"
|
|
192
|
+
autoload_method "difference", "carray/methods/is_in"
|
|
193
|
+
autoload_method "union", "carray/methods/is_in"
|
|
194
|
+
autoload_method "self.align_addr", "carray/methods/align_addr"
|
|
195
|
+
autoload_method "self.align_nearest_addr", "carray/methods/align_addr"
|
|
196
|
+
autoload_method "value_counts", "carray/methods/value_counts"
|
|
197
|
+
autoload_method "nunique", "carray/methods/nunique"
|
|
198
|
+
autoload_method "is_mode", "carray/methods/mode"
|
|
199
|
+
autoload_method "mode", "carray/methods/mode"
|
|
200
|
+
autoload_method "snap", "carray/methods/snap"
|
|
201
|
+
autoload_method "snap_to", "carray/methods/snap"
|
|
202
|
+
autoload_method "bin", "carray/methods/bin"
|
|
203
|
+
autoload_method "bin_to", "carray/methods/bin"
|
|
204
|
+
autoload_method "index", "carray/methods/index"
|
|
205
|
+
autoload_method "indices", "carray/methods/index"
|
|
206
|
+
autoload_method "to_bit_string", "carray/methods/bit_string"
|
|
207
|
+
autoload_method "from_bit_string", "carray/methods/bit_string"
|
|
208
|
+
autoload_method "self.from_bit_string", "carray/methods/bit_string"
|
|
209
|
+
autoload_method "pack_bits", "carray/methods/bit_string"
|
|
210
|
+
autoload_method "validity_bits", "carray/methods/bit_string"
|
|
211
|
+
autoload_method "choose", "carray/methods/choose"
|
|
212
|
+
autoload_method "join", "carray/methods/join"
|
|
213
|
+
autoload_method "locate_addr", "carray/methods/locate_addr"
|
|
214
|
+
autoload_method "locate_nearest_addr", "carray/methods/locate_addr"
|
|
215
|
+
autoload_method "resize", "carray/methods/resize"
|
|
216
|
+
autoload_method "insert_block", "carray/methods/insert_block"
|
|
217
|
+
autoload_method "delete_block", "carray/methods/insert_block"
|
|
218
|
+
autoload_method "self.format", "carray/methods/string_format"
|
|
219
|
+
autoload_method "format", "carray/methods/string_format"
|
|
220
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
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
|
+
module AutoloadMethodExtension
|
|
19
|
+
# @!visibility private
|
|
20
|
+
def autoload_method (method, library)
|
|
21
|
+
if method.to_s =~ /\Aself\.(.+)\z/
|
|
22
|
+
name = $1.to_sym
|
|
23
|
+
target = singleton_class
|
|
24
|
+
else
|
|
25
|
+
name = method.to_sym
|
|
26
|
+
target = self
|
|
27
|
+
end
|
|
28
|
+
autoload_define(target, name, library, method)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def autoload_define (target, name, library, original_spec)
|
|
34
|
+
target.send(:define_method, name) do |*args, **kwargs, &block|
|
|
35
|
+
begin
|
|
36
|
+
require library
|
|
37
|
+
rescue LoadError
|
|
38
|
+
raise "error in autoloading '#{library}' hooked by method " \
|
|
39
|
+
"'#{original_spec}', check gem installation."
|
|
40
|
+
end
|
|
41
|
+
send(name, *args, **kwargs, &block)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|