red-arrow 0.8.2 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +14 -11
  3. data/{doc/text/apache-2.0.txt → LICENSE.txt} +0 -0
  4. data/NOTICE.txt +2 -0
  5. data/README.md +27 -30
  6. data/Rakefile +15 -21
  7. data/dependency-check/Rakefile +15 -12
  8. data/doc/text/development.md +19 -0
  9. data/lib/arrow.rb +14 -11
  10. data/lib/arrow/array-builder.rb +55 -55
  11. data/lib/arrow/array.rb +15 -11
  12. data/lib/arrow/block-closable.rb +14 -11
  13. data/lib/arrow/chunked-array.rb +15 -11
  14. data/lib/arrow/column.rb +14 -11
  15. data/lib/arrow/csv-loader.rb +49 -20
  16. data/lib/arrow/csv-reader.rb +14 -11
  17. data/lib/arrow/date32-array-builder.rb +14 -11
  18. data/lib/arrow/date32-array.rb +14 -11
  19. data/lib/arrow/date64-array-builder.rb +15 -12
  20. data/lib/arrow/date64-array.rb +14 -11
  21. data/lib/arrow/field.rb +14 -11
  22. data/lib/arrow/group.rb +55 -13
  23. data/lib/arrow/loader.rb +16 -15
  24. data/lib/arrow/record-batch-file-reader.rb +14 -11
  25. data/lib/arrow/record-batch-stream-reader.rb +14 -11
  26. data/lib/arrow/record-batch.rb +14 -11
  27. data/lib/arrow/record-containable.rb +14 -11
  28. data/lib/arrow/record.rb +14 -11
  29. data/lib/arrow/rolling-window.rb +48 -0
  30. data/lib/arrow/slicer.rb +20 -14
  31. data/lib/arrow/struct-array.rb +24 -0
  32. data/lib/arrow/table-formatter.rb +15 -11
  33. data/lib/arrow/table-list-formatter.rb +15 -11
  34. data/lib/arrow/table-loader.rb +24 -11
  35. data/lib/arrow/table-saver.rb +14 -11
  36. data/lib/arrow/table-table-formatter.rb +15 -11
  37. data/lib/arrow/table.rb +48 -17
  38. data/lib/arrow/tensor.rb +14 -11
  39. data/lib/arrow/timestamp-array-builder.rb +16 -29
  40. data/lib/arrow/timestamp-array.rb +15 -30
  41. data/lib/arrow/version.rb +23 -12
  42. data/red-arrow.gemspec +30 -30
  43. data/test/fixture/TestOrcFile.test1.orc +0 -0
  44. data/test/fixture/float-integer.csv +20 -0
  45. data/test/fixture/integer-float.csv +20 -0
  46. data/test/fixture/null-with-double-quote.csv +16 -0
  47. data/test/fixture/null-without-double-quote.csv +16 -0
  48. data/test/fixture/with-header-float.csv +20 -0
  49. data/test/fixture/with-header.csv +16 -0
  50. data/test/fixture/without-header-float.csv +19 -0
  51. data/test/fixture/without-header.csv +16 -0
  52. data/test/helper.rb +16 -11
  53. data/test/helper/fixture.rb +14 -11
  54. data/test/run-test.rb +17 -12
  55. data/test/test-array-builder.rb +14 -11
  56. data/test/test-array.rb +14 -11
  57. data/test/test-chunked-array.rb +14 -11
  58. data/test/test-column.rb +14 -11
  59. data/test/test-csv-loader.rb +68 -49
  60. data/test/test-csv-reader.rb +17 -12
  61. data/test/test-date32-array.rb +14 -11
  62. data/test/test-date64-array.rb +14 -11
  63. data/test/test-group.rb +56 -11
  64. data/test/test-orc.rb +177 -0
  65. data/test/test-record-batch-file-reader.rb +14 -11
  66. data/test/test-record-batch.rb +14 -11
  67. data/test/test-rolling-window.rb +40 -0
  68. data/test/test-slicer.rb +14 -11
  69. data/test/test-struct-array.rb +36 -0
  70. data/test/test-table.rb +50 -22
  71. data/test/test-timestamp-array.rb +14 -11
  72. metadata +42 -57
  73. data/.yardopts +0 -6
  74. data/doc/text/news.md +0 -176
  75. data/lib/arrow/buffer.rb +0 -24
  76. data/lib/arrow/compatibility.rb +0 -28
  77. data/lib/arrow/data-type.rb +0 -81
