feedx 0.12.6 → 0.14.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/.github/workflows/test.yml +2 -49
- data/.golangci.yml +13 -0
- data/.rubocop.yml +8 -14
- data/.tool-versions +1 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +54 -69
- data/Makefile +3 -3
- data/README.md +3 -1
- data/compression.go +29 -0
- data/compression_test.go +73 -61
- data/consumer.go +96 -152
- data/consumer_test.go +124 -59
- data/example_test.go +140 -0
- data/feedx.gemspec +3 -10
- data/feedx.go +16 -31
- data/feedx_ext_test.go +13 -3
- data/feedx_test.go +24 -24
- data/format.go +29 -19
- data/format_test.go +84 -56
- data/go.mod +12 -10
- data/go.sum +18 -142
- data/incremental.go +122 -0
- data/incremental_test.go +62 -0
- data/lib/feedx/cache/abstract.rb +3 -3
- data/lib/feedx/cache/value.rb +6 -6
- data/lib/feedx/compression/abstract.rb +2 -2
- data/lib/feedx/compression/gzip.rb +4 -4
- data/lib/feedx/consumer.rb +8 -8
- data/lib/feedx/format/abstract.rb +6 -6
- data/lib/feedx/format/json.rb +2 -2
- data/lib/feedx/format/protobuf.rb +6 -6
- data/lib/feedx/format.rb +1 -3
- data/lib/feedx/producer.rb +11 -11
- data/lib/feedx/stream.rb +2 -2
- data/lib/feedx.rb +2 -3
- data/manifest.go +65 -0
- data/producer.go +34 -137
- data/producer_test.go +46 -60
- data/reader.go +142 -41
- data/reader_test.go +86 -35
- data/scheduler.go +176 -0
- data/scheduler_test.go +128 -0
- data/writer.go +13 -13
- data/writer_test.go +61 -44
- metadata +15 -137
- data/ext/parquet/decoder.go +0 -170
- data/ext/parquet/decoder_test.go +0 -88
- data/ext/parquet/go.mod +0 -10
- data/ext/parquet/go.sum +0 -154
- data/ext/parquet/parquet.go +0 -78
- data/ext/parquet/parquet_test.go +0 -28
- data/ext/parquet/reader.go +0 -89
- data/ext/parquet/testdata/alltypes_plain.parquet +0 -0
- data/ext/parquet/types.go +0 -51
- data/lib/feedx/format/parquet.rb +0 -102
- data/spec/feedx/cache/memory_spec.rb +0 -23
- data/spec/feedx/cache/value_spec.rb +0 -19
- data/spec/feedx/compression/gzip_spec.rb +0 -17
- data/spec/feedx/compression/none_spec.rb +0 -15
- data/spec/feedx/compression_spec.rb +0 -19
- data/spec/feedx/consumer_spec.rb +0 -49
- data/spec/feedx/format/abstract_spec.rb +0 -21
- data/spec/feedx/format/json_spec.rb +0 -27
- data/spec/feedx/format/parquet_spec.rb +0 -30
- data/spec/feedx/format/protobuf_spec.rb +0 -23
- data/spec/feedx/format_spec.rb +0 -21
- data/spec/feedx/producer_spec.rb +0 -74
- data/spec/feedx/stream_spec.rb +0 -109
- data/spec/spec_helper.rb +0 -57
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: feedx
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.14.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Black Square Media Ltd
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: bfs
|
|
@@ -24,96 +23,6 @@ dependencies:
|
|
|
24
23
|
- - ">="
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
25
|
version: 0.8.0
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: bundler
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - ">="
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - ">="
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: pbio
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: rake
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: red-parquet
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - ">="
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '3.0'
|
|
76
|
-
- - "<"
|
|
77
|
-
- !ruby/object:Gem::Version
|
|
78
|
-
version: '4.0'
|
|
79
|
-
type: :development
|
|
80
|
-
prerelease: false
|
|
81
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
82
|
-
requirements:
|
|
83
|
-
- - ">="
|
|
84
|
-
- !ruby/object:Gem::Version
|
|
85
|
-
version: '3.0'
|
|
86
|
-
- - "<"
|
|
87
|
-
- !ruby/object:Gem::Version
|
|
88
|
-
version: '4.0'
|
|
89
|
-
- !ruby/object:Gem::Dependency
|
|
90
|
-
name: rspec
|
|
91
|
-
requirement: !ruby/object:Gem::Requirement
|
|
92
|
-
requirements:
|
|
93
|
-
- - ">="
|
|
94
|
-
- !ruby/object:Gem::Version
|
|
95
|
-
version: '0'
|
|
96
|
-
type: :development
|
|
97
|
-
prerelease: false
|
|
98
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
99
|
-
requirements:
|
|
100
|
-
- - ">="
|
|
101
|
-
- !ruby/object:Gem::Version
|
|
102
|
-
version: '0'
|
|
103
|
-
- !ruby/object:Gem::Dependency
|
|
104
|
-
name: rubocop-bsm
|
|
105
|
-
requirement: !ruby/object:Gem::Requirement
|
|
106
|
-
requirements:
|
|
107
|
-
- - ">="
|
|
108
|
-
- !ruby/object:Gem::Version
|
|
109
|
-
version: '0'
|
|
110
|
-
type: :development
|
|
111
|
-
prerelease: false
|
|
112
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
113
|
-
requirements:
|
|
114
|
-
- - ">="
|
|
115
|
-
- !ruby/object:Gem::Version
|
|
116
|
-
version: '0'
|
|
117
26
|
description: Use feeds to exchange data between (micro-)services.
|
|
118
27
|
email:
|
|
119
28
|
- info@blacksquaremedia.com
|
|
@@ -124,7 +33,9 @@ files:
|
|
|
124
33
|
- ".editorconfig"
|
|
125
34
|
- ".github/workflows/test.yml"
|
|
126
35
|
- ".gitignore"
|
|
36
|
+
- ".golangci.yml"
|
|
127
37
|
- ".rubocop.yml"
|
|
38
|
+
- ".tool-versions"
|
|
128
39
|
- Gemfile
|
|
129
40
|
- Gemfile.lock
|
|
130
41
|
- LICENSE
|
|
@@ -135,15 +46,7 @@ files:
|
|
|
135
46
|
- compression_test.go
|
|
136
47
|
- consumer.go
|
|
137
48
|
- consumer_test.go
|
|
138
|
-
-
|
|
139
|
-
- ext/parquet/decoder_test.go
|
|
140
|
-
- ext/parquet/go.mod
|
|
141
|
-
- ext/parquet/go.sum
|
|
142
|
-
- ext/parquet/parquet.go
|
|
143
|
-
- ext/parquet/parquet_test.go
|
|
144
|
-
- ext/parquet/reader.go
|
|
145
|
-
- ext/parquet/testdata/alltypes_plain.parquet
|
|
146
|
-
- ext/parquet/types.go
|
|
49
|
+
- example_test.go
|
|
147
50
|
- feedx.gemspec
|
|
148
51
|
- feedx.go
|
|
149
52
|
- feedx_ext_test.go
|
|
@@ -152,6 +55,8 @@ files:
|
|
|
152
55
|
- format_test.go
|
|
153
56
|
- go.mod
|
|
154
57
|
- go.sum
|
|
58
|
+
- incremental.go
|
|
59
|
+
- incremental_test.go
|
|
155
60
|
- internal/testdata/testdata.pb.go
|
|
156
61
|
- internal/testdata/testdata.proto
|
|
157
62
|
- lib/feedx.rb
|
|
@@ -167,36 +72,24 @@ files:
|
|
|
167
72
|
- lib/feedx/format.rb
|
|
168
73
|
- lib/feedx/format/abstract.rb
|
|
169
74
|
- lib/feedx/format/json.rb
|
|
170
|
-
- lib/feedx/format/parquet.rb
|
|
171
75
|
- lib/feedx/format/protobuf.rb
|
|
172
76
|
- lib/feedx/producer.rb
|
|
173
77
|
- lib/feedx/pusher.rb
|
|
174
78
|
- lib/feedx/stream.rb
|
|
79
|
+
- manifest.go
|
|
175
80
|
- producer.go
|
|
176
81
|
- producer_test.go
|
|
177
82
|
- reader.go
|
|
178
83
|
- reader_test.go
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
- spec/feedx/compression/gzip_spec.rb
|
|
182
|
-
- spec/feedx/compression/none_spec.rb
|
|
183
|
-
- spec/feedx/compression_spec.rb
|
|
184
|
-
- spec/feedx/consumer_spec.rb
|
|
185
|
-
- spec/feedx/format/abstract_spec.rb
|
|
186
|
-
- spec/feedx/format/json_spec.rb
|
|
187
|
-
- spec/feedx/format/parquet_spec.rb
|
|
188
|
-
- spec/feedx/format/protobuf_spec.rb
|
|
189
|
-
- spec/feedx/format_spec.rb
|
|
190
|
-
- spec/feedx/producer_spec.rb
|
|
191
|
-
- spec/feedx/stream_spec.rb
|
|
192
|
-
- spec/spec_helper.rb
|
|
84
|
+
- scheduler.go
|
|
85
|
+
- scheduler_test.go
|
|
193
86
|
- writer.go
|
|
194
87
|
- writer_test.go
|
|
195
88
|
homepage: https://github.com/bsm/feedx
|
|
196
89
|
licenses:
|
|
197
90
|
- Apache-2.0
|
|
198
|
-
metadata:
|
|
199
|
-
|
|
91
|
+
metadata:
|
|
92
|
+
rubygems_mfa_required: 'true'
|
|
200
93
|
rdoc_options: []
|
|
201
94
|
require_paths:
|
|
202
95
|
- lib
|
|
@@ -204,29 +97,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
204
97
|
requirements:
|
|
205
98
|
- - ">="
|
|
206
99
|
- !ruby/object:Gem::Version
|
|
207
|
-
version: '2
|
|
100
|
+
version: '3.2'
|
|
208
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
209
102
|
requirements:
|
|
210
103
|
- - ">="
|
|
211
104
|
- !ruby/object:Gem::Version
|
|
212
105
|
version: '0'
|
|
213
106
|
requirements: []
|
|
214
|
-
rubygems_version: 3.
|
|
215
|
-
signing_key:
|
|
107
|
+
rubygems_version: 3.7.2
|
|
216
108
|
specification_version: 4
|
|
217
109
|
summary: Exchange data between components via feeds
|
|
218
|
-
test_files:
|
|
219
|
-
- spec/feedx/cache/memory_spec.rb
|
|
220
|
-
- spec/feedx/cache/value_spec.rb
|
|
221
|
-
- spec/feedx/compression/gzip_spec.rb
|
|
222
|
-
- spec/feedx/compression/none_spec.rb
|
|
223
|
-
- spec/feedx/compression_spec.rb
|
|
224
|
-
- spec/feedx/consumer_spec.rb
|
|
225
|
-
- spec/feedx/format/abstract_spec.rb
|
|
226
|
-
- spec/feedx/format/json_spec.rb
|
|
227
|
-
- spec/feedx/format/parquet_spec.rb
|
|
228
|
-
- spec/feedx/format/protobuf_spec.rb
|
|
229
|
-
- spec/feedx/format_spec.rb
|
|
230
|
-
- spec/feedx/producer_spec.rb
|
|
231
|
-
- spec/feedx/stream_spec.rb
|
|
232
|
-
- spec/spec_helper.rb
|
|
110
|
+
test_files: []
|
data/ext/parquet/decoder.go
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
package parquet
|
|
2
|
-
|
|
3
|
-
import (
|
|
4
|
-
"encoding/binary"
|
|
5
|
-
"fmt"
|
|
6
|
-
"io"
|
|
7
|
-
"reflect"
|
|
8
|
-
"time"
|
|
9
|
-
|
|
10
|
-
kpq "github.com/bsm/parquet-go/parquet"
|
|
11
|
-
)
|
|
12
|
-
|
|
13
|
-
type decoder struct {
|
|
14
|
-
cols []*columnReader
|
|
15
|
-
closers []io.Closer
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
func newDecoder(rs io.ReadSeeker, names []string, batchSize int) (*decoder, error) {
|
|
19
|
-
file, err := kpq.FileFromReader(rs)
|
|
20
|
-
if err != nil {
|
|
21
|
-
return nil, err
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// normalise column names
|
|
25
|
-
if len(names) == 0 {
|
|
26
|
-
for _, c := range file.Schema.Columns() {
|
|
27
|
-
names = append(names, c.String())
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// normalise batch size
|
|
32
|
-
if batchSize < 1 {
|
|
33
|
-
batchSize = 1000
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// initialise column buffers
|
|
37
|
-
cols := make([]*columnReader, 0, len(names))
|
|
38
|
-
for _, name := range names {
|
|
39
|
-
col, ok := file.Schema.ColumnByName(name)
|
|
40
|
-
if !ok {
|
|
41
|
-
_ = file.Close()
|
|
42
|
-
return nil, fmt.Errorf("column %q does not exist", name)
|
|
43
|
-
}
|
|
44
|
-
cols = append(cols, newColumnReader(file, col, batchSize))
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return &decoder{cols: cols, closers: []io.Closer{file}}, nil
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
func (w *decoder) Decode(v interface{}) error {
|
|
51
|
-
rv := reflect.ValueOf(v)
|
|
52
|
-
rt := rv.Type()
|
|
53
|
-
if rt.Kind() != reflect.Ptr {
|
|
54
|
-
return fmt.Errorf("cannot decode non-pointer %s type", rt.String())
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// field index by name
|
|
58
|
-
fidx := cachedTypeFields(rt.Elem())
|
|
59
|
-
elem := rv.Elem()
|
|
60
|
-
|
|
61
|
-
for _, r := range w.cols {
|
|
62
|
-
// next column value
|
|
63
|
-
val, err := r.Next()
|
|
64
|
-
if err != nil {
|
|
65
|
-
return err
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// skip if value is NULL
|
|
69
|
-
if val == nil {
|
|
70
|
-
continue
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
// set field if exists
|
|
74
|
-
if fi, ok := fidx[r.Name()]; ok {
|
|
75
|
-
fv := elem.Field(fi)
|
|
76
|
-
if ok := setValue(fv, val); !ok {
|
|
77
|
-
return fmt.Errorf("cannot assign value of type %T to %s", val, fv.Type())
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return nil
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
func (w *decoder) Close() (err error) {
|
|
86
|
-
for _, c := range w.closers {
|
|
87
|
-
if e := c.Close(); e != nil {
|
|
88
|
-
err = e
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
return
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// --------------------------------------------------------------------
|
|
95
|
-
|
|
96
|
-
func setValue(rv reflect.Value, v interface{}) bool {
|
|
97
|
-
if rv.Kind() == reflect.Ptr {
|
|
98
|
-
if rv.IsNil() {
|
|
99
|
-
if ev := reflect.New(rv.Type().Elem()); setValue(ev, v) {
|
|
100
|
-
rv.Set(ev)
|
|
101
|
-
return true
|
|
102
|
-
}
|
|
103
|
-
return false
|
|
104
|
-
}
|
|
105
|
-
return setValue(rv.Elem(), v)
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
switch vv := v.(type) {
|
|
109
|
-
case bool:
|
|
110
|
-
switch rv.Kind() {
|
|
111
|
-
case reflect.Bool:
|
|
112
|
-
rv.SetBool(vv)
|
|
113
|
-
return true
|
|
114
|
-
}
|
|
115
|
-
case []byte:
|
|
116
|
-
switch rv.Kind() {
|
|
117
|
-
case reflect.String:
|
|
118
|
-
rv.SetString(string(vv))
|
|
119
|
-
return true
|
|
120
|
-
case reflect.Slice:
|
|
121
|
-
if rv.Type() == byteSliceType {
|
|
122
|
-
rv.SetBytes(vv)
|
|
123
|
-
return true
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
case int, int8, int16, int32, int64:
|
|
127
|
-
switch rv.Kind() {
|
|
128
|
-
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
|
129
|
-
rv.SetInt(reflect.ValueOf(v).Int())
|
|
130
|
-
return true
|
|
131
|
-
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
|
132
|
-
rv.SetUint(uint64(reflect.ValueOf(v).Int()))
|
|
133
|
-
return true
|
|
134
|
-
}
|
|
135
|
-
case uint, uint8, uint16, uint32, uint64:
|
|
136
|
-
switch rv.Kind() {
|
|
137
|
-
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
|
|
138
|
-
rv.SetInt(int64(reflect.ValueOf(v).Uint()))
|
|
139
|
-
return true
|
|
140
|
-
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
|
|
141
|
-
rv.SetUint(reflect.ValueOf(v).Uint())
|
|
142
|
-
return true
|
|
143
|
-
}
|
|
144
|
-
case float32, float64:
|
|
145
|
-
switch rv.Kind() {
|
|
146
|
-
case reflect.Float32, reflect.Float64:
|
|
147
|
-
rv.SetFloat(reflect.ValueOf(v).Float())
|
|
148
|
-
return true
|
|
149
|
-
}
|
|
150
|
-
case kpq.Int96:
|
|
151
|
-
if rt := rv.Type(); rt == timeType {
|
|
152
|
-
ns := int64(binary.LittleEndian.Uint64(vv[:8]))
|
|
153
|
-
jd := int64(binary.LittleEndian.Uint32(vv[8:]))
|
|
154
|
-
ts := time.Unix((jd-2440588)*86400, ns)
|
|
155
|
-
rv.Set(reflect.ValueOf(ts))
|
|
156
|
-
return true
|
|
157
|
-
} else if rt == int96Type {
|
|
158
|
-
rv.Set(reflect.ValueOf(v))
|
|
159
|
-
return true
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
return false
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
var (
|
|
167
|
-
byteSliceType = reflect.TypeOf(([]byte)(nil))
|
|
168
|
-
int96Type = reflect.TypeOf(kpq.Int96{})
|
|
169
|
-
timeType = reflect.TypeOf(time.Time{})
|
|
170
|
-
)
|
data/ext/parquet/decoder_test.go
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
package parquet_test
|
|
2
|
-
|
|
3
|
-
import (
|
|
4
|
-
"bytes"
|
|
5
|
-
"io"
|
|
6
|
-
"io/ioutil"
|
|
7
|
-
"os"
|
|
8
|
-
"time"
|
|
9
|
-
|
|
10
|
-
"github.com/bsm/feedx"
|
|
11
|
-
"github.com/bsm/feedx/ext/parquet"
|
|
12
|
-
. "github.com/bsm/ginkgo"
|
|
13
|
-
. "github.com/bsm/gomega"
|
|
14
|
-
)
|
|
15
|
-
|
|
16
|
-
var _ = Describe("Decoder", func() {
|
|
17
|
-
var subject feedx.FormatDecoder
|
|
18
|
-
var fixture *os.File
|
|
19
|
-
|
|
20
|
-
f32ptr := func(f float32) *float32 { return &f }
|
|
21
|
-
|
|
22
|
-
BeforeEach(func() {
|
|
23
|
-
var err error
|
|
24
|
-
fixture, err = os.Open("testdata/alltypes_plain.parquet")
|
|
25
|
-
Expect(err).NotTo(HaveOccurred())
|
|
26
|
-
|
|
27
|
-
format := &parquet.Format{BatchSize: 3}
|
|
28
|
-
subject, err = format.NewDecoder(fixture)
|
|
29
|
-
Expect(err).NotTo(HaveOccurred())
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
AfterEach(func() {
|
|
33
|
-
Expect(subject.Close()).To(Succeed())
|
|
34
|
-
Expect(fixture.Close()).To(Succeed())
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
It("decodes", func() {
|
|
38
|
-
v1 := new(mockStruct)
|
|
39
|
-
Expect(subject.Decode(v1)).To(Succeed())
|
|
40
|
-
Expect(v1).To(Equal(&mockStruct{
|
|
41
|
-
ID: 4,
|
|
42
|
-
Bool: true,
|
|
43
|
-
Float: f32ptr(0),
|
|
44
|
-
DateString: "03/01/09", ByteString: []byte("0"),
|
|
45
|
-
Timestamp: time.Unix(1235865600, 0),
|
|
46
|
-
}))
|
|
47
|
-
|
|
48
|
-
v2 := new(mockStruct)
|
|
49
|
-
Expect(subject.Decode(v2)).To(Succeed())
|
|
50
|
-
Expect(v2).To(Equal(&mockStruct{
|
|
51
|
-
ID: 5,
|
|
52
|
-
TinyInt: 1, SmallUint: 1, StdInt: 1, BigInt: 10,
|
|
53
|
-
Float: f32ptr(1.1), Double: 10.1,
|
|
54
|
-
DateString: "03/01/09", ByteString: []byte("1"),
|
|
55
|
-
Timestamp: time.Unix(1235865660, 0),
|
|
56
|
-
}))
|
|
57
|
-
|
|
58
|
-
Expect(subject.Decode(new(mockStruct))).To(Succeed()) // v3
|
|
59
|
-
Expect(subject.Decode(new(mockStruct))).To(Succeed()) // v4
|
|
60
|
-
Expect(subject.Decode(new(mockStruct))).To(Succeed()) // v5
|
|
61
|
-
|
|
62
|
-
v6 := new(mockStruct)
|
|
63
|
-
Expect(subject.Decode(v6)).To(Succeed())
|
|
64
|
-
Expect(v6).To(Equal(&mockStruct{
|
|
65
|
-
ID: 3,
|
|
66
|
-
Bool: false,
|
|
67
|
-
TinyInt: 1, SmallUint: 1, StdInt: 1, BigInt: 10,
|
|
68
|
-
Float: f32ptr(1.1), Double: 10.1,
|
|
69
|
-
DateString: "02/01/09", ByteString: []byte("1"),
|
|
70
|
-
Timestamp: time.Unix(1233446460, 0),
|
|
71
|
-
}))
|
|
72
|
-
|
|
73
|
-
Expect(subject.Decode(new(mockStruct))).To(Succeed()) // v7
|
|
74
|
-
Expect(subject.Decode(new(mockStruct))).To(Succeed()) // v8
|
|
75
|
-
|
|
76
|
-
v9 := new(mockStruct)
|
|
77
|
-
Expect(subject.Decode(v9)).To(MatchError(io.EOF))
|
|
78
|
-
})
|
|
79
|
-
|
|
80
|
-
It("opens from non-file readers", func() {
|
|
81
|
-
bin, err := ioutil.ReadFile("testdata/alltypes_plain.parquet")
|
|
82
|
-
Expect(err).NotTo(HaveOccurred())
|
|
83
|
-
|
|
84
|
-
dec, err := new(parquet.Format).NewDecoder(bytes.NewReader(bin))
|
|
85
|
-
Expect(err).NotTo(HaveOccurred())
|
|
86
|
-
Expect(dec.Close()).To(Succeed())
|
|
87
|
-
})
|
|
88
|
-
})
|
data/ext/parquet/go.mod
DELETED
data/ext/parquet/go.sum
DELETED
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
|
2
|
-
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
|
3
|
-
github.com/bmatcuk/doublestar/v3 v3.0.0 h1:TQtVPlDnAYwcrVNB2JiGuMc++H5qzWZd9PhkNo5WyHI=
|
|
4
|
-
github.com/bmatcuk/doublestar/v3 v3.0.0/go.mod h1:6PcTVMw80pCY1RVuoqu3V++99uQB3vsSYKPTd8AWA0k=
|
|
5
|
-
github.com/bsm/bfs v0.11.3 h1:BTFCftgmuVZwwu6vyjhyKr/Pg1E+cZ5tLodj3wKxr94=
|
|
6
|
-
github.com/bsm/bfs v0.11.3/go.mod h1:sUhBrbc9g0XThRRrT9hiinMhhKbkKIdhLkFljk4fuzM=
|
|
7
|
-
github.com/bsm/feedx v0.12.5 h1:N751MFTRKRgoP5eG1S30EoUuHsI7aAxJ0aQZg+7xf/Y=
|
|
8
|
-
github.com/bsm/feedx v0.12.5/go.mod h1:l5YNhFomuWy9du+8+hznXMH8Hug2qSMik7b5Vipcy58=
|
|
9
|
-
github.com/bsm/ginkgo v1.16.0/go.mod h1:RabIZLzOCPghgHJKUqHZpqrQETA5AnF4aCSIYy5C1bk=
|
|
10
|
-
github.com/bsm/ginkgo v1.16.1 h1:jp1v1dbmbGZDWmnGXDTN+XK3U1fTTNja9xYa7VBI0l0=
|
|
11
|
-
github.com/bsm/ginkgo v1.16.1/go.mod h1:RabIZLzOCPghgHJKUqHZpqrQETA5AnF4aCSIYy5C1bk=
|
|
12
|
-
github.com/bsm/gomega v1.11.0 h1:wg9DVGPETNZLIbMsseneMV1a7uo/x+wsCyNXdEcifDI=
|
|
13
|
-
github.com/bsm/gomega v1.11.0/go.mod h1:JifAceMQ4crZIWYUKrlGcmbN3bqHogVTADMD2ATsbwk=
|
|
14
|
-
github.com/bsm/parquet-go v0.0.0-20200904113737-792434824f00 h1:seSUCN95Kgv0mxmBUxx99faZYYQB4+TbE1Do6E5ZwI4=
|
|
15
|
-
github.com/bsm/parquet-go v0.0.0-20200904113737-792434824f00/go.mod h1:7EU1rAae6Y67NlxAbr+Mbxxxc5AFGcxZCSW/vbybDLs=
|
|
16
|
-
github.com/bsm/pbio v0.2.2 h1:Xdj5hQkS0K3kKc1NY6hoSWMvzpq0Mk5j8vcc7irslno=
|
|
17
|
-
github.com/bsm/pbio v0.2.2/go.mod h1:3O4XQFoarlYalkGd+zMFfEUyalP8NBKkQ0Ta4IwhN4w=
|
|
18
|
-
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
|
19
|
-
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
|
20
|
-
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
|
21
|
-
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
|
22
|
-
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
|
23
|
-
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
|
|
24
|
-
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
|
25
|
-
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
|
|
26
|
-
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
|
27
|
-
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
|
28
|
-
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
|
29
|
-
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
|
30
|
-
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
|
31
|
-
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
|
|
32
|
-
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
|
|
33
|
-
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
|
|
34
|
-
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
|
35
|
-
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
|
36
|
-
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
|
|
37
|
-
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
|
38
|
-
github.com/golang/protobuf v1.5.0 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4=
|
|
39
|
-
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
|
40
|
-
github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
|
|
41
|
-
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
|
42
|
-
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
|
43
|
-
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
|
44
|
-
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
|
45
|
-
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
|
46
|
-
github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
|
47
|
-
github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
|
|
48
|
-
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
|
49
|
-
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
|
50
|
-
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
|
51
|
-
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
|
52
|
-
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
|
53
|
-
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
|
54
|
-
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
|
55
|
-
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
|
56
|
-
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
|
57
|
-
github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
|
|
58
|
-
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
|
59
|
-
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
|
60
|
-
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
|
61
|
-
github.com/onsi/ginkgo v1.14.1 h1:jMU0WaQrP0a/YAEq8eJmJKjBoMs+pClEr1vDMlM/Do4=
|
|
62
|
-
github.com/onsi/ginkgo v1.14.1/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
|
|
63
|
-
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
|
64
|
-
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
|
65
|
-
github.com/onsi/gomega v1.10.2 h1:aY/nuoWlKJud2J6U0E3NWsjlg+0GtwXxgEqthRdzlcs=
|
|
66
|
-
github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
|
67
|
-
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
|
68
|
-
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
|
69
|
-
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
|
70
|
-
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
|
71
|
-
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
|
72
|
-
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
|
73
|
-
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
|
74
|
-
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
|
75
|
-
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
|
|
76
|
-
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
|
77
|
-
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
|
78
|
-
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
|
79
|
-
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
|
80
|
-
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
|
81
|
-
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
|
82
|
-
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
|
83
|
-
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
|
84
|
-
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
|
85
|
-
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
86
|
-
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
|
87
|
-
golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
|
|
88
|
-
golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI=
|
|
89
|
-
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
|
90
|
-
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
|
91
|
-
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
92
|
-
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
93
|
-
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
94
|
-
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
95
|
-
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
|
96
|
-
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
97
|
-
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
98
|
-
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
|
99
|
-
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
100
|
-
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
101
|
-
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
102
|
-
golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
103
|
-
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
104
|
-
golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
105
|
-
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
|
|
106
|
-
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
|
107
|
-
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
|
108
|
-
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
|
|
109
|
-
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
|
|
110
|
-
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
|
111
|
-
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
|
112
|
-
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
|
113
|
-
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
|
114
|
-
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
|
115
|
-
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
|
116
|
-
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
|
117
|
-
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
|
118
|
-
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
|
119
|
-
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
120
|
-
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
121
|
-
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
122
|
-
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
|
123
|
-
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
|
124
|
-
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
|
125
|
-
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
|
126
|
-
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
|
127
|
-
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
|
128
|
-
google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
|
|
129
|
-
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
|
130
|
-
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
|
131
|
-
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
|
132
|
-
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
|
133
|
-
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
|
134
|
-
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
|
135
|
-
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
|
|
136
|
-
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
|
|
137
|
-
google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
|
138
|
-
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
|
139
|
-
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
|
140
|
-
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
|
|
141
|
-
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
|
142
|
-
google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk=
|
|
143
|
-
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
|
144
|
-
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
|
145
|
-
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
|
146
|
-
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
|
147
|
-
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
|
148
|
-
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
|
|
149
|
-
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
|
150
|
-
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
151
|
-
gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
|
|
152
|
-
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
|
153
|
-
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
|
154
|
-
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|