quandl_client 2.1.2 → 2.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/UPGRADE.md +6 -0
- data/examples/client.rb +13 -1
- data/examples/trims.rb +16 -0
- data/lib/quandl/client/base/search.rb +4 -2
- data/lib/quandl/client/models/dataset/data.rb +22 -6
- data/lib/quandl/client/version.rb +1 -1
- data/spec/lib/quandl/client/dataset/data_spec.rb +20 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 157ba17ffc15b48c794cabd8eac6fc849345f125
|
4
|
+
data.tar.gz: 0d880279cca152565a9cc2b396328d49a02c8557
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dd2ba5539f6be665dcead9aafcc35cb5574379852061d7726e137a1ef8f35d16587a11d0fed704b67cd70f911be3a6e71c7370928600f7b40e4bbf1f6767a75a
|
7
|
+
data.tar.gz: 9eea7027c039f62c5bfc9850376b1c18c796a3f7cc5455e2b245d8ada84b769bbddbaa5578efb95771dde159f71770154311147e8e49f875f742ece70286e428
|
data/UPGRADE.md
CHANGED
data/examples/client.rb
CHANGED
@@ -3,10 +3,22 @@ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
|
3
3
|
require 'pry'
|
4
4
|
require "quandl/client"
|
5
5
|
require "quandl/fabricate"
|
6
|
+
require 'securerandom'
|
6
7
|
|
7
8
|
include Quandl::Client
|
8
9
|
|
9
10
|
Quandl::Client.use 'http://quandl.com/api/'
|
10
|
-
Quandl::Client.token = ENV['
|
11
|
+
Quandl::Client.token = ENV['QUANDL_USER_TOKEN']
|
12
|
+
|
13
|
+
# create dataset
|
14
|
+
d = Dataset.new
|
15
|
+
d.code = "TEST_#{SecureRandom.hex[0..10]}".upcase
|
16
|
+
d.name = 'Blake Test Dataset'
|
17
|
+
d.save
|
18
|
+
|
19
|
+
# update dataset's data
|
20
|
+
new_data = Quandl::Fabricate::Data.rand( rows: 10, columns: 2, nils: false ).to_date.to_csv
|
21
|
+
d.data = new_data
|
22
|
+
d.save
|
11
23
|
|
12
24
|
binding.pry
|
data/examples/trims.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
2
|
+
|
3
|
+
require 'pry'
|
4
|
+
require "quandl/client"
|
5
|
+
|
6
|
+
include Quandl::Client
|
7
|
+
|
8
|
+
Quandl::Client.use 'http://quandl.com/api/'
|
9
|
+
Quandl::Client.token = ENV['QUANDL_USER_TOKEN']
|
10
|
+
|
11
|
+
# create dataset
|
12
|
+
d = Dataset.find('NSE/OIL')
|
13
|
+
|
14
|
+
data = d.data.trim_start( 3.weeks.ago ).limit(10)
|
15
|
+
|
16
|
+
binding.pry
|
@@ -20,7 +20,7 @@ module Search
|
|
20
20
|
scope_helper :connection, -> { self.class.parent }
|
21
21
|
|
22
22
|
scope.class_eval do
|
23
|
-
|
23
|
+
|
24
24
|
delegate *Array.forwardable_methods.reject{|m| [:find, :fetch].include?(m) }, to: :all
|
25
25
|
|
26
26
|
def fetch_once
|
@@ -32,7 +32,9 @@ module Search
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def find(id)
|
35
|
-
|
35
|
+
attrs = attributes.merge(scope_attributes)
|
36
|
+
puts attrs
|
37
|
+
result = self.class.parent.where( attrs ).find(id)
|
36
38
|
result = self.class.parent.new(id: id) if result.nil?
|
37
39
|
result
|
38
40
|
end
|
@@ -4,16 +4,32 @@ class Quandl::Client::Dataset::Data < Quandl::Client::Base
|
|
4
4
|
|
5
5
|
has_scope_composer
|
6
6
|
|
7
|
-
scope *[:row, :rows, :limit, :offset, :accuracy, :column, :order,
|
8
|
-
:trim_start, :trim_end, :transform, :collapse, :exclude_headers]
|
9
|
-
|
10
|
-
scope_helper :to_table, -> { fetch_once.data }
|
11
|
-
|
12
7
|
scope.class_eval do
|
13
8
|
delegate *Quandl::Client::Dataset::Data.forwardable_scope_methods, :to_h, to: :to_table, allow_nil: true
|
14
9
|
delegate *Quandl::Data.forwardable_methods, to: :to_table, allow_nil: true
|
15
10
|
end
|
16
|
-
|
11
|
+
|
12
|
+
scope *[:row, :rows, :limit, :offset, :accuracy, :column, :order,
|
13
|
+
:transform, :collapse, :exclude_headers]
|
14
|
+
|
15
|
+
scope :trim_start, ->(date){ date = parse_date(date); where( trim_start: date ) if date }
|
16
|
+
scope :trim_end, ->(date){ date = parse_date(date); where( trim_end: date ) if date }
|
17
|
+
|
18
|
+
scope_helper :parse_date, ->( value ){
|
19
|
+
begin
|
20
|
+
date = Date.jd(value.to_i) if value.kind_of?(String) && value.numeric?
|
21
|
+
date = Date.jd(value) if value.is_a?(Integer)
|
22
|
+
date = Date.parse(value) if value.is_a?(String) && value =~ /^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/
|
23
|
+
date = value if value.is_a?(Date)
|
24
|
+
date = value.to_date if value.respond_to?(:to_date)
|
25
|
+
date.to_s
|
26
|
+
rescue
|
27
|
+
nil
|
28
|
+
end
|
29
|
+
}
|
30
|
+
|
31
|
+
scope_helper :to_table, -> { fetch_once.data }
|
32
|
+
|
17
33
|
attributes :id, :limit, :collapse, :transformation, :trim_start, :trim_end,
|
18
34
|
:rows, :row, :frequency, :data, :from_date, :to_date
|
19
35
|
|
@@ -1,12 +1,30 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
|
-
describe Dataset do
|
4
|
+
describe Quandl::Client::Dataset::Data do
|
5
5
|
|
6
6
|
let(:dataset){
|
7
7
|
create(:dataset, source_code: "QUANDL_CLIENT_TEST_SOURCE", data: Quandl::Fabricate::Data.rand( rows: 10, columns: 4 ) )
|
8
8
|
}
|
9
|
-
|
9
|
+
|
10
|
+
describe ".with_id" do
|
11
|
+
subject{ Quandl::Client::Dataset::Data.with_id(6668) }
|
12
|
+
let(:data){ Quandl::Client::Dataset::Data.with_id(6668).to_table }
|
13
|
+
|
14
|
+
let(:beginning_of_last_week){ Date.today.jd - Date.today.beginning_of_week.jd }
|
15
|
+
|
16
|
+
it("data"){ data.count.should > 100 }
|
17
|
+
it(".row(:beginning_of_last_week)"){ subject.row( beginning_of_last_week ).to_table.count.should eq 1 }
|
18
|
+
it(".rows(5)"){ subject.rows(5).to_table.count.should eq 5 }
|
19
|
+
it(".limit(2)"){ subject.limit(2).to_table.count.should eq 2 }
|
20
|
+
it(".column(2)"){ subject.column(2).to_table.first.count.should eq 2 }
|
21
|
+
it(".order('asc')"){ subject.order('asc').to_table.first.first.should eq data.sort_ascending!.first.first }
|
22
|
+
it(".order('desc')"){ subject.order('desc').to_table.first.first.should eq data.sort_descending!.first.first }
|
23
|
+
it(".trim_start().trim_end()"){ subject.trim_start( data[11].first ).trim_end(data[10].first).to_table.first.first.should eq data[10].first }
|
24
|
+
it(".collapse('monthly')"){ subject.collapse('monthly').to_table.frequency.should eq :monthly }
|
25
|
+
it(".transform('rdiff')"){ subject.transform('rdiff').to_table[0][1].should_not eq data[0][1] }
|
26
|
+
end
|
27
|
+
|
10
28
|
describe "#data" do
|
11
29
|
subject{ Dataset.find( dataset.id ).data }
|
12
30
|
its(:count){ should eq 10 }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quandl_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Blake Hilscher
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -181,6 +181,7 @@ files:
|
|
181
181
|
- Rakefile
|
182
182
|
- UPGRADE.md
|
183
183
|
- examples/client.rb
|
184
|
+
- examples/trims.rb
|
184
185
|
- lib/quandl/client.rb
|
185
186
|
- lib/quandl/client/base.rb
|
186
187
|
- lib/quandl/client/base/attributes.rb
|