@@ -1,16 +1,19 @@
1
- # Copyright 2018 Kouhei Sutou <kou@clear-code.com>
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
2
8
  #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
9
+ # http://www.apache.org/licenses/LICENSE-2.0
6
10
  #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
14
17
 
15
18
  module Arrow
16
19
  class TableSaver
@@ -1,20 +1,24 @@
1
- # Copyright 2017-2018 Kouhei Sutou <kou@clear-code.com>
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
2
8
  #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
9
+ # http://www.apache.org/licenses/LICENSE-2.0
6
10
  #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
14
17
 
15
18
  require "time"
16
19
 
17
20
  module Arrow
21
+ # TODO: Almost codes should be implemented in Apache Arrow C++.
18
22
  class TableTableFormatter < TableFormatter
19
23
  private
20
24
  def format_header(text, columns)
@@ -1,16 +1,19 @@
1
- # Copyright 2017-2018 Kouhei Sutou <kou@clear-code.com>
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
2
8
  #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
9
+ # http://www.apache.org/licenses/LICENSE-2.0
6
10
  #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
14
17
 
15
18
  require "arrow/group"
16
19
  require "arrow/record-containable"
@@ -70,7 +73,30 @@ module Arrow
70
73
  # TODO
71
74
  #
72
75
  # @return [Arrow::Table]
73
- def slice(*slicers)
76
+ def slice(*args)
77
+ slicers = []
78
+ expected_n_args = nil
79
+ case args.size
80
+ when 0
81
+ expected_n_args = "1..2" unless block_given?
82
+ when 1
83
+ slicers << args[0]
84
+ when 2
85
+ from, to = args
86
+ slicers << (from...(from + to))
87
+ else
88
+ if block_given?
89
+ expected_n_args = "0..2"
90
+ else
91
+ expected_n_args = "1..2"
92
+ end
93
+ end
94
+ if expected_n_args
95
+ message = "wrong number of arguments " +
96
+ "(given #{args.size}, expected #{expected_n_args})"
97
+ raise ArgumentError, message
98
+ end
99
+
74
100
  if block_given?
75
101
  block_slicer = yield(Slicer.new(self))
76
102
  case block_slicer
@@ -82,6 +108,7 @@ module Arrow
82
108
  slicers << block_slicer
83
109
  end
84
110
  end
111
+
85
112
  ranges = []
86
113
  slicers.each do |slicer|
87
114
  slicer = slicer.evaluate if slicer.respond_to?(:evaluate)
@@ -97,10 +124,7 @@ module Arrow
97
124
  to += n_rows if to < 0
98
125
  ranges << [from, to]
99
126
  when ::Array
100
- from = slicer[0]
101
- from += n_rows if from < 0
102
- to = from + slicer[1] - 1
103
- ranges << [from, to]
127
+ boolean_array_to_slice_ranges(slicer, 0, ranges)
104
128
  when ChunkedArray
105
129
  offset = 0
106
130
  slicer.each_chunk do |array|
@@ -110,7 +134,7 @@ module Arrow
110
134
  when BooleanArray
111
135
  boolean_array_to_slice_ranges(slicer, 0, ranges)
112
136
  else
113
- message = "slicer must be Integer, Range, [from, to], " +
137
+ message = "slicer must be Integer, Range, (from, to), " +
114
138
  "Arrow::ChunkedArray of Arrow::BooleanArray, " +
115
139
  "Arrow::BooleanArray or Arrow::Slicer::Condition: #{slicer.inspect}"
116
140
  raise ArgumentError, message
@@ -224,10 +248,16 @@ module Arrow
224
248
  self.class.new(selected_columns)
225
249
  end
226
250
 
251
+ # Experimental
227
252
  def group(*keys)
228
253
  Group.new(self, keys)
