kiba 2.0.0.rc1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ca18859887a38d8eee1afa9ae170ad8fc2a8b63f
4
- data.tar.gz: d27a6985d90a1ab73315b4f859bca2e105ba66a7
3
+ metadata.gz: f048352971676a1a1a3f29e1e2e13b7784a10022
4
+ data.tar.gz: 04dbac7b41da880e759356186fbf813beff621d6
5
5
  SHA512:
6
- metadata.gz: dc66fedc5922ee6b63a4cfdd647e71592af3ae8d2851600008a5af0c165252583c1fdf15b064ff691cf19b6ebe004edcf1062fb0091c45f7b2c7e3a5e7e5bc27
7
- data.tar.gz: d02d8e6293dbfa6ca2b0372ff36ab3548ef3608ce5554f44ee82a04f1d0a17cbb86838de5745721260a357943c11429012bbd3dbccd59abff08f5b29226f2454
6
+ metadata.gz: 0bbba96a440dba7fc7a41e2c55a2bd063bf1a8ad71c17c9a8ab9832be5aaa1c07b459c2db340b2adc489cb329f0e91c807fa73ca3442a66cc4c8fc62627627e3
7
+ data.tar.gz: 79ddd85e029eb1185610a7f2c59b8a39b093bb9ab318d2aae3cdd55e9493e62b724273e126f6681c8aa823e005a6f20ee4cfc07eec834e0671eb412d71978b12
data/Changes.md CHANGED
@@ -1,5 +1,5 @@
1
- 2.0.0.rc1 (unreleased)
2
- ----------------------
1
+ 2.0.0.rc1
2
+ ---------
3
3
 
