daru_lite 0.2.1 → 0.2.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6da8c79960f009b08e12c9d252a267e4d69d6c2152ded63fbe8180891eb25b86
4
- data.tar.gz: 074d65df9bbc034b37089cf0938a5df45006f8e264ed259721d5823e0ae41c3b
3
+ metadata.gz: 027d1747a070b7555d839ffc99bf4ad075c1d2e88551f2c77cb97c4cfc49a5d9
4
+ data.tar.gz: 196e960c448e230c18b337017426d6a6a06ac6e2e06e658f2f82cddb46064ec9
5
5
  SHA512:
6
- metadata.gz: 56055dcbc442963a8c9881d0b86c767cf9d49d382b1f78b33e7603d83a496028116fef819b38fd15110f67bacccf143354efdba9a919fe829d54006c2e0e6bd5
7
- data.tar.gz: b3b20cfa80cd6ff336979d1ec836673de99f828883d45186a2762b396ab85ed7b57c8b75709b9ff12623121ed34c707ad66b3ad26aa530e98f43aa5fb27dd4a0
6
+ metadata.gz: 42131c6e6fce7e99c5791e58c9a2ba94460e67c60f1c37ab9827ff85990f0f10ecb7de1972f47ce91429289de994c7b44283f07d07689e0168ba86834ae78ef9
7
+ data.tar.gz: 1f8f4c6c51a19ad5c1f8b8c1612632c8f23e600f27493183c2055522e55149719cd352b797fd6feb6a2adcc9fd29570618f2723ae833b8afc536820fc83f8835
@@ -222,7 +222,7 @@ module DaruLite
222
222
  end
223
223
 
224
224
  def access_vector_multi_index(*names)
225
- pos = @vectors[names]
225
+ pos = @vectors[*names]
226
226
 
227
227
  return @data[pos] if pos.is_a?(Integer)
228
228
 
@@ -122,18 +122,16 @@ module DaruLite
122
122
  end
123
123
 
124
124
  def [](*key)
125
- if key[0].is_a?(Array)
126
- collection = key.map { |actual_key| self[*actual_key] }
127
- collection.one? ? collection.first : collection
128
- elsif key[0].is_a?(Range)
129
- retrieve_from_range(key[0])
130
- elsif key[0].is_a?(Integer) && key.size == 1
131
- try_retrieve_from_integer(key[0])
125
+ if key.all? { |subkey| subkey.is_a?(Array) && subkey.length > 1 }
126
+ retrieve_from_tuples(*key)
132
127
  else
133
- begin
134
- retrieve_from_tuples key
135
- rescue NoMethodError
136
- raise IndexError, "Specified index #{key.inspect} do not exist"
128
+ key.flatten!
129
+ if key[0].is_a?(Range)
130
+ retrieve_from_range(key[0])
131
+ elsif key[0].is_a?(Integer) && key.size == 1
132
+ try_retrieve_from_integer(key[0])
133
+ else
134
+ retrieve_from_tuple(key)
137
135
  end
138
136
  end
139
137
  end
@@ -217,14 +215,19 @@ module DaruLite
217
215
  end
218
216
 
219
217
  def try_retrieve_from_integer(int)
220
- @levels[0].key?(int) ? retrieve_from_tuples([int]) : int
218
+ @levels[0].key?(int) ? retrieve_from_tuple([int]) : int
221
219
  end
222
220
 
223
221
  def retrieve_from_range(range)
224
222
  MultiIndex.from_tuples(range.map { |index| key(index) })
225
223
  end
226
224
 
227
- def retrieve_from_tuples(key)
225
+ def retrieve_from_tuples(*keys)
226
+ collection = keys.map { |key| retrieve_from_tuple(key) }
227
+ collection.one? ? collection.first : collection
228
+ end
229
+
230
+ def retrieve_from_tuple(key)
228
231
  chosen = []
229
232
 
230
233
  key.each_with_index do |k, depth|
