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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 027d1747a070b7555d839ffc99bf4ad075c1d2e88551f2c77cb97c4cfc49a5d9
|
|
4
|
+
data.tar.gz: 196e960c448e230c18b337017426d6a6a06ac6e2e06e658f2f82cddb46064ec9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 42131c6e6fce7e99c5791e58c9a2ba94460e67c60f1c37ab9827ff85990f0f10ecb7de1972f47ce91429289de994c7b44283f07d07689e0168ba86834ae78ef9
|
|
7
|
+
data.tar.gz: 1f8f4c6c51a19ad5c1f8b8c1612632c8f23e600f27493183c2055522e55149719cd352b797fd6feb6a2adcc9fd29570618f2723ae833b8afc536820fc83f8835
|
|
@@ -122,18 +122,16 @@ module DaruLite
|
|
|
122
122
|
end
|
|
123
123
|
|
|
124
124
|
def [](*key)
|
|
125
|
-
if key
|
|
126
|
-
|
|
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
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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) ?
|
|
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(
|
|
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
|
-
:
|
|
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
|
data/lib/daru_lite/version.rb
CHANGED
|
@@ -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.
|
|
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:
|
|
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.
|
|
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:
|