4
4
  - New (opt-in) StreamingRunner allows class transforms to generate more than one row. See [#44](https://github.com/thbar/kiba/pull/44) for rationale & how to activate.
5
5
  - Potentially breaking change if you were using the internal class `Kiba::Parser` directly: ETL jobs parsing has been modified to improve the isolation between the evaluation scope and the Kiba classes. See [#46](https://github.com/thbar/kiba/pull/46) for more information.
data/README.md CHANGED
@@ -9,9 +9,42 @@ Learn more on the [Wiki](https://github.com/thbar/kiba/wiki), on my [blog](http:
9
9
  [![Gem Version](https://badge.fury.io/rb/kiba.svg)](http://badge.fury.io/rb/kiba)
10
10
  [![Build Status](https://travis-ci.org/thbar/kiba.svg?branch=master)](https://travis-ci.org/thbar/kiba) [![Build status](https://ci.appveyor.com/api/projects/status/v05jcyhpp1mueq9i?svg=true)](https://ci.appveyor.com/project/thbar/kiba) [![Code Climate](https://codeclimate.com/github/thbar/kiba/badges/gpa.svg)](https://codeclimate.com/github/thbar/kiba) [![Dependency Status](https://gemnasium.com/thbar/kiba.svg)](https://gemnasium.com/thbar/kiba)
11
11
 
12
- ## Note on upcoming Kiba 2.0.0
12
+ ## Kiba 2.0.0.rc1
13
13
 
14
- Kiba 2.0.0 (available on `master`) includes an improved engine called the `StreamingRunner`, which allows transforms to generate more than one output row for each input row. See [#44](https://github.com/thbar/kiba/pull/44) for documentation on benefits & how to activate.
14
+ Kiba 2.0.0.rc1 (available via `gem install kiba --prerelease`) is available for testing.
15
+
16
+ ### New StreamingRunner engine
17
+
18
+ Kiba 2 introduces a new, opt-in engine called the `StreamingRunner`, which allows to generate an arbitrary number of rows inside transforms. This drastically improves the reusability & composability of Kiba components (see [#44](https://github.com/thbar/kiba/pull/44) for some background).
19
+
20
+ To use the `StreamingRunner`, use the following code:
21
+
22
+ ```ruby
23
+ # activate the new Kiba internal config system
24
+ extend Kiba::DSLExtensions::Config
25
+ # opt-in for the new engine
26
+ config :kiba, runner: Kiba::StreamingRunner
27
+
28
+ # write transform class able to yield an arbitrary number of rows
29
+ class MyYieldingTransform
30
+ def process(row)
31
+ yield {key: 1}
32
+ yield {key: 2}
33
+ {key: 3}
34
+ end
35
+ end
36
+ ```
37
+
38
+ The improved runner is compatible with Ruby 2.0+.
39
+
40
+ ### Compatibility with Kiba 1
41
+
42
+ Kiba 2 is expected to be compatible with existing Kiba scripts as long as you did not use internal API.
43
+
44
+ Internal changes include:
45
+
46
+ * An opt-in, Elixir's mix-inspired `config` system, currently only used to select the runner you want at job declaration time
47
+ * A stronger isolation in the `Parser`, to reduces the chances that ETL scripts could conflict with Kiba internal classes
15
48
 
16
49
  ## Getting Started
17
50
 
@@ -1,3 +1,3 @@
1
1
  module Kiba
2
- VERSION = '2.0.0.rc1'
2
+ VERSION = '2.0.0'
3
3
  end
@@ -0,0 +1,9 @@
1
+ class TestDuplicateRowTranform
2
+ def process(row)
3
+ 2.times do
4
+ # NOTE: it's a good idea to carefully avoid data reuse between rows
5
+ yield({item: row.fetch(:item).dup})
6
+ end
7
+ nil
8
+ end
9
+ end
@@ -2,6 +2,8 @@ require_relative 'helper'
2
2
  require_relative 'support/test_enumerable_source'
3
3
  require_relative 'support/test_array_destination'
4
4
  require_relative 'support/test_yielding_transform'
5
+ require_relative 'support/test_duplicate_row_transform'
6
+
5
7
  require_relative 'common/runner'
6
8
 
7
9
  class TestStreamingRunner < Kiba::Test
@@ -16,8 +18,15 @@ class TestStreamingRunner < Kiba::Test
16
18
 
17
19
  config :kiba, runner: Kiba::StreamingRunner
18
20
 
21
+ # provide a single row as the input
19
22
  source TestEnumerableSource, [input_row]
23
+
24
+ # explode tags in one row each
20
25
  transform TestYieldingTransform
26
+
27
+ # generate two rows out of each exploded tags row
28
+ transform TestDuplicateRowTranform
29
+
21
30
  destination TestArrayDestination, destination_array
22
31
  end
23
32
 
@@ -25,8 +34,15 @@ class TestStreamingRunner < Kiba::Test
25
34
 
26
35
  assert_equal [
27
36
  {item: 'one'},
37
+ {item: 'one'},
38
+
39
+ {item: 'two'},
28
40
  {item: 'two'},
41
+
29
42
  {item: 'three'},
43
+ {item: 'three'},
44
+
45
+ {item: 'classic-return-value'},
30
46
  {item: 'classic-return-value'}
31
47
  ], destination_array
32
48
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kiba
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.rc1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thibaut Barrère
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-27 00:00:00.000000000 Z
11
+ date: 2018-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -104,6 +104,7 @@ files:
104
104
  - test/support/test_array_destination.rb
105
105
  - test/support/test_csv_destination.rb
106
106
  - test/support/test_csv_source.rb
107
+ - test/support/test_duplicate_row_transform.rb
107
108
  - test/support/test_enumerable_source.rb
108
109
  - test/support/test_rename_field_transform.rb
109
110
  - test/support/test_source_that_reads_at_instantiation_time.rb
@@ -129,9 +130,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
129
130
  version: '0'
130
131
  required_rubygems_version: !ruby/object:Gem::Requirement
131
132
  requirements:
132
- - - ">"
133
+ - - ">="
133
134
  - !ruby/object:Gem::Version
134
- version: 1.3.1
135
+ version: '0'
135
136
  requirements: []
136
137
  rubyforge_project:
137
138
  rubygems_version: 2.6.14
@@ -149,6 +150,7 @@ test_files:
149
150
  - test/support/test_array_destination.rb
150
151
  - test/support/test_csv_destination.rb
151
152
  - test/support/test_csv_source.rb
153
+ - test/support/test_duplicate_row_transform.rb
152
154
  - test/support/test_enumerable_source.rb
153
155
  - test/support/test_rename_field_transform.rb
154
156
  - test/support/test_source_that_reads_at_instantiation_time.rb