quandl_client 2.1.2 → 2.1.3
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 +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
|