229
254
  end
230
255
 
256
+ # Experimental
257
+ def window(size: nil)
258
+ RollingWindow.new(self, size)
259
+ end
260
+
231
261
  def save(path, options={})
232
262
  saver = TableSaver.new(self, path, options)
233
263
  saver.save
@@ -291,6 +321,7 @@ module Arrow
291
321
  end
292
322
  end
293
323
 
324
+ # TODO: Almost codes should be implemented in Apache Arrow C++.
294
325
  def slice_by_ranges(ranges)
295
326
  sliced_columns = columns.collect do |column|
296
327
  chunks = []
@@ -1,16 +1,19 @@
1
- # Copyright 2017 Kouhei Sutou <kou@clear-code.com>
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
2
8
  #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
9
+ # http://www.apache.org/licenses/LICENSE-2.0
6
10
  #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
14
17
 
15
18
  module Arrow
16
19
  class Tensor
@@ -1,38 +1,25 @@
1
- # Copyright 2018 Kouhei Sutou <kou@clear-code.com>
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
2
8
  #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
9
+ # http://www.apache.org/licenses/LICENSE-2.0
6
10
  #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
14
17
 
15
18
  module Arrow
16
19
  class TimestampArrayBuilder
17
- # TODO: Workaround for Apache Arrow GLib 0.8.0
18
- alias_method :initialize_raw, :initialize
19
- def initialize(data_type)
20
- initialize_raw(data_type)
21
- data_type_name = data_type.to_s
22
- if data_type_name.end_with?("[s]")
23
- @unit_id = :second
24
- elsif data_type_name.end_with?("[ms]")
25
- @unit_id = :milli
26
- elsif data_type_name.end_with?("[us]")
27
- @unit_id = :micro
28
- else
29
- @unit_id = :nano
30
- end
31
- end
32
-
33
20
  private
34
21
  def unit_id
35
- @unit_id ||= unit.nick.to_sym
22
+ @unit_id ||= value_data_type.unit.nick.to_sym
36
23
  end
37
24
 
38
25
  def convert_to_arrow_value(value)
@@ -45,7 +32,7 @@ module Arrow
45
32
  when :second
46
33
  value.to_i
47
34
  when :milli
48
- value.to_i * 1_000 + value.usec / 1000
35
+ value.to_i * 1_000 + value.usec / 1_000
49
36
  when :micro
50
37
  value.to_i * 1_000_000 + value.usec
51
38
  else
@@ -1,16 +1,19 @@
1
- # Copyright 2017 Kouhei Sutou <kou@clear-code.com>
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
2
8
  #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
9
+ # http://www.apache.org/licenses/LICENSE-2.0
6
10
  #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
14
17
 
15
18
  module Arrow
16
19
  class TimestampArray
@@ -27,7 +30,7 @@ module Arrow
27
30
  end
28
31
 
29
32
  def unit
30
- @unit ||= value_data_type_unit
33
+ @unit ||= value_data_type.unit
31
34
  end
32
35
 
33
36
  private
@@ -35,24 +38,6 @@ module Arrow
35
38
  @unit_id ||= unit.nick.to_sym
36
39
  end
37
40
 
38
- def value_data_type_unit
39
- data_type = value_data_type
40
- if data_type.respond_to?(:unit)
41
- data_type.unit
42
- else
43
- data_type_name = data_type.to_s
44
- if data_type_name.end_with?("[s]")
45
- TimeUnit::SECOND
46
- elsif data_type_name.end_with?("[ms]")
47
- TimeUnit::MILLI
48
- elsif data_type_name.end_with?("[us]")
49
- TimeUnit::MICRO
50
- else
51
- TimeUnit::NANO
52
- end
53
- end
54
- end
55
-
56
41
  def to_time(raw_value)
57
42
  case unit_id
58
43
  when :second
@@ -1,17 +1,28 @@
1
- # Copyright 2017-2018 Kouhei Sutou <kou@clear-code.com>
1
+ # Licensed to the Apache Software Foundation (ASF) under one
2
+ # or more contributor license agreements. See the NOTICE file
3
+ # distributed with this work for additional information
4
+ # regarding copyright ownership. The ASF licenses this file
5
+ # to you under the Apache License, Version 2.0 (the
6
+ # "License"); you may not use this file except in compliance
7
+ # with the License. You may obtain a copy of the License at
2
8
  #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
