quandl_client 2.5.3 → 2.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1bc9ec02cb1388f49138706b129ff7bc167c7f2d
4
- data.tar.gz: bd288e5d4da8564a686c33a3b7d5de505ab5e81d
3
+ metadata.gz: 143f4ec1982c74d12e16b00bb624f1b2002ce8dc
4
+ data.tar.gz: 79e557b77dfe07589dace275a5e15e676d267934
5
5
  SHA512:
6
- metadata.gz: e722cb21f19e69ba316d45d8f658a8c3026c31134d6ca1fedd5cd42fca21a2543568cfc5b12c4bf3045ffe3dc6290a3af906bd898593ef4e99a32a8c63a4fd07
7
- data.tar.gz: c6fb3cc83b31202cb0ddb8e398cc53110862587634f02280b2a6cdde2ae2d6a47f9cb3e547e671437238d47727d1783c52d7131fab182d16bf16446996735dd1
6
+ metadata.gz: 7a42782c545a694c737a9320c7492d6b19ec727fb463e955affaa19b3fcdf534c372dc584764915378bd80fe2a050fe25e52ae6f9d8c99d2bc3d9bfa9028c4a5
7
+ data.tar.gz: ff681713db7ec3b8bf1b6664a916f4ea5223df2ac72971ab7d3540141f62297371e33eacdddfd3ffb65e09742e40686ff2aa225560d8ab792e2cd56804769f9d
data/Rakefile CHANGED
@@ -21,4 +21,12 @@ end
21
21
 
22
22
  task :console do |t, args|
23
23
  binding.pry
24
- end
24
+ end
25
+
26
+ require 'quandl/utility/rake_tasks'
27
+ Quandl::Utility::Tasks.configure do |c|
28
+ c.name = 'quandl_client'
29
+ c.version_path = 'VERSION'
30
+ c.changelog_path = 'UPGRADE.md'
31
+ c.changelog_matching = ['^QUGC','^WIKI']
32
+ end
data/UPGRADE.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 2.6.0
2
+
3
+ * QUGC-104 Fixes when upload fails output is not json
4
+ * QUGC-103 Fixes quandl upload test -F json does not include metadata
5
+
6
+
7
+
1
8
  # 2.5.2
2
9
 
3
10
  * WIKI-153 Add scrapers
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 2.6.0
@@ -46,6 +46,7 @@ class Quandl::Client::Dataset < Quandl::Client::Base
46
46
 
47
47
  validates :code, presence: true, format: { with: Quandl::Pattern.code, message: "is invalid. Expected format: #{Quandl::Pattern.code.to_example}" }
48
48
  validates :display_url, allow_blank: true, url: true
49
+ validate :data_should_be_valid!
49
50
  validate :data_row_count_should_match_column_count!
50
51
  validate :data_columns_should_not_exceed_column_names!
51
52
  validate :data_rows_should_have_equal_columns!
@@ -88,11 +89,15 @@ class Quandl::Client::Dataset < Quandl::Client::Base
88
89
  # DATA
89
90
 
90
91
  def data
91
- dataset_data.data? ? dataset_data.data : data_scope
92
+ defined?(@data) ? @data : data_scope
92
93
  end
93
94
 
94
95
  def data=(value)
95
- dataset_data.data = value
96
+ @data = Quandl::Data.new(value).sort_descending
97
+ end
98
+
99
+ def data?
100
+ @data.is_a?(Quandl::Data)
96
101
  end
97
102
 
98
103
  def delete_data
@@ -127,6 +132,14 @@ class Quandl::Client::Dataset < Quandl::Client::Base
127
132
 
128
133
  protected
129
134
 
135
+ def data_should_be_valid!
136
+ if data? && !data.valid?
137
+ data.errors.each{|k,v| self.errors.add( k,v ) }
138
+ return false
139
+ end
140
+ true
141
+ end
142
+
130
143
  def ambiguous_code_requires_source_code!
131
144
  if code.to_s.numeric? && source_code.blank?
