object_table 0.4.0 → 0.4.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.
- checksums.yaml +4 -4
- data/lib/object_table/masked_column.rb +2 -9
- data/lib/object_table/version.rb +1 -1
- data/spec/object_table/masked_column_spec.rb +39 -25
- metadata +17 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: acf152a47e8843f2a66b5fea50a40ec7ccb50041
|
4
|
+
data.tar.gz: df4ce84293c425fced73a2f26eeb6970375b199e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5a47eb7cf71b2d4408d84b8b46d39b2d12a029e126c80f339cbdfd4741c045d472cc3d4a6167340a5e916b79e35f0870fc6bee2f9ebc476161fd5b5e5edddfa
|
7
|
+
data.tar.gz: 317c8402da17a577095f500f29e029495809ec7a1c95571d6adbfc464b8d64125347ef56ec4cb898313a458077dc148dd677cba02fe91ad915b7f5a08d8b2a7e
|
@@ -23,18 +23,11 @@ class ObjectTable::MaskedColumn < NArray
|
|
23
23
|
column
|
24
24
|
end
|
25
25
|
|
26
|
-
def []=(*keys, value)
|
27
|
-
unless parent.nil? or ((value.is_a?(Array) or value.is_a?(NArray)) and value.empty?)
|
28
|
-
parent[false, indices[*keys]] = value
|
29
|
-
end
|
30
|
-
super
|
31
|
-
end
|
32
|
-
|
33
26
|
# make destructive methods affect parent
|
34
|
-
%w{ fill! indgen! indgen random! map! collect! conj! imag= mod! add! div! sbt! mul! }.each do |op|
|
27
|
+
%w{ []= fill! indgen! indgen random! map! collect! conj! imag= mod! add! div! sbt! mul! }.each do |op|
|
35
28
|
define_method(op) do |*args, &block|
|
36
29
|
result = super(*args, &block)
|
37
|
-
parent[false, indices] =
|
30
|
+
parent[false, indices] = self if parent
|
38
31
|
result
|
39
32
|
end
|
40
33
|
end
|
data/lib/object_table/version.rb
CHANGED
@@ -8,15 +8,15 @@ shared_examples 'a NArray' do |operator, options={}|
|
|
8
8
|
let(:x){ ObjectTable::MaskedColumn.mask(x_na, indices) }
|
9
9
|
let(:y){ ObjectTable::MaskedColumn.mask(y_na, indices) }
|
10
10
|
|
11
|
-
let(:x_na){ NArray.
|
12
|
-
let(:y_na){ NArray.
|
11
|
+
let(:x_na){ (NArray.float(10, 20).random * 10).to_i + 1 }
|
12
|
+
let(:y_na){ (NArray.float(10, 20).random * 10).to_i + 1 }
|
13
13
|
|
14
14
|
if unary
|
15
15
|
subject{ x.send(operator) }
|
16
|
-
let(:expected_result){ x_na[indices].send(operator) }
|
16
|
+
let(:expected_result){ x_na[false, indices].send(operator) }
|
17
17
|
else
|
18
18
|
subject{ x.send(operator, y) }
|
19
|
-
let(:expected_result){ x_na.send(operator, y_na)[indices] }
|
19
|
+
let(:expected_result){ x_na.send(operator, y_na)[false, indices] }
|
20
20
|
end
|
21
21
|
|
22
22
|
describe "#{operator}" do
|
@@ -36,16 +36,16 @@ end
|
|
36
36
|
|
37
37
|
describe ObjectTable::MaskedColumn do
|
38
38
|
|
39
|
-
let(:parent) { NArray.float(10).random! }
|
39
|
+
let(:parent) { NArray.float(10, 10).random! }
|
40
40
|
let(:indices) { NArray[1, 3, 4, 6] }
|
41
|
-
let(:other_indices) { NArray.to_na((0...parent.
|
41
|
+
let(:other_indices) { NArray.to_na((0...parent.shape[-1]).to_a - indices.to_a) }
|
42
42
|
let(:masked) { ObjectTable::MaskedColumn.mask(parent, indices) }
|
43
43
|
|
44
44
|
subject{ masked }
|
45
45
|
|
46
46
|
describe '.mask' do
|
47
47
|
it 'should mask the parent' do
|
48
|
-
expect(subject.to_a).to eql parent[indices].to_a
|
48
|
+
expect(subject.to_a).to eql parent[false, indices].to_a
|
49
49
|
end
|
50
50
|
|
51
51
|
it 'should set the parent' do
|
@@ -78,35 +78,49 @@ describe ObjectTable::MaskedColumn do
|
|
78
78
|
|
79
79
|
|
80
80
|
shared_examples '#[]=' do |slice|
|
81
|
-
let(:value)
|
82
|
-
let!(:original){ parent.clone }
|
83
|
-
let(:slice){ slice }
|
81
|
+
let(:value) { 1000 }
|
82
|
+
let!(:original) { parent.clone }
|
83
|
+
#let(:slice) { slice }
|
84
84
|
|
85
|
-
context "slicing with a #{slice.class}" do
|
85
|
+
context "slicing with a #{slice[-1].class}" do
|
86
86
|
|
87
87
|
it "should modify the parent" do
|
88
|
-
subject[slice] = value
|
89
|
-
expect(parent[indices].to_a).to eql subject.to_a
|
90
|
-
expect(parent[other_indices].to_a).to eql original[other_indices].to_a
|
88
|
+
subject[*slice] = value
|
89
|
+
expect(parent[false, indices].to_a).to eql subject.to_a
|
90
|
+
expect(parent[false, other_indices].to_a).to eql original[false, other_indices].to_a
|
91
91
|
end
|
92
92
|
|
93
93
|
context 'without a parent' do
|
94
|
-
subject{ ObjectTable::MaskedColumn[
|
94
|
+
subject{ ObjectTable::MaskedColumn.to_na(parent[false, indices]) }
|
95
95
|
|
96
96
|
it 'should still work' do
|
97
|
-
expect{subject[slice] = value}.to_not raise_error
|
97
|
+
expect{subject[*slice] = value}.to_not raise_error
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
104
|
+
context 'with a vector' do
|
105
|
+
let(:parent) { NArray.float(10).random }
|
106
|
+
include_examples '#[]=', [0]
|
107
|
+
include_examples '#[]=', [NArray.cast([1, 0, 0, 1], 'byte')]
|
108
|
+
include_examples '#[]=', [1...4]
|
109
|
+
include_examples '#[]=', [[0, 2]]
|
110
|
+
include_examples '#[]=', [true]
|
111
|
+
include_examples '#[]=', [nil]
|
112
|
+
end
|
113
|
+
|
114
|
+
context 'when multi dimensional' do
|
115
|
+
let(:parent) { NArray.float(10, 20).random }
|
116
|
+
include_examples '#[]=', [0]
|
117
|
+
include_examples '#[]=', [nil]
|
118
|
+
include_examples '#[]=', [true]
|
119
|
+
include_examples '#[]=', [0, 0]
|
120
|
+
include_examples '#[]=', [0, 1...4]
|
121
|
+
include_examples '#[]=', [0, [0, 2]]
|
122
|
+
include_examples '#[]=', [0, NArray.cast([1, 0, 0, 1], 'byte')]
|
123
|
+
end
|
110
124
|
|
111
125
|
|
112
126
|
shared_examples 'destructive methods' do |method, *args|
|
@@ -122,12 +136,12 @@ describe ObjectTable::MaskedColumn do
|
|
122
136
|
|
123
137
|
it "#{method} should affect the parent" do
|
124
138
|
perform
|
125
|
-
expect(parent[indices].to_a).to eql subject.to_a
|
126
|
-
expect(parent[other_indices].to_a).to eql original[other_indices].to_a
|
139
|
+
expect(parent[false, indices].to_a).to eql subject.to_a
|
140
|
+
expect(parent[false, other_indices].to_a).to eql original[false, other_indices].to_a
|
127
141
|
end
|
128
142
|
|
129
143
|
context 'without a parent' do
|
130
|
-
subject{ ObjectTable::MaskedColumn[
|
144
|
+
subject{ ObjectTable::MaskedColumn.to_na(parent[false, indices]) }
|
131
145
|
|
132
146
|
it "#{method} should still work" do
|
133
147
|
expect{perform}.to_not raise_error
|
metadata
CHANGED
@@ -1,83 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: object_table
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cheney Lin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: narray
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.6.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.6.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.3'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.3'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '3.1'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '3.1'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: coveralls
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0.7'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0.7'
|
83
83
|
description: Simple data table table implementation in ruby
|
@@ -87,9 +87,9 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
-
- .gitignore
|
91
|
-
- .rspec
|
92
|
-
- .travis.yml
|
90
|
+
- ".gitignore"
|
91
|
+
- ".rspec"
|
92
|
+
- ".travis.yml"
|
93
93
|
- Gemfile
|
94
94
|
- LICENSE
|
95
95
|
- README.md
|
@@ -136,12 +136,12 @@ require_paths:
|
|
136
136
|
- lib
|
137
137
|
required_ruby_version: !ruby/object:Gem::Requirement
|
138
138
|
requirements:
|
139
|
-
- -
|
139
|
+
- - ">="
|
140
140
|
- !ruby/object:Gem::Version
|
141
141
|
version: '2.0'
|
142
142
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
143
|
requirements:
|
144
|
-
- -
|
144
|
+
- - ">="
|
145
145
|
- !ruby/object:Gem::Version
|
146
146
|
version: '0'
|
147
147
|
requirements: []
|