9
+ # http://www.apache.org/licenses/LICENSE-2.0
6
10
  #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
14
17
 
15
18
  module Arrow
16
- VERSION = "0.8.2"
19
+ module Version
20
+ MAJOR = 0
21
+ MINOR = 10
22
+ MICRO = 0
23
+ TAG =
24
+ STRING = "0.10.0"
25
+ end
26
+
27
+ VERSION = Version::STRING
17
28
  end
@@ -1,42 +1,44 @@
1
1
  # -*- ruby -*-
2
2
  #
3
- # Copyright 2017 Kouhei Sutou <kou@clear-code.com>
3
+ # Licensed to the Apache Software Foundation (ASF) under one
4
+ # or more contributor license agreements. See the NOTICE file
5
+ # distributed with this work for additional information
6
+ # regarding copyright ownership. The ASF licenses this file
7
+ # to you under the Apache License, Version 2.0 (the
8
+ # "License"); you may not use this file except in compliance
9
+ # with the License. You may obtain a copy of the License at
4
10
  #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
11
+ # http://www.apache.org/licenses/LICENSE-2.0
8
12
  #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
-
17
- clean_white_space = lambda do |entry|
18
- entry.gsub(/(\A\n+|\n+\z)/, '') + "\n"
19
- end
13
+ # Unless required by applicable law or agreed to in writing,
14
+ # software distributed under the License is distributed on an
15
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+ # KIND, either express or implied. See the License for the
17
+ # specific language governing permissions and limitations
18
+ # under the License.
20
19
 
21
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "lib"))
22
- require "arrow/version"
20
+ require_relative "version"
23
21
 
24
22
  Gem::Specification.new do |spec|
25
23
  spec.name = "red-arrow"
26
- spec.version = Arrow::VERSION
27
- spec.homepage = "https://github.com/red-data-tools/red-arrow"
28
- spec.authors = ["Kouhei Sutou"]
29
- spec.email = ["kou@clear-code.com"]
24
+ version_components = [
25
+ Arrow::Version::MAJOR.to_s,
26
+ Arrow::Version::MINOR.to_s,
27
+ Arrow::Version::MICRO.to_s,
28
+ # "beta1",
29
+ ]
30
+ spec.version = version_components.join(".")
31
+ spec.homepage = "https://arrow.apache.org/"
32
+ spec.authors = ["Apache Arrow Developers"]
33
+ spec.email = ["dev@arrow.apache.org"]
30
34
 
31
- readme = File.read("README.md")
32
- readme.force_encoding("UTF-8")
33
- entries = readme.split(/^\#\#\s(.*)$/)
34
- clean_white_space.call(entries[entries.index("Description") + 1])
35
- description = clean_white_space.call(entries[entries.index("Description") + 1])
36
- spec.summary, spec.description, = description.split(/\n\n+/, 3)
35
+ spec.summary = "Red Arrow is the Ruby bindings of Apache Arrow"
36
+ spec.description =
37
+ "Apache Arrow is a common in-memory columnar data store. " +
38
+ "It's useful to share and process large data."
37
39
  spec.license = "Apache-2.0"
38
40
  spec.files = ["README.md", "Rakefile", "Gemfile", "#{spec.name}.gemspec"]
39
- spec.files += [".yardopts"]
41
+ spec.files += ["LICENSE.txt", "NOTICE.txt"]
40
42
  spec.files += Dir.glob("lib/**/*.rb")
41
43
  spec.files += Dir.glob("image/*.*")
42
44
  spec.files += Dir.glob("doc/text/*")
@@ -50,6 +52,4 @@ Gem::Specification.new do |spec|
50
52
  spec.add_development_dependency("bundler")
51
53
  spec.add_development_dependency("rake")
52
54
  spec.add_development_dependency("test-unit")
53
- spec.add_development_dependency("packnga")
54
- spec.add_development_dependency("kramdown")
55
55
  end