132
145
  message = %Q{Pure numerical codes like "#{code}" are not allowed unless you include a source code. Do this:\nsource_code: <USERNAME>\ncode: #{code}}
@@ -137,7 +150,7 @@ class Quandl::Client::Dataset < Quandl::Client::Base
137
150
  end
138
151
 
139
152
  def data_columns_should_not_exceed_column_names!
140
- if errors.size == 0 && dataset_data.data? && column_names.present? && data.first.count != column_names.count
153
+ if errors.size == 0 && data? && data.present? && column_names.present? && data.first.count != column_names.count
141
154
  self.errors.add( :data, "You may not change the number of columns in a dataset. This dataset has #{column_names.count} columns but you tried to send #{data.first.count} columns." )
142
155
  return false
143
156
  end
@@ -146,7 +159,7 @@ class Quandl::Client::Dataset < Quandl::Client::Base
146
159
 
147
160
  def data_rows_should_have_equal_columns!
148
161
  # skip validation unless data is present
149
- return true unless dataset_data.data?
162
+ return true unless data? && data.present?
150
163
  # use first row as expected column count
151
164
  column_count = data[0].count
152
165
  # check each row
@@ -163,7 +176,7 @@ class Quandl::Client::Dataset < Quandl::Client::Base
163
176
 
164
177
  def data_row_count_should_match_column_count!
165
178
  # skip validation unless data and column_names present
166
- return true unless dataset_data.data? && column_names.present?
179
+ return true unless data? && data.present? && column_names.present?
167
180
  # count the number of expected columns
168
181
  column_count = column_names.count
169
182
  # check each row
@@ -180,13 +193,14 @@ class Quandl::Client::Dataset < Quandl::Client::Base
180
193
 
181
194
  def save_dataset_data
182
195
  return if (!saved? && id.blank?)
183
- return if !dataset_data.data?
196
+ return if !data? || data.blank?
184
197
 
185
198
  dataset_data.id = id
199
+ dataset_data.data = data.to_csv
186
200
  dataset_data.save
187
201
  # update dataset's attributes with dataset_data's attributes
188
202
  attributes.each{|k,v| attributes[k] = dataset_data.attributes[k] if dataset_data.attributes.has_key?(k) }
189
- @metadata[:status] = dataset_data.status
203
+ @metadata[:status] = dataset_data.status unless dataset_data.saved?
190
204
  end
191
205
 
192
206
  def enforce_required_formats
@@ -40,17 +40,17 @@ class Quandl::Client::Dataset::Data < Quandl::Client::Base
40
40
  def data
41
41
  read_data
42
42
  end
43
-
43
+
44
44
  def data=(value)
45
45
  write_data(value)
46
46
  end
47
-
47
+
48
48
  protected
49
-
49
+
50
50
  def read_data
51
51
  Quandl::Data.new( read_attribute(:data) )
52
52
  end
53
-
53
+
54
54
  def write_data(value )
55
55
  write_attribute(:data, Quandl::Data.new(value).to_csv )
56
56
  end
@@ -1,6 +1,6 @@
1
1
  module Quandl
2
2
  module Client
3
- VERSION = '2.5.3'
3
+ VERSION = File.read(File.expand_path(File.join(File.dirname(__FILE__), '../../../VERSION'))).strip.rstrip
4
4
  API_VERSION = 'v2'
5
5
 
6
6
  class << self
@@ -17,6 +17,12 @@ Gem::Specification.new do |s|
17
17
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
18
  s.require_paths = ["lib"]
19
19
 
20
+ s.add_runtime_dependency "quandl_data", "~> 1.4"
21
+ s.add_runtime_dependency "activesupport", ">= 3.0.0"
22
+ s.add_runtime_dependency "her", "~> 0.6"
23
+ s.add_runtime_dependency 'json', '~> 1.7.7'
24
+ s.add_runtime_dependency "scope_composer", "~> 0.3"
25
+
20
26
  s.add_development_dependency "rake", "~> 10.0"
21
27
  s.add_development_dependency "rspec", "~> 2.13"
22
28
  s.add_development_dependency "factory_girl_rails"
@@ -24,10 +30,5 @@ Gem::Specification.new do |s|
24
30
  s.add_development_dependency "pry"
25
31
  s.add_development_dependency "guard"
26
32
  s.add_development_dependency "guard-rspec"
27
-
28
- s.add_runtime_dependency "quandl_data", "~> 1.3"
29
- s.add_runtime_dependency "activesupport", ">= 3.0.0"
30
- s.add_runtime_dependency "her", "~> 0.6"
31
- s.add_runtime_dependency 'json', '~> 1.7.7'
32
- s.add_runtime_dependency "scope_composer", "~> 0.3"
33
+ s.add_development_dependency "quandl_utility"
33
34
  end
@@ -43,7 +43,7 @@ describe Dataset do
43
43
  subject{ dataset }
44
44
 
45
45
  its(:saved?){ should be_true }
46
- its(:status){ should eq 200 }
46
+ its(:status){ should eq 201 }
47
47
 
48
48
  end
49
49
  end
@@ -6,6 +6,15 @@ describe Dataset do
6
6
  let(:dataset){ build(:dataset, source_code: "QUANDL_CLIENT_TEST_SOURCE" ) }
7
7
  subject{ dataset }
8
8
 
9
+ context "data='1980,10,20\nASDF,10,30'" do
10
+ before(:each){
11
+ dataset.data = '1980,10,20\nASDF,10,30'
12
+ dataset.valid?
13
+ }
14
+ its(:valid?){ should be_false }
15
+ its('errors.messages'){ should eq({ data: ["Invalid date 'ASDF'"] }) }
16
+ end
17
+
9
18
  context "given ambiguous code" do
10
19
  before(:each){
11
20
  dataset.source_code = nil
@@ -22,7 +31,9 @@ describe Dataset do
22
31
  dataset.valid?
23
32
  }
24
33
  its(:valid?){ should be_false }
25
- its('errors.messages'){ should eq({ data: ["Unexpected number of points in this row:\n2011-12-31,1.0,2.0,3.0\nFound 3 but expected 2 based on precedent from the first row (2012-12-31,1.0,2.0)"]}) }
34
+ its('errors.messages'){ should eq({ data:
35
+ ["Unexpected number of points in this row:\n2011-12-31,1.0,2.0,3.0\nFound 3 but expected 2 based on precedent from the first row (2012-12-31,1.0,2.0)"]
36
+ })}
26
37
  end
27
38
 
28
39
  context "mismatch column_names count" do
@@ -32,7 +43,9 @@ describe Dataset do
32
43
  dataset.valid?
33
44
  }