@@ -238,6 +241,8 @@ module DaruLite
238
241
  return chosen[0] if chosen.size == 1 && key.size == @levels.size
239
242
 
240
243
  multi_index_from_multiple_selections(chosen)
244
+ rescue NoMethodError
245
+ raise IndexError, "Specified index #{key.inspect} do not exist"
241
246
  end
242
247
 
243
248
  def multi_index_from_multiple_selections(chosen)
@@ -287,8 +292,8 @@ module DaruLite
287
292
  raise SizeError, [error_msg, suggestion_msg].join("\n") if names.size < levels.size
288
293
  end
289
294
 
290
- private :find_all_indexes, :multi_index_from_multiple_selections,
291
- :retrieve_from_range, :retrieve_from_tuples, :validate_name
295
+ private :find_all_indexes, :multi_index_from_multiple_selections, :retrieve_from_range,
296
+ :retrieve_from_tuples, :retrieve_from_tuple, :validate_name
292
297
 
293
298
  def key(index)
294
299
  raise ArgumentError, "Key #{index} is too large" if index >= @labels[0].size
@@ -1,3 +1,3 @@
1
1
  module DaruLite
2
- VERSION = '0.2.1'.freeze
2
+ VERSION = '0.2.3'.freeze
3
3
  end
@@ -58,6 +58,11 @@ shared_examples_for 'a fetchable DataFrame' do
58
58
  DaruLite::Vector.new(vector_arry1, index: multi_index))
59
59
  end
60
60
 
61
+ it "returns a vector when specifying last tuple part as an array" do
62
+ expect(df_mi[:a, :one, [:bar]]).to eq(
63
+ DaruLite::Vector.new(vector_arry1, index: multi_index))
64
+ end
65
+
61
66
  it "returns DataFrame when specified first layer of MultiIndex" do
62
67
  sub_order = DaruLite::MultiIndex.from_tuples([
63
68
  [:one, :bar],
@@ -141,6 +141,10 @@ describe DaruLite::MultiIndex do
141
141
  expect(index[:a, :one, :baz]).to eq(1)
142
142
  end
143
143
 
144
+ it "returns the row number when specifying last tuple part as an array" do
145
+ expect(index[:a, :one, [:baz]]).to eq(1)
146
+ end
147
+
144
148
  it "returns the row numbers when specifying multiple tuples" do
145
149
  expect(index[[:a, :one, :baz], [:b, :two, :bar]]).to eq([1, 5])
146
150
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daru_lite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Naude-Filonnière
@@ -9,9 +9,10 @@ authors:
9
9
  - Julie Thomas
10
10
  - Amar Slaoua
11
11
  - Mourtada Belhantri
12
+ autorequire:
12
13
  bindir: bin
13
14
  cert_chain: []
14
- date: 1980-01-02 00:00:00.000000000 Z
15
+ date: 2026-03-27 00:00:00.000000000 Z
15
16
  dependencies:
16
17
  - !ruby/object:Gem::Dependency
17
18
  name: activerecord
@@ -316,6 +317,7 @@ description: |
316
317
  and can be used with many others like mixed_models, gnuplotrb and iruby.
317
318
 
318
319
  Daru Lite is a fork of Daru that aims to focus on data manipulation and stability.
320
+ email:
319
321
  executables: []
320
322
  extensions: []
321
323
  extra_rdoc_files: []
@@ -531,6 +533,7 @@ homepage: https://github.com/pollandroll/daru
531
533
  licenses:
532
534
  - BSD-2-Clause
533
535
  metadata: {}
536
+ post_install_message:
534
537
  rdoc_options: []
535
538
  require_paths:
536
539
  - lib
@@ -545,7 +548,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
545
548
  - !ruby/object:Gem::Version
546
549
  version: '0'
547
550
  requirements: []
548
- rubygems_version: 4.0.4
551
+ rubygems_version: 3.4.10
552
+ signing_key:
549
553
  specification_version: 4
550
554
  summary: Data Analysis in RUby, stripped down
551
555
  test_files: