quandl_client 2.5.3 → 2.6.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: 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