34
45
  its(:valid?){ should be_false }
35
- its('errors.messages'){ should eq({ data: ["Unexpected number of points in this row:\n2012-12-31,18.0,21.0\nFound 2 but expected 1 based on precedent from the header row (Date,Value)"]}) }
46
+ its('errors.messages'){ should eq({ data:
47
+ ["Unexpected number of points in this row:\n2012-12-31,18.0,21.0\nFound 2 but expected 1 based on precedent from the header row (Date,Value)"]
48
+ })}
36
49
  end
37
50
 
38
51
  describe "#code" do
metadata CHANGED
@@ -1,101 +1,115 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quandl_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.3
4
+ version: 2.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Hilscher
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-27 00:00:00.000000000 Z
11
+ date: 2014-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rake
14
+ name: quandl_data
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: '10.0'
20
- type: :development
19
+ version: '1.4'
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
- version: '10.0'
26
+ version: '1.4'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rspec
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 3.0.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 3.0.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: her
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - ~>
32
46
  - !ruby/object:Gem::Version
33
- version: '2.13'
34
- type: :development
47
+ version: '0.6'
48
+ type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - ~>
39
53
  - !ruby/object:Gem::Version
40
- version: '2.13'
54
+ version: '0.6'
41
55
  - !ruby/object:Gem::Dependency
42
- name: factory_girl_rails
56
+ name: json
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - '>='
59
+ - - ~>
46
60
  - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
61
+ version: 1.7.7
62
+ type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - '>='
66
+ - - ~>
53
67
  - !ruby/object:Gem::Version
54
- version: '0'
68
+ version: 1.7.7
55
69
  - !ruby/object:Gem::Dependency
56
- name: fivemat
70
+ name: scope_composer
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - ~>
60
74
  - !ruby/object:Gem::Version
61
- version: '1.2'
62
- type: :development
75
+ version: '0.3'
76
+ type: :runtime
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - ~>
67
81
  - !ruby/object:Gem::Version
68
- version: '1.2'
82
+ version: '0.3'
69
83
  - !ruby/object:Gem::Dependency
70
- name: pry
84
+ name: rake
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - '>='
87
+ - - ~>
74
88
  - !ruby/object:Gem::Version
75
- version: '0'
89
+ version: '10.0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - '>='
94
+ - - ~>
81
95
  - !ruby/object:Gem::Version
82
- version: '0'
96
+ version: '10.0'
83
97
  - !ruby/object:Gem::Dependency
84
- name: guard
98
+ name: rspec
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - '>='
101
+ - - ~>
88
102
  - !ruby/object:Gem::Version
89
- version: '0'
103
+ version: '2.13'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - '>='
108
+ - - ~>
95
109
  - !ruby/object:Gem::Version
96
- version: '0'
110
+ version: '2.13'
97
111
  - !ruby/object:Gem::Dependency
98
- name: guard-rspec
112
+ name: factory_girl_rails
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - '>='
@@ -109,75 +123,75 @@ dependencies:
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
111
125
  - !ruby/object:Gem::Dependency
112
- name: quandl_data
126
+ name: fivemat
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - ~>
116
130
  - !ruby/object:Gem::Version
117
- version: '1.3'
118
- type: :runtime
131
+ version: '1.2'
132
+ type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - ~>
123
137
  - !ruby/object:Gem::Version
124
- version: '1.3'
138
+ version: '1.2'
125
139
  - !ruby/object:Gem::Dependency
126
- name: activesupport
140
+ name: pry
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
143
  - - '>='
130
144
  - !ruby/object:Gem::Version
131
- version: 3.0.0
132
- type: :runtime
145
+ version: '0'
146
+ type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
150
  - - '>='
137
151
  - !ruby/object:Gem::Version
138
- version: 3.0.0
152
+ version: '0'
139
153
  - !ruby/object:Gem::Dependency
140
- name: her
154
+ name: guard
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
- - - ~>
157
+ - - '>='
144
158
  - !ruby/object:Gem::Version
145
- version: '0.6'
146
- type: :runtime
159
+ version: '0'
160
+ type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
- - - ~>
164
+ - - '>='
151
165
  - !ruby/object:Gem::Version
152
- version: '0.6'
166
+ version: '0'
153
167
  - !ruby/object:Gem::Dependency
154
- name: json
168
+ name: guard-rspec
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
- - - ~>
171
+ - - '>='
158
172
  - !ruby/object:Gem::Version
159
- version: 1.7.7
160
- type: :runtime
173
+ version: '0'
174
+ type: :development
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
- - - ~>
178
+ - - '>='
165
179
  - !ruby/object:Gem::Version
166
- version: 1.7.7
180
+ version: '0'
167
181
  - !ruby/object:Gem::Dependency
168
- name: scope_composer
182
+ name: quandl_utility
169
183
  requirement: !ruby/object:Gem::Requirement
170
184
  requirements:
171
- - - ~>
185
+ - - '>='
172
186
  - !ruby/object:Gem::Version
173
- version: '0.3'
174
- type: :runtime
187
+ version: '0'
188
+ type: :development
175
189
  prerelease: false
176
190
  version_requirements: !ruby/object:Gem::Requirement
177
191
  requirements:
178
- - - ~>
192
+ - - '>='
179
193
  - !ruby/object:Gem::Version
180
- version: '0.3'
194
+ version: '0'
181
195
  description: An orm for the cassinatra rest interface.
182
196
  email:
183
197
  - blake@hilscher.ca
@@ -195,6 +209,7 @@ files:
195
209
  - README.md
196
210
  - Rakefile
197
211
  - UPGRADE.md
212
+ - VERSION
198
213
  - examples/create.rb
199
214
  - examples/find.rb
200
215
  - examples/login.rb